atl_eqn_nvrstk_module Module

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:

  • Dynamic viscosity mu
  • Thermal conductivity therm_cond
  • Internal penalization (for the diffusive term implementation in DG)

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 modelling
  • filtered_navier_stokes_2d (2D) with turbulence modelling

A 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


Uses

  • module~~atl_eqn_nvrstk_module~~UsesGraph module~atl_eqn_nvrstk_module atl_eqn_nvrstk_module aot_out_module aot_out_module module~atl_eqn_nvrstk_module->aot_out_module aotus_module aotus_module module~atl_eqn_nvrstk_module->aotus_module env_module env_module module~atl_eqn_nvrstk_module->env_module module~atl_eqn_euler_module atl_eqn_euler_module module~atl_eqn_nvrstk_module->module~atl_eqn_euler_module tem_aux_module tem_aux_module module~atl_eqn_nvrstk_module->tem_aux_module tem_logging_module tem_logging_module module~atl_eqn_nvrstk_module->tem_logging_module module~atl_eqn_euler_module->aot_out_module module~atl_eqn_euler_module->aotus_module module~atl_eqn_euler_module->env_module module~atl_eqn_euler_module->tem_aux_module module~atl_eqn_euler_module->tem_logging_module

Used by

  • module~~atl_eqn_nvrstk_module~~UsedByGraph module~atl_eqn_nvrstk_module atl_eqn_nvrstk_module module~atl_eqn_filnvrstk_hlp_module atl_eqn_filnvrStk_hlp_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_nvrstk_module module~atl_eqn_nvrstk_hlp_module atl_eqn_nvrstk_hlp_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_nvrstk_module module~atl_eqn_nvrstk_var_module atl_eqn_nvrstk_var_module module~atl_eqn_nvrstk_var_module->module~atl_eqn_nvrstk_module module~atl_equation_module atl_equation_module module~atl_equation_module->module~atl_eqn_nvrstk_module module~atl_numflux_filnvrstk_module atl_numFlux_filNvrStk_module module~atl_numflux_filnvrstk_module->module~atl_eqn_nvrstk_module module~atl_physfluxfilnvrstk_module atl_physFluxFilNvrStk_module module~atl_physfluxfilnvrstk_module->module~atl_eqn_nvrstk_module proc~atl_eqn_write atl_eqn_write proc~atl_eqn_write->module~atl_eqn_nvrstk_module

Abstract Interfaces

abstract interface

  • private pure function invisc_indicator(nvrstk, mean, deviation, grad) result(isinviscous)

    Arguments

    Type IntentOptional 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.

    Return Value logical

    Resulting indication whether viscous terms can be neglected.


Derived Types

type, public ::  atl_navierStokes_type

The Navier-Stokes equation properties are stored here

Components

Type Visibility Attributes Name Initial
real(kind=rk), public :: mu

shear viscosity

real(kind=rk), public :: lambda

bulk viscosity

real(kind=rk), public :: therm_cond

thermal conductivity

real(kind=rk), public :: ip_param

The penalty parameter of the Interior Penalty paramter

real(kind=rk), public :: visc_limit = 0.0_rk

Limiter to decide computation of viscous fluxes within elements.

Read more…
procedure(invisc_indicator), public, pointer, pass(nvrstk) :: inviscous => NULL()

type, public ::  atl_navier_stokes_rans_type

This data-type stores the properties required

Components

Type Visibility Attributes Name Initial
real(kind=rk), public :: turb_prandtl_num

Turbulent Prandtl Number

real(kind=rk), public :: sig_k

Sigma_k

real(kind=rk), public :: beta_k

\beta_k

real(kind=rk), public :: sig_omg

Sigma_omg

real(kind=rk), public :: alpha_omg

alpha_omg

real(kind=rk), public :: beta_omg

\beta_omega

real(kind=rk), public :: c_mu

\c_{\mu}

real(kind=rk), public :: alpha

\alpha used in limited turbulent eddy viscosity

type, public ::  atl_filNvrStk_source_data_type

Components

Type Visibility Attributes Name Initial
type(atl_navierStokes_type), public, pointer :: nvrStk_type => null()
type(atl_navier_stokes_rans_type), public, pointer :: filNvrStkRans_type => null()

type, public ::  atl_FiltNavierStokes_type

The Smagorinsky model for LES

Read more…

Components

Type Visibility Attributes Name Initial
character(len=32), public :: model_type = ''

JZ: outdated character(len=32) :: model_type = '' !< choosing the model for LES

Read more…
type(atl_navier_stokes_rans_type), public :: rans

Subroutines

public subroutine atl_load_navierStokes(navierStokes, euler, conf, eq_table)

Subroutine to initialize an equation of type navier stokes equation as defined in the configuration file

Arguments

Type IntentOptional 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

public subroutine atl_save_navierStokes(me_euler, me_nvrstk, eqn_name, conf)

Arguments

Type IntentOptional 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

public subroutine atl_load_filtNS(filtNavierStokes, navierStokes, euler, conf, eq_table)

subroutine to initialize an equation of type filtered-navier-stokes equation (turbulence modelling) as defined in the configuration file

Arguments

Type IntentOptional 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