diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/moments/moments.H b/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/moments/moments.H
index 851aea300e..365bd6abea 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/moments/moments.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/moments/moments.H
@@ -26,8 +26,8 @@ Class
Description
Calculates and writes out integral (integer moments) or mean properties
- (mean, variance, standard deviation) of a size distribution computed with
- multiphaseEulerFoam. Requires solver post-processing.
+ (mean, variance, standard deviation) of a size distribution determined by a
+ population balance model. Requires solver post-processing.
The following function object specification for example returns the first
moment of the volume-based number density function which is equivalent to
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H b/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H
index b08ec2773b..b5c0508fd6 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H
@@ -25,8 +25,9 @@ Class
Foam::functionObjects::sizeDistribution
Description
- Writes out the size distribution computed with multiphaseEulerFoam for the
- entire domain or a volume region. Requires solver post-processing.
+ Writes out the size distribution determined by a population balance model,
+ either for the entire domain or a cell zone. Requires solver post-
+ processing.
The following function object specification for example returns the volume-
based number density function:
@@ -63,6 +64,12 @@ Usage
setFormat | output format | yes |
\endtable
+See also
+ Foam::diameterModels::populationBalanceModel
+ Foam::functionObjects::fvMeshFunctionObject
+ Foam::functionObjects::volRegion
+ Foam::functionObject
+
SourceFiles
sizeDistribution.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/PhaseSystems/PopulationBalancePhaseSystem/PopulationBalancePhaseSystem.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/PhaseSystems/PopulationBalancePhaseSystem/PopulationBalancePhaseSystem.H
index a976622c4e..817128eb4e 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/PhaseSystems/PopulationBalancePhaseSystem/PopulationBalancePhaseSystem.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/PhaseSystems/PopulationBalancePhaseSystem/PopulationBalancePhaseSystem.H
@@ -25,7 +25,9 @@ Class
Foam::PopulationBalancePhaseSystem
Description
- Class which provides population balance functionality.
+ Class which provides population balance functionality. Stores the mass
+ transfer rates resulting from coalescence, breakup or drift across
+ representative phases that collectively define a dispersed phase.
See also
Foam::diameterModels::populationBalanceModel
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/SecondaryPropertyModel/SecondaryPropertyModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/SecondaryPropertyModel/SecondaryPropertyModel.H
index bed645524d..3284cc706d 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/SecondaryPropertyModel/SecondaryPropertyModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/SecondaryPropertyModel/SecondaryPropertyModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2019-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2019-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,10 +25,14 @@ Class
Foam::diameterModels::SecondaryPropertyModel
Description
- Base class for modeling the transport of an additional secondary property in
- between size groups by means of coalescence, breakup, drift and nucleation.
- The default behavior is conserved transport of the property, which can be
- overwritten in a derived class.
+ Base class for modeling evolution of secondary representative properties of
+ a size class. By default, transport between size classes due to
+ coalescence, breakup and drift conserve the property. This behaviour can be
+ overridden in a derived class.
+
+See also
+ Foam::diameterModels::sizeGroup
+ Foam::diameterModels::populationBalanceModel
SourceFiles
SecondaryPropertyModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.H
index 666a5e55cb..06b04354ce 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2019-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2019-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,35 +25,37 @@ Class
Foam::diameterModels::shapeModels::fractal
Description
- Class for modeling fractal shapes (e.g. of aerosol agglomerates) based on a
- constant fractal dimension and an average but field-dependent surface area
- to volume ratio kappa.
-
- The effect of sintering (coalescence of primary particles) on the surface
- area is taken into account by a separate source term.
-
- Kappa is transported between the size groups as a secondary property by
- means of coalescence (coagulation), breakup as well as drift.
-
- By assuming a monodisperse size distribution of the primary particles in the
- aggregate, the collisional diameter of a size group can then be computed by
+ Class for modelling the shape of particle aggregates using the concept of
+ fractal geometry. Returns a collisional diameter
\f[
- d_{Coll_i} =
+ d_{c_i} =
\frac{6}{\kappa_i}
\left(
\frac{v_i \kappa_i^3}{36 \pi \alpha_c}
- \right)^{1/D_f}\;.
+ \right)^{1/D_{f_i}}\,,
\f]
+ computed from a constant fractal dimension \f$D_{f_i}\f$ and a
+ field-dependent surface area to volume ratio \f$\kappa_i\f$, assuming that
+ the primary particles in an aggregate have the same size.
+
+ The effect of sintering, i.e. the coalescence of primary particles
+ resulting in a loss of surface area, is taken into account by a separate
+ source term in the transport equation for \f$\kappa_i\f$.
+
Usage
\table
Property | Description | Required | Default value
- kappa | Field and BC value | yes |
+ kappa | Initial and boundary condition value\\
+ | yes |
Df | Fractal dimension | yes |
- alphaC | Constant | yes |
+ alphaC | Scaling prefactor | yes |
\endtable
+See also
+ Foam::diameterModels::shapeModel
+
SourceFiles
fractal.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/sinteringModels/sinteringModel/sinteringModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/sinteringModels/sinteringModel/sinteringModel.H
index 23adb19b52..cf6c598a39 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/sinteringModels/sinteringModel/sinteringModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/sinteringModels/sinteringModel/sinteringModel.H
@@ -22,11 +22,14 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::sinteringModel
+ Foam::diameterModels::shapeModels::sinteringModel
Description
- Abstract base class for modeling sintering of primary particles in fractal
- agglomerates.
+ Abstract base class for modelling sintering of primary particles in fractal
+ aggregates.
+
+See also
+ Foam::diameterModels::shapeModels::fractal
SourceFiles
sinteringModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/shapeModel/shapeModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/shapeModel/shapeModel.H
index abd8fad4d7..25d6174c1b 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/shapeModel/shapeModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/shapeModel/shapeModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2019-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2019-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -22,12 +22,16 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::shapeModel
+ Foam::diameterModels::shapeModel
Description
- Base class for modeling shape, i.e. a physical diameter of a sizeGroup.
- This diameter may then be utilised for calculation of breakup, coalescence
- or drift rates, depending on the model implementation.
+ Base class for modelling the shape of the particles belonging to a size
+ class through alternative diameters, e.g. a collisional diameter, which can
+ then be utilised in population balance submodels, e.g. for modelling
+ fractal aggregation.
+
+See also
+ Foam::diameterModels::sizeGroup
SourceFiles
shapeModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/sizeGroup.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/sizeGroup.H
index 5e5575372c..1fd317d8e4 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/sizeGroup.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/sizeGroup.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,39 +25,35 @@ Class
Foam::diameterModels::sizeGroup
Description
- This class represents a single sizeGroup belonging to a velocityGroup.
- The main property of a sizeGroup is its representative volume. The
- corresponding volScalarField f'number'.'phaseName'.'populationBalanceName'
- gives the volume fraction of the sizeGroup such that all sizeGroup fractions
- over a velocityGroup must sum to unity. The field is either read from the
- startTime directory if present or constructed from a reference field called
- f.'phaseName'.'populationBalanceName' where the boundary condition types
- must be specified. All field and boundary condition values are reset to
- match the 'value' given in the sizeGroup subdictionary.
+ Single size class fraction field representing a fixed particle volume as
+ defined by the user through the corresponding sphere equivalent diameter.
- The corresponding physical diameter that is representative for the class is
- computed by a separate shapeModel, specified in the velocityGroupCoeffs
- dictionary.
+ If present, the field is read from the start time directory, e.g. during
+ restart. Otherwise, it is constructed as a uniform field using the size
+ class fraction value provided by the user. In the latter case, the boundary
+ condition types are taken from the 'f.' field, which represents
+ the sum of all size group fractions of a phase. The user specified value is
+ also applied at fixed value boundary conditions and used as inlet value for
+ mixed boundary conditions.
+
+ An alternative diameter field is provided by the selected shape model, e.g.
+ a collisional diameter, which is then utilised in selected population
+ balance submodels, e.g. for modelling fractal aggregation.
Usage
\table
Property | Description | Required | Default value
dSph | Sphere equivalent diameter | yes | none
- value | Field and BC value | yes | none
+ value | Initial and boundary condition value of\\
+ size class fraction | yes | none
+ shapeModel | Shape model providing an alternative diameter field\\
+ | yes | none
\endtable
- Example
- \verbatim
- f1
- {
- ds 3e-3;
- value 1.0;
- }
- \endverbatim
-
See also
- Foam::diameterModels::velocityGroup
Foam::diameterModels::populationBalanceModel
+ Foam::diameterModels::velocityGroup
+ Foam::diameterModels::shapeModel
SourceFiles
sizeGroup.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.H
index 1dc1328a40..b7a92a6538 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.H
@@ -25,37 +25,29 @@ Class
Foam::diameterModels::velocityGroup
Description
- This diameterModel is intended for use with a populationBalanceModel in
- order to simulate polydispersed bubbly or particulate flows. It can hold any
- number of sizeGroups from which the Sauter mean diameter is calculated. It
- can also be used as a diameterModel without a populationBalance and would
- then behave like a constantDiameter model. In this case, some arbitrary name
- must be entered for the populationBalance keyword.
+ Computes the Sauter mean diameter based on a user specified size
+ distribution, defined in terms of size class fractions. Intended for use
+ with a population balance model to account for the evolution of a size
+ distribution by means of coalescence, breakup, drift and nucleation.
Usage
- \table
- Property | Description
- populationBalance | Name of the corresponding populationBalance
- sizeGroups | List of sizeGroups
- \endtable
-
- Example
+ Excerpt from an examplary phaseProperties dictionary:
\verbatim
diameterModel velocityGroup;
+
velocityGroupCoeffs
{
populationBalance bubbles;
- shapeModel constant;
+ shapeModel spherical;
sizeGroups
(
- f0{dSph 1.00e-3; value 0;}
- f1{dSph 1.08e-3; value 0;}
- f2{dSph 1.16e-3; value 0.25;}
- f3{dSph 1.25e-3; value 0.5;}
- f4{dSph 1.36e-3; value 0.25;}
- f5{dSph 1.46e-3; value 0;}
+ f1 {dSph 1e-3; value 1.0;}
+ f2 {dSph 2e-3; value 0.0;}
+ f3 {dSph 3e-3; value 0.0;}
+ f4 {dSph 4e-3; value 0.0;}
+ f5 {dSph 5e-3; value 0.0;}
...
);
}
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.H
index 2b307d4a86..02ca9b5b53 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,9 +25,12 @@ Class
Foam::diameterModels::binaryBreakupModel
Description
- Base class for binary breakup models which give the breakup rate between a
- sizeGroup pair directly, without an explicit expression for the daughter
- size distribution.
+ Base class for binary breakup models that provide a breakup rate between a
+ size class pair directly, i.e. without explicitly stating the daughter size
+ distribution function.
+
+See also
+ Foam::diameterModels::populationBalanceModel
SourceFiles
binaryBreakupModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/breakupModels/breakupModel/breakupModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/breakupModels/breakupModel/breakupModel.H
index cafc4b92ff..49ab4de43e 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/breakupModels/breakupModel/breakupModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/breakupModels/breakupModel/breakupModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,8 +25,11 @@ Class
Foam::diameterModels::breakupModel
Description
- Base class for breakup models which give a total breakup rate and a separate
- daughter size distribution function.
+ Base class for breakup models which provide a total breakup rate and a
+ separate daughter size distribution function.
+
+See also
+ Foam::diameterModels::populationBalanceModel
SourceFiles
breakupModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H
index cfb1945c1e..d033563632 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -27,6 +27,9 @@ Class
Description
Base class for coalescence models.
+See also
+ Foam::diameterModels::populationBalanceModel
+
SourceFiles
coalescenceModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/daughterSizeDistributionModel/daughterSizeDistributionModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/daughterSizeDistributionModel/daughterSizeDistributionModel.H
index 3a9308ad2e..f9f2ef60a7 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/daughterSizeDistributionModel/daughterSizeDistributionModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/daughterSizeDistributionModel/daughterSizeDistributionModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,8 +25,12 @@ Class
Foam::diameterModels::daughterSizeDistributionModel
Description
- Base class for daughter size distribution models. Calculates and stores
- the contribution to a sizeGroup i due to breakup in a larger sizeGroup k.
+ Base class for daughter size distribution models. Currently only supports
+ field-independent formulations.
+
+See also
+ Foam::diameterModels::breakupModel
+ Foam::diameterModels::populationBalanceModel
SourceFiles
daughterSizeDistributionModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/driftModels/driftModel/driftModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/driftModels/driftModel/driftModel.H
index fce57d5499..79d4edeff7 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/driftModels/driftModel/driftModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/driftModels/driftModel/driftModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -27,6 +27,9 @@ Class
Description
Base class for drift models.
+See also
+ Foam::diameterModels::populationBalanceModel
+
SourceFiles
driftModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/nucleationModels/nucleationModel/nucleationModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/nucleationModels/nucleationModel/nucleationModel.H
index 8c1dc90e4c..3bd807a9cd 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/nucleationModels/nucleationModel/nucleationModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/nucleationModels/nucleationModel/nucleationModel.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2018-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -27,6 +27,9 @@ Class
Description
Base class for nucleation models.
+See also
+ Foam::diameterModels::populationBalanceModel
+
SourceFiles
nucleationModel.C
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H
index 5a89168833..17bca4f326 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H
@@ -25,31 +25,81 @@ Class
Foam::diameterModels::populationBalanceModel
Description
- Class that solves the univariate population balance equation by means of
- a class method (also called sectional or discrete method). The internal
- coordinate is set to the particle volume, so the equation is based on
- a transport equation of the volume-based number density function. The
- discretisation is done using the fixed pivot technique of Kumar and
- Ramkrishna (1996). The source terms are written in a way that particle
- number and mass are preserved. Coalescence (coagulation), breakup, drift
- (growth and surface loss) as well as nucleation are supported.
- For the discrete breakup term two recipes are available, depending on the
- model choice. For models which state a total breakup rate and a separate
- daughter size distribution function, the formulation of Kumar and Ramkrishna
- (1996) is applied which is applicable for binary and multiple breakup
- events. The second formulation is given by Liao et al. (2018). It is useful
- for binary breakup models which give the breakup rate between a sizeGroup
- pair directly, without an explicit expression for the daughter size
- distribution. The drift term is implemented using a finite difference upwind
- scheme. Although it is diffusive, it ensures a stable and
- number-conservative solution.
+ Model for tracking the evolution of a dispersed phase size distribution due
+ to coalescence (synonymous with coagulation, aggregation, agglomeration)
+ and breakup events as well as density or phase changes. Provides an
+ approximate solution of the population balance equation by means of a class
+ method. The underlying theory is described in the article of Lehnigk et al.
+ (2021).
- The implementation allows to split the population balance over multiple
- velocity fields using the capability of multiphaseEulerFoam to solve
- for n momentum equations. It is also possible to define multiple population
- balances, e.g. bubbles and droplets simultaneously.
+ The size distribution, expressed through a volume-based number density
+ function, is discretised using the fixot pivot technique of Kumar and
+ Ramkrishna (1996). Thereby, the population balance equation is transformed
+ into a series of transport equations for the particle (bubble, droplet)
+ number concentrations in separate size classes that are coupled through
+ their source terms. The discretisation is based on representative particle
+ volumes, which are provided by the user through the corresponding sphere
+ equivalent diameters.
+
+ Since the representative volumes are fixed a priori and the total dispersed
+ phase volume already available from solving the phase continuity equation,
+ the model only determines the evolution of the individual size class
+ fractions
+
+ \f[
+ f_{i,\varphi} = \frac{\alpha_{i,\varphi}}{\alpha_{\varphi}}\,,
+ \f]
+
+ where \f$\alpha_{i,\varphi}\f$ is the volume fraction of the size class and
+ \f$\alpha_{\varphi}\f$ the total phase fraction of phase \f$\varphi\f$.
+
+ The source terms are formulated such that the first and second moment of
+ the distribution, i.e. the total particle number and volume, are conserved
+ irrespective of the discretisation of the size domain. The treatment of
+ particle breakup depends on the selected breakup submodels. For models
+ which provide a total breakup frequency and a separate daughter size
+ distribution function, the formulation provided Kumar and Ramkrishna (1996)
+ is utilised, which is applicable both for binary and multiple breakup
+ events. Currently, only field-independent daughter size distribution models
+ are allowed. In case of binary breakup models that provide the breakup
+ frequency between a size class pair directly, the formulation of Liao et
+ al. (2018) is adopted, which is computationally more efficient compared to
+ first extracting the field-dependent daughter size distribution and then
+ consuming it in the formulation of Kumar and Ramkrishna. The source terms
+ describing a drift of the size distribution through particle growth or
+ shrinkage are derived using upwind differencing, thus ensuring conservation
+ of the total particle number and volume. Note that due to the volume-based
+ implementation, both density as well as phase change lead to a drift of the
+ size distribution function. Further, users can specify multiple submodels
+ for each mechanism, whose contributions are added up.
+
+ The model also allows to distribute the size classes over multiple
+ representative phases with identical physical properties that collectively
+ define the dispersed phase. Thereby, size class fields can be transported
+ with different velocity fields in order to account for the size dependency
+ of the particle motion. A possible mass transfer between representative
+ phases by means of coalescence, breakup and drift is taken into account.
+ Similarly, the spatial evolution of secondary particle properties such as
+ the particle surface area can be tracked.
+
+ The key variable during a simulation is the Sauter diameter, which is
+ computed from the size class fractions of the corresponding phase. The
+ underlying size distribution can be extracted from the simulation using the
+ functionObject 'sizeDistribution'. Integral and mean properties of a size
+ distribution can be computed with the functionObject 'moments'.
+
+ Verification cases for the population balance modeling functionality are
+ provided in test/multiphase/multiphaseEulerFoam/populationBalance.
References:
+ \verbatim
+ Lehnigk, R., Bainbridge, W., Liao, Y., Lucas, D., Niemi, T.,
+ Peltola, J., & Schlegel, F. (2021).
+ An openāsource population balance modeling framework for the simulation
+ of polydisperse multiphase flows.
+ AIChE Journal, 68(3), e17539.
+ \endverbatim
+
\verbatim
Coalescence and breakup term formulation:
Kumar, S., & Ramkrishna, D. (1996).
@@ -66,32 +116,33 @@ Description
\endverbatim
Usage
- Example excerpt from a phaseProperties dictionary.
+ Excerpt from an examplary phaseProperties dictionary:
\verbatim
- type populationBalanceTwoPhaseSystem;
+ type populationBalanceMultiphaseSystem;
- phases (air water);
+ ...
populationBalances (bubbles);
air
{
- type purePhaseModel;
+ type pureIsothermalPhaseModel;
+
diameterModel velocityGroup;
+
velocityGroupCoeffs
{
populationBalance bubbles;
- shapeModel constant;
+ shapeModel spherical;
sizeGroups
(
- f0{dSph 1.00e-3; value 0;}
- f1{dSph 1.08e-3; value 0;}
- f2{dSph 1.16e-3; value 0.25;}
- f3{dSph 1.25e-3; value 0.5;}
- f4{dSph 1.36e-3; value 0.25;}
- f5{dSph 1.46e-3; value 0;}
+ f1 {dSph 1e-3; value 1.0;}
+ f2 {dSph 2e-3; value 0.0;}
+ f3 {dSph 3e-3; value 0.0;}
+ f4 {dSph 4e-3; value 0.0;}
+ f5 {dSph 5e-3; value 0.0;}
...
);
}
@@ -99,6 +150,8 @@ Usage
residualAlpha 1e-6;
}
+ ...
+
populationBalanceCoeffs
{
bubbles
@@ -107,24 +160,16 @@ Usage
coalescenceModels
(
- hydrodynamic
- {
- C 0.25;
- }
+ LehrMilliesMewes{}
);
binaryBreakupModels
- ();
+ (
+ LehrMilliesMewes{}
+ );
breakupModels
- (
- exponential
- {
- C 0.5;
- exponent 0.01;
- daughterSizeDistributionModel uniform;
- }
- );
+ ();
driftModels
(
@@ -138,8 +183,18 @@ Usage
\endverbatim
See also
+ Foam::PopulationBalancePhaseSystem
Foam::diameterModels::sizeGroup
Foam::diameterModels::velocityGroup
+ Foam::diameterModels::SecondaryPropertyModel
+ Foam::diameterModels::coalescenceModel
+ Foam::diameterModels::breakupModel
+ Foam::diameterModels::daughterSizeDistributionModel
+ Foam::diameterModels::binaryBreakupModel
+ Foam::diameterModels::driftModel
+ Foam::diameterModels::nucleationModel
+ Foam::functionObjects::sizeDistribution
+ Foam::functionObjects::moments
SourceFiles
populationBalanceModel.C