reactingEulerFoam: Added Laakkonen et al (2006) breakup model
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
This commit is contained in:
@ -27,10 +27,12 @@ populationBalanceModel/binaryBreakupModels/powerLawUniformBinary/powerLawUniform
|
||||
|
||||
populationBalanceModel/breakupModels/breakupModel/breakupModel.C
|
||||
populationBalanceModel/breakupModels/exponential/exponential.C
|
||||
populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.C
|
||||
populationBalanceModel/breakupModels/powerLaw/powerLaw.C
|
||||
|
||||
populationBalanceModel/daughterSizeDistributionModels/daughterSizeDistributionModel/daughterSizeDistributionModel.C
|
||||
populationBalanceModel/daughterSizeDistributionModels/uniformBinary/uniformBinary.C
|
||||
populationBalanceModel/daughterSizeDistributionModels/LaakkonenAlopaeusAittamaaDsd/LaakkonenAlopaeusAittamaaDsd.C
|
||||
|
||||
populationBalanceModel/driftModels/driftModel/driftModel.C
|
||||
populationBalanceModel/driftModels/constantDrift/constantDrift.C
|
||||
|
||||
@ -0,0 +1,109 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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 "LaakkonenAlopaeusAittamaa.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "phaseCompressibleTurbulenceModel.H"
|
||||
#include "phaseSystem.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace diameterModels
|
||||
{
|
||||
namespace breakupModels
|
||||
{
|
||||
defineTypeNameAndDebug(LaakkonenAlopaeusAittamaa, 0);
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
breakupModel,
|
||||
LaakkonenAlopaeusAittamaa,
|
||||
dictionary
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::diameterModels::breakupModels::LaakkonenAlopaeusAittamaa::
|
||||
LaakkonenAlopaeusAittamaa
|
||||
(
|
||||
const populationBalanceModel& popBal,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
breakupModel(popBal, dict),
|
||||
C1_
|
||||
(
|
||||
"C1",
|
||||
dimensionSet(0, -2.0/3.0, 0, 0, 0),
|
||||
dict.lookupOrDefault<scalar>("C1", 6.0)
|
||||
),
|
||||
C2_("C2", dimless, dict.lookupOrDefault<scalar>("C2", 0.04)),
|
||||
C3_("C3", dimless, dict.lookupOrDefault<scalar>("C3", 0.01))
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void
|
||||
Foam::diameterModels::breakupModels::LaakkonenAlopaeusAittamaa::setBreakupRate
|
||||
(
|
||||
volScalarField& breakupRate,
|
||||
const label i
|
||||
)
|
||||
{
|
||||
const phaseModel& continuousPhase = popBal_.continuousPhase();
|
||||
const sizeGroup& fi = *popBal_.sizeGroups()[i];
|
||||
const volScalarField sigma
|
||||
(
|
||||
popBal_.fluid().sigma(phasePair(fi.phase(), continuousPhase))
|
||||
);
|
||||
|
||||
breakupRate =
|
||||
C1_*cbrt(continuousTurbulence().epsilon())
|
||||
*erfc
|
||||
(
|
||||
sqrt
|
||||
(
|
||||
C2_*sigma
|
||||
/(
|
||||
continuousPhase.rho()*pow(fi.d(), 5.0/3.0)
|
||||
*pow(continuousTurbulence().epsilon(), 2.0/3.0)
|
||||
)
|
||||
+ C3_*continuousPhase.mu()
|
||||
/(
|
||||
sqrt(continuousPhase.rho()*fi.phase().rho())
|
||||
*cbrt(continuousTurbulence().epsilon())*pow(fi.d(), 4.0/3.0)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,150 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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::breakupModels::LaakkonenAlopaeusAittamaa
|
||||
|
||||
Description
|
||||
Model of Laakkonen et al. (2006). The total breakup rate is calculated by
|
||||
|
||||
\f[
|
||||
C_1 \epsilon_c^{1/3}
|
||||
\mathrm{erfc}
|
||||
\left(
|
||||
\sqrt
|
||||
{
|
||||
C_2 \frac{\sigma}{\rho_c \epsilon_c^{2/3} (6v_i/\pi)^{5/9}}
|
||||
+ C_3 \frac{\mu_c}{\sqrt{\rho_c \rho_d}
|
||||
\epsilon_c^{1/3} (6v_i/\pi)^{4/9}}
|
||||
}
|
||||
\right)
|
||||
\f]
|
||||
|
||||
where
|
||||
|
||||
\vartable
|
||||
\sigma | Surface tension [N/m]
|
||||
v_i | Volume of mother bubble i [m]
|
||||
\epsilon_c | Turbulent dissipation rate of continuous phase [m2/s3]
|
||||
\mu_c | Molecular dynamic viscosity of liquid phase [Pa s]
|
||||
\rho_c | Density of continous phase [kg/m3]
|
||||
\rho_d | Density of disperse phase [kg/m3]
|
||||
\endvartable
|
||||
|
||||
References:
|
||||
\verbatim
|
||||
"Validation of bubble breakage, coalescence and mass transfer models for
|
||||
gas-liquid dispersion in agitated vessel"
|
||||
Laakkonen, M., Alopaeus, V., Aittamaa, J.
|
||||
Chemical Engineering Science, Vol. 61, 2006, pp. 218-228
|
||||
Eq. 2-3, p. 220
|
||||
\endverbatim
|
||||
|
||||
Usage
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
C1 | Coefficient C1 | no | 6.0
|
||||
C2 | Coefficient C2 | no | 0.04
|
||||
C3 | Coefficient C3 | no | 0.01
|
||||
\endtable
|
||||
|
||||
SourceFiles
|
||||
LaakkonenAlopaeusAittamaa.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef LaakkonenAlopaeusAittamaa_H
|
||||
#define LaakkonenAlopaeusAittamaa_H
|
||||
|
||||
#include "breakupModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace diameterModels
|
||||
{
|
||||
namespace breakupModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class LaakkonenAlopaeusAittamaa Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class LaakkonenAlopaeusAittamaa
|
||||
:
|
||||
public breakupModel
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- Optional coefficient C1, defaults to 6.0
|
||||
dimensionedScalar C1_;
|
||||
|
||||
//- Optional coefficient C2, defaults to 0.04
|
||||
dimensionedScalar C2_;
|
||||
|
||||
//- Optional coefficient C3, defaults to 0.01
|
||||
dimensionedScalar C3_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("LaakkonenAlopaeusAittamaa");
|
||||
|
||||
// Constructor
|
||||
|
||||
LaakkonenAlopaeusAittamaa
|
||||
(
|
||||
const populationBalanceModel& popBal,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~LaakkonenAlopaeusAittamaa()
|
||||
{}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Set total breakupRate
|
||||
virtual void setBreakupRate
|
||||
(
|
||||
volScalarField& breakupRate,
|
||||
const label i
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace breakupModels
|
||||
} // End namespace diameterModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,130 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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 "LaakkonenAlopaeusAittamaaDsd.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "breakupModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace diameterModels
|
||||
{
|
||||
namespace daughterSizeDistributionModels
|
||||
{
|
||||
defineTypeNameAndDebug(LaakkonenAlopaeusAittamaaDsd, 0);
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
daughterSizeDistributionModel,
|
||||
LaakkonenAlopaeusAittamaaDsd,
|
||||
dictionary
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::diameterModels::daughterSizeDistributionModels::
|
||||
LaakkonenAlopaeusAittamaaDsd::LaakkonenAlopaeusAittamaaDsd
|
||||
(
|
||||
const breakupModel& breakup,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
daughterSizeDistributionModel(breakup, dict)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::diameterModels::daughterSizeDistributionModels::
|
||||
LaakkonenAlopaeusAittamaaDsd::~LaakkonenAlopaeusAittamaaDsd()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::dimensionedScalar
|
||||
Foam::diameterModels::daughterSizeDistributionModels::
|
||||
LaakkonenAlopaeusAittamaaDsd::calcNik
|
||||
(
|
||||
const label i,
|
||||
const label k
|
||||
) const
|
||||
{
|
||||
const dimensionedScalar& xi = breakup_.popBal().sizeGroups()[i]->x();
|
||||
const dimensionedScalar& xk = breakup_.popBal().sizeGroups()[k]->x();
|
||||
const List<sizeGroup*>& sizeGroups = breakup_.popBal().sizeGroups();
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
const dimensionedScalar& xii = sizeGroups[i+1]->x();
|
||||
|
||||
return
|
||||
(
|
||||
5.0*pow4(xii)*sqr(xk) - 12.0*pow5(xi)*xii + 10.0*pow6(xi)
|
||||
- (20.0*pow3(xi)*xii - 15.0*pow4(xi))*sqr(xk) - 6.0*pow5(xii)*xk
|
||||
- (24*pow5(xi) - 30*pow4(xi)*xii)*xk + 2*pow6(xii)
|
||||
)
|
||||
/((xii - xi)*pow5(xk));
|
||||
}
|
||||
else if (i == k)
|
||||
{
|
||||
const dimensionedScalar& x = sizeGroups[i-1]->x();
|
||||
|
||||
return
|
||||
(
|
||||
(15.0*pow4(xi) - 20.0*x*pow3(xi))*sqr(xk)
|
||||
+ 5.0*pow4(x)*sqr(xk) + (30.0*x*pow4(xi) - 24.0*pow5(xi))*xk
|
||||
- 6.0*pow5(x)*xk + 10.0*pow6(xi) - 12.0*x*pow5(xi) + 2.0*pow6(x)
|
||||
)
|
||||
/((xi - x)*pow5(xk));
|
||||
}
|
||||
else
|
||||
{
|
||||
const dimensionedScalar& x = sizeGroups[i-1]->x();
|
||||
const dimensionedScalar& xii = sizeGroups[i+1]->x();
|
||||
|
||||
return
|
||||
(
|
||||
5.0*pow4(xii)*sqr(xk) - 12.0*pow5(xi)*xii + 10.0*pow6(xi)
|
||||
- (20.0*pow3(xi)*xii - 15.0*pow4(xi))*sqr(xk) - 6.0*pow5(xii)*xk
|
||||
- (24*pow5(xi) - 30*pow4(xi)*xii)*xk + 2*pow6(xii)
|
||||
)
|
||||
/((xii - xi)*pow5(xk))
|
||||
+ (
|
||||
(15.0*pow4(xi) - 20.0*x*pow3(xi))*sqr(xk)
|
||||
+ 5.0*pow4(x)*sqr(xk) + (30.0*x*pow4(xi) - 24.0*pow5(xi))*xk
|
||||
- 6.0*pow5(x)*xk + 10.0*pow6(xi) - 12.0*x*pow5(xi) + 2.0*pow6(x)
|
||||
)
|
||||
/((xi - x)*pow5(xk));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,136 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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::daughterSizeDistributionModels::
|
||||
LaakkonenAlopaeusAittamaaDsd
|
||||
|
||||
Description
|
||||
Daughter size distribution model used by Laakkonen et al. (2006). Note that
|
||||
it must be multiplied by the number of daughter particles (2). Also, the
|
||||
coefficient C4 needs to be set to the value of 2 as to ensure number and
|
||||
mass conservation following Kumar and Ramkrishna (1996). Also the internal
|
||||
coordinate was changed to particle volume, which gives
|
||||
|
||||
\f[
|
||||
\frac{60}{v_j} \left(\frac{v_i}{v_j}\right)^{2}
|
||||
\left(1 - \frac{v_i}{v_j}\right)^{2}
|
||||
\f]
|
||||
|
||||
where
|
||||
|
||||
\vartable
|
||||
v_i | Volume of daughter bubble i [m]
|
||||
v_j | Volume of mother bubble j [m]
|
||||
\endvartable
|
||||
|
||||
References:
|
||||
\verbatim
|
||||
"Validation of bubble breakage, coalescence and mass transfer models for
|
||||
gas-liquid dispersion in agitated vessel"
|
||||
Laakkonen, M., Alopaeus, V., Aittamaa, J.
|
||||
Chemical Engineering Science, Vol. 61, 2006, pp. 218-228
|
||||
Eq. 3, p. 220
|
||||
\endverbatim
|
||||
|
||||
\verbatim
|
||||
"On the solution of population balance equations by
|
||||
discretization - I. A fixed pivot technique."
|
||||
Kumar, S. & Ramkrishna, D.
|
||||
Chemical Engineering Science, Vol. 51(8) 1996, 1311-1332.
|
||||
Eq. 33, p. 1318
|
||||
\endverbatim
|
||||
|
||||
Usage
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
C1 | Coefficient C1 | no | 6.0
|
||||
C2 | Coefficient C2 | no | 0.04
|
||||
C3 | Coefficient C3 | no | 0.01
|
||||
\endtable
|
||||
|
||||
SourceFiles
|
||||
LaakkonenAlopaeusAittamaaBinaryBreakup.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef LaakkonenAlopaeusAittamaaDsd_H
|
||||
#define LaakkonenAlopaeusAittamaaDsd_H
|
||||
|
||||
#include "daughterSizeDistributionModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace diameterModels
|
||||
{
|
||||
namespace daughterSizeDistributionModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class LaakkonenAlopaeusAittamaaDsd Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class LaakkonenAlopaeusAittamaaDsd
|
||||
:
|
||||
public daughterSizeDistributionModel
|
||||
{
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("LaakkonenAlopaeusAittamaa");
|
||||
|
||||
|
||||
// Constructor
|
||||
|
||||
LaakkonenAlopaeusAittamaaDsd
|
||||
(
|
||||
const breakupModel& breakup,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~LaakkonenAlopaeusAittamaaDsd();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return total number of particles assigned to class i when a particle
|
||||
// of class k breaks
|
||||
virtual dimensionedScalar calcNik(const label i, const label k) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace daughterSizeDistributionModels
|
||||
} // End namespace diameterModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
Reference in New Issue
Block a user