atl_modg_2d_navierstokes_kernel_module Module

Module for routines and datatypes of MOdal Discontinuous Galerkin (MODG) scheme for the compressible Navier-Stokes equation. This scheme is a spectral scheme for linear, convection dominated partial differential equation systems.


Uses

Used by

  • module~~atl_modg_2d_navierstokes_kernel_module~~UsedByGraph module~atl_modg_2d_navierstokes_kernel_module atl_modg_2d_navierstokes_kernel_module module~atl_modg_2d_filnvrstk_kernel_module atl_modg_2d_filNvrStk_kernel_module module~atl_modg_2d_filnvrstk_kernel_module->module~atl_modg_2d_navierstokes_kernel_module proc~compute_rhs_cubes_modg_2d compute_rhs_cubes_modg_2d proc~compute_rhs_cubes_modg_2d->module~atl_modg_2d_navierstokes_kernel_module proc~compute_rhs_cubes_modg_2d->module~atl_modg_2d_filnvrstk_kernel_module

Functions

public function atl_get_penaltyIP_2d(maxPolyDegree, elemLength, ip_param) result(penaltyIP)

Return the penalty parameter for the IP discretizations of higher order equations.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: maxPolyDegree

The maximal polynomial degree of the discretization (starting from 0 for FVM)

real(kind=rk), intent(in) :: elemLength

The length of an element.

real(kind=rk), intent(in) :: ip_param

The Interior Penalty paramter (should be large enough to ensure stability)

Return Value real(kind=rk)

The resulting penalty parameter


Subroutines

public subroutine atl_modg_2d_navierstokes_physFlux_const(equation, res, state, iElem, iDir, penalizationData, poly_proj, material, nodal_data, nodal_GradData, nodal_res, ElemLength, scheme_min, scheme_current)

Calculate the physical flux for the MODG scheme and Navier-Stokes equation (with constant penalizations).

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

real(kind=rk), intent(inout) :: res(:,:)

To store the resulting phy flux in modal form

real(kind=rk), intent(in), optional :: state(:,:)

The state of the equation

integer, intent(in) :: iElem

The current Element

integer, intent(in) :: iDir

The current Direction

type(atl_penalizationData_type), intent(inout) :: penalizationData

The penalization data

type(ply_poly_project_type), intent(inout) :: poly_proj

Poly project

type(atl_material_type), intent(inout) :: material

Material description for the faces on the current level

real(kind=rk), intent(in), optional :: nodal_data(:,:)

The state in nodal form

real(kind=rk), intent(in), optional :: nodal_GradData(:,:,:)
real(kind=rk), intent(inout) :: nodal_res(:,:)
real(kind=rk), intent(in) :: ElemLength

Length of the element

type(atl_scheme_type), intent(inout) :: scheme_min

The scheme information

type(atl_scheme_type), intent(inout) :: scheme_current

public subroutine atl_modg_2d_navierstokes_penalization_const(equation, poly_proj, nodal_data, scheme_min, penalizationData, iElem, material)

PV 20150820 Get the correct penalization data here

Read more…

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

type(ply_poly_project_type), intent(inout) :: poly_proj

Poly project

real(kind=rk), intent(in), optional :: nodal_data(:,:)

The state in nodal form

type(atl_scheme_type), intent(inout) :: scheme_min

The scheme information

type(atl_penalizationData_type), intent(inout) :: penalizationData

The penalization data

integer, intent(in) :: iElem

The current Element

type(atl_material_type), intent(inout) :: material

Material description for the faces on the current level

public subroutine atl_modg_2d_navierstokes_physFlux_NonConst(equation, res, state, iElem, iDir, penalizationData, poly_proj, material, nodal_data, nodal_GradData, nodal_res, ElemLength, scheme_min, scheme_current)

Calculate the physical flux for the MODG scheme and Navier-Stokes equation (with non-constant penalizations).

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

real(kind=rk), intent(inout) :: res(:,:)

To store the resulting phy flux in modal form

real(kind=rk), intent(in), optional :: state(:,:)

The state of the equation

integer, intent(in) :: iElem

The current Element

integer, intent(in) :: iDir

The current Direction

type(atl_penalizationData_type), intent(inout) :: penalizationData

The penalization data

type(ply_poly_project_type), intent(inout) :: poly_proj

Poly project

type(atl_material_type), intent(inout) :: material

Material description for the faces on the current level

real(kind=rk), intent(in), optional :: nodal_data(:,:)

The state in nodal form

real(kind=rk), intent(in), optional :: nodal_GradData(:,:,:)
real(kind=rk), intent(inout) :: nodal_res(:,:)
real(kind=rk), intent(in) :: ElemLength

Length of the element

type(atl_scheme_type), intent(inout) :: scheme_min

The scheme information

type(atl_scheme_type), intent(inout) :: scheme_current

public subroutine atl_modg_2d_navierstokes_penalization_Nonconst(equation, poly_proj, nodal_data, scheme_min, penalizationData, iElem, material)

PV 20150820 Get the correct penalization data here

Read more…

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

type(ply_poly_project_type), intent(inout) :: poly_proj

Poly project

real(kind=rk), intent(in), optional :: nodal_data(:,:)

The state in nodal form

type(atl_scheme_type), intent(inout) :: scheme_min

The scheme information

type(atl_penalizationData_type), intent(inout) :: penalizationData

The penalization data

integer, intent(in) :: iElem

The current Element

type(atl_material_type), intent(inout) :: material

Material description for the faces on the current level

public subroutine atl_modg_2d_navierstokes_numFlux(mesh, equation, facedata, scheme, poly_proj, material)

Calculate the numerical flux for Navier-Stokes equation and MODG scheme

Arguments

Type IntentOptional Attributes Name
type(atl_cube_elem_type), intent(in) :: mesh

The mesh you are working with.

type(atl_Equations_type), intent(in) :: equation

The equation you solve.

type(atl_facedata_type), intent(inout) :: facedata

The face representation of the state.

type(atl_modg_2d_scheme_type), intent(in) :: scheme

Parameters of the modal dg scheme

type(ply_poly_project_type), intent(inout) :: poly_proj

Parameter for used projection

type(atl_material_type), intent(inout) :: material

Material description for the faces on the current level

private subroutine modg_2d_viscNavierStokes_oneDim_numFlux(equation, facedata, scheme, faces, faceDir, poly_proj, elemLength)

Numerical flux calculation for viscous part of the Navier-Stokes equation across the faces in a single spatial direction.

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

type(atl_facedata_type), intent(inout) :: facedata

The face state if the equation

type(atl_modg_2d_scheme_type), intent(in) :: scheme

Parameters of the modal dg scheme

type(tem_faceIterator_type), intent(in) :: faces

The faces to calculate the fluxes for.

integer, intent(in) :: faceDir

The spatial direction of the faces you calc the fluxes for, use the following: * 1 --> x direction. * 2 --> y direction. * 3 --> z direction.

type(ply_poly_project_type), intent(inout) :: poly_proj

Parameter for used projection

real(kind=rk), intent(in) :: elemLength

The length of an element

private subroutine modg_2d_stabViscNavierStokes_oneDim_numFlux(equation, facedata, scheme, faces, faceDir, poly_proj)

Numerical flux calculation for stab-viscous part of the Navier-Stokes equation across the faces in a single spatial direction.

Arguments

Type IntentOptional Attributes Name
type(atl_Equations_type), intent(in) :: equation

The equation you solve.

type(atl_facedata_type), intent(inout) :: facedata

The face state if the equation

type(atl_modg_2d_scheme_type), intent(in) :: scheme

Parameters of the modal dg scheme

type(tem_faceIterator_type), intent(in) :: faces

The faces to calculate the fluxes for.

integer, intent(in) :: faceDir

The spatial direction of the faces you calc the fluxes for, use the following: 1 --> x direction. \n 2 --> y direction. \n 3 --> z direction.

type(ply_poly_project_type), intent(inout) :: poly_proj

Parameter for used projection