Tensor3D_t Derived Type

type, public, extends(SELF_DataObj) :: Tensor3D_t


Inherits

type~~tensor3d_t~~InheritsGraph type~tensor3d_t Tensor3D_t type~self_dataobj SELF_DataObj type~tensor3d_t->type~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

Inherited by

type~~tensor3d_t~~InheritedByGraph type~tensor3d_t Tensor3D_t type~tensor3d~2 Tensor3D type~tensor3d~2->type~tensor3d_t type~tensor3d Tensor3D type~tensor3d->type~tensor3d_t type~semhex SEMHex type~semhex->type~tensor3d~2 dxds, dsdx type~mappedscalar3d_t MappedScalar3D_t type~mappedscalar3d_t->type~semhex geometry type~dgmodel3d_t DGModel3D_t type~dgmodel3d_t->type~semhex geometry type~mappedscalar3d~2 MappedScalar3D type~dgmodel3d_t->type~mappedscalar3d~2 solution, source, fluxDivergence, dSdt, workSol type~mappedvector3d MappedVector3D type~dgmodel3d_t->type~mappedvector3d solutionGradient, flux type~amrcontroller3d AMRController3D type~amrcontroller3d->type~semhex activeGeom, geomA, geomB, genGeom type~mappedvector3d_t MappedVector3D_t type~mappedvector3d_t->type~semhex geometry type~mappedtwopointvector3d_t MappedTwoPointVector3D_t type~mappedtwopointvector3d_t->type~semhex geometry type~mappedscalar3d~2->type~mappedscalar3d_t type~dgmodel3d DGModel3D type~dgmodel3d->type~dgmodel3d_t type~mappedvector3d->type~mappedvector3d_t type~dgmodel3d~2 DGModel3D type~dgmodel3d~2->type~dgmodel3d_t type~mappedscalar3d MappedScalar3D type~mappedscalar3d->type~mappedscalar3d_t type~mappedvector3d~2 MappedVector3D type~mappedvector3d~2->type~mappedvector3d_t type~mappedtwopointvector3d MappedTwoPointVector3D type~mappedtwopointvector3d->type~mappedtwopointvector3d_t type~mappedtwopointvector3d~2 MappedTwoPointVector3D type~mappedtwopointvector3d~2->type~mappedtwopointvector3d_t type~esatmo3d_t ESAtmo3D_t type~esatmo3d_t->type~mappedscalar3d~2 diffDiv type~esatmo3d_t->type~mappedvector3d diffFlux type~ecdgmodel3d ECDGModel3D type~esatmo3d_t->type~ecdgmodel3d type~nulldgmodel3d_t NullDGModel3D_t type~nulldgmodel3d_t->type~dgmodel3d~2 type~ecdgmodel3d_t ECDGModel3D_t type~ecdgmodel3d_t->type~dgmodel3d~2 type~ecdgmodel3d_t->type~mappedtwopointvector3d twoPointFlux type~lineareuler3d_t LinearEuler3D_t type~lineareuler3d_t->type~dgmodel3d~2 type~advection_diffusion_3d_t advection_diffusion_3d_t type~advection_diffusion_3d_t->type~dgmodel3d~2 type~esatmo3d ESAtmo3D type~esatmo3d->type~esatmo3d_t type~nulldgmodel3d NullDGModel3D type~nulldgmodel3d->type~nulldgmodel3d_t type~ecdgmodel3d->type~ecdgmodel3d_t type~nulldgmodel3d~2 NullDGModel3D type~nulldgmodel3d~2->type~nulldgmodel3d_t type~esatmo3d~2 ESAtmo3D type~esatmo3d~2->type~esatmo3d_t type~ecdgmodel3d~2 ECDGModel3D type~ecdgmodel3d~2->type~ecdgmodel3d_t type~lineareuler3d LinearEuler3D type~lineareuler3d->type~lineareuler3d_t type~lineareuler3d~2 LinearEuler3D type~lineareuler3d~2->type~lineareuler3d_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~ecadvection3d_t ECAdvection3D_t type~ecadvection3d_t->type~ecdgmodel3d type~ecadvection3d ECAdvection3D type~ecadvection3d->type~ecadvection3d_t type~ecadvection3d~2 ECAdvection3D type~ecadvection3d~2->type~ecadvection3d_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: M
integer, public :: N
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:,:):: boundary
type(EquationParser), public, allocatable:: eqn(:)
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:,:):: extBoundary

High-water-mark backing store for the arrays above (AMR Stage 6b/6c; see SELF_DataPool). The public members are pointers remapped onto the leading part of these pools at the exact logical shape, so every extent, stride and shape() is unchanged while Resize can reuse the storage across an adaptation epoch. Nothing should index the pools directly.

real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:,:):: interior
type(Lagrange), public, pointer:: interp
type(Metadata), public, allocatable:: meta(:)
integer, public :: nElem
integer, public :: nVar
real(kind=prec), public, pointer, contiguous:: pool_boundary(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_extBoundary(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_interior(:)=> null()

Type-Bound Procedures

procedure, public :: BoundaryInterp => BoundaryInterp_Tensor3D_t

generic, public :: Determinant => Determinant_Tensor3D_t

  • public subroutine Determinant_Tensor3D_t(this, det)

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(in) :: this
    real(kind=prec), intent(out) :: det(1:this%N+1,1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar)

procedure, private :: Determinant_Tensor3D_t

  • public subroutine Determinant_Tensor3D_t(this, det)

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(in) :: this
    real(kind=prec), intent(out) :: det(1:this%N+1,1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar)

procedure, public :: Free => Free_Tensor3D_t

  • public subroutine Free_Tensor3D_t(this)

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(inout) :: this

procedure, public :: Init => Init_Tensor3D_t

  • public subroutine Init_Tensor3D_t(this, interp, nVar, nElem)

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(out) :: this
    type(Lagrange), intent(in), target:: interp
    integer, intent(in) :: nVar
    integer, intent(in) :: nElem

procedure, public :: MapArrays => MapArrays_Tensor3D_t

  • public subroutine MapArrays_Tensor3D_t(this, Np, nVar, nElem)

    Size the backing pools for (Np,nVar,nElem) and remap the public arrays onto them at the exact logical shape. See SELF_DataPool for why this is done with pointer remapping rather than by over-allocating the element dimension.

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(inout) :: this
    integer, intent(in) :: Np
    integer, intent(in) :: nVar
    integer, intent(in) :: nElem

procedure, public :: Resize => Resize_Tensor3D_t

  • public subroutine Resize_Tensor3D_t(this, interp, nVar, nElem)

    Rebind a live object to a new element count, reusing existing storage when it fits (AMR Stage 6b/6c). Unlike Init - which is intent(out), so it resets the object, reallocates, zeroes and reconstructs the 9*nVar equation parsers - this preserves metadata and parsers (neither depends on nElem) and touches storage only when it must grow.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Tensor3D_t), intent(inout) :: this
    type(Lagrange), intent(in), target:: interp
    integer, intent(in) :: nVar
    integer, intent(in) :: nElem

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, 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

procedure, public :: UpdateDevice => UpdateDevice_Tensor3D_t

procedure, public :: UpdateHost => UpdateHost_Tensor3D_t

Source Code

  type,extends(SELF_DataObj),public :: Tensor3D_t

    real(prec),pointer,contiguous,dimension(:,:,:,:,:,:,:) :: interior
    real(prec),pointer,contiguous,dimension(:,:,:,:,:,:,:) :: boundary
    real(prec),pointer,contiguous,dimension(:,:,:,:,:,:,:) :: extBoundary

    !! High-water-mark backing store for the arrays above (AMR Stage 6b/6c; see SELF_DataPool).
    !! The public members are pointers remapped onto the leading part of these pools at the exact
    !! logical shape, so every extent, stride and shape() is unchanged while Resize can reuse the
    !! storage across an adaptation epoch. Nothing should index the pools directly.
    real(prec),pointer,contiguous :: pool_interior(:) => null()
    real(prec),pointer,contiguous :: pool_boundary(:) => null()
    real(prec),pointer,contiguous :: pool_extBoundary(:) => null()

  contains

    procedure,public :: Init => Init_Tensor3D_t
    procedure,public :: Resize => Resize_Tensor3D_t
    procedure,public :: MapArrays => MapArrays_Tensor3D_t
    procedure,public :: Free => Free_Tensor3D_t

    procedure,public :: BoundaryInterp => BoundaryInterp_Tensor3D_t

    procedure,public :: UpdateHost => UpdateHost_Tensor3D_t
    procedure,public :: UpdateDevice => UpdateDevice_Tensor3D_t

    generic,public :: Determinant => Determinant_Tensor3D_t
    procedure,private :: Determinant_Tensor3D_t

  endtype Tensor3D_t