30 template<
class CloudType>
38 Cl_(this->coeffDict().template lookup<scalar>(
"Cl")),
39 cTau_(this->coeffDict().
template lookup<scalar>(
"cTau")),
40 Q_(this->coeffDict().
template lookup<scalar>(
"Q")),
41 lisaExp_(this->coeffDict().
template lookup<scalar>(
"lisaExp")),
42 injectorDirection_(this->coeffDict().
lookup(
"injectorDirection")),
43 SMDCalcMethod_(this->coeffDict().
lookup(
"SMDCalculationMethod"))
46 injectorDirection_ /=
mag(injectorDirection_);
48 if (SMDCalcMethod_ ==
"method1")
52 else if (SMDCalcMethod_ ==
"method2")
59 Info<<
"Warning: SMDCalculationMethod " << SMDCalcMethod_
60 <<
" unknown. Options are (method1 | method2). Using method2" 65 template<
class CloudType>
75 lisaExp_(am.lisaExp_),
76 injectorDirection_(am.injectorDirection_),
77 SMDCalcMethod_(am.SMDCalcMethod_)
83 template<
class CloudType>
90 template<
class CloudType>
97 template<
class CloudType>
104 template<
class CloudType>
114 const scalar volFlowRate,
118 const vector& injectionPos,
119 const scalar pAmbient,
124 if (volFlowRate < small)
136 scalar We = 0.5*rhoAv*
sqr(Urel)*d/
sigma;
139 scalar Q = rhoAv/
rho;
142 scalar pWalk =
mag(diff);
143 scalar traveledTime = pWalk/
Urel;
145 scalar
h = diff & injectorDirection_;
156 scalar kNeg = Q*
sqr(Urel)*rho/
sigma;
158 scalar derivPos =
sqrt(Q*
sqr(Urel));
164 - 3.0*sigma/2.0/rho*
sqr(kNeg)
176 for (
label i=0; i<40; i++)
178 k = kPos - (derivPos/((derivNeg - derivPos)/(kNeg - kPos)));
184 - 3.0*sigma/2.0/rho*
sqr(k)
205 if (
mag(k - kOld)/k < 1
e-4)
230 scalar J = 0.5*traveledTime*hSheet;
232 tau =
pow(3.0*cTau_, 2.0/3.0)*
cbrt(J*sigma/(
sqr(Q)*
pow4(Urel)*rho));
237 scalar kL = 1.0/(dL*
sqrt(0.5 + 1.5 * mu/
sqrt(rho*sigma*dL)));
241 scalar atmPressure = 1.0e+5;
243 scalar pRatio = pAmbient/atmPressure;
245 dD = dD*
pow(pRatio, lisaExp_);
250 dD = dD*(1.0 - chi*
pow(pRatio, -pExp));
251 scalar lBU = Cl_ *
mag(Urel)*tau;
scalar diff(const triad &A, const triad &B)
Return a quantity of the difference between two triads.
LISAAtomisation(const dictionary &, CloudType &)
Construct from dictionary.
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Templated atomisation model class.
label k
Boltzmann constant.
const dimensionedScalar h
Planck constant.
virtual bool calcChi() const
Flag to indicate if chi needs to be calculated.
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
stressControl lookup("compactNormalStress") >> compactNormalStress
Primary Breakup Model for pressure swirl atomisers.
dimensionedScalar cbrt(const dimensionedScalar &ds)
virtual scalar initLiquidCore() const
Initial value of liquidCore.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
virtual void update(const scalar dt, scalar &d, scalar &liquidCore, scalar &tc, const scalar rho, const scalar mu, const scalar sigma, const scalar volFlowRate, const scalar rhoAv, const scalar Urel, const vector &pos, const vector &injectionPos, const scalar pAmbient, const scalar chi, Random &rndGen) const
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensionedScalar pow4(const dimensionedScalar &ds)
dimensioned< scalar > mag(const dimensioned< Type > &)
virtual ~LISAAtomisation()
Destructor.
Templated base class for dsmc cloud.
const dimensionedScalar e
Elementary charge.