Dispersed phase size modeling#
Equivalent diameter for dispersed phase#
A fundamental aspect of modeling the interaction between liquid and gas phases lies in precisely predicting the concentration of interfaces. Some models rely on either the interfacial area concentration (\(ai\)) or an equivalent diameter (\(Dsm\)). In this context, the dispersed fluid is depicted as a collection of bubbles with diverse diameters, which essentially acts as a topological description for the fluid stage. This dispersed fluid is distinguished by two interlinked attributes:
a distribution of bubble diameters and
the concentration of interfaces. We can define the Sauter-Mean Diameter (\(\mathit{Dsm}\)) of the distribution (\(f_d\)) of sizes D as:
The relationship between the void fraction (\(\alpha\)) and the Sauter-Mean Diameter (\(\mathit{Dsm}\)) hinges on calculating the area concentration per unit volume (\(A_i=\pi D^2\)). This relationship can be expressed as follows:
Finally, to have a correct representation of the dispersed phase, it is sufficient to impose an equivalent diameter, but it is also possible to add a transport equation for the interfacial area concentration.
User defined diameter#
Uniform diameter#
It is possible to simply impose a constant diameter at every point in space. The model is implemented in \texttt{Diametre_bulles_constant}:
void Diametre_bulles_constant::set_param(Param& param)
{
Param param(que_suis_je());
param.ajouter("diametre", &d_bulle_, Param::REQUIRED);
param.lire_avec_accolades_depuis(is);
Pb_Multiphase& pb = ref_cast(Pb_Multiphase, pb_.valeur());
int N = pb.nb_phases();
const Discret_Thyd& dis=ref_cast(Discret_Thyd,pb.discretisation());
Noms noms(N), unites(N);
noms[0] = "diametre_bulles";
unites[0] = "m";
Motcle typeChamp = "champ_elem" ;
const Domaine_dis& z = ref_cast(Domaine_dis, pb.domaine_dis());
dis.discretiser_champ(typeChamp, z.valeur(), scalaire, noms , unites, N, 0, diametres_);
champs_compris_.ajoute_champ(diametres_);
for (int n = 0; n < pb.nb_phases(); n++) //recherche de n_l, n_g: phase {liquide,gaz}_continu en priorite
if (pb.nom_phase(n).debute_par("liquide") && (n_l < 0 || pb.nom_phase(n).finit_par("continu"))) n_l = n;
if (n_l < 0) Process::exit(que_suis_je() + ": liquid phase not found!");
DoubleTab& tab_diametres = diametres_->valeurs();
for (int i = 0 ; i < tab_diametres.dimension_tot(0) ; i++)
for (int n = 0 ; n <N ; n++)
if (n!=n_l) tab_diametres(i, n) = d_bulle_;
return is;
}
Default value:
\(\texttt{d_ bulle_} =-100\).
Non-uniform diameter#
It is possible to impose a user-defined diameter that varies spatially through the TRUST fields. The
model is implemented in Diametre_bulles_champ
:
void Diametre_bulles_champ::set_param(Param& param)
{
Champ_Don diametres_don_;
is >> diametres_don_;
Pb_Multiphase& pb = ref_cast(Pb_Multiphase, pb_.valeur());
int N = pb.nb_phases();
const Discret_Thyd& dis=ref_cast(Discret_Thyd,pb.discretisation());
Noms noms(N), unites(N);
noms[0] = "diametre_bulles";
unites[0] = "m";
Motcle typeChamp = "champ_elem" ;
const Domaine_dis& z = ref_cast(Domaine_dis, pb.domaine_dis());
dis.discretiser_champ(typeChamp, z.valeur(), scalaire, noms , unites, N, 0, diametres_);
champs_compris_.ajoute_champ(diametres_);
diametres_->affecter(diametres_don_.valeur());
diametres_.valeurs().echange_espace_virtuel();
return is;
}
Default value:
\(\texttt{d_ bulle_ }=-100\).
Interfacial area concentration with 1 group (incoming)#
The general equation#
Two separated size-group methods are popular for the prediction of interfacial area concentration. One based on having an arbitrary number of groups to reproduce a distribution, referred as MUSIG or i-MUSIG [DD10, LLKS11, WWJ05] and the other reproducing the distribution thanks to the Mean Sauter diameter referred as IATE. The generalized Interfacial Area Transport Equation (IATE) developed by Kocamustafaogullari and Ishii [KHR94, KI94].
The general expression for adiabatic flows with \(\psi^{internal}_{j}\) a source term and \(\psi^{intergroup}_j\) an intergroup term is then:
The terms in green need new modeling linked to coalescence and break-up.
Let’s remind that:
Then we can substitute:
It gives the following equation:
The density change model is:
It is implemented in \texttt{Variation_rho_Elem_PolyMAC_P0}:
Void Variation_rho::set_param(Param& param)
It fills the following matrices:
For example, the chain rule for the temperature gives:
Regarding the discret form, it gives:
The Condensation model is:
with G given by a correlation.
The Condensation term is implemented in \texttt{Source_Flux_interfacial_base} as:
If the condensation is not making the phase evanescent then:
For the other source terms, refer to the models.
The Yao Morel model#
The model is described in Yao and Morel [YM04].
The equation is:
The Coalescence model is:
with
\(K_{c1} = 2.86\)
\(K_{c2} = 1.922\)
\(K_{c3} = 1.017\)
\(We_{cr} = 1.24\)
\(g(\alpha) = \frac{\alpha_\text{max}^{1/3}-\alpha^{1/3}}{\alpha_\text{max}^{1/3}}\)
\(\alpha_\text{max} = \frac{\pi}{6}\).
The Coalescence model is implemented as
so that for the sake of simplicity
in Coalescence_bulles_1groupe_PolyMAC_P0
:
void Coalescence_bulles_1groupe_PolyMAC_P0::set_param(Param& param)
{
Param param(que_suis_je());
param.ajouter("beta_k", &beta_k_);
}
and Coalescence_bulles_1groupe_Yao_Morel
:
void Coalescence_bulles_1groupe_Yao_Morel::set_param(Param& param)
Default values:
\(\texttt{beta_k_} = 0.09\)
\(\texttt{Kc1} = 2.86\)
\(\texttt{Kc2} = 1.922\)
\(\texttt{Kc3} = 1.017\)
\(\texttt{alpha_max_1_3} = (\frac{\pi}{6})^{1/3}\)
\(\texttt{We_cr} = 1.24\).
{\color{red} Warning}: The following part describes the matrix filling for the \(k-\varepsilon\) model, as an example, but it is currently not implemented since only the \(k-\tau\) and \(k-\omega\) models are available and are the only ones implemented for the source terms.
For the \(k-\varepsilon\) model:
If the \(k-\tau\) turbulence model is used,
If the \(k-\omega\) turbulence model is used,
The Break-up model is: \begin{aligne} \frac{36\pi}{3}\parent{\frac{\alpha}{a_i}}^2\Phi_{\text{breakup}} &=- \frac{36\pi}{3}\parent{\frac{\alpha}{a_i}}^2 \parent{\varepsilon d_b}^{1/3} \cdot \frac{\alpha(1-\alpha)}{d_b^4} \cdot K_{b1} \cdot \frac{1}{1 + K_{b2}\alpha_l \sqrt{We/We_{cr}}} \cdot \text{exp}\parent{- \frac{We}{We_{cr}}}\ & = {\color{mydarkorchid} \frac{\pi}{3\times 6^{5/3}}\alpha^{-2/3}(1-\alpha)a_i^{5/3}\varepsilon^{1/3}} \cdot K_{b1} \cdot \frac{1}{1 + K_{b2}(1-\alpha) \sqrt{We/We_{cr}}} \cdot \text{exp}\parent{- \frac{We}{We_{cr}}}, \end{align} with
\(K_{b1} = 1.6\),
\(K_{b2} = 0.42\),
\(We_{cr} = 1.24\).
The Break-up model is implemented as
so that for the sake of simplicity
in Rupture_bulles_1groupe_PolyMAC_P0
:
void Rupture_bulles_1groupe_PolyMAC_P0::set_param(Param& param)
{
Param param(que_suis_je());
param.ajouter("beta_k", &beta_k_);
}
and Rupture_bulles_1groupe_Yao_Morel
:
void Rupture_bulles_1groupe_Yao_Morel::set_param(Param& param)
Default values:
\(\texttt{beta_k_} = 0.09\)
\(\texttt{Kb1} = 1.6\)
\(\texttt{Kb2} = 0.42\)
\(\texttt{We_cr} = 1.24\).
{\color{red} Warning}: The following part describes the matrix filling for the \(k-\varepsilon\) model, as an example, but it is currently not implemented since only the \(k-\tau\) and \(k-\omega\) models are available and are the only ones implemented for the source terms.
For the \(k-\varepsilon\) model:
If the \(k-\tau\) turbulence model is used,
If the \(k-\omega\) turbulence model is used
The Nucleation model is:
with \(\Phi_{e}\) wall heat transfer.
The Nucleation model is implemented in Nucleation_paroi_PolyMAC_P0
:
void Nucleation_paroi_PolyMAC_P0::set_param(Param& param)
This terms injected only on boundary elements and is fully explicit:
Interfacial area concentration with 2 groups (incoming)#
The equations#
A particular case of the solution can be obtained if we consider two groups of bubbles. For example, experimentally a limit can be observed between quasi-spherical and distorted bubbles. Then we can separate the distribution of those groups into 2 distinct distributions on either side of the critical diameter \(\mathit{Dsmc}=4\sqrt{\tfrac{\sigma}{g\parent{\rho_l - \rho_g}}}\), with \(\sigma\) the surface tension, \(g\) gravity and \(\rho_g\) and \(\rho_l\) respectively the densities of the gas and the liquid. For the first group we get:
For the second group, we get:
The different mass transfer are:
\(\chi_d\) is equal to \(1\) for a uniform distribution profile. Indeed, because there is no prior determination of the form of the solution of the distribution, the easiest from to consider is a uniform distribution.
During the averaging process proposed in [KYN+12] , two new terms emerged from the instantaneous equation: a diffusion term and a lift term. For example, the diffusion term can be implemented as:
with \(K\) a constant equal to \(1/3\). However, it is essential to note that these terms have not yet been fully validated in various configurations [RH23]. For the implementation in the code, we must rewrite it to get rid of \(D_{sm}\). For the first group we have:
For the second group, we obtain:
The different mass transfer are:
The source terms#
All source term models are based on five categories of mechanism: the Random Collisions (RC), the Wake Entrainment (WE), the Turbulent Impacts (TI), the Shearing-off (SO) and the Surface Instability (SI) (see Figure 4). The RC is a bubble coalescence phenomenon where \(2\) bubbles collide and merge because of a turbulent eddy of comparable size. The WE happens when one smaller bubble is in the wake of a bigger one, accelerates and collides it. The TI is due to turbulent eddies that break-up bubbles. The SO is a break-up phenomenon that source from the shearing-off of cap bubbles. The SI is due to the break-up of large bubbles due to their surface instability.
The number of processes and the dimensionless coefficient can strongly differ from one model to another:
The Sun et al. [SKIB04] model was developed for a \(2\) group configuration with a \(200 \times 10\) \(mm^2\) confined rectangular channel data. The effect of the wall is then very significant. It was performed for liquid superficial velocity between \(0.32\) and \(2.84\) m/s and gas velocity between \(0.39\) and \(2.01\) m/s. It deals with cap-bubbly and churn-turbulent flows.
The Smith et al. [SSHI12] model was developed for a \(2\) group configuration with \(0.102\) mm and \(0.152\) mm diameter pipes. It deals with bubbly, cap-bubbly and churn-turbulent flows.
The Schlegel et al. [SHI15] model was developed for a \(2\) group configuration with large diameter channels. It deals with bubbly and cap-bubbly flows. Several constitutive relations and correlations were used to tune this model.
The Fu and Ishii [FI02] model was developed for a \(2\) group configuration for small round pipe.
Dave [Dav16] proposed new Smith coefficient based on optimization with genetic algorithm on all TOPFLOW DN200 (pipe \(195.3\) mm).

Figure 4 Representation of 2 group bubble mechanisms.#
The coefficients of the previous models are summarized in the following table:
Coefficient |
Sun [SKIB04] |
Smith [SSHI12] |
Schlegel [SHI15] |
Fu [FI02] |
Dave [Dav16] |
---|---|---|---|---|---|
\(C^{(1)}_{RC}\) |
\(0.005\) |
\(0.01\) |
\(0.01\) |
\(0.0041\) |
\(0.26\) |
\(C^{(12,2)}_{RC}\) |
\(0.005\) |
\(0.01\) |
\(0.05\) |
\(0.005\) |
\(0.41\) |
\(C^{(2)}_{RC}\) |
\(0.005\) |
\(0.01\) |
\(0.01\) |
\(0.005\) |
\(1.00\) |
\(C_{RC0}\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(C_{RC1}\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(3.0\) |
\(\alpha_{g1,max}\) |
\(0.62\) |
\(0.62\) |
\(0.62\) |
\(0.75\) |
\(0.62\) |
\(C^{(1)}_{WE}\) |
\(0.002\) |
\(0.002\) |
\(0.002\) |
\(0.002\) |
\(0.001\) |
\(C^{(12,2)}_{WE}\) |
\(0.002\) |
\(0.01\) |
\(0.02\) |
\(0.015\) |
\(0.017\) |
\(C^{(2)}_{WE}\) |
\(0.005\) |
\(0.01\) |
\(0.05\) |
\(10.\) |
\(0.021\) |
\(C^{(1)}_{TI}\) |
\(0.1\) |
\(0.05\) |
\(0.05\) |
\(0.0085\) |
\(0.013\) |
\(C^{(12,2)}_{TI}\) |
\(0.02\) |
\(0.04\) |
\(0.02\) |
\(0.02\) |
\(0.006\) |
\(C^{(2)}_{TI}\) |
\(0.02\) |
\(0.01\) |
\(0.01\) |
\(0.02\) |
\(0.023\) |
\(We_{cr1}\) |
\(6.5\) |
\(1.2\) |
\(1.2\) |
\(6.0\) |
\(6.0\) |
\(We_{cr2}\) |
\(7.0\) |
\(1.2\) |
\( 1.2\) |
\(6.0\) |
\(6.0\) |
\(C_{SO}\) |
\(3.8 \times 10^{-5}\) |
\(2.5 \times 10^{-5}\) |
\(5.0 \times 10^{-5}\) |
\(0.031\) |
\(1.4 \times 10^{-5}\) |
\(We_{c,SO}\) |
\(4500\) |
\(4000\) |
\(10\) |
\(4500\) |
\(4500\) |
The model implemented is the one of Smith.
The source/sink terms of Random Collision (RC) are modeled as follows:
\(\lambda_{RC}^{(1)}\), \(\lambda_{RC}^{(12,2)}\), \(\lambda_{RC}^{(2)}\) are defined as follows:
In the above equations, \(C_{RC}^{(1)}\), \(C_{RC}^{(12,2)}\), \(C_{RC}^{(2)}\) are three constant coefficients. \(C_{RC1}\), \(C_{RC2}\) are coefficients accounting for effective range of influence of turbulent eddies. \(\alpha_{g1,max}\) is the dense packing limit for Group 1 bubbles. \(D_h\) is the hydraulic diameter. \(C_{RC0}\) is a constant coefficient.
The source/sink terms of Wake Entrainment (WE) are modeled as follows:
In the above equation
and
In the above equations \(C_{WE}^{(1)}\), \(C_{WE}^{(11,2)}\), \(C_{WE}^{(12,2)}\), \(C_{WE}^{(2)}\) are constant coefficients.
The source/sink terms of Turbulent Impact (TI) are modeled as follows:
with the following expressions for \(We_1\) and \(We_2\):
\(C_{TI}^{(1)}\), \(C_{TI}^{(2,1)}\), \(C_{TI}^{(2)}\) are constant coefficients. \(We_{cr1}\), \(We_{cr2}\) are critical Weber number for breakup due to turbulent impact.
The source/sink terms of Shearing-off (SO) are modeled as follows:
\(C_{SO}\) is a constant coefficient. \(We_{c,SO}\) is a critical weber number for shearing-off of small bubbles from large cap bubbles. \(We_{m2}\), \(We_c\), \(D_h\).
The source/sink terms of Surface Instability (SI) are modeled as follows:
\(C_{RC}^{(2)}\) and \(C_{WE}^{(2)}\) are constant coefficients from Random collision and Wake Entrainment source terms. \(D_h\) is the hydraulic diameter.