Luo.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) 2019-2025 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 "Luo.H"
27 #include "phaseSystem.H"
31 
32 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
33 
34 namespace Foam
35 {
36 namespace populationBalance
37 {
38 namespace coalescenceModels
39 {
42  (
44  Luo,
46  );
47 }
48 }
49 }
50 
51 
52 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
53 
55 (
56  const populationBalanceModel& popBal,
57  const dictionary& dict
58 )
59 :
60  coalescenceModel(popBal, dict),
61  beta_("beta", dimless, dict, 2.05),
62  C1_("C1", dimless, dict, 1)
63 {}
64 
65 
66 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
67 
70 (
71  const label i,
72  const label j
73 ) const
74 {
76 
77  const dimensionedScalar& dSphi = popBal_.dSph(i);
78  const dimensionedScalar& dSphj = popBal_.dSph(j);
79 
80  const volScalarField::Internal& rhoc = popBal_.continuousPhase().rho();
81 
82  tmp<volScalarField> tsigma(popBal_.sigmaWithContinuousPhase(i));
83  const volScalarField::Internal& sigma = tsigma();
84 
85  const dispersedPhaseInterface interface
86  (
87  popBal_.phases()[i],
88  popBal_.continuousPhase()
89  );
90 
91  if
92  (
93  !popBal_.fluid().foundInterfacialModel
94  <
96  >(interface)
97  )
98  {
100  << "A virtual mass model for " << popBal_.phases()[i].name()
101  << " in " << popBal_.continuousPhase().name() << " is not "
102  << "specified. This is required by the Luo coalescence model."
103  << exit(FatalError);
104  }
105 
106  tmp<volScalarField> tCvm =
107  popBal_.fluid().lookupInterfacialModel
108  <
110  >(interface).Cvm();
111  const volScalarField::Internal& Cvm = tCvm();
112 
113  tmp<volScalarField> tepsilonc(popBal_.continuousTurbulence().epsilon());
114  const volScalarField::Internal& epsilonc = tepsilonc();
115 
116  const dimensionedScalar xi = dSphi/dSphj;
117 
118  const volScalarField::Internal uij
119  (
120  sqrt(beta_)*cbrt(epsilonc*dSphi)*sqrt(1 + pow(xi, -2.0/3.0))
121  );
122 
123  return
124  pi/4*sqr(dSphi + dSphj)*uij
125  *exp
126  (
127  - C1_
128  *sqrt(0.75*(1 + sqr(xi))*(1 + pow3(xi)))
129  /(sqrt(popBal_.phases()[i].rho()()/rhoc + Cvm)*pow3(1 + xi))
130  *sqrt(rhoc*dSphi*sqr(uij)/sigma)
131  );
132 }
133 
134 
135 // ************************************************************************* //
Macros for easy insertion into run-time selection tables.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
Class to represent a interface between phases where one phase is considered dispersed within the othe...
Model for tracking the evolution of a dispersed phase size distribution due to coalescence (synonymou...
Base class for coalescence models.
Model of Luo (1993). The coalescence rate is calculated by.
Definition: Luo.H:169
Luo(const populationBalanceModel &popBal, const dictionary &dict)
Definition: Luo.C:55
virtual tmp< volScalarField::Internal > rate(const label i, const label j) const
Return the coalescence rate between two groups.
Definition: Luo.C:70
A class for managing temporary objects.
Definition: tmp.H:55
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:334
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
const dimensionSet dimless
defineTypeNameAndDebug(AdachiStuartFokkink, 0)
addToRunTimeSelectionTable(coalescenceModel, AdachiStuartFokkink, dictionary)
Namespace for OpenFOAM.
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition: errorManip.H:124
dimensionedScalar exp(const dimensionedScalar &ds)
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
tmp< DimensionedField< typename outerProduct< Type, Type >::type, GeoMesh, Field >> sqr(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
void pow3(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
void cbrt(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
tmp< DimensionedField< typename powProduct< Type, r >::type, GeoMesh, Field > > pow(const DimensionedField< Type, GeoMesh, PrimitiveField > &df, typename powProduct< Type, r >::type)
error FatalError
void sqrt(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
dictionary dict