You're reading the documentation for a development version. For the latest released version, please have a look at v5.0.3.
Crystallization / Precipitation models¶
Crystallization / Precipitation in CADET can be modeled by Population Balance Models, Aggregation Models, Fragmentation Models, as well as their combinations. The configuration is described for all three modules in the following. For more information on the model equations, please refer to Crystallization / Precipitation Models.
Note that any of these models can be used in any unit operation that supports reactions.
Attention
By setting the NCOMP
field, you specify the number of FV cells for the internal coordinate:
If the PBM is considered, we have two components that account for the solute \(c\) and solubility \(c_\text{eq}\).
Note that the first component must be solute \(c\) and the last component must be the solubility \(c_\text{eq}\).
Additionally, we discretize the particle size domain (internal coordinate) by some customary FV methods, giving us a finite set of particle sizes under consideration \(\{x_1, \dots, x_{N_x}\}\).
Every particle size considered is treated as an individual component of the unit operation and the field NCOMP
of that unit operation in which the crystallization happens, must be specified accordingly as \(N_x\) or \(N_x + 2\) if the model includes the PBM.
Example code for configuring the crystallization models is available in CADET-Verification .
Group /input/model/unit_XXX¶
NCOMP
Number of components, which is defined by the number of considered particle sizes (i.e. discretization with FV cells) plus, in the case that the PBM is employed, 2 (for solute and solubility).
Type: int
Range: \(\geq 3\)
Length: 1
REACTION_MODEL
The crystallization code is implemented as a reaction module, which is why crystallization needs to be specified here
Type: String
Range: \(\texttt{ CRYSTALLIZATION \}\)
Length: 1
Group /input/model/unit_XXX/reaction_bulk - REACTION_MODEL = CRYSTALLIZATION - UNIT_TYPE = CSTR¶
The following parameters need to be specified under Group /input/model/unit_XXX/reaction/reaction_bulk/ for CSTR units, and Group /input/model/unit_XXX/reaction/reaction/ for transport units like the LRM.
CRY_MODE
Crystallization mode, which determines the exact model equation to be employed.
Pure PBM, as described in Population Balance Models.
Pure aggregation, as described in
Combined PBM and aggregation.
Pure fragmentation, as described in
Combined PBM and fragmentation.
Combined aggregation and fragmentation.
Combined PBM, aggregation, and fragmentation.
Type: double
Range: \(\geq 1\)
Length: \(\mathrm{N_x} + 1\)
CRY_BINS
Coordinates of the cell faces, e.g. equidistant or logarithmic discretization of the internal coordinate \(x \in [x_c, x_\text{end}]\), including the end points.
Type: double
Range: \(\geq 1\)
Length: \(\mathrm{N_x} + 1\)
Population Mass Balance input parameters¶
CRY_NUCLEI_MASS_DENSITY
Nulcei mass density
Type: double
Range: \(\geq 0\)
Length: 1
CRY_VOL_SHAPE_FACTOR
Volumetric shape factor of the particles
Type: double
Range: \(\geq 0\)
Length: 1
CRY_PRIMARY_NUCLEATION_RATE
Primary nucleation rate constant \(k_p\)
Type: double
Range: \(\geq 0\)
Length: 1
CRY_SECONDARY_NUCLEATION_RATE
Secondary nucleation rate \(k_b\)
Type: double
Range: \(\geq 0\)
Length: 1
CRY_GROWTH_RATE_CONSTANT
Growth rate constant \(k_g\)
Type: double
Range: \(\geq 0\)
Length: 1
CRY_GROWTH_CONSTANT
Growth constant \(\gamma\)
Type: double
Range: \(\geq 0\)
Length: 1
CRY_A
Defines constant \(a\) used to determine the growth rate
Type: double
Range: \(\geq 0\)
Length: 1
CRY_G
Defines constant \(g\) used to determine the growth rate
Type: double
Range: \(\geq 0\)
Length: 1
CRY_P
Defines constant \(p\) used to determine the growth rate
Type: double
Range: \(\geq 0\)
Length: 1
CRY_GROWTH_DISPERSION_RATE
Growth dispersion rate \(D_g\)
Type: double
Range: \(\geq 0\)
Length: 1
CRY_U
Defines constant \(u\) used to determine the primary nucleation
Type: double
Range: \(\geq 0\)
Length: 1
CRY_B
Defines constant \(b\) used to determine the secondary nucleation
Type: double
Range: \(\geq 0\)
Length: 1
CRY_K
Defines constant \(k\) used to determine the secondary nucleation
Type: double
Range: \(\geq 0\)
Length: 1
CRY_GROWTH_SCHEME_ORDER
Defines the growth flux FV reconstruction scheme. It can only be
\(1\): upwind scheme
\(2\): HR Koren scheme
\(3\): WENO23 scheme
\(4\): WENO35 scheme.
We recommend using the HR Koren scheme, which showed to be the most performant in our benchmarks.
Type: int
Range: \([1, \dots, 4]\)
Length: 1
Aggregation input parameters¶
CRY_AGGREGATION_INDEX
Defines the aggregation kernel. It can only be
\(0\): constant kernel
\(1\): Brownian kernel
\(2\): Smoluchowski kernel
\(3\): Golovin kernel
\(4\): differential force kernel
Type: int
Range: \([0, \dots, 4]\)
Length: 1
CRY_AGGREGATION_RATE_CONSTANT
Aggregation rate constant \(\beta_0\)
Type: double
Range: \(> 0\)
Length: 1
Fragmentation input parameters¶
CRY_FRAGMENTATION_RATE_CONSTANT
Fragmentation rate constant \(S_0\)
Type: double
Range: \(> 0\)
Length: 1
CRY_FRAGMENTATION_KERNEL_GAMMA
Fragmentation kernel coefficient \(\gamma\)
Type: double
Range: \(> 1.0\)
Length: 1
CRY_FRAGMENTATION_SELECTION_FUNCTION_ALPHA
Fragmentation selection function coefficient \(\alpha\)
Type: double
Range: \(> 0\)
Length: 1