tabulatedDensity.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::distributions::tabulatedDensity
26 
27 Description
28  Distribution in which the probability density function is given as a table
29  of values
30 
31 Usage
32  Example usage:
33  \verbatim
34  {
35  type tabulatedDensity;
36  Q 0;
37  distribution
38  (
39  (10e-6 0.0025)
40  (12e-6 0.2795)
41  (15e-6 2.3988)
42  (19e-6 6.3888)
43  (25e-6 10.3153)
44  (31e-6 12.0030)
45  (39e-6 10.8427)
46  (50e-6 6.1333)
47  (63e-6 3.4688)
48  );
49 
50  }
51  \endverbatim
52 
53 SourceFiles
54  tabulatedDensity.C
55 
56 See also
57  Foam::distribution
58 
59 \*---------------------------------------------------------------------------*/
60 
61 #ifndef tabulatedDensity_H
62 #define tabulatedDensity_H
63 
64 #include "distribution.H"
65 #include "TableReader.H"
66 
67 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
68 
69 namespace Foam
70 {
71 namespace distributions
72 {
73 
74 /*---------------------------------------------------------------------------*\
75  Class tabulatedDensity Declaration
76 \*---------------------------------------------------------------------------*/
77 
78 class tabulatedDensity
79 :
80  public FieldDistribution<distribution, tabulatedDensity>
81 {
82 private:
83 
84  // Private Data
85 
86  //- Table reader
87  const autoPtr<TableReader<scalar>> reader_;
88 
89  //- X-coordinates
90  scalarField x_;
91 
92  //- Probability Density Function
93  scalarField PDF_;
94 
95  //- Cumulative Distribution Function
96  scalarField CDF_;
97 
98 
99 public:
100 
101  //- Runtime type information
102  TypeName("tabulatedDensity");
103 
104 
105  // Constructors
106 
107  //- Construct from a dictionary
109  (
110  const unitConversion& units,
111  const dictionary& dict,
112  const label sampleQ,
114  );
115 
116  //- Construct copy
118 
119  //- Construct and return a clone
120  virtual autoPtr<distribution> clone(const label sampleQ) const
121  {
122  return autoPtr<distribution>(new tabulatedDensity(*this, sampleQ));
123  }
124 
125 
126  //- Destructor
127  virtual ~tabulatedDensity();
128 
129 
130  // Member Functions
131 
132  //- Sample the distribution
133  virtual scalar sample() const;
134 
135  //- Sample the distribution
137 
138  //- Return the minimum value
139  virtual scalar min() const;
140 
141  //- Return the maximum value
142  virtual scalar max() const;
143 
144  //- Return the mean value
145  virtual scalar mean() const;
146 
147  //- Return the integral of the PDF multiplied by an integer power of x
149  (
150  const scalarField& x,
151  const label e,
152  const bool consistent = false
153  ) const;
154 
155  //- Write to a stream
156  virtual void write(Ostream& os, const unitConversion& units) const;
157 
158  //- Return coordinates to plot across the range of the distribution
159  virtual tmp<scalarField> plotX(const label n) const;
160 
161  //- Return values to plot the probability density function
162  virtual tmp<scalarField> plotPDF(const scalarField& x) const;
163 };
164 
165 
166 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 
168 } // End namespace distributions
169 } // End namespace Foam
170 
171 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 
173 #endif
174 
175 // ************************************************************************* //
label n
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
autoPtr< distribution > clone() const
Construct and return a clone.
Definition: distribution.H:168
label sampleQ() const
Access the sample size exponent.
Definition: distribution.C:134
Distribution in which the probability density function is given as a table of values.
virtual tmp< scalarField > integralPDFxPow(const scalarField &x, const label e, const bool consistent=false) const
Return the integral of the PDF multiplied by an integer power of x.
virtual scalar min() const
Return the minimum value.
virtual scalar sample() const
Sample the distribution.
TypeName("tabulatedDensity")
Runtime type information.
virtual tmp< scalarField > plotPDF(const scalarField &x) const
Return values to plot the probability density function.
virtual void write(Ostream &os, const unitConversion &units) const
Write to a stream.
virtual scalar max() const
Return the maximum value.
virtual scalar mean() const
Return the mean value.
virtual tmp< scalarField > plotX(const label n) const
Return coordinates to plot across the range of the distribution.
tabulatedDensity(const unitConversion &units, const dictionary &dict, const label sampleQ, randomGenerator &&rndGen)
Construct from a dictionary.
Random number generator.
A class for managing temporary objects.
Definition: tmp.H:55
Unit conversion structure. Contains the associated dimensions and the multiplier with which to conver...
Namespace for OpenFOAM.
const doubleScalar e
Definition: doubleScalar.H:106
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
const HashTable< unitConversion > & units()
Get the table of unit conversions.
dictionary dict
randomGenerator rndGen(653213)