atl_kerneldata_module Module

module containing all the informations and subroutines about the state of a solver.


Uses

  • module~~atl_kerneldata_module~~UsesGraph module~atl_kerneldata_module atl_kerneldata_module module~tem_time_module tem_time_module module~atl_kerneldata_module->module~tem_time_module module~env_module env_module module~atl_kerneldata_module->module~env_module module~ply_dof_module ply_dof_module module~atl_kerneldata_module->module~ply_dof_module module~ply_dof_module->module~env_module

Contents


Derived Types

type, public :: atl_statedata_type

Data type to describe the state of an equation in a solver.

Read more…

Components

TypeVisibilityAttributesNameInitial
type(tem_time_type), private :: local_time

Local time of this kernel

real(kind=rk), private :: local_output_time

Local output time of this kernel

real(kind=rk), private, allocatable:: state(:,:,:)

State collects the states of the variables of our simulation. So the dimension of this array is as follows: The first dimension is the number of elements. If we assume that our atl_kerneldata_type variable is located inside cube_container_type%state_list(index) then the number of elements is given by cube_container_type%mesh_list(index)%descriptor%nElems_fluid + cube_container_type%mesh_list(index)%descriptor%nElems_ghostFromCoarser + cube_container_type%mesh_list(index)%descriptor%nElems_ghostFromFiner + cube_container_type%mesh_list(index)%descriptor%nElems_halo . The second dimension is the number of degree of freedoms. This information is stored in side atl_kerneldata_type%scheme%nDoFs and no where else, since p-adaptivity might change the number of degrees of freedoms for other parts of the mesh. The third dimension is the number of variables we have to simulate for our equation(s). It is stored inside Equations_type%nScalars.

type, public :: atl_kerneldata_type

Data type to describe the kernelstate of a specific kernel.

Read more…

Components

TypeVisibilityAttributesNameInitial
integer, private :: nTotal

The total number of cells (including only fluid, ghost, halo and boundary cells).

integer, private :: nVars

The number of scalar variables of the current equation.

integer, private :: maxPolyDegree

Maximal polynomial degree of the data in this kerneldata.

integer, private :: poly_space

Chosen tensor kind of the polynomial representation in this kerneldata.

integer, private :: nDims

Number of dimensions of the polynomial in this kerneldata.

integer, private :: nDofs

The number of degrees of freedom per scalar variable of your equation.

integer, private :: nDervQuant

The number of derived quantities the kernel will use in the future.

real(kind=rk), private, allocatable:: state_der(:,:,:)

array of derived states. Could be anything like derivatives face values, etc. The only thing that is important is that the kernel has to handle the data consistently. The first dimension is the number of elemnts (including fluid, ghost, halo and boundary cells). The second dimension is the number of derived quantities (e.g. the fave value and derivatives at the faces). The exact meaning of this dimension is specified by the kernel. The third dimension is the number of informations per derived quantity per cell (e.g. the number of faces times the quadrature points). The exact meaning of this dimension is specified by the kernel. The fourth dimension is the number of varibales of the equation.

logical, private :: need_deviation =.false.

Flag to indicate, whether to compute the deviation.

logical, private :: need_maxgrad =.false.

Flag to indicate, whether to compute maximal estimates for derivatives.

real(kind=rk), private, allocatable:: deviation(:,:)

Maximal deviation bound of the polynomial in state.

real(kind=rk), private, allocatable:: maxgrad(:,:)

Limit for maximal size of derivative in state.


Subroutines

public subroutine atl_init_statedata(statedata, nTotal, nDofs, nVars, time)

Initialize the statedata.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: statedata
integer, intent(in) :: nTotal

The total number of cells (including only fluid, ghost, halo and boundary cells).

integer, intent(in) :: nDofs

The number of degrees of freedom per scalar variable of your equation.

integer, intent(in) :: nVars

The number of scalar variables of the current equation.

type(tem_time_type), intent(in) :: time

current time

public subroutine atl_init_kerneldata(kerneldata, statedata, nTotal, nVars, nDofs, nDervQuant, time, maxPolyDegree, nDims, poly_space, need_deviation, need_maxgrad)

init routine for the kerneldata type.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(atl_kerneldata_type), intent(inout) :: kerneldata

The data type to initialize.

type(atl_statedata_type), intent(inout) :: statedata

The data type to initialize.

integer, intent(in) :: nTotal

The total number of cells (including only fluid, ghost, halo and boundary cells).

integer, intent(in) :: nVars

The number of scalar variables of the current equation.

integer, intent(in) :: nDofs

The number of degrees of freedom per scalar variable of your equation.

integer, intent(in) :: nDervQuant

The number of derived quantities the kernel will use in the future.

type(tem_time_type), intent(in) :: time

current time

integer, intent(in) :: maxPolyDegree

The maximal polynomial degree in each spatial direction.

integer, intent(in) :: nDims

Number of dimensions for the polynomials in the kerneldata.

integer, intent(in) :: poly_space

Kind of tensor product used to represent multidimensional polynomials in this kerneldata.

logical, intent(in) :: need_deviation

Should the maximal deviation be computed for the state?

logical, intent(in) :: need_maxgrad

Should the maximal gradient be computed for the state?

public subroutine atl_kerneldata_update_maxdev(statedata, kerneldata)

Find the maximal deviation for the polynomials representing the state in each element.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(in) :: statedata

The statedata to update the bounds for.

deviation of kerneldata will be recomputed according to the statedata.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The kerneldata storing the deviation, this will be updated according to the data provided in statedata.

public subroutine atl_kerneldata_update_maxgrad(statedata, kerneldata)

Find the maximal gradient estimation for the polynomials representing the state in each element.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(in) :: statedata

The statedata to update the bounds for.

maxgrad of kerneldata will be recomputed according to the statedata.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The kerneldata storing the gradients, this will be updated according to the data provided in statedata.

public subroutine atl_kerneldata_update_estimates(statedata, kerneldata)

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(in) :: statedata

The statedata to update the estimates for.

maxgrad of kerneldata will be recomputed according to the statedata.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The kerneldata storing the estimates, this will be updated according to the data provided in statedata.