RosinRammler Class Reference

Particle-size distribution model wherein random samples are drawn from the doubly-truncated two-parameter Rosin-Rammler (Weibull) probability density function: More...

Inheritance diagram for RosinRammler:
[legend]
Collaboration diagram for RosinRammler:
[legend]

Public Member Functions

 TypeName ("RosinRammler")
 Runtime type information. More...
 
 RosinRammler (const dictionary &dict, Random &rndGen)
 Construct from components. More...
 
 RosinRammler (const RosinRammler &p)
 Copy construct. More...
 
virtual autoPtr< distributionModelclone () const
 Construct and return a clone. More...
 
void operator= (const RosinRammler &)=delete
 No copy assignment. More...
 
virtual ~RosinRammler ()=default
 Destructor. More...
 
virtual scalar sample () const
 Sample the distribution. More...
 
virtual scalar meanValue () const
 Return the theoretical mean of the distribution. More...
 
- Public Member Functions inherited from distributionModel
 TypeName ("distributionModel")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, distributionModel, dictionary,(const dictionary &dict, Random &rndGen),(dict, rndGen))
 Declare runtime constructor selection table. More...
 
 distributionModel (const word &name, const dictionary &dict, Random &rndGen)
 Construct from dictionary. More...
 
 distributionModel (const distributionModel &p)
 Copy construct. More...
 
virtual ~distributionModel ()=default
 Destructor. More...
 
virtual scalar minValue () const
 Return the minimum of the distribution. More...
 
virtual scalar maxValue () const
 Return the maximum of the distribution. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from distributionModel
static autoPtr< distributionModelNew (const dictionary &dict, Random &rndGen)
 Selector. More...
 
- Protected Member Functions inherited from distributionModel
virtual void check () const
 Check that the distribution model is valid. More...
 
- Protected Attributes inherited from distributionModel
const dictionary distributionModelDict_
 Coefficients dictionary. More...
 
RandomrndGen_
 Reference to the random number generator. More...
 
scalar minValue_
 Minimum of the distribution. More...
 
scalar maxValue_
 Maximum of the distribution. More...
 

Detailed Description

Particle-size distribution model wherein random samples are drawn from the doubly-truncated two-parameter Rosin-Rammler (Weibull) probability density function:

\[ f(x; \lambda, n, A, B) = \frac{ \frac{n}{\lambda} \left( \frac{x}{\lambda} \right)^{n-1} \exp\{ -(\frac{x}{\lambda})^n \} }{ \exp\{- (\frac{A}{\lambda})^n \} - \exp\{- (\frac{B}{\lambda})^n \} } \]

where

\( f(x; \lambda, n, A, B) \) = Rosin-Rammler probability density function
\( \lambda \) = Scale parameter
\( n \) = Shape parameter
\( x \) = Sample
\( A \) = Minimum of the distribution
\( B \) = Maximum of the distribution

Constraints:

  • \( \infty > B > A > 0\)
  • \( x \in [B,A] \)
  • \( \lambda > 0 \)
  • \( n > 0 \)

Random samples are generated by the inverse transform sampling technique by using the quantile function of the doubly-truncated two-parameter Rosin-Rammler (Weibull) probability density function:

\[ x = \lambda \left( q_{min} - \ln (1 - u r) \right)^{1/n} \]

with

\[ r = 1 - \exp(-q_{max} + q_{min}) \]

\[ q_{min} = \left(\frac{A}{\lambda}\right)^n \]

\[ q_{max} = \left(\frac{B}{\lambda}\right)^n \]

where \( u \) is sample drawn from the uniform probability density function on the unit interval \( (0, 1) \).

Reference:

    Doubly-truncated two-parameter Weibull distribution and its moments (tag:C):
        Crénin, F. (2015).
        Truncated Weibull Distribution Functions and Moments.
        SSRN 2690255.
        DOI:10.2139/ssrn.2690255
Usage
Minimal example by using constant/<CloudProperties>:
subModels
{
    injectionModels
    {
        <name>
        {
            ...

            sizeDistribution
            {
                type        RosinRammler;
                RosinRammlerDistribution
                {
                    lambda      <scaleParameterValue>;
                    n           <shapeParameterValue>;
                    minValue    <minValue>;
                    maxValue    <maxValue>;
                }
            }
        }
    }
}

where the entries mean:

Property Description Type Reqd Deflt
type Type name: RosinRammler word yes -
RosinRammlerDistribution Distribution settings dict yes -
lambda Scale parameter scalar yes -
n Shape parameter scalar yes -
minValue Minimum of the distribution scalar yes -
maxValue Maximum of the distribution scalar yes -
Source files

Definition at line 219 of file RosinRammler.H.

Constructor & Destructor Documentation

◆ RosinRammler() [1/2]

RosinRammler ( const dictionary dict,
Random rndGen 
)

Construct from components.

Definition at line 47 of file RosinRammler.C.

Referenced by RosinRammler::clone().

Here is the caller graph for this function:

◆ RosinRammler() [2/2]

RosinRammler ( const RosinRammler p)

Copy construct.

Definition at line 80 of file RosinRammler.C.

◆ ~RosinRammler()

virtual ~RosinRammler ( )
virtualdefault

Destructor.

Member Function Documentation

◆ TypeName()

TypeName ( "RosinRammler"  )

Runtime type information.

◆ clone()

virtual autoPtr<distributionModel> clone ( ) const
inlinevirtual

Construct and return a clone.

Implements distributionModel.

Definition at line 247 of file RosinRammler.H.

References RosinRammler::RosinRammler().

Here is the call graph for this function:

◆ operator=()

void operator= ( const RosinRammler )
delete

No copy assignment.

◆ sample()

Foam::scalar sample ( ) const
virtual

Sample the distribution.

Implements distributionModel.

Definition at line 90 of file RosinRammler.C.

References Foam::exp(), Foam::log(), and Foam::pow().

Here is the call graph for this function:

◆ meanValue()

Foam::scalar meanValue ( ) const
virtual

Return the theoretical mean of the distribution.

Implements distributionModel.

Definition at line 100 of file RosinRammler.C.

References Foam::exp(), Foam::gMax(), Foam::gMin(), Foam::Math::incGamma_P(), and Foam::pow().

Here is the call graph for this function:

The documentation for this class was generated from the following files: