reactingEulerFoam: populationBalanceModel: Added breakup and coalescence models

Added the breakup and coalescence models of Lehr et al. (2002), and the
coalescence model of Luo (1993).

Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
This commit is contained in:
Will Bainbridge
2019-02-01 12:40:57 +00:00
parent f6bac37fc9
commit 860a40d237
9 changed files with 887 additions and 2 deletions

View File

@ -22,10 +22,13 @@ populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C
populationBalanceModel/coalescenceModels/constantCoalescence/constantCoalescence.C
populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C
populationBalanceModel/coalescenceModels/hydrodynamic/hydrodynamic.C
populationBalanceModel/coalescenceModels/LehrMilliesMewesCoalescence/LehrMilliesMewesCoalescence.C
populationBalanceModel/coalescenceModels/Luo/Luo.C
populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C
populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.C
populationBalanceModel/binaryBreakupModels/LuoSvendsen/LuoSvendsen.C
populationBalanceModel/binaryBreakupModels/LehrMilliesMewes/LehrMilliesMewes.C
populationBalanceModel/binaryBreakupModels/powerLawUniformBinary/powerLawUniformBinary.C
populationBalanceModel/breakupModels/breakupModel/breakupModel.C

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2015-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2015-2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -357,10 +357,22 @@ public:
// Sub-model lookup
//- Check availability of a sub model for a given phase pair
template<class modelType>
bool foundSubModel(const phasePair& key) const;
//- Return a sub model between a phase pair
template<class modelType>
const modelType& lookupSubModel(const phasePair& key) const;
//- Check availability of a sub model between two phases
template<class modelType>
bool foundSubModel
(
const phaseModel& dispersed,
const phaseModel& continuous
) const;
//- Return a sub model between two phases
template<class modelType>
const modelType& lookupSubModel

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2015-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2015-2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -370,6 +370,44 @@ void Foam::phaseSystem::fillFields
}
template<class modelType>
bool Foam::phaseSystem::foundSubModel(const phasePair& key) const
{
const word name(IOobject::groupName(modelType::typeName, key.name()));
if (key.ordered())
{
if (mesh().foundObject<modelType>(name))
{
return true;
}
else
{
return false;
}
}
else
{
if
(
mesh().foundObject<modelType>(name)
||
mesh().foundObject<modelType>
(
IOobject::groupName(modelType::typeName, key.otherName())
)
)
{
return true;
}
else
{
return false;
}
}
}
template<class modelType>
const modelType& Foam::phaseSystem::lookupSubModel(const phasePair& key) const
{
@ -390,6 +428,17 @@ const modelType& Foam::phaseSystem::lookupSubModel(const phasePair& key) const
}
template<class modelType>
bool Foam::phaseSystem::foundSubModel
(
const phaseModel& dispersed,
const phaseModel& continuous
) const
{
return foundSubModel<modelType>(orderedPhasePair(dispersed, continuous));
}
template<class modelType>
const modelType& Foam::phaseSystem::lookupSubModel
(

View File

@ -0,0 +1,112 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "LehrMilliesMewes.H"
#include "addToRunTimeSelectionTable.H"
#include "phaseCompressibleTurbulenceModel.H"
#include "mathematicalConstants.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace binaryBreakupModels
{
defineTypeNameAndDebug(LehrMilliesMewes, 0);
addToRunTimeSelectionTable
(
binaryBreakupModel,
LehrMilliesMewes,
dictionary
);
}
}
}
using Foam::constant::mathematical::pi;
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::diameterModels::binaryBreakupModels::LehrMilliesMewes::LehrMilliesMewes
(
const populationBalanceModel& popBal,
const dictionary& dict
)
:
binaryBreakupModel(popBal, dict)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::diameterModels::binaryBreakupModels::LehrMilliesMewes::
addToBinaryBreakupRate
(
volScalarField& binaryBreakupRate,
const label i,
const label j
)
{
const phaseModel& continuousPhase = popBal_.continuousPhase();
const sizeGroup& fi = popBal_.sizeGroups()[i];
const sizeGroup& fj = popBal_.sizeGroups()[j];
volScalarField L
(
pow
(
popBal_.sigmaWithContinuousPhase(fj.phase())/continuousPhase.rho(),
3.0/5.0
)
/pow(popBal_.continuousTurbulence().epsilon(), 2.0/5.0)
);
// Reset of dimension to pure length to avoid problems in transcendental
// functions due to small exponents
L.dimensions().reset(dimLength);
const volScalarField T
(
pow
(
popBal_.sigmaWithContinuousPhase(fj.phase())/continuousPhase.rho(),
2.0/5.0
)
/pow(popBal_.continuousTurbulence().epsilon(), 3.0/5.0)
);
binaryBreakupRate +=
0.5*pow(fj.d()/L, 5.0/3.0)
*exp(-sqrt(2.0)/pow3(fj.d()/L))
*6.0/pow(pi, 1.5)/pow3(fi.d()/L)
*exp(-9.0/4.0*sqr(log(pow(2.0, 0.4)*fi.d()/L)))
/max(1.0 + erf(1.5*log(pow(2.0, 1.0/15.0)*fj.d()/L)), SMALL)
/(T*pow3(L));
}
// ************************************************************************* //

View File

@ -0,0 +1,149 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::diameterModels::binaryBreakupModels::LehrMilliesMewes
Description
Model of Lehr et al. (2002). The breakup rate is calculated by
\f[
0.5 d_j^{*^{5/3}} \mathrm{exp}\left(-\frac{\sqrt{2}}{d_j^{*^{3}}}\right)
\frac{6}{\pi^{3/2}d_i^{*^{3}}}
\mathrm{exp}
\left(
- \frac{9}{4}\left[\mathrm{ln}\left(2^{2/5} d_i^{*}\right)\right]^{2}
\right)
\left(
1
+ \mathrm{erf}
\left[
\frac{3}{2}\mathrm{ln} \left(2^{1/15} d_j^{*}\right)
\right]
\right)^{-1}
\frac{1}{L^{3}T}
\f]
with the time scale
\f[
T = \left(\frac{\sigma}{\rho_c}\right)^{2/5} \frac{1}{\epsilon_c^{3/5}}
\f]
the dimensionless diameter
\f[
d^{*} = \frac{d}{L}
\f]
and the length scale
\f[
L = \left(\frac{\sigma}{\rho_c}\right)^{3/5} \frac{1}{\epsilon_c^{2/5}}
\f]
\vartable
\rho_c | Density of continuous phase [kg/m3]
\sigma | Surface tension [N/m]
\epsilon_c | Continuous phase turbulent dissipation rate [m2/s3]
d_i | Diameter of daughter bubble i [m]
d_j | Diameter of mother bubble j [m]
\endvartable
References:
\verbatim
Lehr, F., Millies, M., & Mewes, D. (2002).
Bubblesize distributions and flow fields in bubble columns.
AIChE Journal, 48(11), 2426-2443.
Eq. 12-16, p. 2429-2430.
\endverbatim
SourceFiles
LehrMilliesMewes.C
\*---------------------------------------------------------------------------*/
#ifndef LehrMilliesMewes_H
#define LehrMilliesMewes_H
#include "binaryBreakupModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace binaryBreakupModels
{
/*---------------------------------------------------------------------------*\
Class LehrMilliesMewes Declaration
\*---------------------------------------------------------------------------*/
class LehrMilliesMewes
:
public binaryBreakupModel
{
public:
//- Runtime type information
TypeName("LehrMilliesMewes");
// Constructor
LehrMilliesMewes
(
const populationBalanceModel& popBal,
const dictionary& dict
);
//- Destructor
virtual ~LehrMilliesMewes()
{}
// Member Functions
//- Add to binary breakupRate
virtual void addToBinaryBreakupRate
(
volScalarField& binaryBreakupRate,
const label i,
const label j
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace binaryBreakupModels
} // End namespace diameterModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,107 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "LehrMilliesMewesCoalescence.H"
#include "addToRunTimeSelectionTable.H"
#include "mathematicalConstants.H"
#include "phaseCompressibleTurbulenceModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace coalescenceModels
{
defineTypeNameAndDebug(LehrMilliesMewesCoalescence, 0);
addToRunTimeSelectionTable
(
coalescenceModel,
LehrMilliesMewesCoalescence,
dictionary
);
}
}
}
using Foam::constant::mathematical::pi;
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::diameterModels::coalescenceModels::LehrMilliesMewesCoalescence::
LehrMilliesMewesCoalescence
(
const populationBalanceModel& popBal,
const dictionary& dict
)
:
coalescenceModel(popBal, dict),
uCrit_
(
dimensionedScalar::lookupOrDefault("uCrit", dict, dimVelocity, 0.08)
),
alphaMax_
(
dimensionedScalar::lookupOrDefault("alphaMax", dict, dimless, 0.6)
)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void
Foam::diameterModels::coalescenceModels::LehrMilliesMewesCoalescence::
addToCoalescenceRate
(
volScalarField& coalescenceRate,
const label i,
const label j
)
{
const sizeGroup& fi = popBal_.sizeGroups()[i];
const sizeGroup& fj = popBal_.sizeGroups()[j];
volScalarField uChar
(
max
(
sqrt(2.0)*cbrt(popBal_.continuousTurbulence().epsilon())
*sqrt(cbrt(sqr(fi.d())) + cbrt(sqr(fj.d()))),
mag(fi.phase().U() - fj.phase().U())
)
);
coalescenceRate +=
pi/4.0*sqr(fi.d() + fj.d())*min(uChar, uCrit_)
*exp
(
- sqr(cbrt(alphaMax_)
/cbrt(max(popBal_.alphas(), fi.phase().residualAlpha())) - 1.0)
);
}
// ************************************************************************* //

View File

@ -0,0 +1,156 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::diameterModels::coalescenceModels::LehrMilliesMewesCoalescence
Description
Model of Lehr et al. (2002). The coalescence rate is calculated by
\f[
\frac{\pi}{4} (d_i + d_j)^2 \mathrm{min}(u^{\prime}, u_{\mathrm{crit}})
\mathrm{exp}
\left[
- \left(\frac{\alpha_{\mathrm{max}}^{1/3}}{\alpha^{1/3}} - 1\right)^2
\right]\,,
\f]
where
\f[
u^{\prime}
=
\mathrm{max}
\left(
\sqrt{2} \epsilon_c^{1/3} \sqrt{d_i^{2/3} + d_j^{2/3}},
|\vec{u}_i - \vec{u}_j|
\right)
\f]
is the characteristic velocity for coalescence. Note that a velocity
difference between bubble i and j is only present if the corresponding
size groups are assigned to different velocity groups.
\vartable
d_i | Diameter of bubble i [m]
d_j | Diameter of bubble j [m]
\epsilon_c | Turbulent dissipation rate of continuous phase [m2/s3]
\alpha | Total void fraction of the bubbles [-]
\alpha_{max} | Maximum packing density of the bubbles [-]
u_{crit} | Critical velocity for coalescence [m/s]
\vec{u}_i | Velocity vector of bubble i [m/s]
\vec{u}_j | Velocity vector of bubble j [m/s]
\endvartable
Reference:
\verbatim
Lehr, F., Millies, M., & Mewes, D. (2002).
Bubblesize distributions and flow fields in bubble columns.
AIChE Journal, 48(11), 2426-2443.
\endverbatim
Usage
\table
Property | Description | Required | Default value
uCrit | Crit. coalescence velocity | no | 0.08
alphaMax | Maximum packing density | no | 0.6
\endtable
SourceFiles
LehrMilliesMewesCoalescence.C
\*---------------------------------------------------------------------------*/
#ifndef LehrMilliesMewesCoalescence_H
#define LehrMilliesMewesCoalescence_H
#include "coalescenceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace coalescenceModels
{
/*---------------------------------------------------------------------------*\
Class LehrMilliesMewesCoalescence Declaration
\*---------------------------------------------------------------------------*/
class LehrMilliesMewesCoalescence
:
public coalescenceModel
{
// Private data
//- Critical velocity for coalescence, defaults to 0.08 m/s
dimensionedScalar uCrit_;
//- Maximum packing density of the bubbles, defaults to 0.6
dimensionedScalar alphaMax_;
public:
//- Runtime type information
TypeName("LehrMilliesMewes");
// Constructor
LehrMilliesMewesCoalescence
(
const populationBalanceModel& popBal,
const dictionary& dict
);
//- Destructor
virtual ~LehrMilliesMewesCoalescence()
{}
// Member Functions
//- Add to coalescenceRate
virtual void addToCoalescenceRate
(
volScalarField& coalescenceRate,
const label i,
const label j
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace coalescenceModels
} // End namespace diameterModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,135 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "Luo.H"
#include "addToRunTimeSelectionTable.H"
#include "mathematicalConstants.H"
#include "phaseCompressibleTurbulenceModel.H"
#include "virtualMassModel.H"
#include "phaseSystem.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace coalescenceModels
{
defineTypeNameAndDebug(Luo, 0);
addToRunTimeSelectionTable
(
coalescenceModel,
Luo,
dictionary
);
}
}
}
using Foam::constant::mathematical::pi;
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::diameterModels::coalescenceModels::Luo::
Luo
(
const populationBalanceModel& popBal,
const dictionary& dict
)
:
coalescenceModel(popBal, dict),
beta_(dimensionedScalar::lookupOrDefault("beta", dict, dimless, 2.05)),
C1_(dimensionedScalar::lookupOrDefault("C1", dict, dimless, 1.0))
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::diameterModels::coalescenceModels::Luo::
addToCoalescenceRate
(
volScalarField& coalescenceRate,
const label i,
const label j
)
{
const sizeGroup& fi = popBal_.sizeGroups()[i];
const sizeGroup& fj = popBal_.sizeGroups()[j];
const phaseModel& continuousPhase = popBal_.continuousPhase();
if
(
popBal_.fluid().foundSubModel<virtualMassModel>
(
fi.phase(),
popBal_.continuousPhase()
)
)
{
const virtualMassModel& vm =
popBal_.fluid().lookupSubModel<virtualMassModel>
(
fi.phase(),
popBal_.continuousPhase()
);
dimensionedScalar xi = fi.d()/fj.d();
volScalarField uij
(
sqrt(beta_)
*cbrt(popBal_.continuousTurbulence().epsilon()*fi.d())
*sqrt(1.0 + pow(xi, -2.0/3.0))
);
coalescenceRate +=
pi/4.0*sqr(fi.d() + fj.d())*uij
*exp
(
- C1_
*sqrt(0.75*(1.0 + sqr(xi))*(1.0 + pow3(xi)))
/(
sqrt(fi.phase().rho()/continuousPhase.rho()
+ vm.Cvm())*pow3(1.0 + xi)
)
*sqrt
(
continuousPhase.rho()*fi.d()*sqr(uij)
/popBal_.sigmaWithContinuousPhase(fi.phase())
)
);
}
else
{
FatalErrorInFunction
<< "A virtual mass model for " << fi.phase().name() << " in "
<< popBal_.continuousPhase().name() << " is not specified. This is "
<< "required by the Luo coalescence model." << exit(FatalError);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,162 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::diameterModels::coalescenceModels::Luo
Description
Model of Luo (1993). The coalescence rate is calculated by
\f[
&\frac{\pi}{4} (d_i + d_j)^2 u_{ij}
\mathrm{exp}
\left[
- C_1
\frac
{[0.75(1 + \xi_{ij}^2)(1 + \xi_{ij}^3)]^{1/2}}
{(\rho_d/\rho_c + C_{vm})^{1/2} (1 + \xi_{ij})^3}
\left(\frac{\rho_c d_i u_{ij}^2}{\sigma}\right)^{1/2}
\right]\,,
\f]
where
\f[
u_{ij} = \sqrt{\beta} (\epsilon_c d_i)^{1/3} \sqrt{1 + \xi_{ij}^{-2/3}}
\f]
is the mean approach velocity of the bubbles and
\f[
\xi_{ij} = d_i/d_j
\f]
their size ratio.
\vartable
d_i | Diameter of bubble i [m]
d_j | Diameter of bubble j [m]
u_{ij} | Mean approach velocity [m/s]
\xi_{ij} | Bubble size ratio [-]
\rho_d | Density of dispersed phase [kg/m3]
\rho_c | Density of continuous phase [kg/m3]
\sigma | Surface tension [N/m]
C_{vm} | Virtual mass coefficient [-]
C_1 | Coefficient [-]
\beta | Coefficient [-]
\epsilon_c | Continuous phase turbulent dissipation rate [m2/s3]
\endvartable
Reference:
\verbatim
Luo, H. (1993).
Coalescence, breakup and liquid circulation in bubble column reactors.
Dr. Ing (Doctoral dissertation, Thesis, Department of Chemical
Engineering, The Norwegian Institute of Technology, Trondheim, Norway).
\endverbatim
Usage
\table
Property | Description | Required | Default value
beta | Coefficient beta | no | 2.0
C1 | Coefficient C1 | no | 1.0
\endtable
SourceFiles
Luo.C
\*---------------------------------------------------------------------------*/
#ifndef Luo_H
#define Luo_H
#include "coalescenceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
namespace coalescenceModels
{
/*---------------------------------------------------------------------------*\
Class Luo Declaration
\*---------------------------------------------------------------------------*/
class Luo
:
public coalescenceModel
{
// Private data
//- Coefficient beta, defaults to 2.0
dimensionedScalar beta_;
//- Optional coefficient C1, defaults to 1.0
dimensionedScalar C1_;
public:
//- Runtime type information
TypeName("Luo");
// Constructor
Luo
(
const populationBalanceModel& popBal,
const dictionary& dict
);
//- Destructor
virtual ~Luo()
{}
// Member Functions
//- Add to coalescenceRate
virtual void addToCoalescenceRate
(
volScalarField& coalescenceRate,
const label i,
const label j
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace coalescenceModels
} // End namespace diameterModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //