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-2023 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  const label injectori,
96  scalar& dChild,
97  scalar& massChild
98 )
99 {
100  scalar d1 = d;
101  scalar nuc = muc/rhoc;
102  scalar We = 0.5*rhoc*sqr(Urmag)*d/sigma;
103  scalar Re = Urmag*d/nuc;
104 
105  if (We > Cbag_)
106  {
107  if (We > Cstrip_*sqrt(Re))
108  {
109  scalar dStrip = sqr(2.0*Cstrip_*sigma)/(rhoc*pow3(Urmag)*muc);
110  scalar tauStrip = Cs_*d*sqrt(rho/rhoc)/Urmag;
111  scalar fraction = dt/tauStrip;
112 
113  // new droplet diameter, implicit calculation
114  d = (fraction*dStrip + d)/(1.0 + fraction);
115  }
116  else
117  {
118  scalar dBag = 2.0*Cbag_*sigma/(rhoc*sqr(Urmag));
119  scalar tauBag = Cb_*d*sqrt(rho*d/sigma);
120  scalar fraction = dt/tauBag;
121 
122  // new droplet diameter, implicit calculation
123  d = (fraction*dBag + d)/(1.0 + fraction);
124  }
125 
126  // preserve the total mass/volume by updating the number of
127  // particles in parcels due to breakup
128  nParticle *= pow3(d1/d);
129  }
130 
131  return false;
132 }
133 
134 
135 // ************************************************************************* //
scalar y
Templated break-up model class.
Definition: BreakupModel.H:55
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:80
secondary breakup model
Definition: ReitzDiwakar.H:66
virtual ~ReitzDiwakar()
Destructor.
Definition: ReitzDiwakar.C:67
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, const label injectori, scalar &dChild, scalar &massChild)
Update the parcel properties.
Definition: ReitzDiwakar.C:75
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:162
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
Definition: dictionary.C:710
const dictionary & coeffDict() const
Return const access to the coefficients dictionary.
Definition: subModelBase.C:128
virtual bool defaultCoeffs(const bool printMsg) const
Returns true if defaultCoeffs is true and outputs on printMsg.
Definition: subModelBase.C:140
U
Definition: pEqn.H:72
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
const dimensionedScalar mu
Atomic mass unit.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensionedScalar sqrt(const dimensionedScalar &ds)
scalarField Re(const UList< complex > &cf)
Definition: complexFields.C:97
dictionary dict