ReitzDiwakar.C
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-2020 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 \*---------------------------------------------------------------------------*/
25 
26 #include "ReitzDiwakar.H"
27 
28 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
29 
30 template<class CloudType>
32 (
33  const dictionary& dict,
34  CloudType& owner
35 )
36 :
37  BreakupModel<CloudType>(dict, owner, typeName),
38  Cbag_(6.0),
39  Cb_(0.785),
40  Cstrip_(0.5),
41  Cs_(10.0)
42 {
43  if (!this->defaultCoeffs(true))
44  {
45  this->coeffDict().lookup("Cbag") >> Cbag_;
46  this->coeffDict().lookup("Cb") >> Cb_;
47  this->coeffDict().lookup("Cstrip") >> Cstrip_;
48  this->coeffDict().lookup("Cs") >> Cs_;
49  }
50 }
51 
52 
53 template<class CloudType>
55 :
56  BreakupModel<CloudType>(bum),
57  Cbag_(bum.Cbag_),
58  Cb_(bum.Cb_),
59  Cstrip_(bum.Cstrip_),
60  Cs_(bum.Cs_)
61 {}
62 
63 
64 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
65 
66 template<class CloudType>
68 {}
69 
70 
71 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
72 
73 template<class CloudType>
75 (
76  const scalar dt,
77  const vector& g,
78  scalar& d,
79  scalar& tc,
80  scalar& ms,
81  scalar& nParticle,
82  scalar& KHindex,
83  scalar& y,
84  scalar& yDot,
85  const scalar d0,
86  const scalar rho,
87  const scalar mu,
88  const scalar sigma,
89  const vector& U,
90  const scalar rhoc,
91  const scalar muc,
92  const vector& Urel,
93  const scalar Urmag,
94  const scalar tMom,
95  scalar& dChild,
96  scalar& massChild
97 )
98 {
99  scalar d1 = d;
100  scalar nuc = muc/rhoc;
101  scalar We = 0.5*rhoc*sqr(Urmag)*d/sigma;
102  scalar Re = Urmag*d/nuc;
103 
104  if (We > Cbag_)
105  {
106  if (We > Cstrip_*sqrt(Re))
107  {
108  scalar dStrip = sqr(2.0*Cstrip_*sigma)/(rhoc*pow3(Urmag)*muc);
109  scalar tauStrip = Cs_*d*sqrt(rho/rhoc)/Urmag;
110  scalar fraction = dt/tauStrip;
111 
112  // new droplet diameter, implicit calculation
113  d = (fraction*dStrip + d)/(1.0 + fraction);
114  }
115  else
116  {
117  scalar dBag = 2.0*Cbag_*sigma/(rhoc*sqr(Urmag));
118  scalar tauBag = Cb_*d*sqrt(rho*d/sigma);
119  scalar fraction = dt/tauBag;
120 
121  // new droplet diameter, implicit calculation
122  d = (fraction*dBag + d)/(1.0 + fraction);
123  }
124 
125  // preserve the total mass/volume by updating the number of
126  // particles in parcels due to breakup
127  nParticle *= pow3(d1/d);
128  }
129 
130  return false;
131 }
132 
133 
134 // ************************************************************************* //
virtual ~ReitzDiwakar()
Destructor.
Definition: ReitzDiwakar.C:67
dictionary dict
ReitzDiwakar(const dictionary &, CloudType &)
Construct from dictionary.
Definition: ReitzDiwakar.C:32
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:156
volScalarField muc(IOobject(IOobject::groupName("mu", continuousPhaseName), runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), rhoc *continuousPhaseViscosity->nu())
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
secondary breakup model
Definition: ReitzDiwakar.H:63
volScalarField rhoc(IOobject(rhocValue.name(), runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, rhocValue)
dimensionedScalar pow3(const dimensionedScalar &ds)
virtual bool update(const scalar dt, const vector &g, scalar &d, scalar &tc, scalar &ms, scalar &nParticle, scalar &KHindex, scalar &y, scalar &yDot, const scalar d0, const scalar rho, const scalar mu, const scalar sigma, const vector &U, const scalar rhoc, const scalar muc, const vector &Urel, const scalar Urmag, const scalar tMom, scalar &dChild, scalar &massChild)
Update the parcel properties.
Definition: ReitzDiwakar.C:75
Templated break-up model class.
Definition: SprayCloud.H:55
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:75
scalarField Re(const UList< complex > &cf)
Definition: complexFields.C:97