36 complexVector OUprocess::WeinerProcess(
const scalar deltaT)
const
58 OUfield_(Kmesh_.size()),
60 alpha_(OUdict.lookup<scalar>(
"alpha")),
61 sigma_(OUdict.lookup<scalar>(
"sigma")),
62 kUpper_(OUdict.lookup<scalar>(
"kUpper")),
63 kLower_(OUdict.lookup<scalar>(
"kLower")),
64 scale_((kUpper_ - kLower_)*
pow(scalar(Kmesh_.size()), 1.0/
vector::dim))
68 scalar sqrkUpper_ =
sqr(kUpper_);
69 scalar sqrkLower_ =
sqr(kLower_) + small;
74 if ((sqrK =
magSqr(
K[i])) < sqrkUpper_ && sqrK > sqrkLower_)
76 OUfield_[i] = scale_*sigma_*WeinerProcess(deltaT);
97 scalar sqrkUpper_ =
sqr(kUpper_);
98 scalar sqrkLower_ =
sqr(kLower_) + small;
103 if ((sqrK =
magSqr(
K[i])) < sqrkUpper_ && sqrK > sqrkLower_)
106 (1.0 - alpha_*deltaT)*OUfield_[i]
107 + scale_*sigma_*WeinerProcess(deltaT);
#define forAll(list, i)
Loop across all elements in list.
Calculate the wavenumber vector field corresponding to the space vector field of a finite volume mesh...
OUprocess(const Kmesh &kmesh, const scalar deltaT, const dictionary &)
Construct from wavenumber mesh, timestep and coefficients dict.
const complexVectorField & newField(const scalar deltaT) const
Return the current random Ornstein-Uhlenbeck process field.
Extension to the c++ complex library type.
A list of keyword definitions, which are a keyword followed by any number of values (e....
virtual scalar sample() const
Sample the distribution.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Vector< complex > complexVector
complexVector obtained from generic Vector.
dimensioned< scalar > magSqr(const dimensioned< Type > &)