SELF_DataObj Derived Type

type, public :: SELF_DataObj

The SELF_DataObj class is a base class for all data objects in SELF. A data object in SELF is a multidimensional array of data, represented on both host and device, that is associated with an interpolant, metadata, and (optionally) an equation string. Type extensions of the SELF_DataObj include scalars, vectors, and tensors in 1-D, 2-D, and 3-D using the storage patterns that are expected for derivative and interpolation operations defined in SELF_Lagrange.f90 Additionally, each extended type has the necessary attributes to store information on element interiors and element boundaries, both of which are commonly used for spectral element solvers.


Inherits

type~~self_dataobj~~InheritsGraph type~self_dataobj SELF_DataObj type~lagrange Lagrange type~self_dataobj->type~lagrange interp EquationParser EquationParser type~self_dataobj->EquationParser eqn type~metadata Metadata type~self_dataobj->type~metadata meta type~lagrange_t Lagrange_t type~lagrange->type~lagrange_t c_ptr c_ptr type~lagrange_t->c_ptr blas_handle

Inherited by

type~~self_dataobj~~InheritedByGraph type~self_dataobj SELF_DataObj type~vector2d_t Vector2D_t type~vector2d_t->type~self_dataobj type~tensor3d_t Tensor3D_t type~tensor3d_t->type~self_dataobj type~scalar1d_t Scalar1D_t type~scalar1d_t->type~self_dataobj type~scalar2d_t Scalar2D_t type~scalar2d_t->type~self_dataobj type~tensor2d_t Tensor2D_t type~tensor2d_t->type~self_dataobj type~vector3d_t Vector3D_t type~vector3d_t->type~self_dataobj type~scalar3d_t Scalar3D_t type~scalar3d_t->type~self_dataobj type~tensor3d Tensor3D type~tensor3d->type~tensor3d_t type~tensor3d~2 Tensor3D type~tensor3d~2->type~tensor3d_t type~vector2d~2 Vector2D type~vector2d~2->type~vector2d_t type~scalar1d~2 Scalar1D type~scalar1d~2->type~scalar1d_t type~scalar2d~2 Scalar2D type~scalar2d~2->type~scalar2d_t type~tensor2d~2 Tensor2D type~tensor2d~2->type~tensor2d_t type~vector3d~2 Vector3D type~vector3d~2->type~vector3d_t type~vector2d Vector2D type~vector2d->type~vector2d_t type~scalar1d Scalar1D type~scalar1d->type~scalar1d_t type~scalar1d~3 Scalar1D type~scalar1d~3->type~scalar1d_t type~scalar2d Scalar2D type~scalar2d->type~scalar2d_t type~tensor2d Tensor2D type~tensor2d->type~tensor2d_t type~vector3d Vector3D type~vector3d->type~vector3d_t type~scalar3d Scalar3D type~scalar3d->type~scalar3d_t type~scalar3d~2 Scalar3D type~scalar3d~2->type~scalar3d_t type~semquad SEMQuad type~semquad->type~vector2d x, nHat type~semquad->type~scalar2d nScale, J type~semquad->type~tensor2d dxds, dsdx type~mappedscalar1d_t MappedScalar1D_t type~mappedscalar1d_t->type~scalar1d type~geometry1d Geometry1D type~mappedscalar1d_t->type~geometry1d geometry type~geometry1d->type~scalar1d x, dxds type~mappedscalar2d_t MappedScalar2D_t type~mappedscalar2d_t->type~scalar2d type~mappedscalar2d_t->type~semquad geometry type~semhex SEMHex type~semhex->type~tensor3d dxds, dsdx type~semhex->type~vector3d x, nHat type~semhex->type~scalar3d nScale, J type~mappedvector2d_t MappedVector2D_t type~mappedvector2d_t->type~vector2d type~mappedvector2d_t->type~semquad geometry type~mappedvector3d_t MappedVector3D_t type~mappedvector3d_t->type~vector3d type~mappedvector3d_t->type~semhex geometry type~mappedscalar3d_t MappedScalar3D_t type~mappedscalar3d_t->type~scalar3d type~mappedscalar3d_t->type~semhex geometry type~dgmodel1d_t DGModel1D_t type~dgmodel1d_t->type~geometry1d geometry type~mappedscalar1d MappedScalar1D type~dgmodel1d_t->type~mappedscalar1d solution, solutionGradient, flux, source, fluxDivergence, dSdt, workSol type~mappedscalar2d MappedScalar2D type~mappedscalar2d->type~mappedscalar2d_t type~mappedscalar1d~2 MappedScalar1D type~mappedscalar1d~2->type~mappedscalar1d_t type~dgmodel3d_t DGModel3D_t type~dgmodel3d_t->type~semhex geometry type~mappedscalar3d MappedScalar3D type~dgmodel3d_t->type~mappedscalar3d solution, source, fluxDivergence, dSdt, workSol type~mappedvector3d MappedVector3D type~dgmodel3d_t->type~mappedvector3d solutionGradient, flux type~mappedvector2d MappedVector2D type~mappedvector2d->type~mappedvector2d_t type~mappedvector2d~2 MappedVector2D type~mappedvector2d~2->type~mappedvector2d_t type~mappedscalar3d->type~mappedscalar3d_t type~dgmodel2d_t DGModel2D_t type~dgmodel2d_t->type~semquad geometry type~dgmodel2d_t->type~mappedscalar2d solution, source, fluxDivergence, dSdt, workSol type~dgmodel2d_t->type~mappedvector2d solutionGradient, flux type~mappedscalar1d->type~mappedscalar1d_t type~mappedscalar2d~2 MappedScalar2D type~mappedscalar2d~2->type~mappedscalar2d_t type~mappedvector3d->type~mappedvector3d_t type~mappedvector3d~2 MappedVector3D type~mappedvector3d~2->type~mappedvector3d_t type~mappedscalar3d~2 MappedScalar3D type~mappedscalar3d~2->type~mappedscalar3d_t type~dgmodel3d DGModel3D type~dgmodel3d->type~dgmodel3d_t type~dgmodel1d DGModel1D type~dgmodel1d->type~dgmodel1d_t type~dgmodel2d DGModel2D type~dgmodel2d->type~dgmodel2d_t type~dgmodel3d~2 DGModel3D type~dgmodel3d~2->type~dgmodel3d_t type~dgmodel1d~2 DGModel1D type~dgmodel1d~2->type~dgmodel1d_t type~dgmodel2d~2 DGModel2D type~dgmodel2d~2->type~dgmodel2d_t type~nulldgmodel1d_t NullDGModel1D_t type~nulldgmodel1d_t->type~dgmodel1d type~burgers1d_t Burgers1D_t type~burgers1d_t->type~dgmodel1d type~advection_diffusion_2d_t advection_diffusion_2d_t type~advection_diffusion_2d_t->type~dgmodel2d type~linearshallowwater2d_t LinearShallowWater2D_t type~linearshallowwater2d_t->type~dgmodel2d type~nulldgmodel2d_t NullDGModel2D_t type~nulldgmodel2d_t->type~dgmodel2d type~lineareuler2d_t LinearEuler2D_t type~lineareuler2d_t->type~dgmodel2d type~nulldgmodel3d_t NullDGModel3D_t type~nulldgmodel3d_t->type~dgmodel3d type~advection_diffusion_3d_t advection_diffusion_3d_t type~advection_diffusion_3d_t->type~dgmodel3d type~advection_diffusion_1d_t advection_diffusion_1d_t type~advection_diffusion_1d_t->type~dgmodel1d type~nulldgmodel1d NullDGModel1D type~nulldgmodel1d->type~nulldgmodel1d_t type~nulldgmodel1d~2 NullDGModel1D type~nulldgmodel1d~2->type~nulldgmodel1d_t type~advection_diffusion_2d~2 advection_diffusion_2d type~advection_diffusion_2d~2->type~advection_diffusion_2d_t type~linearshallowwater2d LinearShallowWater2D type~linearshallowwater2d->type~linearshallowwater2d_t type~lineareuler2d LinearEuler2D type~lineareuler2d->type~lineareuler2d_t type~advection_diffusion_3d advection_diffusion_3d type~advection_diffusion_3d->type~advection_diffusion_3d_t type~advection_diffusion_3d~2 advection_diffusion_3d type~advection_diffusion_3d~2->type~advection_diffusion_3d_t type~burgers1d~2 Burgers1D type~burgers1d~2->type~burgers1d_t type~advection_diffusion_2d advection_diffusion_2d type~advection_diffusion_2d->type~advection_diffusion_2d_t type~burgers1d Burgers1D type~burgers1d->type~burgers1d_t type~linearshallowwater2d~2 LinearShallowWater2D type~linearshallowwater2d~2->type~linearshallowwater2d_t type~nulldgmodel2d NullDGModel2D type~nulldgmodel2d->type~nulldgmodel2d_t type~nulldgmodel2d~2 NullDGModel2D type~nulldgmodel2d~2->type~nulldgmodel2d_t type~lineareuler2d~2 LinearEuler2D type~lineareuler2d~2->type~lineareuler2d_t type~nulldgmodel3d NullDGModel3D type~nulldgmodel3d->type~nulldgmodel3d_t type~nulldgmodel3d~2 NullDGModel3D type~nulldgmodel3d~2->type~nulldgmodel3d_t type~advection_diffusion_1d advection_diffusion_1d type~advection_diffusion_1d->type~advection_diffusion_1d_t type~advection_diffusion_1d~2 advection_diffusion_1d type~advection_diffusion_1d~2->type~advection_diffusion_1d_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: M
integer, public :: N
type(EquationParser), public, allocatable:: eqn(:)
type(Lagrange), public, pointer:: interp
type(Metadata), public, allocatable:: meta(:)
integer, public :: nElem
integer, public :: nVar

Type-Bound Procedures

procedure, public :: SetDescription => SetDescription_DataObj

  • public subroutine SetDescription_DataObj(this, ivar, description)

    Set the description of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: description

generic, public :: SetEquation => SetEquation_DataObj

  • public subroutine SetEquation_DataObj(this, ivar, eqnChar)

    Sets the equation parser for the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: eqnChar

procedure, private :: SetEquation_DataObj

  • public subroutine SetEquation_DataObj(this, ivar, eqnChar)

    Sets the equation parser for the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: eqnChar

procedure, public :: SetName => SetName_DataObj

  • public subroutine SetName_DataObj(this, ivar, name)

    Set the name of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: name

procedure, public :: SetUnits => SetUnits_DataObj

  • public subroutine SetUnits_DataObj(this, ivar, units)

    Set the units of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: units

Source Code

  type,public :: SELF_DataObj
  !! The SELF_DataObj class is a base class for all data objects in SELF.
  !! A data object in SELF is a multidimensional array of data, represented
  !! on both host and device, that is associated with an interpolant, metadata,
  !! and (optionally) an equation string.
  !! Type extensions of the SELF_DataObj include scalars, vectors, and tensors
  !! in 1-D, 2-D, and 3-D using the storage patterns that are expected for
  !! derivative and interpolation operations defined in SELF_Lagrange.f90
  !! Additionally, each extended type has the necessary attributes to store
  !! information on element interiors and element boundaries, both of which
  !! are commonly used for spectral element solvers.

    integer :: nVar
    integer :: nElem
    integer :: N
    integer :: M
    type(Lagrange),pointer :: interp
    type(Metadata),allocatable :: meta(:)
    type(EquationParser),allocatable :: eqn(:)

  contains

    ! Procedures for setting metadata for
    procedure,public :: SetName => SetName_DataObj
    procedure,public :: SetDescription => SetDescription_DataObj
    procedure,public :: SetUnits => SetUnits_DataObj
    generic,public :: SetEquation => SetEquation_DataObj
    procedure,private :: SetEquation_DataObj

  endtype SELF_DataObj