tem_varSys_op_type Derived Type

type, public :: tem_varSys_op_type

Description of the method how to obtain a variable


Inherits

type~~tem_varsys_op_type~~InheritsGraph type~tem_varsys_op_type tem_varSys_op_type c_ptr c_ptr type~tem_varsys_op_type->c_ptr method_data

Inherited by

type~~tem_varsys_op_type~~InheritedByGraph type~tem_varsys_op_type tem_varSys_op_type type~grw_varoparray_type grw_varoparray_type type~grw_varoparray_type->type~tem_varsys_op_type val type~tem_varsys_type tem_varSys_type type~tem_varsys_type->type~grw_varoparray_type method type~tem_restartheader_type tem_restartHeader_type type~tem_restartheader_type->type~tem_varsys_type varSys type~tem_restart_type tem_restart_type type~tem_restart_type->type~tem_restartheader_type header

Components

Type Visibility Attributes Name Initial
integer, public :: mypos

Position of this variable in the variable system.

integer, public, allocatable :: state_varPos(:)

Position of state variable in the state array Currently used only in MUSUBI to access one dimensional state array

integer, public, allocatable :: auxField_varPos(:)

Position of auxiliary variable in the auxilied field array Currently used only in MUSUBI to access one dimensional auxiliary array In Musubi, auxField vars are conserved macroscopic quantities computed from PDF state

integer, public :: nComponents

Number of components for this variable.

integer, public :: nInputs

Number of variables, that are needed as input for the operation to obtain the variable.

integer, public, allocatable :: input_varPos(:)

Position of the input variables in the variable system.

There are as many entries as nInputs.

integer, public, allocatable :: input_varIndex(:)

Component index of the input variable in the variable system. It is used only when there is only one input variable. Index values must not be zero and > nComponents of input variable

type(c_ptr), public :: method_data

Data that is required by the get method.

character(len=labelLen), public :: operType

Operation type

procedure(tem_varSys_proc_point), public, pointer :: get_point => null()

Function to actually obtain the variable at a given point.

This is either a function accessing a state variable directly, a function returning a space time function evaluation or a derived quantity, that computes a new variable out of others.

procedure(tem_varSys_proc_element), public, pointer :: get_element => null()

Function to actually obtain the variable in a given element.

procedure(tem_varSys_proc_setParams), public, pointer :: set_params => null()

Function to set parameter in the data_type stored in method_data.

procedure(tem_varSys_proc_getParams), public, pointer :: get_params => null()

Function to get parameter in the data_type stored in method_data

procedure(tem_varSys_proc_setupIndices), public, pointer :: setup_indices => null()

Function to setup points set for boundaries and sources. Pointe set are stored in method_data level wise 1D growing array for dimension X,Y and Z. * For solver variables, points are stored in solver container. * For spacetime variables, points are stored in spacetime function. * For operation variables, points are passed down to its input_variable.

procedure(tem_varSys_proc_getValOfIndex), public, pointer :: get_valOfIndex => null()

Function to get value for point set stored in method_data for requested index in point set. This function either returns a pre-stored value or compute value depends on variable type and spacetime function. For time-independent spacetime function, values are computed in setupIndices and growing array of points are deleted


Source Code

  type tem_varSys_op_type

    !> Position of this variable in the variable system.
    integer :: mypos

    !> Position of state variable in the state array
    !! Currently used only in MUSUBI to access one dimensional state array
    integer, allocatable :: state_varPos(:)

    !> Position of auxiliary variable in the auxilied field array
    !! Currently used only in MUSUBI to access one dimensional auxiliary array
    !! In Musubi, auxField vars are conserved macroscopic quantities computed
    !! from PDF state
    integer, allocatable :: auxField_varPos(:)

    !> Number of components for this variable.
    integer :: nComponents

    !> Number of variables, that are needed as input for the operation
    !! to obtain the variable.
    integer :: nInputs

    !> Position of the input variables in the variable system.
    !!
    !! There are as many entries as nInputs.
    integer, allocatable :: input_varPos(:)

    !> Component index of the input variable in the variable system.
    !! It is used only when there is only one input variable.
    !! Index values must not be zero and > nComponents of input variable
    integer, allocatable :: input_varIndex(:)

    !> Data that is required by the get method.
    type(c_ptr) :: method_data

    !> Operation type
    character(len=labelLen) :: operType

    !> Function to actually obtain the variable at a given point.
    !!
    !! This is either a function accessing a state variable directly,
    !! a function returning a space time function evaluation or a
    !! derived quantity, that computes a new variable out of others.
    procedure(tem_varSys_proc_point), pointer :: get_point => null()

    !> Function to actually obtain the variable in a given element.
    procedure(tem_varSys_proc_element), pointer :: get_element => null()

    !> Function to set parameter in the data_type stored in method_data.
    procedure(tem_varSys_proc_setParams), pointer :: set_params => null()

    !> Function to get parameter in the data_type stored in method_data
    procedure(tem_varSys_proc_getParams), pointer :: get_params => null()

    !> Function to setup points set for boundaries and sources.
    !! Pointe set are stored in method_data level wise 1D growing array for
    !! dimension X,Y and Z.
    !!  * For solver variables, points are stored in solver container.
    !!  * For spacetime variables, points are stored in spacetime function.
    !!  * For operation variables, points are passed down to its
    !!    input_variable.
    procedure(tem_varSys_proc_setupIndices), pointer :: &
      &                                      setup_indices => null()

    !> Function to get value for point set stored in method_data
    !! for requested index in point set.
    !! This function either returns a pre-stored value or compute value
    !! depends on variable type and spacetime function.
    !! For time-independent spacetime function, values are computed
    !! in setupIndices and growing array of points are deleted
    procedure(tem_varSys_proc_getValOfIndex), pointer :: &
      &                                       get_valOfIndex => null()

  end type tem_varSys_op_type