Large Eddy Simulation models. More...
Namespaces | |
| module | enum_les |
| Enumeration for Large Eddy Simulation models. | |
| module | variables_turbulence_les |
| Define variables associated to the Large Eddy Simulation models. | |
Functions | |
| subroutine | mod_dynamic_sgs_constant::compute_uniform_dynamic_smagorinsky (velocity, strain_rate_magnitude, model_constant) |
| Compute the dynamic Smagorinsky model constant using the Germano identity. | |
| subroutine, public | mod_compute_filtered_fields::compute_filtered_scalar_field (filtered_field, field, filter_ratio) |
| Apply an explicit filter to a scalar field using 1D mask. | |
| subroutine | mod_compute_les_subgrid_viscosity::compute_les_subgrid_viscosity (velocity) |
| Compute the subgrid scale dynamic viscosity. | |
| double precision function | mod_wale_functions::compute_g_square (velocity_gradient, ii, jj) |
| Compute the variables necessary to calculate the turbulent viscosity in the WALE model. | |
Large Eddy Simulation models.
| subroutine, public mod_compute_filtered_fields::compute_filtered_scalar_field | ( | double precision, dimension(:,:,:), intent(out) | filtered_field, |
| double precision, dimension(:,:,:), intent(in) | field, | ||
| integer, intent(in) | filter_ratio ) |
Apply an explicit filter to a scalar field using 1D mask.
The multidimensional filter is constructed as the tensor product of a 1D discrete mask mask_filter given in module private variable. Available filter-to-grid ratio are Δ/Δx=1,2,4,8,16. Composite Simpson is using as quadrature rule with the following number of intervall used for each filter-to-grid ratioi (Δ/Δx), respectivelly (1,1,2,4,8). The filtering is performed successively along each spatial direction, resulting in an efficient implementation compared to full stencil naive implementation (avoiding cache misses).
For a 1D mask \( w \) of size \( N \), the 2D kernel is:
\[ W(i,j) = \frac{w_i \, w_j}{n} \,. \]
with \( n \) the norm of the kernel
\[ {\left(\sum_i w_i\right)^2} \,. \]
For a single 2Δ interval, the 1D Simpson weights are: \( w = \{1,4,1\} / 6. \) In 2D or 3D, the weights become the tensor product of the 1D Simpson weights. For instance, in 2D:
This produces the classical 3×3 kernel:
!! / 1 4 1 \ !! | 4 16 4 | / 36 !! \ 1 4 1 / !!
| [in,out] | filtered_field | Filtered field. |
| [in] | field | Input vector field to be filtered. |
| [in] | filter_ratio | Filter-to-grid ratio. |
| double precision function mod_wale_functions::compute_g_square | ( | double precision, dimension(:,:), intent(in) | velocity_gradient, |
| integer, intent(in) | ii, | ||
| integer, intent(in) | jj ) |
Compute the variables necessary to calculate the turbulent viscosity in the WALE model.
| subroutine mod_compute_les_subgrid_viscosity::compute_les_subgrid_viscosity | ( | type(t_face_field), intent(in) | velocity | ) |
Compute the subgrid scale dynamic viscosity.
| subroutine mod_dynamic_sgs_constant::compute_uniform_dynamic_smagorinsky | ( | type(t_face_field), intent(in) | velocity, |
| double precision, dimension(:,:,:), intent(in) | strain_rate_magnitude, | ||
| double precision, intent(out) | model_constant ) |
Compute the dynamic Smagorinsky model constant using the Germano identity.
This routine evaluates the dynamic Smagorinsky coefficient \( C_s \) using the Germano-Lilly procedure. The model constant is obtained from:
\[ C_s^2 = \frac{\langle L_{ij} M_{ij} \rangle} {\langle M_{ij} M_{ij} \rangle} \]
where:
The Leonard tensor is defined as:
\[ L_{ij} = \widetilde{u_i u_j} - \tilde{u}_i \tilde{u}_j \]
where:
The model tensor reads:
\[ M_{ij} = \widetilde{ \left( |S| S_{ij} \right) } - r^2 |\tilde{S}| \tilde{S}_{ij} \]
with:
\[ S_{ij} = \frac{1}{2} \left( \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} \right)\ , \quad |S| = \sqrt{2 S_{ij} S_{ij}} \]
The filter ratio is:
\[ r = {\tilde{\Delta}}/{\Delta} = 2 \]