SELF_Scalar_3D_t Module


Uses

  • module~~self_scalar_3d_t~~UsesGraph module~self_scalar_3d_t SELF_Scalar_3D_t module~self_hdf5 SELF_HDF5 module~self_scalar_3d_t->module~self_hdf5 module~self_datapool SELF_DataPool module~self_scalar_3d_t->module~self_datapool module~self_lagrange~2 SELF_Lagrange module~self_scalar_3d_t->module~self_lagrange~2 module~self_metadata SELF_Metadata module~self_scalar_3d_t->module~self_metadata module~self_data SELF_Data module~self_scalar_3d_t->module~self_data iso_c_binding iso_c_binding module~self_scalar_3d_t->iso_c_binding HDF5 HDF5 module~self_scalar_3d_t->HDF5 module~self_constants SELF_Constants module~self_scalar_3d_t->module~self_constants FEQParse FEQParse module~self_scalar_3d_t->FEQParse module~self_hdf5->HDF5 module~self_hdf5->module~self_constants mpi mpi module~self_hdf5->mpi iso_fortran_env iso_fortran_env module~self_hdf5->iso_fortran_env module~self_datapool->module~self_constants module~self_lagrange~2->iso_c_binding module~self_lagrange~2->module~self_constants module~self_lagrange~2->iso_fortran_env module~self_lagrange_t SELF_Lagrange_t module~self_lagrange~2->module~self_lagrange_t module~self_metadata->module~self_hdf5 module~self_metadata->HDF5 module~self_data->module~self_hdf5 module~self_data->module~self_lagrange~2 module~self_data->module~self_metadata module~self_data->iso_c_binding module~self_data->HDF5 module~self_data->module~self_constants module~self_data->FEQParse module~self_constants->iso_c_binding module~self_constants->iso_fortran_env module~self_lagrange_t->module~self_hdf5 module~self_lagrange_t->iso_c_binding module~self_lagrange_t->HDF5 module~self_lagrange_t->module~self_constants module~self_lagrange_t->iso_fortran_env module~self_supportroutines SELF_SupportRoutines module~self_lagrange_t->module~self_supportroutines module~self_quadrature SELF_Quadrature module~self_lagrange_t->module~self_quadrature module~self_supportroutines->module~self_constants module~self_supportroutines->iso_fortran_env module~self_quadrature->module~self_constants module~self_quadrature->iso_fortran_env

Used by

  • module~~self_scalar_3d_t~~UsedByGraph module~self_scalar_3d_t SELF_Scalar_3D_t module~self_scalar_3d~2 SELF_Scalar_3D module~self_scalar_3d~2->module~self_scalar_3d_t module~self_scalar_3d SELF_Scalar_3D module~self_scalar_3d->module~self_scalar_3d_t module~self_mappedscalar_3d_t SELF_MappedScalar_3D_t module~self_mappedscalar_3d_t->module~self_scalar_3d~2 module~self_geometry_3d SELF_Geometry_3D module~self_mappedscalar_3d_t->module~self_geometry_3d module~self_refinementindicator_3d_t SELF_RefinementIndicator_3D_t module~self_refinementindicator_3d_t->module~self_scalar_3d~2 module~self_refinementindicator_3d~2 SELF_RefinementIndicator_3D module~self_refinementindicator_3d~2->module~self_scalar_3d~2 module~self_refinementindicator_3d~2->module~self_refinementindicator_3d_t module~self_geometry_3d->module~self_scalar_3d~2 module~self_esatmo3d~2 SELF_ESAtmo3D module~self_esatmo3d~2->module~self_geometry_3d module~self_esatmo3d_t SELF_ESAtmo3D_t module~self_esatmo3d~2->module~self_esatmo3d_t module~self_ecdgmodel3d_t SELF_ECDGModel3D_t module~self_esatmo3d~2->module~self_ecdgmodel3d_t module~self_points SELF_Points module~self_points->module~self_geometry_3d module~self_mappedscalar_3d SELF_MappedScalar_3D module~self_points->module~self_mappedscalar_3d module~self_points_t SELF_Points_t module~self_points->module~self_points_t module~self_mappedscalar_3d->module~self_mappedscalar_3d_t module~self_mappedtwopointvector_3d_t SELF_MappedTwoPointVector_3D_t module~self_mappedtwopointvector_3d_t->module~self_geometry_3d module~self_amrcontroller_3d SELF_AMRController_3D module~self_amrcontroller_3d->module~self_geometry_3d module~self_refinementindicator_3d SELF_RefinementIndicator_3D module~self_amrcontroller_3d->module~self_refinementindicator_3d module~self_dgmodel3d_t SELF_DGModel3D_t module~self_amrcontroller_3d->module~self_dgmodel3d_t module~self_mappedscalar_3d~2 SELF_MappedScalar_3D module~self_mappedscalar_3d~2->module~self_mappedscalar_3d_t module~self_refinementindicator_3d->module~self_refinementindicator_3d_t module~self_dgmodel3d_t->module~self_geometry_3d module~self_dgmodel3d_t->module~self_mappedscalar_3d module~self_mappedvector_3d SELF_MappedVector_3D module~self_dgmodel3d_t->module~self_mappedvector_3d module~self_mappedvector_3d_t SELF_MappedVector_3D_t module~self_mappedvector_3d_t->module~self_geometry_3d module~self_points_t->module~self_geometry_3d module~self_points_t->module~self_mappedscalar_3d module~self_ecadvection3d SELF_ECAdvection3D module~self_ecadvection3d->module~self_geometry_3d module~self_ecadvection3d->module~self_ecdgmodel3d_t module~self_ecadvection3d_t SELF_ECAdvection3D_t module~self_ecadvection3d->module~self_ecadvection3d_t module~self_dgmodel3d~2 SELF_DGModel3D module~self_dgmodel3d~2->module~self_geometry_3d module~self_dgmodel3d~2->module~self_dgmodel3d_t module~self_esatmo3d_t->module~self_mappedscalar_3d module~self_ecdgmodel3d~2 SELF_ECDGModel3D module~self_esatmo3d_t->module~self_ecdgmodel3d~2 module~self_mappedtwopointvector_3d~2 SELF_MappedTwoPointVector_3D module~self_mappedtwopointvector_3d~2->module~self_mappedtwopointvector_3d_t module~self_dgmodel3d SELF_DGModel3D module~self_dgmodel3d->module~self_dgmodel3d_t module~self_mappedtwopointvector_3d SELF_MappedTwoPointVector_3D module~self_mappedtwopointvector_3d->module~self_mappedtwopointvector_3d_t module~self_mappedvector_3d->module~self_mappedvector_3d_t module~self_mappedvector_3d~2 SELF_MappedVector_3D module~self_mappedvector_3d~2->module~self_mappedvector_3d_t module~self_points~2 SELF_Points module~self_points~2->module~self_points_t module~self_esatmo3d SELF_ESAtmo3D module~self_esatmo3d->module~self_esatmo3d_t module~self_lineareuler3d_t self_LinearEuler3D_t module~self_lineareuler3d_t->module~self_dgmodel3d module~self_advection_diffusion_3d_t self_advection_diffusion_3d_t module~self_advection_diffusion_3d_t->module~self_dgmodel3d module~self_ecdgmodel3d_t->module~self_mappedtwopointvector_3d~2 module~self_ecdgmodel3d_t->module~self_dgmodel3d module~self_nulldgmodel3d_t self_NullDGModel3D_t module~self_nulldgmodel3d_t->module~self_dgmodel3d module~self_lineareuler3d self_LinearEuler3D module~self_lineareuler3d->module~self_lineareuler3d_t module~self_lineareuler3d~2 self_LinearEuler3D module~self_lineareuler3d~2->module~self_lineareuler3d_t module~self_advection_diffusion_3d~2 self_advection_diffusion_3d module~self_advection_diffusion_3d~2->module~self_advection_diffusion_3d_t module~self_advection_diffusion_3d self_advection_diffusion_3d module~self_advection_diffusion_3d->module~self_advection_diffusion_3d_t module~self_ecdgmodel3d~2->module~self_ecdgmodel3d_t module~self_ecdgmodel3d SELF_ECDGModel3D module~self_ecdgmodel3d->module~self_ecdgmodel3d_t module~self_nulldgmodel3d~2 self_NullDGModel3D module~self_nulldgmodel3d~2->module~self_nulldgmodel3d_t module~self_nulldgmodel3d self_NullDGModel3D module~self_nulldgmodel3d->module~self_nulldgmodel3d_t module~self_ecadvection3d_t->module~self_ecdgmodel3d~2 module~self_ecadvection3d~2 SELF_ECAdvection3D module~self_ecadvection3d~2->module~self_ecadvection3d_t

Contents


Derived Types

type, public, extends(SELF_DataObj) :: Scalar3D_t

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_Scalar3D_t
procedure, public :: BoundaryInterp => BoundaryInterp_Scalar3D_t
procedure, public :: Free => Free_Scalar3D_t
generic, public :: Gradient => Gradient_Scalar3D_t
procedure, private :: Gradient_Scalar3D_t
generic, public :: GridInterp => GridInterp_Scalar3D_t
procedure, private :: GridInterp_Scalar3D_t
procedure, public :: Init => Init_Scalar3D_t
procedure, public :: MapArrays => MapArrays_Scalar3D_t
procedure, public :: Resize => Resize_Scalar3D_t
procedure, public :: SetDescription => SetDescription_DataObj
generic, public :: SetEquation => SetEquation_DataObj
procedure, public :: SetName => SetName_DataObj
procedure, public :: SetUnits => SetUnits_DataObj
procedure, public :: UpdateDevice => UpdateDevice_Scalar3D_t
procedure, public :: UpdateHost => UpdateHost_Scalar3D_t
generic, public :: WriteHDF5 => WriteHDF5_MPI_Scalar3D_t, WriteHDF5_Scalar3D_t
procedure, private :: WriteHDF5_MPI_Scalar3D_t
procedure, private :: WriteHDF5_Scalar3D_t

Subroutines

public subroutine AverageSides_Scalar3D_t(this)

Arguments

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

public subroutine BoundaryInterp_Scalar3D_t(this)

Arguments

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

public subroutine Free_Scalar3D_t(this)

Arguments

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

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)

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

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

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

public subroutine Resize_Scalar3D_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(Scalar3D_t), intent(inout) :: this
type(Lagrange), intent(in), target:: interp
integer, intent(in) :: nVar
integer, intent(in) :: nElem

public subroutine UpdateDevice_Scalar3D_t(this)

Arguments

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

public subroutine UpdateHost_Scalar3D_t(this)

Arguments

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

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