atl_elemental_time_integration_module Module

Module keeping interfaces



Abstract Interfaces

abstract interface

Interface definition for elementwise timestepping routine.

  • public subroutine atl_elemental_timestep(me, state, cell, dof, sideFlux)

    Arguments

    Type IntentOptional Attributes Name
    class(atl_timestep_type), intent(inout) :: me

    The type of your timestepping.

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

    The state of all cells on this level. This field will be updated ad the cell position. See kerneldata type for more explanations.

    integer, intent(in) :: cell

    Position of the cell to update in the state vector.

    integer, intent(in) :: dof

    The degree of freedom to update

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

    The flux for one of the sides of this cell. The length of this array is the number of conservative variables of your equation.

abstract interface

Interface definition for vectorized elementwise timestepping routine.

  • public subroutine atl_elemental_timestep_vec(me, state, kerneldata)

    Arguments

    Type IntentOptional Attributes Name
    class(atl_timestep_type), intent(inout) :: me

    The type of your timestepping.

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

    The state of all cells on this level. This field will be updated ad the cell position. See kerneldata type for more explanations.

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

    Complete kerneldata to get the flux from with additional information.

abstract interface

Interface definition for updating the timestep width.

  • public subroutine atl_update_timestep(me, timestepInfo)

    Arguments

    Type IntentOptional Attributes Name
    class(atl_timestep_type), intent(inout) :: me

    The type of your timestepping.

    type(atl_local_timestep_type), intent(in) :: timestepInfo

    Local timestepping information for that part of the mesh


Derived Types

type, public ::  atl_timestep_type

Components

Type Visibility Attributes Name Initial
type(atl_statedata_type), public, allocatable :: timestepData(:)

Additional storage for timestepping algorithm. The usage is optional and some solvers do not use is, while others have to use it (e.g. multistep/multistage methods). This field is always passed as an argument to elementwise timestepping rotine (specified above as a pointer). The dimension of this array and its usage is left to the stepping algorithm and is therefore different for different timestepping schemes.

type(atl_eulerTimestep_type), public :: euler

Information about the propagation speeds of the 3D Euler equation.

type(atl_eulerTimestep_type), public :: euler_2d

Information about the propagation speeds of the 2D Euler equation.

type(atl_eulerTimestep_type), public :: euler_1d

Information about the propagation speeds of the 1D Euler equation.

type(atl_LoclinEulerTimestep_type), public :: LoclinEuler

Information about the propagation speed of the local linear Euler equation

procedure(atl_elemental_timestep), public, pointer, nopass :: elemStep => null()

Pointer to a subroutine implementing the elemental procedure of a timestepping algorithm.

procedure(atl_elemental_timestep_vec), public, pointer, nopass :: elemStep_vec => null()
integer, public, allocatable :: timestepInfoInteger(:)

Storage for additional information of the timestepping method.

Read more…
real(kind=rk), public, allocatable :: timestepInfoReal(:)
procedure(atl_update_timestep), public, pointer, nopass :: updateStep => null()

Pointer to bring information from timestep information to the timestepping scheme itself.

type, private ::  atl_eulerTimestep_type

Timestep information for Euler equation.

Components

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

Modulus of the maximum velocity (for all elements on the current level).

real(kind=rk), public, allocatable :: speedOfSound(:)

Maximum speed of sound (for all elements on the current level).

type, private ::  atl_LoclinEulerTimestep_type

Timestep information for local linear Euler equation

Components

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

mean velocity for all elements

real(kind=rk), public, allocatable :: speedOfSound(:)

mean speed of sound for all elements