tabulatedCumulative.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::tabulatedCumulative
26 
27 Description
28  Distribution in which the cumulative distribution function is given as a
29  table of values
30 
31 Usage
32  Example usage:
33  \verbatim
34  {
35  type tabulatedCumulative;
36  Q 0;
37  distribution
38  (
39  (10e-6 0)
40  (12e-6 0.1972235)
41  (15e-6 2.6711166)
42  (19e-6 11.643361)
43  (25e-6 28.968245)
44  (31e-6 52.155796)
45  (39e-6 74.381959)
46  (50e-6 91.162850)
47  (63e-6 100)
48  );
49  }
50  \endverbatim
51 
52 SourceFiles
53  tabulatedCumulative.C
54 
55 See also
56  Foam::distribution
57 
58 \*---------------------------------------------------------------------------*/
59 
60 #ifndef tabulatedCumulative_H
61 #define tabulatedCumulative_H
62 
63 #include "distribution.H"
64 #include "TableReader.H"
65 
66 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
67 
68 namespace Foam
69 {
70 namespace distributions
71 {
72 
73 /*---------------------------------------------------------------------------*\
74  Class tabulatedCumulative Declaration
75 \*---------------------------------------------------------------------------*/
76 
78 :
79  public FieldDistribution<distribution, tabulatedCumulative>
80 {
81 private:
82 
83  // Private Data
84 
85  //- Table reader
86  const autoPtr<TableReader<scalar>> reader_;
87 
88  //- X-coordinates
89  scalarField x_;
90 
91  //- Probability Density Function
92  scalarField PDF_;
93 
94  //- Cumulative Distribution Function
95  scalarField CDF_;
96 
97 
98 public:
99 
100  //- Runtime type information
101  TypeName("tabulatedCumulative");
102 
103 
104  // Constructors
105 
106  //- Construct from a dictionary
108  (
109  const unitConversion& units,
110  const dictionary& dict,
111  const label sampleQ,
113  );
114 
115  //- Construct copy
117 
118  //- Construct and return a clone
119  virtual autoPtr<distribution> clone(const label sampleQ) const
120  {
121  return autoPtr<distribution>
122  (
123  new tabulatedCumulative(*this, sampleQ)
124  );
125  }
126 
127 
128  //- Destructor
129  virtual ~tabulatedCumulative();
130 
131 
132  // Member Functions
133 
134  //- Sample the distribution
135  virtual scalar sample() const;
136 
137  //- Sample the distribution
139 
140  //- Return the minimum value
141  virtual scalar min() const;
142 
143  //- Return the maximum value
144  virtual scalar max() const;
145 
146  //- Return the mean value
147  virtual scalar mean() const;
148 
149  //- Return the integral of the PDF multiplied by an integer power of x
151  (
152  const scalarField& x,
153  const label e,
154  const bool consistent = false
155  ) const;
156 
157  //- Write to a stream
158  virtual void write(Ostream& os, const unitConversion& units) const;
159 
160  //- Return coordinates to plot across the range of the distribution
161  virtual tmp<scalarField> plotX(const label n) const;
162 
163  //- Return values to plot the probability density function
164  virtual tmp<scalarField> plotPDF(const scalarField& x) const;
165 };
166 
167 
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
169 
170 } // End namespace distributions
171 } // End namespace Foam
172 
173 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 
175 #endif
176 
177 // ************************************************************************* //
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 cumulative distribution function is given as a table of values.
TypeName("tabulatedCumulative")
Runtime type information.
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.
tabulatedCumulative(const unitConversion &units, const dictionary &dict, const label sampleQ, randomGenerator &&rndGen)
Construct from a dictionary.
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.
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)