| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | f | |||
| type(c_ptr), | value | :: | dsdx | |||
| type(c_ptr), | value | :: | jaf | |||
| integer(kind=c_int), | value | :: | N | |||
| integer(kind=c_int), | value | :: | nvar | |||
| integer(kind=c_int), | value | :: | nel |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | fb | |||
| type(c_ptr), | value | :: | nhat | |||
| type(c_ptr), | value | :: | nscale | |||
| type(c_ptr), | value | :: | fbn | |||
| 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 | ||||
| integer(kind=c_size_t), | public | :: | alloc_jas | = | 0 | ||
| 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 | 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 | |||
| type(SEMQuad), | public, | pointer | :: | geometry | => | null() | |
| logical, | public | :: | geometry_associated | = | .false. | ||
| integer, | public | :: | halo_inflight | = | 0 | ||
| integer, | public | :: | halo_nactive | = | 0 | ||
| type(c_ptr), | public | :: | halo_recvbuf_gpu | = | c_null_ptr | ||
| integer, | public, | allocatable | :: | halo_reqs(:) | Bytes currently allocated for jas_gpu, so Resize can reuse it (Stage 6b). The capacity counters for the five arrays inherited from Scalar2D are declared there. |
||
| type(c_ptr), | public | :: | halo_sendbuf_gpu | = | c_null_ptr | ||
| logical, | public | :: | halo_static_done | = | .false. | ||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:) | :: | interior | |||
| type(Lagrange), | public, | pointer | :: | interp | |||
| type(c_ptr), | public | :: | jas_gpu | ||||
| 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 | ||||
| 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() |
| procedure, public :: AssociateGeometry => AssociateGeometry_MappedScalar2D_t | |
| procedure, public :: AverageSides => AverageSides_Scalar2D_t | |
| procedure, public :: BoundaryInterp => BoundaryInterp_Scalar2D_t | |
| procedure, public :: DissociateGeometry => DissociateGeometry_MappedScalar2D_t | |
| procedure, public :: Free => Free_MappedScalar2D | |
| generic, public :: Gradient => Gradient_Scalar2D_t | |
| generic, public :: GridInterp => GridInterp_Scalar2D_t | |
| procedure, public :: Init => Init_MappedScalar2D | |
| procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedScalar2D | |
| procedure, public :: MapArrays => MapArrays_Scalar2D_t | |
| generic, public :: MappedDGGradient => MappedDGGradient_MappedScalar2D_t, MappedDGGradient_MappedScalar2D | |
| procedure, private :: MappedDGGradient_MappedScalar2D | |
| generic, public :: MappedGradient => MappedGradient_MappedScalar2D_t, MappedGradient_MappedScalar2D | |
| procedure, private :: MappedGradient_MappedScalar2D | |
| procedure, public :: MortarExchange => MortarExchange_MappedScalar2D | |
| procedure, public :: Resize => Resize_MappedScalar2D | |
| procedure, public :: SetDescription => SetDescription_DataObj | |
| generic, public :: SetEquation => SetEquation_DataObj | |
| procedure, public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedScalar2D | |
| procedure, public :: SetName => SetName_DataObj | |
| procedure, public :: SetUnits => SetUnits_DataObj | |
| procedure, public :: SideExchange => SideExchange_MappedScalar2D | |
| procedure, public :: SideExchangeFinish => SideExchangeFinish_MappedScalar2D | |
| procedure, public :: SideExchangeStart => SideExchangeStart_MappedScalar2D | |
| procedure, public :: UpdateDevice => UpdateDevice_Scalar2D_t | |
| procedure, public :: UpdateHost => UpdateHost_Scalar2D_t | |
| generic, public :: WriteHDF5 => WriteHDF5_MPI_Scalar2D_t, WriteHDF5_Scalar2D_t |
Grow the device buffers to hold the current logical arrays, reusing existing allocations when the bytes already fit (AMR Stage 6b).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(out) | :: | this | |||
| type(Lagrange), | intent(in), | target | :: | interp | ||
| integer, | intent(in) | :: | nVar | |||
| integer, | intent(in) | :: | nElem |
GPU-resident analogue of the base-class mortar message posting; messages are posted on device memory (GPU-aware MPI), following MPIExchangeAsync.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(c_ptr), | intent(inout) | :: | df |
Calculates the gradient of a function using the strong form of the gradient in mapped coordinates.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(c_ptr), | intent(out) | :: | df |
GPU implementation of the mortar exchange (see the base class for the algorithm) : traces are staged, reoriented, restricted, and projected in device memory with the SELF_Mortar kernels.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
Rebind to a new element count, reusing host pools and device buffers where they fit (AMR Stage 6b), and without uploading zeros the way Init does.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Lagrange), | intent(in), | target | :: | interp | ||
| integer, | intent(in) | :: | nVar | |||
| integer, | intent(in) | :: | nElem |
Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(SEMQuad), | intent(in) | :: | geometry | |||
| real(kind=prec), | intent(in) | :: | time |
Complete the aggregated halo exchange started by SideExchangeStart: wait on the persistent requests and unpack the received traces into extBoundary, applying side flips. The host blocks in MPI_Waitall (which also drives MPI progress) while previously launched device kernels continue to execute. No-op if no exchange is in flight.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |
Begin the aggregated halo exchange and launch the local (same-rank) side exchange kernel.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh | |||
| integer, | intent(in), | optional | :: | nactive |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedScalar2D), | intent(inout) | :: | this | |||
| type(Mesh2D), | intent(inout) | :: | mesh |