SELF_MappedVector_3D_t Module


Uses

  • module~~self_mappedvector_3d_t~~UsesGraph module~self_mappedvector_3d_t SELF_MappedVector_3D_t module~self_mesh_3d SELF_Mesh_3D module~self_mappedvector_3d_t->module~self_mesh_3d module~self_lagrange~3 SELF_Lagrange module~self_mappedvector_3d_t->module~self_lagrange~3 module~self_domaindecomposition SELF_DomainDecomposition module~self_mappedvector_3d_t->module~self_domaindecomposition module~self_geometry_3d SELF_Geometry_3D module~self_mappedvector_3d_t->module~self_geometry_3d module~self_constants SELF_Constants module~self_mappedvector_3d_t->module~self_constants FEQParse FEQParse module~self_mappedvector_3d_t->FEQParse iso_c_binding iso_c_binding module~self_mappedvector_3d_t->iso_c_binding module~self_mesh_3d->iso_c_binding module~self_gpu SELF_GPU module~self_mesh_3d->module~self_gpu module~self_mesh_3d_t SELF_Mesh_3D_t module~self_mesh_3d->module~self_mesh_3d_t module~self_lagrange~3->module~self_constants module~self_lagrange~3->iso_c_binding module~self_lagrange~3->module~self_gpu iso_fortran_env iso_fortran_env module~self_lagrange~3->iso_fortran_env module~self_lagrange_t SELF_Lagrange_t module~self_lagrange~3->module~self_lagrange_t module~self_domaindecomposition->iso_c_binding module~self_domaindecomposition->iso_fortran_env module~self_domaindecomposition_t SELF_DomainDecomposition_t module~self_domaindecomposition->module~self_domaindecomposition_t mpi mpi module~self_domaindecomposition->mpi module~self_geometry_3d->module~self_mesh_3d module~self_geometry_3d->module~self_lagrange~3 module~self_geometry_3d->module~self_constants module~self_vector_3d SELF_Vector_3D module~self_geometry_3d->module~self_vector_3d module~self_supportroutines SELF_SupportRoutines module~self_geometry_3d->module~self_supportroutines module~self_data SELF_Data module~self_geometry_3d->module~self_data module~self_scalar_3d SELF_Scalar_3D module~self_geometry_3d->module~self_scalar_3d module~self_tensor_3d~2 SELF_Tensor_3D module~self_geometry_3d->module~self_tensor_3d~2 module~self_constants->iso_c_binding module~self_constants->iso_fortran_env module~self_vector_3d->module~self_constants module~self_vector_3d->iso_c_binding module~self_vector_3d->module~self_gpu module~self_vector_3d_t SELF_Vector_3D_t module~self_vector_3d->module~self_vector_3d_t module~self_gpuinterfaces SELF_GPUInterfaces module~self_vector_3d->module~self_gpuinterfaces module~self_gpu->iso_c_binding module~self_gpu_enums~2 SELF_GPU_enums module~self_gpu->module~self_gpu_enums~2 module~self_mesh_3d_t->module~self_lagrange~3 module~self_mesh_3d_t->module~self_domaindecomposition module~self_mesh_3d_t->module~self_constants module~self_mesh_3d_t->iso_c_binding module~self_mesh_3d_t->module~self_supportroutines module~self_mesh SELF_Mesh module~self_mesh_3d_t->module~self_mesh module~self_quadrature SELF_Quadrature module~self_mesh_3d_t->module~self_quadrature module~self_hdf5 SELF_HDF5 module~self_mesh_3d_t->module~self_hdf5 HDF5 HDF5 module~self_mesh_3d_t->HDF5 module~self_mesh_2d_t SELF_Mesh_2D_t module~self_mesh_3d_t->module~self_mesh_2d_t module~self_lagrange_t->module~self_constants module~self_lagrange_t->iso_c_binding module~self_lagrange_t->iso_fortran_env module~self_lagrange_t->module~self_supportroutines module~self_lagrange_t->module~self_quadrature module~self_lagrange_t->module~self_hdf5 module~self_lagrange_t->HDF5 module~self_domaindecomposition_t->module~self_lagrange~3 module~self_domaindecomposition_t->module~self_constants module~self_domaindecomposition_t->iso_c_binding module~self_domaindecomposition_t->mpi module~self_domaindecomposition_t->module~self_supportroutines module~self_supportroutines->module~self_constants module~self_supportroutines->iso_fortran_env module~self_data->module~self_lagrange~3 module~self_data->module~self_constants module~self_data->FEQParse module~self_data->iso_c_binding module~self_data->module~self_hdf5 module~self_data->HDF5 module~self_metadata SELF_Metadata module~self_data->module~self_metadata module~self_scalar_3d->module~self_constants module~self_scalar_3d->iso_c_binding module~self_scalar_3d->module~self_gpu module~self_scalar_3d->module~self_gpuinterfaces module~self_scalar_3d_t SELF_Scalar_3D_t module~self_scalar_3d->module~self_scalar_3d_t module~self_tensor_3d~2->module~self_constants module~self_tensor_3d~2->iso_c_binding module~self_tensor_3d~2->module~self_gpu module~self_tensor_3d~2->iso_fortran_env module~self_tensor_3d_t SELF_Tensor_3D_t module~self_tensor_3d~2->module~self_tensor_3d_t module~self_vector_3d_t->module~self_lagrange~3 module~self_vector_3d_t->module~self_constants module~self_vector_3d_t->FEQParse module~self_vector_3d_t->iso_c_binding module~self_vector_3d_t->module~self_data module~self_vector_3d_t->module~self_hdf5 module~self_vector_3d_t->HDF5 module~self_vector_3d_t->module~self_metadata module~self_datapool SELF_DataPool module~self_vector_3d_t->module~self_datapool module~self_mesh->module~self_domaindecomposition module~self_mesh->module~self_constants module~self_mesh->iso_c_binding module~self_gpuinterfaces->iso_c_binding module~self_gpuinterfaces->module~self_gpu module~self_quadrature->module~self_constants module~self_quadrature->iso_fortran_env module~self_gpu_enums~2->iso_c_binding module~self_hdf5->module~self_constants module~self_hdf5->iso_fortran_env module~self_hdf5->mpi module~self_hdf5->HDF5 module~self_mesh_2d_t->module~self_lagrange~3 module~self_mesh_2d_t->module~self_domaindecomposition module~self_mesh_2d_t->module~self_constants module~self_mesh_2d_t->iso_c_binding module~self_mesh_2d_t->module~self_supportroutines module~self_mesh_2d_t->module~self_mesh module~self_mesh_2d_t->module~self_quadrature module~self_mesh_2d_t->module~self_hdf5 module~self_mesh_2d_t->HDF5 module~self_metadata->module~self_hdf5 module~self_metadata->HDF5 module~self_scalar_3d_t->module~self_lagrange~3 module~self_scalar_3d_t->module~self_constants module~self_scalar_3d_t->FEQParse module~self_scalar_3d_t->iso_c_binding module~self_scalar_3d_t->module~self_data module~self_scalar_3d_t->module~self_hdf5 module~self_scalar_3d_t->HDF5 module~self_scalar_3d_t->module~self_metadata module~self_scalar_3d_t->module~self_datapool module~self_tensor_3d_t->module~self_lagrange~3 module~self_tensor_3d_t->module~self_constants module~self_tensor_3d_t->FEQParse module~self_tensor_3d_t->iso_c_binding module~self_tensor_3d_t->module~self_data module~self_tensor_3d_t->module~self_hdf5 module~self_tensor_3d_t->HDF5 module~self_tensor_3d_t->module~self_metadata module~self_tensor_3d_t->module~self_datapool module~self_datapool->module~self_constants

Used by

  • module~~self_mappedvector_3d_t~~UsedByGraph module~self_mappedvector_3d_t SELF_MappedVector_3D_t module~self_mappedvector_3d SELF_MappedVector_3D 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_dgmodel3d_t SELF_DGModel3D_t module~self_dgmodel3d_t->module~self_mappedvector_3d module~self_dgmodel3d SELF_DGModel3D module~self_dgmodel3d->module~self_dgmodel3d_t module~self_amrcontroller_3d SELF_AMRController_3D module~self_amrcontroller_3d->module~self_dgmodel3d_t module~self_amrcontroller_extruded SELF_AMRController_Extruded module~self_amrcontroller_extruded->module~self_dgmodel3d_t module~self_dgmodel3d~2 SELF_DGModel3D module~self_dgmodel3d~2->module~self_dgmodel3d_t module~self_advection_diffusion_3d_t self_advection_diffusion_3d_t module~self_advection_diffusion_3d_t->module~self_dgmodel3d module~self_lineareuler3d_t self_LinearEuler3D_t module~self_lineareuler3d_t->module~self_dgmodel3d module~self_ecdgmodel3d_t SELF_ECDGModel3D_t module~self_ecdgmodel3d_t->module~self_dgmodel3d module~self_multisetmodel3d_t SELF_MultiSetModel3D_t module~self_multisetmodel3d_t->module~self_dgmodel3d module~self_nulldgmodel3d_t self_NullDGModel3D_t module~self_nulldgmodel3d_t->module~self_dgmodel3d module~self_nulldgmodel3d~2 self_NullDGModel3D module~self_nulldgmodel3d~2->module~self_nulldgmodel3d_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_ecdgmodel3d~2 SELF_ECDGModel3D module~self_ecdgmodel3d~2->module~self_ecdgmodel3d_t 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 self_advection_diffusion_3d module~self_advection_diffusion_3d->module~self_advection_diffusion_3d_t module~self_ecdgmodel3d SELF_ECDGModel3D module~self_ecdgmodel3d->module~self_ecdgmodel3d_t module~self_ecadvection3d SELF_ECAdvection3D module~self_ecadvection3d->module~self_ecdgmodel3d_t module~self_ecadvection3d_t SELF_ECAdvection3D_t module~self_ecadvection3d->module~self_ecadvection3d_t module~self_esatmo3d~2 SELF_ESAtmo3D module~self_esatmo3d~2->module~self_ecdgmodel3d_t module~self_esatmo3d_t SELF_ESAtmo3D_t module~self_esatmo3d~2->module~self_esatmo3d_t module~self_multisetmodel3d SELF_MultiSetModel3D module~self_multisetmodel3d->module~self_multisetmodel3d_t module~self_multisetmodel3d~2 SELF_MultiSetModel3D module~self_multisetmodel3d~2->module~self_multisetmodel3d_t module~self_nulldgmodel3d self_NullDGModel3D module~self_nulldgmodel3d->module~self_nulldgmodel3d_t module~self_ecadvection3d_t->module~self_ecdgmodel3d~2 module~self_esatmo3d_t->module~self_ecdgmodel3d~2 module~self_ecadvection3d~2 SELF_ECAdvection3D module~self_ecadvection3d~2->module~self_ecadvection3d_t module~self_esatmo3d SELF_ESAtmo3D module~self_esatmo3d->module~self_esatmo3d_t

Contents


Derived Types

type, public, extends(Vector3D) :: MappedVector3D_t

Components

TypeVisibilityAttributesNameInitial
integer, public :: M
integer, public :: N
integer(kind=c_size_t), public :: alloc_avgBoundary =0
integer(kind=c_size_t), public :: alloc_boundary =0
integer(kind=c_size_t), public :: alloc_boundaryNormal =0
integer(kind=c_size_t), public :: alloc_extBoundary =0
integer(kind=c_size_t), public :: alloc_interior =0
real(kind=prec), public, allocatable, dimension(:,:,:,:,:,:):: anisoMortarBuff
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:):: avgBoundary
type(c_ptr), public :: avgBoundary_gpu
character(len=3), public :: backend ="gpu"
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(c_ptr), public :: boundaryNormal_gpu

Bytes currently allocated for each device buffer, so Resize can reuse them (Stage 6b).

type(c_ptr), public :: boundary_gpu
type(EquationParser), public, allocatable:: eqn(:)
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:):: extBoundary
type(c_ptr), public :: extBoundary_gpu
type(SEMHex), public, pointer:: geometry=> null()
logical, public :: geometry_associated =.false.
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:,:):: interior
type(c_ptr), public :: interior_gpu
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, public :: AnisoMortarExchange => AnisoMortarExchange_MappedVector3D_t
procedure, public :: AnisoMortarFluxCollect => AnisoMortarFluxCollect_MappedVector3D_t
procedure, private :: ApplyFlip => ApplyFlip_MappedVector3D_t
procedure, public :: AssociateGeometry => AssociateGeometry_MappedVector3D_t
procedure, public :: AverageSides => AverageSides_Vector3D
procedure, public :: BoundaryInterp => BoundaryInterp_Vector3D
generic, public :: Curl => Curl_Vector3D_t
procedure, public :: DissociateGeometry => DissociateGeometry_MappedVector3D_t
generic, public :: Divergence => Divergence_Vector3D_t, Divergence_Vector3D
procedure, public :: Free => Free_Vector3D
generic, public :: Gradient => Gradient_Vector3D_t, Gradient_Vector3D
generic, public :: GridInterp => GridInterp_Vector3D_t, GridInterp_Vector3D
procedure, public :: Init => Init_Vector3D
procedure, private :: MPIAnisoMortarExchangeAsync => MPIAnisoMortarExchangeAsync_MappedVector3D_t
procedure, private :: MPIAnisoMortarFluxAsync => MPIAnisoMortarFluxAsync_MappedVector3D_t
procedure, private :: MPIExchangeAsync => MPIExchangeAsync_MappedVector3D_t
procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedVector3D_t
procedure, private :: MPIMortarFluxAsync => MPIMortarFluxAsync_MappedVector3D_t
procedure, public :: MapArrays => MapArrays_Vector3D_t
generic, public :: MappedDGDivergence => MappedDGDivergence_MappedVector3D_t
procedure, private :: MappedDGDivergence_MappedVector3D_t
generic, public :: MappedDivergence => MappedDivergence_MappedVector3D_t
procedure, private :: MappedDivergence_MappedVector3D_t
procedure, public :: MortarExchange => MortarExchange_MappedVector3D_t
procedure, public :: MortarFluxCollect => MortarFluxCollect_MappedVector3D_t
procedure, public :: Resize => Resize_MappedVector3D_t
procedure, public :: SetDescription => SetDescription_DataObj
generic, public :: SetEquation => SetEquation_DataObj, SetEquation_Vector3D_t
procedure, public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedVector3D_t
procedure, public :: SetName => SetName_DataObj
procedure, public :: SetUnits => SetUnits_DataObj
procedure, public :: SideExchange => SideExchange_MappedVector3D_t
procedure, public :: UpdateDevice => UpdateDevice_Vector3D
procedure, public :: UpdateHost => UpdateHost_Vector3D
generic, public :: WriteHDF5 => WriteHDF5_MPI_Vector3D_t, WriteHDF5_Vector3D_t

Subroutines

public subroutine AnisoMortarExchange_MappedVector3D_t(this, mesh)

Fills the extBoundary attribute on all faces participating in an anisotropic mortar interface; vector analogue of the scalar AnisoMortarExchange (see MappedScalar3D_t for the algorithm description).

Arguments

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

public subroutine AnisoMortarFluxCollect_MappedVector3D_t(this, mesh)

Replaces the big-face boundaryNormal trace on each anisotropic mortar interface with the L2 projection of the two small faces' boundaryNormal traces.

Read more…

Arguments

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

public subroutine ApplyFlip_MappedVector3D_t(this, mesh)

Arguments

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

public subroutine AssociateGeometry_MappedVector3D_t(this, geometry)

Arguments

TypeIntentOptionalAttributesName
class(MappedVector3D_t), intent(inout) :: this
type(SEMHex), intent(in), target:: geometry

public subroutine DissociateGeometry_MappedVector3D_t(this)

Arguments

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

public subroutine MPIAnisoMortarExchangeAsync_MappedVector3D_t(this, mesh)

Posts the point-to-point messages required for anisotropic mortar interfaces whose big and small elements reside on different ranks; vector analogue of the scalar MPIAnisoMortarExchangeAsync with one message per direction component.

Arguments

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

public subroutine MPIAnisoMortarFluxAsync_MappedVector3D_t(this, mesh)

Posts the one-directional messages for AnisoMortarFluxCollect : each remote small face sends its boundaryNormal trace to the big face's rank.

Arguments

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

public subroutine MPIExchangeAsync_MappedVector3D_t(this, mesh)

Arguments

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

public subroutine MPIMortarExchangeAsync_MappedVector3D_t(this, mesh)

Posts the point-to-point messages required for mortar interfaces whose big and small elements reside on different ranks; vector analogue of the scalar MPIMortarExchangeAsync with one message per direction component.

Arguments

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

public subroutine MPIMortarFluxAsync_MappedVector3D_t(this, mesh)

Posts the one-directional messages for MortarFluxCollect : each remote small face sends its boundaryNormal trace to the big face's rank.

Arguments

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

public subroutine MappedDGDivergence_MappedVector3D_t(this, df)

Computes the divergence of a 3-D vector using the weak form On input, the attribute of the vector is assigned and the attribute is set to the physical directions of the vector. This method will project the vector onto the contravariant basis vectors.

Arguments

TypeIntentOptionalAttributesName
class(MappedVector3D_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)

public subroutine MappedDivergence_MappedVector3D_t(this, df)

Arguments

TypeIntentOptionalAttributesName
class(MappedVector3D_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)

public subroutine MortarExchange_MappedVector3D_t(this, mesh)

Fills the extBoundary attribute on all faces participating in a 2:1 nonconforming (mortar) interface; vector analogue of the scalar MortarExchange (see MappedScalar3D_t for the algorithm description).

Arguments

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

public subroutine MortarFluxCollect_MappedVector3D_t(this, mesh)

Replaces the big-face boundaryNormal trace on each mortar interface with the L2 projection of the four small faces' boundaryNormal traces.

Read more…

Arguments

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

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

Rebind to a new element count, reusing storage where it fits (AMR Stage 6b). See Resize_MappedScalar3D_t for why the mortar staging buffer is invalidated rather than resized.

Arguments

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

public subroutine SetInteriorFromEquation_MappedVector3D_t(this, geometry, time)

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

Arguments

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

public subroutine SideExchange_MappedVector3D_t(this, mesh)

Arguments

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