Scalar2D_t Derived Type

type, public, extends(SELF_DataObj) :: Scalar2D_t


Inherits

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

Inherited by

type~~scalar2d_t~~InheritedByGraph type~scalar2d_t Scalar2D_t type~scalar2d~2 Scalar2D type~scalar2d~2->type~scalar2d_t type~scalar2d Scalar2D type~scalar2d->type~scalar2d_t type~semquad SEMQuad type~semquad->type~scalar2d~2 nScale, J type~mappedscalar2d_t MappedScalar2D_t type~mappedscalar2d_t->type~scalar2d~2 type~mappedscalar2d_t->type~semquad geometry type~mappedvector2d_t MappedVector2D_t type~mappedvector2d_t->type~semquad geometry type~mappedscalar2d~2 MappedScalar2D type~mappedscalar2d~2->type~mappedscalar2d_t type~mappedtwopointvector2d_t MappedTwoPointVector2D_t type~mappedtwopointvector2d_t->type~semquad geometry type~amrcontroller2d AMRController2D type~amrcontroller2d->type~semquad activeGeom, geomA, geomB, genGeom type~dgmodel2d_t DGModel2D_t type~dgmodel2d_t->type~semquad geometry type~dgmodel2d_t->type~mappedscalar2d~2 solution, source, fluxDivergence, dSdt, workSol type~mappedvector2d MappedVector2D type~dgmodel2d_t->type~mappedvector2d solutionGradient, flux type~mappedscalar2d MappedScalar2D type~mappedscalar2d->type~mappedscalar2d_t type~mappedvector2d->type~mappedvector2d_t type~linearshallowwater2d_t LinearShallowWater2D_t type~linearshallowwater2d_t->type~mappedscalar2d~2 fCori type~dgmodel2d~2 DGModel2D type~linearshallowwater2d_t->type~dgmodel2d~2 type~esatmo2d_t ESAtmo2D_t type~esatmo2d_t->type~mappedscalar2d~2 diffDiv type~esatmo2d_t->type~mappedvector2d diffFlux type~ecdgmodel2d ECDGModel2D type~esatmo2d_t->type~ecdgmodel2d type~lineareuler2d_pml_t LinearEuler2D_PML_t type~lineareuler2d_pml_t->type~mappedscalar2d~2 sigma_x, sigma_y type~lineareuler2d_t LinearEuler2D_t type~lineareuler2d_pml_t->type~lineareuler2d_t type~mappedvector2d~2 MappedVector2D type~mappedvector2d~2->type~mappedvector2d_t type~mappedtwopointvector2d MappedTwoPointVector2D type~mappedtwopointvector2d->type~mappedtwopointvector2d_t type~mappedtwopointvector2d~2 MappedTwoPointVector2D type~mappedtwopointvector2d~2->type~mappedtwopointvector2d_t type~dgmodel2d~2->type~dgmodel2d_t type~dgmodel2d DGModel2D type~dgmodel2d->type~dgmodel2d_t type~linearshallowwater2d LinearShallowWater2D type~linearshallowwater2d->type~linearshallowwater2d_t type~linearshallowwater2d~2 LinearShallowWater2D type~linearshallowwater2d~2->type~linearshallowwater2d_t type~lineareuler2d_pml LinearEuler2D_PML type~lineareuler2d_pml->type~lineareuler2d_pml_t type~esatmo2d~2 ESAtmo2D type~esatmo2d~2->type~esatmo2d_t type~esatmo2d ESAtmo2D type~esatmo2d->type~esatmo2d_t type~lineareuler2d_pml~2 LinearEuler2D_PML type~lineareuler2d_pml~2->type~lineareuler2d_pml_t type~ecdgmodel2d_t ECDGModel2D_t type~ecdgmodel2d_t->type~mappedtwopointvector2d twoPointFlux type~ecdgmodel2d_t->type~dgmodel2d~2 type~lineareuler2d_t->type~dgmodel2d~2 type~nulldgmodel2d_t NullDGModel2D_t type~nulldgmodel2d_t->type~dgmodel2d~2 type~advection_diffusion_2d_t advection_diffusion_2d_t type~advection_diffusion_2d_t->type~dgmodel2d~2 type~ecdgmodel2d->type~ecdgmodel2d_t type~nulldgmodel2d NullDGModel2D type~nulldgmodel2d->type~nulldgmodel2d_t type~lineareuler2d~2 LinearEuler2D type~lineareuler2d~2->type~lineareuler2d_t type~lineareuler2d LinearEuler2D type~lineareuler2d->type~lineareuler2d_t type~ecdgmodel2d~2 ECDGModel2D type~ecdgmodel2d~2->type~ecdgmodel2d_t type~nulldgmodel2d~2 NullDGModel2D type~nulldgmodel2d~2->type~nulldgmodel2d_t type~advection_diffusion_2d advection_diffusion_2d type~advection_diffusion_2d->type~advection_diffusion_2d_t type~advection_diffusion_2d~2 advection_diffusion_2d type~advection_diffusion_2d~2->type~advection_diffusion_2d_t type~ecadvection2d_t ECAdvection2D_t type~ecadvection2d_t->type~ecdgmodel2d type~ecadvection2d ECAdvection2D type~ecadvection2d->type~ecadvection2d_t type~ecadvection2d~2 ECAdvection2D type~ecadvection2d~2->type~ecadvection2d_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: M
integer, public :: N
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:):: avgBoundary
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
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_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, public :: AverageSides => AverageSides_Scalar2D_t

procedure, public :: BoundaryInterp => BoundaryInterp_Scalar2D_t

procedure, public :: Free => Free_Scalar2D_t

  • public subroutine Free_Scalar2D_t(this)

    Arguments

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

generic, public :: Gradient => Gradient_Scalar2D_t

  • public subroutine Gradient_Scalar2D_t(this, df)

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar2D_t), intent(in) :: this
    real(kind=prec), intent(inout) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar,1:2)

procedure, private :: Gradient_Scalar2D_t

  • public subroutine Gradient_Scalar2D_t(this, df)

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar2D_t), intent(in) :: this
    real(kind=prec), intent(inout) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar,1:2)

generic, public :: GridInterp => GridInterp_Scalar2D_t

  • public subroutine GridInterp_Scalar2D_t(this, f)

    Arguments

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

procedure, private :: GridInterp_Scalar2D_t

  • public subroutine GridInterp_Scalar2D_t(this, f)

    Arguments

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

procedure, public :: Init => Init_Scalar2D_t

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

    Arguments

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

procedure, public :: MapArrays => MapArrays_Scalar2D_t

  • public subroutine MapArrays_Scalar2D_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-4 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(Scalar2D_t), intent(inout) :: this
    integer, intent(in) :: Np
    integer, intent(in) :: nVar
    integer, intent(in) :: nElem

procedure, public :: Resize => Resize_Scalar2D_t

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

    Rebind a live object to a new element count, reusing the existing storage when it fits (AMR Stage 6b). Unlike Init - which is intent(out) and therefore resets the whole object, reallocates, zeroes and, on GPU builds, uploads those zeros - this preserves metadata and equation parsers (neither depends on nElem) and touches storage only when it must grow.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar2D_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_Scalar2D_t

procedure, public :: UpdateHost => UpdateHost_Scalar2D_t

generic, public :: WriteHDF5 => WriteHDF5_MPI_Scalar2D_t, WriteHDF5_Scalar2D_t

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

    Arguments

    TypeIntentOptionalAttributesName
    class(Scalar2D_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_Scalar2D_t(this, fileId, group)

    Arguments

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

procedure, private :: WriteHDF5_MPI_Scalar2D_t

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

    Arguments

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

procedure, private :: WriteHDF5_Scalar2D_t

  • public subroutine WriteHDF5_Scalar2D_t(this, fileId, group)

    Arguments

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

Source Code

  type,extends(SELF_DataObj),public :: Scalar2D_t

    real(prec),pointer,contiguous,dimension(:,:,:,:) :: interior
    real(prec),pointer,contiguous,dimension(:,:,:,:) :: boundary
    real(prec),pointer,contiguous,dimension(:,:,:,:) :: extBoundary
    real(prec),pointer,contiguous,dimension(:,:,:,:) :: avgBoundary
    real(prec),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.
    real(prec),pointer,contiguous :: pool_interior(:) => null()
    real(prec),pointer,contiguous :: pool_boundary(:) => null()
    real(prec),pointer,contiguous :: pool_extBoundary(:) => null()
    real(prec),pointer,contiguous :: pool_avgBoundary(:) => null()
    real(prec),pointer,contiguous :: pool_boundarynormal(:) => null()

  contains

    procedure,public :: Init => Init_Scalar2D_t
    procedure,public :: Resize => Resize_Scalar2D_t
    procedure,public :: MapArrays => MapArrays_Scalar2D_t
    procedure,public :: Free => Free_Scalar2D_t

    procedure,public :: UpdateHost => UpdateHost_Scalar2D_t
    procedure,public :: UpdateDevice => UpdateDevice_Scalar2D_t

    procedure,public :: BoundaryInterp => BoundaryInterp_Scalar2D_t
    procedure,public :: AverageSides => AverageSides_Scalar2D_t
    generic,public :: GridInterp => GridInterp_Scalar2D_t
    procedure,private :: GridInterp_Scalar2D_t
    generic,public :: Gradient => Gradient_Scalar2D_t
    procedure,private :: Gradient_Scalar2D_t

    generic,public :: WriteHDF5 => WriteHDF5_MPI_Scalar2D_t,WriteHDF5_Scalar2D_t
    procedure,private :: WriteHDF5_MPI_Scalar2D_t
    procedure,private :: WriteHDF5_Scalar2D_t

  endtype Scalar2D_t