initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / thermophysicalModels / pdfs / pdf / pdf.H
blobef1fa11b92dee495b81bb8291c9df81365888d24
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::pdf
28 Description
29     A library of runtime-selectable pdf's.
31     Returns a sampled value given the expectation (nu) and variance (sigma^2)
33     Sample of planned pdfs (beta p. 374-375):
34     - binomial
35     - geometric
36     - Poisson
37     - hypergeometric
38     - Pascal
39     - uniform
40     - exponential
41     - normal
42     - Gamma
43     - chi
44     - t?
45     - F?
46     - beta
47     - Weibull
48     - Rayleigh
49     - Cauchy?
51     The pdf is tabulated in equidistant nPoints, in an interval.
52     These values are integrated to obtain the cumulated pdf,
53     which is then used to change the distribution from unifrom to
54     the actual pdf.
56 SourceFiles
57     pdfI.H
58     pdf.C
59     pdfIO.C
61 \*---------------------------------------------------------------------------*/
63 #ifndef pdf_H
64 #define pdf_H
66 #include "IOdictionary.H"
67 #include "autoPtr.H"
68 #include "Random.H"
70 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72 namespace Foam
75 /*---------------------------------------------------------------------------*\
76                            Class pdf Declaration
77 \*---------------------------------------------------------------------------*/
79 class pdf
82 protected:
84     // Protected data
86         const dictionary& dict_;
88         Random& rndGen_;
91 public:
93     //-Runtime type information
94     TypeName("pdf");
97     //- Declare runtime constructor selection table
98     declareRunTimeSelectionTable
99     (
100         autoPtr,
101         pdf,
102         dictionary,
103         (
104             const dictionary& dict,
105             Random& rndGen
106         ),
107         (dict, rndGen)
108     );
111     // Constructors
113         //- Construct from dictionary
114         pdf(const dictionary& dict, Random& rndGen);
117     //- Selector
118     static autoPtr<pdf> New(const dictionary& dict, Random& rndGen);
121     //- Destructor
122     virtual ~pdf();
125     // Member Functions
127         //- Sample the pdf
128         virtual scalar sample() const = 0;
130         //- Return the minimum value
131         virtual scalar minValue() const = 0;
133         //- Return the maximum value
134         virtual scalar maxValue() const = 0;
138 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 } // End namespace Foam
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 #endif
146 // ************************************************************************* //