The core settings for simulations involving a population balance model are contained in the populationBalanceProperties dictionary, located in the constant directory of the corresponding case.
Selecting type of population balance equation
In order to solve a univariate population balance, the entry
populationBalanceModel univariate;
must be present.
Selecting sub-models
Sub-models are activated in the sub-dictionary corresponding to the selected PBE. For a univariate PBE:
univariateCoeffs
{
…
}
Selecting the aggregation kernel
The aggregation kernel is activated by adding the following instruction to the univariateCoeffs sub-dictionary
aggregation on;
The corresponding kernel is selected using the aggregationKernel sub-dictionary inside the univariateCoeffs sub-dictionary
aggregationKernel
{
aggregationKernel turbulentBrownian;
}
Some kernels may require additional inputs such as coefficients or parameters, which need to be specified inside the aggregationKernel sub-dictionary. If absent, an error will be returned, or a default value will be used when appropriate. Please, refer to the code documentation for the specific kernels for details.
Selecting the breakup kernel
Similarly to aggregation, breakup is activated with the keyword:
breakup on;
The breakup kernel is selected in the breakupKernel subdictionary:
breakupKernel
{
breakupKernel LuoSvendsen;
Cb Cb [ 0 0 0 0 0 0 0 ] 1.0e-3;
epsilonExp 0.75;
nuExp -1.25;
sizeExp 1.0;
}
The daughter distribution is specified in the corresponding sub-dictionary as follows
daughterDistribution
{
daughterDistribution symmetricFragmentation;
}
Selecting the diffusion model
The diffusion model and the corresponding parameters are specified in the diffusionModel subdictionary:
diffusionModel
{
diffusionModel turbulentDiffusion;
gammaLam gammaLam [ 0 2 -1 0 0 0 0 ] 1.0e-6;
Sc 0.7;
}
Selecting the growth model
The growth model is activated with the keyword:
growth on;
The corresponding growth model is selected in the growthModel sub-dictionary:
growthModel
{
growthModel constant;
minAbscissa minAbscissa [0 -2 0 0 0 0 0] 0.0;
maxAbscissa maxAbscissa [0 -2 0 0 0 0 0] 1.0;
Cg Cg [0 3 -1 0 0 0 0 ] 1.0;
}
Selecting the nucleation model
The nucleation model and the corresponding parameters are specified in the nucleationModel subdictionary:
nucleationModel
{
nucleationModel none;
}
Integration of the sub-models
Sub-models are integrated using the realizable ODE solver implemented in general form into OpenQBMM. Settings for this solver are specified in the populationBalanceProperties dictionary, as explained here.
Examples and validation cases
An example case using the population balance model implementation in OpenQBMM can be found in the tutorial:
- OpenQBMM/tutorials/pbeTransportFoam/TaylorCouette/
Validation cases are provided in:
- OpenQBMM/validation/pbeTransportFoam/serraTaylorCouette/