Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / lagrangian / distributionModels / normal / normal.H
blob519492ffbf35b53daca092aff2396f15b9276539
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 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::normal
27 Description
28     A normal distribution model
30     \verbatim
31         model = strength * exp(-0.5*((x - expectation)/variance)^2 )
32     \endverbatim
34     strength only has meaning if there's more than one distribution model
36 SourceFiles
37     normal.C
39 \*---------------------------------------------------------------------------*/
41 #ifndef normal_H
42 #define normal_H
44 #include "distributionModel.H"
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 namespace Foam
50 namespace distributionModels
53 /*---------------------------------------------------------------------------*\
54                            Class normal Declaration
55 \*---------------------------------------------------------------------------*/
57 class normal
59     public distributionModel
61     // Private data
64         //- Distribution minimum
65         scalar minValue_;
67         //- Distribution maximum
68         scalar maxValue_;
71         // Model coefficients
73             scalar expectation_;
74             scalar variance_;
76             scalar a_;
79 public:
81     //- Runtime type information
82     TypeName("normal");
85     // Constructors
87         //- Construct from components
88         normal(const dictionary& dict, cachedRandom& rndGen);
90         //- Construct copy
91         normal(const normal& p);
93         //- Construct and return a clone
94         virtual autoPtr<distributionModel> clone() const
95         {
96             return autoPtr<distributionModel>(new normal(*this));
97         }
100     //- Destructor
101     virtual ~normal();
104     // Member Functions
106         //- Sample the distributionModel
107         virtual scalar sample() const;
109         //- Return the minimum value
110         virtual scalar minValue() const;
112         //- Return the maximum value
113         virtual scalar maxValue() const;
115         virtual scalar erfInv(const scalar y) const;
119 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
121 } // End namespace distributionModels
122 } // End namespace Foam
124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 #endif
128 // ************************************************************************* //