Multiphase turbulence RANS modeling#
Attention
Rewrite from latex in progress.
Introduction#
Eddy-viscosity models#
k-omega model#
The Wilcox version of the \(k-\omega\) model is described in details by \cite{Wilcox1988}. The turbulent viscosity is defined by \(\nu_t = \frac{k}{\omega}\). The two equations are:
The default values of the constants are
\(\alpha_{\omega} = 0.55\),
\(\beta_{k} = 0.09\),
\(\beta_{\omega} = 0.075\),
\(\sigma_k = 0.5\),
\(\sigma_{\omega} = 0.5\).
This model Kok [Kok99] was introduced after the Menter SST \(k-\omega\) model (Menter et al. [MKL03], Menter [Men93]) showed the importance of cross-diffusion. The differences with the 1988 Wilcox model reside in the addition of a cross-diffusion term (\({ \sigma_d\frac{ \rho_l}{\omega} } \text{max}\left\{{\underline{\nabla}k \cdot \underline{\nabla} \omega}, 0\right\} \)) and a modification of the value of some constants. The turbulent equations are:
The values of the constants are \(\alpha_{\omega} = 0.5\), \(\beta_{k} = 0.09\), \(\beta_{\omega} = 0.075\), \(\sigma_k = 2/3\), \(\sigma_{\omega} = 0.5\) and \(\sigma_d = 0.5\).
The 2006 Wilcox \(k_\omega\) model \cite{Wilcox2006} is the same as the Kok \(k-\omega\) with different coefficients. It is an update of the 1988 Wilcox \(k-\omega\) model. The turbulent equations are the same as in equation \ref{eq_omega_Kok}. A notable difference is the introduction of a blending function for \(\beta_{\omega}\).
The values of the constants are: \(\alpha_{\omega} = 0.52\), \(\beta_{k} = 0.09\), \(\beta_{\omega} = 0.0705\cdot f(\Omega_{ij},S_{ij})\), \(\sigma_k = 0.6\), \(\sigma_{\omega} = 0.5\) , \(\sigma_d = 0.125\).
k-tau model#
This is a variation of the 1999 Kok \(k-\omega\). In this model \cite{Ktau2000}, the time scale \(\tau = \frac{1}{\omega}\) is introduced. We therefore have \(\nu_t = k\tau\). There is an additional diffusion term that comes out of the calculation ( \(- 8 \rho_l(\nu_l + \sigma_{\omega} \nu_t) ||\underline{\nabla}\sqrt{\tau}||^2\)). The turbulent equations become:
The \(- 8 \rho_l(\nu_l + \sigma_{\omega} \nu_t) ||\underline{\nabla}\sqrt{\tau}||^2\) term presents important numerical difficulties close to the wall. In order to limit these issues, we have tried to implicit this term in 3 different ways.
The constants are the same than in the 1999 Kok \(k-\omega\) model: \(\alpha_{\omega} = 0.5\), \(\beta_{k} = 0.09\), \(\beta_{\omega} = 0.075\), \(\sigma_k = 2/3\), \(\sigma_{\omega} = 0.5\), \(\sigma_d = 0.5\).
LES#
Two-phase specific models#
Eddy-viscosity model#
The Sato model Sato et al. [SSS81] is added in Viscosite_turbulente_sato.cpp
. The original formula is
with the coefficient \(A^+=16\) and \(k_1 = 1.2\). The bubble diameter \(D_b\) is modeled to take the deformation of the bubble into account at the wall. The velocity \(U_B\), defined in the article, is the relative velocity. Very poor notation, in our humble opinion. The following expression is defined:
with \(\widehat{D_B}\) the cross-sectional mean diameter of the bubbles.
In TrioCFD, the squared coefficient depending on \(y^+\) is not implemented. The bubble diameter is taken as is without the prescribed function.
Source terms#
The HZDR model is described in the paper Colombo et al. [CRF+21], Rzehak and Krepper [RK13a], Rzehak and Krepper [RK13b], Rzehak and Kriebitzsch [RK15]. Their approach is to add a production term \(S_{k}^{\text{BI}}\) to the \(k\) equation and a dissipation term \(S_{\omega}^{\text{BI}}\) to the \(\omega\) equation. The general assumption is to consider that all energy lost by the bubble to drag is converted to turbulent kinetic energy in the wake of the bubble Rzehak and Krepper [RK13a].
In comparison with the current version of the code, they implemented those two additional terms in a \(k-\omega\) SST turbulence model. In CMFD, only the production and dissipation terms have been extracted and implemented without (yet) the SST additional process. Thus the prescribed coefficient might not be well suited.
The two terms are related by the expression
with
In the code, the added dissipation term takes the following form
with
It is derived directly from Source_base and currently only implemented in PolyMAC.
The added production term in the turbulent kinetic energy equation is defined in Production_HZDR_PolyMAC_P0. The added term in the dissipation equation is defined in Source_Dissipation_HZDR_PolyMAC_P0. TODO: To avoid code duplication, the dissipation source term should call the production source term.
Bubble-induced turbulence transport equations#
By two-phase turbulence, we mean the effect of the bubbles on the turbulence in the liquid phase. To model this, we implemented the models developed during the PhD of Antoine du Cluzeau du Cluzeau [dC19]. Following the work of Risso [Ris18], the authors divide the velocity fluctuations caused by the movement of bubbles in the fluid in two parts: wake-induced turbulence and wake-induced fluctuations. The total Reynolds stress tensor is the sum of all single-phase (calculated using 2-equation turbulence models) and two-phase turbulence.
This model is only available in PolyMAC, for now.
Wake-induced fluctuations}#
Wake-induced fluctuations are the anisotropic effects of the average wake. These fluctuations are primarily in the direction of the liquid-gas velocity difference, i.e. in the vertical direction. No transport equation is necessary to model this term.
with \(C_v = 0.36\).
During his internship, Moncef El Moatamid defined a new formulation using the work of Biesheuvel and Wijngaarden [BW84]
This formulation allows to have a tensor for the second part of the equation
Wake-induced turbulence#
Wake-induced turbulence is the isotropic contribution of bubbles to the velocity fluctuations. It comes from the instabilities of bubble wakes. It takes the shape of an additional transport equation for a specific kinetic energy \(k_{WIT}\).
where \(C_\Lambda = 2.7\), \(Re_b^c = 170\), \(C_D'\) is a user-inputted drag coefficient and \(C_D\) is a turbulent diffusion coefficient.
This model is implemented in Energie_cinetique_turbulente_WIT.cpp
and inherits from Convection_Diffusion_std
. The different terms of the right-hand side of the equations must be modeled. Thus, we have
\begin{itemize}
\item Viscosite_turbulente_WIT
\item Dissipation_WIT_PolyMAC_P0
\item Production_WIT_PolyMAC_P0
\end{itemize}
As specified above, it is currently only available with PolyMAC. To take the WIT into account in the momentum equation, one must specify its presence in the diffusion term using\footnote{This syntax might evolve to avoid repeating the names.}
diffusion {
turbulente multiple {
k_omega k_omega { }
WIT WIT { }
WIF WIF { }
}
}
Then, in the WIT equation bloc, the model for the turbulente diffusion of WIT is specified
diffusion { turbulente SGDH_WIT { } }
For the turbulent viscosity, an additional diffusion term must be specified in the data file to model the turbulent transport of WIT. Two models are available, a single gradient diffusion one and a generalized gradient diffusion one.
Production_WIT
with
The Reynolds number \(\mathit{Re}_c\) is a user parameter with a default value of 170~du Cluzeau [dC19]. Only the secmem
matrix is filled.
Dissipation_WIT
Drag coefficient from Tomiyama, same than HZDR.
with
Only the secmem
matrix is filled.
Transport_turbulent_SGDH_WIT It comes from the paper of Alméras [Almeras14]. It computes a characteristic time scale of the form
with \(\delta\) the wake size, \(\gamma\) the bubble aspect ratio and \(C_s\) a constant Then it modifies the viscosity as
Param param(que_suis_je());
param.ajouter("Aspect_ratio", &gamma_); // rapport de forme des bulles
param.ajouter("Influence_area", &delta_); // parametre modele d'Almeras 2014 (taille du sillage)
param.ajouter("C_s", &C_s); // parametre modele d'Almeras 2014
Transport_turbulent_GGDH_WIT
Same as SGDH but works with \(\nu(i, \text{liq. idx},\) \(\text{dim I}, \text{dim J})\) and \(R_{ij}\)
param.ajouter("Aspect_ratio", &gamma_); // rapport d'aspet des bulles
param.ajouter("Influence_area", &delta_); // parametre modele d'Almeras 2014 (taille du sillage)
param.ajouter("C_s", &C_s); // parametre modele d'Almeras 2014
//param.ajouter("vitesse_rel_attendue", &ur_user, Param::REQUIRED); // valeur de ur a prendre si u_r(i,0)=0
param.ajouter("Limiteur_alpha", &limiteur_alpha_, Param::REQUIRED); // valeur minimal de (1-alpha) pour utiliser le modele d'Almeras
Viscosite_turbulente_WIT
With the Reynolds_stress method, it fills the diagonal with \(2/3 \times k_{\text{WIT}}\).
param.ajouter("limiter|limiteur", &limiter_);