| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | f | |||
| type(c_ptr), | value | :: | dsdx | |||
| integer(kind=c_int), | value | :: | N | |||
| integer(kind=c_int), | value | :: | nvar | |||
| integer(kind=c_int), | value | :: | nel |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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 | |||
| type(EquationParser), | public, | allocatable | :: | eqn(:) | |||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:,:) | :: | extBoundary | |||
| type(SEMQuad), | public, | pointer | :: | geometry | => | null() | |
| logical, | public | :: | geometry_associated | = | .false. | ||
| type(c_ptr), | public | :: | halo_recvbuf_gpu | = | c_null_ptr | ||
| type(c_ptr), | public | :: | halo_sendbuf_gpu | = | c_null_ptr | ||
| 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 | |||
| type(c_ptr), | public | :: | mortarBuff_gpu | = | c_null_ptr | ||
| integer, | public | :: | nElem | ||||
| integer, | public | :: | nVar |
| procedure, public :: AssociateGeometry => AssociateGeometry_MappedVector2D_t | |
| procedure, public :: AverageSides => AverageSides_Vector2D_t | |
| procedure, public :: BoundaryInterp => BoundaryInterp_Vector2D_t | |
| procedure, public :: DissociateGeometry => DissociateGeometry_MappedVector2D_t | |
| generic, public :: Divergence => Divergence_Vector2D_t | |
| procedure, public :: Free => Free_MappedVector2D | |
| generic, public :: Gradient => Gradient_Vector2D_t | |
| generic, public :: GridInterp => GridInterp_Vector2D_t | |
| procedure, public :: Init => Init_Vector2D_t | |
| procedure, private :: MPIExchangeAsync => MPIExchangeAsync_MappedVector2D | |
| procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedVector2D | |
| procedure, private :: MPIMortarFluxAsync => MPIMortarFluxAsync_MappedVector2D | |
| generic, public :: MappedDGDivergence => MappedDGDivergence_MappedVector2D_t, MappedDGDivergence_MappedVector2D | |
| procedure, private :: MappedDGDivergence_MappedVector2D | |
| generic, public :: MappedDivergence => MappedDivergence_MappedVector2D_t, MappedDivergence_MappedVector2D | |
| procedure, private :: MappedDivergence_MappedVector2D | |
| procedure, public :: MortarExchange => MortarExchange_MappedVector2D | |
| procedure, public :: MortarFluxCollect => MortarFluxCollect_MappedVector2D | |
| procedure, public :: SetDescription => SetDescription_DataObj | |
| generic, public :: SetEquation => SetEquation_DataObj, SetEquation_Vector2D_t | |
| procedure, public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedVector2D | |
| procedure, public :: SetName => SetName_DataObj | |
| procedure, public :: SetUnits => SetUnits_DataObj | |
| procedure, public :: SideExchange => SideExchange_MappedVector2D | |
| procedure, public :: UpdateDevice => UpdateDevice_Vector2D_t | |
| procedure, public :: UpdateHost => UpdateHost_Vector2D_t | |
| generic, public :: WriteHDF5 => WriteHDF5_MPI_Vector2D_t, WriteHDF5_Vector2D_t |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this |
Post the aggregated halo exchange: one MPI_Irecv/MPI_Isend pair per neighboring rank, carrying every (side,variable,component) boundary trace shared with that rank in a single packed device buffer. The boundary array is laid out with the component index outermost, so the pack/unpack kernels treat the vector as 2*nvar scalar variables. Packed buffers are allocated on first use; the shared side tables are built by SideExchange before this is called.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
GPU-resident mortar message posting for vector data; messages are posted on device memory (GPU-aware MPI), one per variable and physical direction.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
One-directional messages for MortarFluxCollect on device memory : each remote small side sends its boundaryNormal trace to the big side's rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(c_ptr), | intent(out) | :: | df |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(c_ptr), | intent(out) | :: | df |
GPU implementation of the vector mortar exchange; the kernels treat the (variable, direction) pairs as 2*nvar independent trace lines.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
GPU implementation of MortarFluxCollect (see the base class for the algorithm and conservation statement). Stages the small sides' boundaryNormal traces in the mortar buffer, then overwrites the big side's integrand on device.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(SEMQuad), | intent(in) | :: | geometry | |||
| real(kind=prec), | intent(in) | :: | time |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |