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