BUG: pointHitSort: define operator<
[OpenFOAM-1.7.x.git] / src / thermophysicalModels / pdfs / pdf / pdf.H
blobb0c5ea671d107b9154b44e54ed7589ffa1bd9198
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::pdf
27 Description
28     A library of runtime-selectable PDF's.
30     Returns a sampled value given the expectation (nu) and variance (sigma^2)
32     Current PDF's include:
33     - exponential
34     - fixedValue
35     - general
36     - multi-normal
37     - normal
38     - Rosin-Rammler
39     - uniform
41     The pdf is tabulated in equidistant nPoints, in an interval.
42     These values are integrated to obtain the cumulated PDF,
43     which is then used to change the distribution from unifrom to
44     the actual pdf.
46 SourceFiles
47     pdf.C
48     pdfNew.C
50 \*---------------------------------------------------------------------------*/
52 #ifndef pdf_H
53 #define pdf_H
55 #include "IOdictionary.H"
56 #include "autoPtr.H"
57 #include "Random.H"
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
61 namespace Foam
63 namespace pdfs
66 /*---------------------------------------------------------------------------*\
67                            Class pdf Declaration
68 \*---------------------------------------------------------------------------*/
70 class pdf
73 protected:
75     // Protected data
77         //- Coefficients dictionary
78         const dictionary pdfDict_;
80         //- Reference to the randmo number generator
81         Random& rndGen_;
84     // Protected Member Functions
86         //- Check that the PDF is valid
87         virtual void check() const;
90 public:
92     //-Runtime type information
93     TypeName("pdf");
96     //- Declare runtime constructor selection table
97     declareRunTimeSelectionTable
98     (
99         autoPtr,
100         pdf,
101         dictionary,
102         (
103             const dictionary& dict,
104             Random& rndGen
105         ),
106         (dict, rndGen)
107     );
110     // Constructors
112         //- Construct from dictionary
113         pdf(const word& name, const dictionary& dict, Random& rndGen);
116     //- Selector
117     static autoPtr<pdf> New(const dictionary& dict, Random& rndGen);
120     //- Destructor
121     virtual ~pdf();
124     // Member Functions
126         //- Sample the pdf
127         virtual scalar sample() const = 0;
129         //- Return the minimum value
130         virtual scalar minValue() const = 0;
132         //- Return the maximum value
133         virtual scalar maxValue() const = 0;
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 } // End namespace pdfs
140 } // End namespace Foam
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 #endif
146 // ************************************************************************* //