File multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.C changed (mode: 100644) (index 0a54164..e94fee1) |
... |
... |
Foam::populationBalanceSubModels::aggregationKernels::Grimes |
56 |
56 |
) |
) |
57 |
57 |
: |
: |
58 |
58 |
aggregationKernel(dict, mesh), |
aggregationKernel(dict, mesh), |
59 |
|
Ucrit_(dict.lookup("Ucrit")), |
|
60 |
59 |
thisPhaseName_(dict.lookup("thisPhaseName")), |
thisPhaseName_(dict.lookup("thisPhaseName")), |
61 |
60 |
contPhaseName_(dict.lookup("contPhaseName")), |
contPhaseName_(dict.lookup("contPhaseName")), |
62 |
|
thisPhaseDict_ |
|
63 |
|
( |
|
64 |
|
transportProperties.subDict |
|
65 |
|
( |
|
66 |
|
IOobject::groupName(thisPhaseName_) |
|
67 |
|
) |
|
68 |
|
), |
|
69 |
|
contPhaseDict_ |
|
70 |
|
( |
|
71 |
|
transportProperties.subDict |
|
72 |
|
( |
|
73 |
|
IOobject::groupName(contPhaseName_) |
|
74 |
|
) |
|
75 |
|
), |
|
76 |
|
Udisp_ |
|
77 |
|
( |
|
78 |
|
mesh_.lookupObject<volVectorField> |
|
79 |
|
( |
|
80 |
|
IOobject::groupName("U", thisPhaseName_) |
|
81 |
|
) |
|
82 |
|
), |
|
83 |
|
Ucont_ |
|
84 |
|
( |
|
85 |
|
mesh_.lookupObject<volVectorField> |
|
86 |
|
( |
|
87 |
|
IOobject::groupName("U", contPhaseName_) |
|
88 |
|
) |
|
89 |
|
), |
|
90 |
|
moment2_ |
|
|
61 |
|
//thisPhase_(thisPhaseName_, phaseDict_, mesh), |
|
62 |
|
thisPhaseDict_(mesh_.lookupObject<IOdictionary>("transportProperties").subDict(thisPhaseName_)), |
|
63 |
|
contPhaseDict_(mesh_.lookupObject<IOdictionary>("transportProperties").subDict(contPhaseName_)), |
|
64 |
|
Kcr_(dict.lookupOrDefault<scalar>("Kcr", 1.0)), |
|
65 |
|
Ksv_(dict.lookupOrDefault<scalar>("Ksv", 5.0)), |
|
66 |
|
Kce_(dict.lookupOrDefault<scalar>("Kce", 0.5)), |
|
67 |
|
kB_(dict.lookupOrDefault<scalar>("kB", 1.3806503e-23)), |
|
68 |
|
B_(dict.lookupOrDefault<scalar>("B", 1.65e-31)), |
|
69 |
|
//T_(mesh_.lookupObject<volScalarField>(IOobject::groupName("T", thisPhaseName_))), |
|
70 |
|
T_(356.15), |
|
71 |
|
rhoC_(readScalar(contPhaseDict_.lookup("rho"))), |
|
72 |
|
rhoD_(readScalar(thisPhaseDict_.lookup("rho"))), |
|
73 |
|
g_(9.81), |
|
74 |
|
alphaD_ |
91 |
75 |
( |
( |
92 |
76 |
mesh_.lookupObject<volScalarField> |
mesh_.lookupObject<volScalarField> |
93 |
77 |
( |
( |
94 |
|
IOobject::groupName("moment.2.populationBalance", thisPhaseName_) |
|
|
78 |
|
IOobject::groupName("alpha", thisPhaseName_) |
95 |
79 |
) |
) |
96 |
80 |
), |
), |
97 |
|
moment3_ |
|
98 |
|
( |
|
99 |
|
mesh_.lookupObject<volScalarField> |
|
100 |
|
( |
|
101 |
|
IOobject::groupName("moment.3.populationBalance", thisPhaseName_) |
|
102 |
|
) |
|
103 |
|
) |
|
|
81 |
|
nuC_(readScalar(contPhaseDict_.lookup("nu"))), |
|
82 |
|
gamma_(readScalar(thisPhaseDict_.lookup("gamma"))) |
104 |
83 |
{} |
{} |
105 |
84 |
|
|
106 |
85 |
|
|
|
... |
... |
Foam::populationBalanceSubModels::aggregationKernels::Grimes::Ka |
122 |
101 |
const label environment |
const label environment |
123 |
102 |
) const |
) const |
124 |
103 |
{ |
{ |
125 |
|
//Info << "Printing objectRegistry Names abscissa1.mesh(): " << abscissa1.mesh().objectRegistry::names() << endl; |
|
126 |
|
|
|
127 |
|
Info << "Printing objectRegistry Names mesh(): " << mesh_.objectRegistry::names() << endl; |
|
128 |
|
Info << "Printing dictionary transportProperties: " << mesh_.lookupObject<IOdictionary>("transportProperties") << endl; |
|
|
104 |
|
//- Evaluate volumes of colliding droplets |
|
105 |
|
scalar v1_(Foam::constant::mathematical::pi*pow(abscissa1,3.0)/6.0); |
|
106 |
|
scalar v2_(Foam::constant::mathematical::pi*pow(abscissa2,3.0)/6.0); |
129 |
107 |
|
|
130 |
|
//Info << "Printing volVectorField U: " << mesh_.lookupObject<volVectorField>("U")[celli] << endl; |
|
131 |
|
//Info << "Printing volVectorField U_: " << U_ << endl; |
|
132 |
|
|
|
133 |
|
// dimensionedScalar smallAbs("smallAbs", pow3(abscissa1.dimensions())/dimTime, SMALL); |
|
134 |
|
|
|
135 |
|
//- Read velocity of the associated phase (NOT NECESSARY : velocity of the associated phase is now U_ |
|
136 |
|
//- Read velocity of the continuous phase |
|
137 |
|
|
|
138 |
|
//- Evaluate relative velocity |
|
139 |
|
dimensionedScalar Uslip_ |
|
140 |
|
( |
|
141 |
|
"Uslip_", |
|
142 |
|
dimensionSet(0, 1, -1, 0, 0), |
|
143 |
|
mag(Udisp_[celli] - Ucont_[celli]) |
|
144 |
|
); |
|
145 |
|
|
|
146 |
|
// Read sauter diameter |
|
147 |
|
//dimensionedScalar diaMin_("diaMin_", dimensionSet(0, 1, 0, 0, 0), 1.0e-06); |
|
148 |
|
//dimensionedScalar diaMax_("diaMax_", dimensionSet(0, 1, 0, 0, 0), 1.0e-01); |
|
149 |
|
//dimensionedScalar smallMoment2("smallMoment2", dimensionSet(0, -1, 0, 0, 0), 1.0e-06); |
|
150 |
|
|
|
151 |
|
scalar diaMin_(1.0e-06); |
|
152 |
|
scalar diaMax_(1.0e-01); |
|
153 |
|
scalar smallMoment2(1.0e-06); |
|
154 |
|
|
|
155 |
|
dimensionedScalar dSauter_ |
|
156 |
|
( |
|
157 |
|
"dSauter_", |
|
158 |
|
dimensionSet(0, 1, 0, 0, 0), |
|
159 |
|
min |
|
160 |
|
( |
|
161 |
|
max |
|
162 |
|
( |
|
163 |
|
moment3_[celli]/max(moment2_[celli], smallMoment2), diaMin_ |
|
164 |
|
), |
|
165 |
|
diaMax_ |
|
166 |
|
) |
|
167 |
|
); |
|
168 |
|
|
|
169 |
|
scalar v1_ = Foam::constant::mathematical::pi*pow(abscissa1,3.0)/6.0; |
|
170 |
|
scalar v2_ = Foam::constant::mathematical::pi*pow(abscissa2,3.0)/6.0; |
|
171 |
|
|
|
172 |
|
const double kB = 1.3806503e-23; |
|
173 |
|
|
|
174 |
|
scalar eta_c(0.000607); |
|
175 |
|
|
|
176 |
|
scalar rho_d = 732.0; |
|
177 |
|
scalar rho_c = 966.0; |
|
178 |
|
|
|
179 |
|
scalar g = 9.81; |
|
180 |
|
scalar gamma = 0.000978; |
|
181 |
|
|
|
182 |
|
scalar B = 1.65e-31; |
|
183 |
|
scalar T = 356.15; |
|
184 |
|
|
|
185 |
|
scalar k_cr = 5.0; /* Empirical fitting parameter coalescence rate */ |
|
186 |
|
scalar k_sv = 5.0; /* Empirical fitting parameter hindered sedimentation function */ |
|
187 |
|
scalar k_ce = 0.5; /* Empirical fitting parameter binary coalescence efficiency */ |
|
188 |
|
|
|
189 |
|
//- Evaluate volumes of the colliding droplets |
|
190 |
|
|
|
191 |
108 |
//- Evaluate useful expressions |
//- Evaluate useful expressions |
192 |
|
/* |
|
193 |
109 |
scalar vSum_ = pow(v1_,1.0/3.0) + pow(v2_,1.0/3.0); |
scalar vSum_ = pow(v1_,1.0/3.0) + pow(v2_,1.0/3.0); |
194 |
110 |
scalar vProduct_ = pow(v1_,1.0/3.0)*pow(v2_,1.0/3.0); |
scalar vProduct_ = pow(v1_,1.0/3.0)*pow(v2_,1.0/3.0); |
195 |
|
scalar vDiff_ = fabs(pow(v1_,2.0/3.0) - pow(v2_,2.0/3.0)); |
|
196 |
|
|
|
197 |
|
scalar alpha_d = 0.5; |
|
|
111 |
|
scalar vDiff_ = std::fabs(pow(v1_,2.0/3.0) - pow(v2_,2.0/3.0)); |
198 |
112 |
|
|
199 |
|
scalar Pe = pow(3.0/(4.0*Foam::constant::mathematical::pi),1.0/3.0) |
|
200 |
|
*((rho_d-rho_c)*g)/(kB*T) |
|
201 |
|
*pow(1-alpha_d,k_sv) |
|
|
113 |
|
//- Evaluate Peclet number of the dispersed phase |
|
114 |
|
scalar Pe_ = pow(3.0/(4.0*Foam::constant::mathematical::pi),1.0/3.0) |
|
115 |
|
*(std::fabs(rhoD_-rhoC_)*g_)/(kB_*T_) |
|
116 |
|
*pow(1 - alphaD_[celli],Ksv_) |
202 |
117 |
*vProduct_*vDiff_; |
*vProduct_*vDiff_; |
203 |
|
|
|
|
118 |
|
|
204 |
119 |
scalar t_bc = 1.046 |
scalar t_bc = 1.046 |
205 |
120 |
*pow(3.0/(4.0*Foam::constant::mathematical::pi),3.0/2.0) |
*pow(3.0/(4.0*Foam::constant::mathematical::pi),3.0/2.0) |
206 |
|
*(eta_c*(rho_d-rho_c)*g)/(pow(gamma,3.0/2.0) |
|
207 |
|
*pow(B,0.5)) |
|
|
121 |
|
*(nuC_*rhoC_*std::fabs(rhoD_-rhoC_)*g_)/(pow(gamma_,3.0/2.0)*pow(B_,1.0/2.0)) |
208 |
122 |
*pow(vProduct_/vSum_,9.0/2.0); |
*pow(vProduct_/vSum_,9.0/2.0); |
209 |
|
*/ |
|
210 |
|
//- Evaluate relative velocity of different drops |
|
211 |
|
scalar Urelative_ |
|
212 |
|
( |
|
213 |
|
mag(Uslip_.value()*(abscissa2-abscissa1)/dSauter_.value()) |
|
214 |
|
); |
|
215 |
|
|
|
|
123 |
|
|
216 |
124 |
//if (std::fabs(Urelative_ - 0.00025) > SMALL) |
//if (std::fabs(Urelative_ - 0.00025) > SMALL) |
217 |
125 |
// Urelative_ = 0.00025; |
// Urelative_ = 0.00025; |
218 |
126 |
|
|
219 |
|
//- Evaluate efficiency term |
|
220 |
|
scalar lambda_(Foam::exp(-(Urelative_/Ucrit_.value()))); |
|
221 |
|
lambda_ = max(lambda_, 1e-10); |
|
222 |
|
|
|
223 |
|
return Ca_.value(); |
|
224 |
|
// *k_cr*(kB*T/(6.*eta_c)) |
|
225 |
|
// *pow(vSum_,2.)/vProduct_ |
|
226 |
|
// *(1.0+Pe+(4.496*pow(Pe,1.0/3.0))) |
|
227 |
|
// *exp(-t_bc/(k_ce)); |
|
|
127 |
|
return Ca_.value() |
|
128 |
|
*Kcr_*(kB_*T_/(6.0*nuC_*rhoC_)) |
|
129 |
|
*pow(vSum_,2.0)/vProduct_ |
|
130 |
|
*(1.0 + Pe_ + (4.496*pow(Pe_,1.0/3.0))) |
|
131 |
|
*exp(-t_bc/Kce_); |
228 |
132 |
} |
} |
229 |
133 |
|
|
230 |
134 |
// ************************************************************************* // |
// ************************************************************************* // |
File multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.H changed (mode: 100644) (index f18bdba..d2e68c1) |
... |
... |
SourceFiles |
50 |
50 |
#include "fundamentalConstants.H" |
#include "fundamentalConstants.H" |
51 |
51 |
#include "addToRunTimeSelectionTable.H" |
#include "addToRunTimeSelectionTable.H" |
52 |
52 |
|
|
53 |
|
|
|
54 |
53 |
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // |
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // |
55 |
54 |
|
|
56 |
55 |
namespace Foam |
namespace Foam |
|
... |
... |
private: |
72 |
71 |
|
|
73 |
72 |
// Private data |
// Private data |
74 |
73 |
|
|
75 |
|
//- This phase name |
|
|
74 |
|
//- Dispersed phase name |
76 |
75 |
word thisPhaseName_; |
word thisPhaseName_; |
77 |
76 |
|
|
78 |
77 |
//- Continuous phase name |
//- Continuous phase name |
79 |
78 |
word contPhaseName_; |
word contPhaseName_; |
80 |
79 |
|
|
81 |
|
//- This Phase dictionary |
|
|
80 |
|
//phaseModel thisPhase_; |
|
81 |
|
|
|
82 |
|
//- Dispersed Phase dictionary |
82 |
83 |
dictionary thisPhaseDict_; |
dictionary thisPhaseDict_; |
83 |
84 |
|
|
84 |
85 |
//- Continuous Phase dictionary |
//- Continuous Phase dictionary |
85 |
86 |
dictionary contPhaseDict_; |
dictionary contPhaseDict_; |
86 |
|
|
|
87 |
|
//- Velocity field of the phase |
|
88 |
|
const volVectorField& Udisp_; |
|
89 |
|
|
|
90 |
|
//- Velocity field of the continuous phase |
|
91 |
|
const volVectorField& Ucont_; |
|
92 |
87 |
|
|
93 |
|
//- Second moment of the distribution |
|
94 |
|
const volScalarField& moment2_; |
|
|
88 |
|
//- Scaling parameter for droplet collision |
|
89 |
|
scalar Kcr_; |
|
90 |
|
|
|
91 |
|
//- Scaling parameter for hindered sedimentation |
|
92 |
|
scalar Ksv_; |
|
93 |
|
|
|
94 |
|
//- Scaling parameter for binary coalescence efficiency |
|
95 |
|
scalar Kce_; |
|
96 |
|
|
|
97 |
|
//- Boltzmann constant |
|
98 |
|
const scalar kB_; |
|
99 |
|
|
|
100 |
|
//- Intermolecular coefficient at the phase interface [N.m^2], retarded Hamaker constant estimated from Grimes |
|
101 |
|
scalar B_; |
|
102 |
|
|
|
103 |
|
//- Temperature of continuous phase |
|
104 |
|
//volScalarField T_; |
|
105 |
|
scalar T_; |
|
106 |
|
|
|
107 |
|
//- Density of the continuous phase |
|
108 |
|
scalar rhoC_; |
|
109 |
|
|
|
110 |
|
//- Density of the dispersed phase |
|
111 |
|
scalar rhoD_; |
|
112 |
|
|
|
113 |
|
//- Gravitational acceleration |
|
114 |
|
scalar g_; |
|
115 |
|
|
|
116 |
|
//- Volume fraction of the dispersed phase |
|
117 |
|
volScalarField alphaD_; |
|
118 |
|
|
|
119 |
|
//- Kinematic viscosity of the continuous phase |
|
120 |
|
scalar nuC_; |
95 |
121 |
|
|
96 |
|
//- Third moment of the distribution |
|
97 |
|
const volScalarField& moment3_; |
|
|
122 |
|
//- Surface tension of the phase pair |
|
123 |
|
scalar gamma_; |
98 |
124 |
|
|
99 |
125 |
|
|
100 |
126 |
public: |
public: |