1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
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.
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
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/>.
24 \*---------------------------------------------------------------------------*/
26 #include "LISAAtomization.H"
28 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
30 template <class CloudType>
31 Foam::LISAAtomization<CloudType>::LISAAtomization
33 const dictionary& dict,
37 AtomizationModel<CloudType>(dict, owner, typeName),
38 Cl_(readScalar(this->coeffDict().lookup("Cl"))),
39 cTau_(readScalar(this->coeffDict().lookup("cTau"))),
40 Q_(readScalar(this->coeffDict().lookup("Q"))),
41 lisaExp_(readScalar(this->coeffDict().lookup("lisaExp"))),
42 injectorDirection_(this->coeffDict().lookup("injectorDirection")),
43 SMDCalcMethod_(this->coeffDict().lookup("SMDCalculationMethod"))
45 // Note: Would be good if this could be picked up from the injector
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>
66 Foam::LISAAtomization<CloudType>::LISAAtomization
68 const LISAAtomization<CloudType>& am
71 AtomizationModel<CloudType>(am),
75 lisaExp_(am.lisaExp_),
76 injectorDirection_(am.injectorDirection_),
77 SMDCalcMethod_(am.SMDCalcMethod_)
81 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
83 template <class CloudType>
84 Foam::LISAAtomization<CloudType>::~LISAAtomization()
88 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
90 template<class CloudType>
91 Foam::scalar Foam::LISAAtomization<CloudType>::initLiquidCore() const
97 template<class CloudType>
98 bool Foam::LISAAtomization<CloudType>::calcChi() const
104 template<class CloudType>
105 void Foam::LISAAtomization<CloudType>::update
114 const scalar volFlowRate,
118 const vector& injectionPos,
119 const scalar pAmbient,
124 if (volFlowRate < SMALL)
133 // update atomization characteristic time
136 scalar We = 0.5*rhoAv*sqr(Urel)*d/sigma;
139 scalar Q = rhoAv/rho;
141 vector diff = pos - injectionPos;
142 scalar pWalk = mag(diff);
143 scalar traveledTime = pWalk/Urel;
145 scalar h = diff & injectorDirection_;
146 scalar delta = sqrt(sqr(pWalk) - sqr(h));
148 scalar hSheet = volFlowRate/(constant::mathematical::pi*delta*Urel);
150 // update drop diameter
156 scalar kNeg = Q*sqr(Urel)*rho/sigma;
158 scalar derivPos = sqrt(Q*sqr(Urel));
162 8.0*sqr(nu)*pow3(kNeg)
164 - 3.0*sigma/2.0/rho*sqr(kNeg)
168 4.0*sqr(nu)*pow4(kNeg)
169 + Q*sqr(Urel)*sqr(kNeg)
170 - sigma*pow3(kNeg)/rho
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 < 1e-4)
228 k = rhoAv*sqr(Urel)/2.0*sigma;
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)));
239 scalar dD = cbrt(3.0*constant::mathematical::pi*sqr(dL)/kL);
241 scalar atmPressure = 1.0e+5;
243 scalar pRatio = pAmbient/atmPressure;
245 dD = dD*pow(pRatio, lisaExp_);
249 // modifing dD to take account of flash boiling
250 dD = dD*(1.0 - chi*pow(pRatio, -pExp));
251 scalar lBU = Cl_ * mag(Urel)*tau;
261 #include "LISASMDCalcMethod1.H"
266 #include "LISASMDCalcMethod2.H"
271 // New droplet properties
279 // ************************************************************************* //