MappedScalar3D_t Derived Type

type, public, extends(Scalar3D) :: MappedScalar3D_t


Inherits

type~~mappedscalar3d_t~~InheritsGraph type~mappedscalar3d_t MappedScalar3D_t type~semhex SEMHex type~mappedscalar3d_t->type~semhex geometry type~scalar3d~2 Scalar3D type~mappedscalar3d_t->type~scalar3d~2 type~semhex->type~scalar3d~2 nScale, J type~vector3d~2 Vector3D type~semhex->type~vector3d~2 x, nHat, xMesh type~tensor3d~2 Tensor3D type~semhex->type~tensor3d~2 dxds, dsdx type~lagrange Lagrange type~semhex->type~lagrange meshToModel type~scalar3d_t Scalar3D_t type~scalar3d~2->type~scalar3d_t type~vector3d_t Vector3D_t type~vector3d~2->type~vector3d_t type~tensor3d_t Tensor3D_t type~tensor3d~2->type~tensor3d_t type~self_dataobj SELF_DataObj type~scalar3d_t->type~self_dataobj type~lagrange_t Lagrange_t type~lagrange->type~lagrange_t type~vector3d_t->type~self_dataobj type~self_dataobj->type~lagrange interp type~metadata Metadata type~self_dataobj->type~metadata meta EquationParser EquationParser type~self_dataobj->EquationParser eqn type~tensor3d_t->type~self_dataobj

Inherited by

type~~mappedscalar3d_t~~InheritedByGraph type~mappedscalar3d_t MappedScalar3D_t type~mappedscalar3d~2 MappedScalar3D type~mappedscalar3d~2->type~mappedscalar3d_t type~mappedscalar3d MappedScalar3D type~mappedscalar3d->type~mappedscalar3d_t type~dgmodel3d_t DGModel3D_t type~dgmodel3d_t->type~mappedscalar3d~2 solution, source, fluxDivergence, dSdt, workSol type~esatmo3d_t ESAtmo3D_t type~esatmo3d_t->type~mappedscalar3d~2 diffDiv type~ecdgmodel3d ECDGModel3D type~esatmo3d_t->type~ecdgmodel3d type~dgmodel3d~2 DGModel3D type~dgmodel3d~2->type~dgmodel3d_t type~dgmodel3d DGModel3D type~dgmodel3d->type~dgmodel3d_t type~esatmo3d~2 ESAtmo3D type~esatmo3d~2->type~esatmo3d_t type~esatmo3d ESAtmo3D type~esatmo3d->type~esatmo3d_t type~ecdgmodel3d_t ECDGModel3D_t type~ecdgmodel3d_t->type~dgmodel3d~2 type~nulldgmodel3d_t NullDGModel3D_t type~nulldgmodel3d_t->type~dgmodel3d~2 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~ecdgmodel3d->type~ecdgmodel3d_t type~nulldgmodel3d NullDGModel3D type~nulldgmodel3d->type~nulldgmodel3d_t type~ecdgmodel3d~2 ECDGModel3D type~ecdgmodel3d~2->type~ecdgmodel3d_t type~nulldgmodel3d~2 NullDGModel3D type~nulldgmodel3d~2->type~nulldgmodel3d_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(:,:,:,:,:):: avgBoundary
character(len=3), public :: backend ="cpu"
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: boundary
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: boundarynormal

High-water-mark backing store for the arrays above (AMR Stage 6b; 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() stays exactly as before while Resize can reuse the storage across an adaptation epoch. Nothing should index the pools.

type(EquationParser), public, allocatable:: eqn(:)
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: extBoundary
type(SEMHex), public, pointer:: geometry=> null()
logical, public :: geometry_associated =.false.
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: interior
type(Lagrange), public, pointer:: interp
type(Metadata), public, allocatable:: meta(:)
real(kind=prec), public, allocatable, dimension(:,:,:,:,:):: mortarBuff
integer, public :: nElem
integer, public :: nVar
real(kind=prec), public, pointer, contiguous:: pool_avgBoundary(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_boundary(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_boundarynormal(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_extBoundary(:)=> null()
real(kind=prec), public, pointer, contiguous:: pool_interior(:)=> null()

Type-Bound Procedures

procedure, private :: ApplyFlip => ApplyFlip_MappedScalar3D_t

procedure, public :: AssociateGeometry => AssociateGeometry_MappedScalar3D_t

procedure, public :: AverageSides => AverageSides_Scalar3D_t

procedure, public :: BoundaryInterp => BoundaryInterp_Scalar3D_t

procedure, public :: DissociateGeometry => DissociateGeometry_MappedScalar3D_t

procedure, public :: Free => Free_Scalar3D_t

  • public subroutine Free_Scalar3D_t(this)

    Arguments

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

generic, public :: Gradient => Gradient_Scalar3D_t

  • public subroutine Gradient_Scalar3D_t(this, df)

    Arguments

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

generic, public :: GridInterp => GridInterp_Scalar3D_t

  • public subroutine GridInterp_Scalar3D_t(this, f)

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar3D_t), intent(in) :: this
    real(kind=prec), intent(out) :: f(1:this%M+1,1:this%M+1,1:this%M+1,1:this%nelem,1:this%nvar)

    (Output) Array of function values, defined on the target grid

procedure, public :: Init => Init_Scalar3D_t

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

    Arguments

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

procedure, private :: MPIExchangeAsync => MPIExchangeAsync_MappedScalar3D_t

procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedScalar3D_t

  • public subroutine MPIMortarExchangeAsync_MappedScalar3D_t(this, mesh)

    Posts the point-to-point messages required for mortar interfaces whose big and small elements reside on different ranks. The big-face rank sends its face trace to each remote small-face rank and receives each remote small-face trace; tags are built from the sub-face global side ids, following the conforming SideExchange tag convention.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedScalar3D_t), intent(inout) :: this
    type(Mesh3D), intent(inout) :: mesh

procedure, public :: MapArrays => MapArrays_Scalar3D_t

  • public subroutine MapArrays_Scalar3D_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. Bounds-remapping a rank-1 contiguous target to a rank-5 pointer is what keeps every extent and stride identical to a plain allocate while allowing the pool underneath to be larger and reused. See SELF_DataPool.

    Arguments

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

generic, public :: MappedDGGradient => MappedDGGradient_MappedScalar3D_t

  • public subroutine MappedDGGradient_MappedScalar3D_t(this, df)

    Calculates the gradient of a function using the weak form of the gradient and the average boundary state. This method will compute the average boundary state from the and attributes of

    Arguments

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

procedure, private :: MappedDGGradient_MappedScalar3D_t

  • public subroutine MappedDGGradient_MappedScalar3D_t(this, df)

    Calculates the gradient of a function using the weak form of the gradient and the average boundary state. This method will compute the average boundary state from the and attributes of

    Arguments

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

generic, public :: MappedGradient => MappedGradient_MappedScalar3D_t

  • public subroutine MappedGradient_MappedScalar3D_t(this, df)

    Calculates the gradient of a function using the strong form of the gradient in mapped coordinates.

    Arguments

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

procedure, private :: MappedGradient_MappedScalar3D_t

  • public subroutine MappedGradient_MappedScalar3D_t(this, df)

    Calculates the gradient of a function using the strong form of the gradient in mapped coordinates.

    Arguments

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

procedure, public :: MortarExchange => MortarExchange_MappedScalar3D_t

procedure, public :: Resize => Resize_MappedScalar3D_t

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

    Rebind to a new element count, reusing storage where it fits (AMR Stage 6b). The mortar staging buffer is sized by mesh%nMortars rather than nElem, and nMortars changes with the mesh independently of the element count, so it is invalidated here and lazily re-created at the correct size by the next mortar exchange.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedScalar3D_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 :: SetInteriorFromEquation => SetInteriorFromEquation_MappedScalar3D_t

  • public subroutine SetInteriorFromEquation_MappedScalar3D_t(this, geometry, time)

    Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedScalar3D_t), intent(inout) :: this
    type(SEMHex), intent(in) :: geometry
    real(kind=prec), intent(in) :: time

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 :: SideExchange => SideExchange_MappedScalar3D_t

procedure, public :: UpdateDevice => UpdateDevice_Scalar3D_t

procedure, public :: UpdateHost => UpdateHost_Scalar3D_t

generic, public :: WriteHDF5 => WriteHDF5_MPI_Scalar3D_t, WriteHDF5_Scalar3D_t

  • public subroutine WriteHDF5_MPI_Scalar3D_t(this, fileId, group, elemoffset, nglobalelem)

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar3D_t), intent(in) :: this
    integer(kind=HID_T), intent(in) :: fileId
    character, intent(in) :: group
    integer, intent(in) :: elemoffset
    integer, intent(in) :: nglobalelem
  • public subroutine WriteHDF5_Scalar3D_t(this, fileId, group)

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar3D_t), intent(in) :: this
    integer(kind=HID_T), intent(in) :: fileId
    character, intent(in) :: group

Source Code

  type,extends(Scalar3D),public :: MappedScalar3D_t
    logical :: geometry_associated = .false.
    type(SEMHex),pointer :: geometry => null()

    ! Mortar exchange work array, allocated on first use for meshes with 2:1
    ! nonconforming interfaces. mortarBuff(i,j,slot,m,ivar) holds face traces in the
    ! big face's coordinates for mortar m :
    !   slots 1..4 - big-face trace, used to compute sub-face q's external state
    !   slots 5..8 - small-face traces on sub-faces 1..4
    ! Slots 1..4 carry the same data when the big element is rank-local; they are
    ! distinct so that MPI receives of the big-face trace on the small faces' ranks
    ! never alias.
    real(prec),allocatable,dimension(:,:,:,:,:) :: mortarBuff

  contains

    procedure,public :: AssociateGeometry => AssociateGeometry_MappedScalar3D_t
    procedure,public :: DissociateGeometry => DissociateGeometry_MappedScalar3D_t

    procedure,public :: SideExchange => SideExchange_MappedScalar3D_t
    procedure,public :: MortarExchange => MortarExchange_MappedScalar3D_t
    procedure,private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedScalar3D_t

    generic,public :: MappedGradient => MappedGradient_MappedScalar3D_t
    procedure,private :: MappedGradient_MappedScalar3D_t

    generic,public :: MappedDGGradient => MappedDGGradient_MappedScalar3D_t
    procedure,private :: MappedDGGradient_MappedScalar3D_t

    procedure,private :: MPIExchangeAsync => MPIExchangeAsync_MappedScalar3D_t
    procedure,private :: ApplyFlip => ApplyFlip_MappedScalar3D_t

    procedure,public :: Resize => Resize_MappedScalar3D_t

    procedure,public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedScalar3D_t

    ! procedure,public :: WriteTecplot => WriteTecplot_MappedScalar3D_t

  endtype MappedScalar3D_t