Compressible Navier-Stokes equations for viscous flows.
The flow field is represented in terms of the conservative variables density, momentum and energy. The Navier-Stokes equations require the definitions of the inviscous Euler equations, as described in atl_eqn_euler_module and in addition the following parameters:
mu
therm_cond
Optionally you can also provide a visc_limit
to adaptively switch off
the computation of the viscous terms if their estimated magnitude falls
below this limit for an element. If visc_limit
is 0 (the default) no
adaptivity will be considered.
The following equation names are implementing the Navier-Stokes equations and require the settings described above.
navier_stokes
(3D)navier_stokes_2d
(2D)filtered_navier_stokes
(3D) with turbulence modellingfiltered_navier_stokes_2d
(2D) with turbulence modellingA complete example for the configuration of the Navier-Stokes equations is given below:
equation = {
name = 'navier_stokes',
isen_coef = 1.4,
r = 287,
material = {
characteristic = 0.0,
relax_velocity = {0.0, 0.0, 0.0},
relax_temperature = 0.0
},
-- Viscous parameters
therm_cond = 0.5,
mu = 2.0,
ip_param = 4,
visc_limit = 0
}
equation["cv"] = equation["r"] / (equation["isen_coef"] - 1.0)
The settings for isen_coef
, r
, material
and cv
are inherited from the
Euler equations, see atl_eqn_euler_module. Please note, that there are more
parameters that may be set as described in atl_eqn_euler_module
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(atl_navierStokes_type), | intent(in) | :: | nvrstk | Description of the equation |
||
real(kind=rk), | intent(in) | :: | mean(:) | The mean of each state variable. |
||
real(kind=rk), | intent(in) | :: | deviation(:) | Estimation of maximal deviation of each state. |
||
real(kind=rk), | intent(in) | :: | grad(:) | Estimation of maximal gradient of each state. |
Resulting indication whether viscous terms can be neglected.
The Navier-Stokes equation properties are stored here
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | mu | shear viscosity |
|||
real(kind=rk), | private | :: | lambda | bulk viscosity |
|||
real(kind=rk), | private | :: | therm_cond | thermal conductivity |
|||
real(kind=rk), | private | :: | ip_param | The penalty parameter of the Interior Penalty paramter |
|||
real(kind=rk), | private | :: | visc_limit | = | 0.0_rk | Limiter to decide computation of viscous fluxes within elements. |
|
procedure(invisc_indicator), | private, | pointer, pass(nvrstk) | :: | inviscous | => | NULL() |
This data-type stores the properties required
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | turb_prandtl_num | Turbulent Prandtl Number |
|||
real(kind=rk), | private | :: | sig_k | Sigma_k |
|||
real(kind=rk), | private | :: | beta_k | \beta_k |
|||
real(kind=rk), | private | :: | sig_omg | Sigma_omg |
|||
real(kind=rk), | private | :: | alpha_omg | alpha_omg |
|||
real(kind=rk), | private | :: | beta_omg | \beta_omega |
|||
real(kind=rk), | private | :: | c_mu | \c_{\mu} |
|||
real(kind=rk), | private | :: | alpha | \alpha used in limited turbulent eddy viscosity |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(atl_navierStokes_type), | private, | pointer | :: | nvrStk_type | => | null() | |
type(atl_navier_stokes_rans_type), | private, | pointer | :: | filNvrStkRans_type | => | null() |
The Smagorinsky model for LES
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=32), | private | :: | model_type | = | '' | ||
type(atl_navier_stokes_rans_type), | private | :: | rans |
Subroutine to initialize an equation of type navier stokes equation as defined in the configuration file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_navierStokes_type), | intent(out) | :: | navierStokes | Output of this subroutine, the data inside this argument will be set to the values of the configuration file |
||
type(atl_euler_type), | intent(out) | :: | euler | |||
type(flu_State), | intent(in) | :: | conf | Variable of type flu_State which is a flu binding to the configuration file (input) |
||
integer, | intent(in) | :: | eq_table | A handle to the equation table inside the configuration file |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_euler_type), | intent(in) | :: | me_euler | |||
type(atl_navierStokes_type), | intent(in) | :: | me_nvrstk | |||
character(len=*), | intent(in) | :: | eqn_name | |||
type(aot_out_type), | intent(inout) | :: | conf |
subroutine to initialize an equation of type filtered-navier-stokes equation (turbulence modelling) as defined in the configuration file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_FiltNavierStokes_type), | intent(out) | :: | filtNavierStokes | Output of this subroutine, the data inside this argument will be set to the values of the configuration file |
||
type(atl_navierStokes_type), | intent(out) | :: | navierStokes | |||
type(atl_euler_type), | intent(out) | :: | euler | |||
type(flu_State), | intent(in) | :: | conf | Variable of type flu_State which is a flu binding to the configuration file |
||
integer, | intent(in) | :: | eq_table | A handle to the equation table inside the configuration file |