SELF_Vector_2D_t Module


Uses

  • module~~self_vector_2d_t~~UsesGraph module~self_vector_2d_t SELF_Vector_2D_t module~self_metadata SELF_Metadata module~self_vector_2d_t->module~self_metadata module~self_constants SELF_Constants module~self_vector_2d_t->module~self_constants iso_c_binding iso_c_binding module~self_vector_2d_t->iso_c_binding module~self_datapool SELF_DataPool module~self_vector_2d_t->module~self_datapool FEQParse FEQParse module~self_vector_2d_t->FEQParse HDF5 HDF5 module~self_vector_2d_t->HDF5 module~self_data SELF_Data module~self_vector_2d_t->module~self_data module~self_lagrange~3 SELF_Lagrange module~self_vector_2d_t->module~self_lagrange~3 module~self_hdf5 SELF_HDF5 module~self_vector_2d_t->module~self_hdf5 module~self_metadata->HDF5 module~self_metadata->module~self_hdf5 module~self_constants->iso_c_binding iso_fortran_env iso_fortran_env module~self_constants->iso_fortran_env module~self_datapool->module~self_constants module~self_data->module~self_metadata module~self_data->module~self_constants module~self_data->iso_c_binding module~self_data->FEQParse module~self_data->HDF5 module~self_data->module~self_lagrange~3 module~self_data->module~self_hdf5 module~self_lagrange~3->module~self_constants module~self_lagrange~3->iso_c_binding module~self_lagrange~3->iso_fortran_env module~self_lagrange_t SELF_Lagrange_t module~self_lagrange~3->module~self_lagrange_t module~self_hdf5->module~self_constants module~self_hdf5->HDF5 module~self_hdf5->iso_fortran_env mpi mpi module~self_hdf5->mpi module~self_lagrange_t->module~self_constants module~self_lagrange_t->iso_c_binding module~self_lagrange_t->HDF5 module~self_lagrange_t->module~self_hdf5 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_vector_2d_t~~UsedByGraph module~self_vector_2d_t SELF_Vector_2D_t module~self_vector_2d SELF_Vector_2D module~self_vector_2d->module~self_vector_2d_t module~self_vector_2d~2 SELF_Vector_2D module~self_vector_2d~2->module~self_vector_2d_t module~self_geometry_2d SELF_Geometry_2D module~self_geometry_2d->module~self_vector_2d module~self_mappedvector_2d SELF_MappedVector_2D module~self_mappedvector_2d->module~self_vector_2d module~self_mappedvector_2d_t SELF_MappedVector_2D_t module~self_mappedvector_2d->module~self_mappedvector_2d_t module~self_mappedvector_2d_t->module~self_vector_2d module~self_mappedvector_2d_t->module~self_geometry_2d module~self_dgmodel2d_t SELF_DGModel2D_t module~self_dgmodel2d_t->module~self_geometry_2d module~self_mappedvector_2d~2 SELF_MappedVector_2D module~self_dgmodel2d_t->module~self_mappedvector_2d~2 module~self_mappedscalar_2d SELF_MappedScalar_2D module~self_dgmodel2d_t->module~self_mappedscalar_2d module~self_amrcontroller_2d SELF_AMRController_2D module~self_amrcontroller_2d->module~self_geometry_2d module~self_amrcontroller_2d->module~self_dgmodel2d_t module~self_mappedscalar_2d_t SELF_MappedScalar_2D_t module~self_mappedscalar_2d_t->module~self_geometry_2d module~self_points_t SELF_Points_t module~self_points_t->module~self_geometry_2d module~self_points_t->module~self_mappedscalar_2d module~self_mappedtwopointvector_2d_t SELF_MappedTwoPointVector_2D_t module~self_mappedtwopointvector_2d_t->module~self_geometry_2d module~self_points SELF_Points module~self_points->module~self_geometry_2d module~self_points->module~self_points_t module~self_points->module~self_mappedscalar_2d module~self_ecadvection2d SELF_ECAdvection2D module~self_ecadvection2d->module~self_geometry_2d module~self_ecdgmodel2d_t SELF_ECDGModel2D_t module~self_ecadvection2d->module~self_ecdgmodel2d_t module~self_ecadvection2d_t SELF_ECAdvection2D_t module~self_ecadvection2d->module~self_ecadvection2d_t module~self_esatmo2d SELF_ESAtmo2D module~self_esatmo2d->module~self_geometry_2d module~self_esatmo2d->module~self_ecdgmodel2d_t module~self_esatmo2d_t SELF_ESAtmo2D_t module~self_esatmo2d->module~self_esatmo2d_t module~self_dgmodel2d SELF_DGModel2D module~self_dgmodel2d->module~self_geometry_2d module~self_dgmodel2d->module~self_dgmodel2d_t module~self_mappedvector_2d~2->module~self_mappedvector_2d_t module~self_dgmodel2d~2 SELF_DGModel2D module~self_dgmodel2d~2->module~self_dgmodel2d_t module~self_mappedtwopointvector_2d~2 SELF_MappedTwoPointVector_2D module~self_mappedtwopointvector_2d~2->module~self_mappedtwopointvector_2d_t module~self_mappedscalar_2d~2 SELF_MappedScalar_2D module~self_mappedscalar_2d~2->module~self_mappedscalar_2d_t module~self_points~2 SELF_Points module~self_points~2->module~self_points_t module~self_mappedscalar_2d->module~self_mappedscalar_2d_t module~self_mappedtwopointvector_2d SELF_MappedTwoPointVector_2D module~self_mappedtwopointvector_2d->module~self_mappedtwopointvector_2d_t module~self_ecdgmodel2d_t->module~self_dgmodel2d~2 module~self_ecdgmodel2d_t->module~self_mappedtwopointvector_2d~2 module~self_linearshallowwater2d_t self_LinearShallowWater2D_t module~self_linearshallowwater2d_t->module~self_dgmodel2d~2 module~self_nulldgmodel2d_t self_NullDGModel2D_t module~self_nulldgmodel2d_t->module~self_dgmodel2d~2 module~self_advection_diffusion_2d_t self_advection_diffusion_2d_t module~self_advection_diffusion_2d_t->module~self_dgmodel2d~2 module~self_lineareuler2d_t self_LinearEuler2D_t module~self_lineareuler2d_t->module~self_dgmodel2d~2 module~self_lineareuler2d_pml_t self_LinearEuler2D_PML_t module~self_lineareuler2d_pml_t->module~self_dgmodel2d~2 module~self_lineareuler2d_pml_t->module~self_mappedscalar_2d module~self_lineareuler2d_pml_t->module~self_lineareuler2d_t module~self_esatmo2d_t->module~self_mappedscalar_2d module~self_ecdgmodel2d SELF_ECDGModel2D module~self_esatmo2d_t->module~self_ecdgmodel2d module~self_lineareuler2d_pml self_LinearEuler2D_PML module~self_lineareuler2d_pml->module~self_lineareuler2d_pml_t module~self_lineareuler2d_pml~2 self_LinearEuler2D_PML module~self_lineareuler2d_pml~2->module~self_lineareuler2d_pml_t module~self_esatmo2d~2 SELF_ESAtmo2D module~self_esatmo2d~2->module~self_esatmo2d_t module~self_ecdgmodel2d->module~self_ecdgmodel2d_t module~self_ecdgmodel2d~2 SELF_ECDGModel2D module~self_ecdgmodel2d~2->module~self_ecdgmodel2d_t module~self_nulldgmodel2d self_NullDGModel2D module~self_nulldgmodel2d->module~self_nulldgmodel2d_t module~self_linearshallowwater2d~2 self_LinearShallowWater2D module~self_linearshallowwater2d~2->module~self_linearshallowwater2d_t module~self_linearshallowwater2d self_LinearShallowWater2D module~self_linearshallowwater2d->module~self_linearshallowwater2d_t module~self_nulldgmodel2d~2 self_NullDGModel2D module~self_nulldgmodel2d~2->module~self_nulldgmodel2d_t module~self_advection_diffusion_2d self_advection_diffusion_2d module~self_advection_diffusion_2d->module~self_advection_diffusion_2d_t module~self_advection_diffusion_2d~2 self_advection_diffusion_2d module~self_advection_diffusion_2d~2->module~self_advection_diffusion_2d_t module~self_lineareuler2d~2 self_LinearEuler2D module~self_lineareuler2d~2->module~self_lineareuler2d_t module~self_lineareuler2d self_LinearEuler2D module~self_lineareuler2d->module~self_lineareuler2d_t module~self_ecadvection2d_t->module~self_ecdgmodel2d module~self_ecadvection2d~2 SELF_ECAdvection2D module~self_ecadvection2d~2->module~self_ecadvection2d_t

Contents


Derived Types

type, public, extends(SELF_DataObj) :: Vector2D_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() is unchanged while Resize can reuse the storage across an adaptation epoch. Nothing should index the pools directly.

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_Vector2D_t
procedure, public :: BoundaryInterp => BoundaryInterp_Vector2D_t
generic, public :: Divergence => Divergence_Vector2D_t
procedure, private :: Divergence_Vector2D_t
procedure, public :: Free => Free_Vector2D_t
generic, public :: Gradient => Gradient_Vector2D_t
procedure, private :: Gradient_Vector2D_t
generic, public :: GridInterp => GridInterp_Vector2D_t
procedure, private :: GridInterp_Vector2D_t
procedure, public :: Init => Init_Vector2D_t
procedure, public :: MapArrays => MapArrays_Vector2D_t
procedure, public :: Resize => Resize_Vector2D_t
procedure, public :: SetDescription => SetDescription_DataObj
generic, public :: SetEquation => SetEquation_DataObj, SetEquation_Vector2D_t
procedure, private :: SetEquation_Vector2D_t
procedure, public :: SetName => SetName_DataObj
procedure, public :: SetUnits => SetUnits_DataObj
procedure, public :: UpdateDevice => UpdateDevice_Vector2D_t
procedure, public :: UpdateHost => UpdateHost_Vector2D_t
generic, public :: WriteHDF5 => WriteHDF5_MPI_Vector2D_t, WriteHDF5_Vector2D_t
procedure, private :: WriteHDF5_MPI_Vector2D_t
procedure, private :: WriteHDF5_Vector2D_t

Subroutines

public subroutine AverageSides_Vector2D_t(this)

Arguments

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

public subroutine BoundaryInterp_Vector2D_t(this)

Arguments

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

public subroutine Divergence_Vector2D_t(this, df)

Arguments

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

public subroutine Free_Vector2D_t(this)

Arguments

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

public subroutine Gradient_Vector2D_t(this, df)

Arguments

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

public subroutine GridInterp_Vector2D_t(this, f)

Arguments

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

public subroutine Init_Vector2D_t(this, interp, nVar, nElem)

Arguments

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

public subroutine MapArrays_Vector2D_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(Vector2D_t), intent(inout) :: this
integer, intent(in) :: Np
integer, intent(in) :: nVar
integer, intent(in) :: nElem

public subroutine Resize_Vector2D_t(this, interp, nVar, nElem)

Rebind a live object to a new element count, reusing existing storage when it fits (AMR Stage 6b). Unlike Init - which is intent(out), so it resets the object, reallocates, zeroes and reconstructs the equation parsers - this preserves metadata and parsers (neither depends on nElem) and touches storage only when it must grow. Preserving the parsers also avoids repeating the EquationParser construction that Init performs 2*nVar times as an amdflang workaround.

Read more…

Arguments

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

public subroutine SetEquation_Vector2D_t(this, idir, ivar, eqnChar)

Sets the equation parser for the idir direction and ivar-th variable

Arguments

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

public subroutine UpdateDevice_Vector2D_t(this)

Arguments

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

public subroutine UpdateHost_Vector2D_t(this)

Arguments

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

public subroutine WriteHDF5_MPI_Vector2D_t(this, fileId, group, elemoffset, nglobalelem)

Arguments

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

Arguments

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