| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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, | pointer, contiguous, dimension(:,:,:,:) | :: | avgBoundary | |||
| type(c_ptr), | public | :: | avgBoundary_gpu | Bytes currently allocated for each device buffer, so Resize can reuse them (Stage 6b). |
|||
| character(len=3), | public | :: | backend | = | "gpu" | ||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:) | :: | boundary | |||
| type(c_ptr), | public | :: | boundary_gpu | ||||
| 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(c_ptr), | public | :: | boundarynormal_gpu | ||||
| type(EquationParser), | public, | allocatable | :: | eqn(:) | |||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:) | :: | extBoundary | |||
| type(c_ptr), | public | :: | extBoundary_gpu | ||||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:) | :: | interior | |||
| type(c_ptr), | public | :: | interior_gpu | ||||
| 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() |
| procedure, public :: AverageSides => AverageSides_Scalar2D | |
| procedure, public :: BoundaryInterp => BoundaryInterp_Scalar2D | |
| procedure, public :: Free => Free_Scalar2D | |
| generic, public :: Gradient => Gradient_Scalar2D_t, Gradient_Scalar2D | |
| procedure, private :: Gradient_Scalar2D | |
| generic, public :: GridInterp => GridInterp_Scalar2D_t, GridInterp_Scalar2D | |
| procedure, private :: GridInterp_Scalar2D | |
| procedure, public :: Init => Init_Scalar2D | |
| procedure, public :: MapArrays => MapArrays_Scalar2D_t | |
| procedure, public :: Resize => Resize_Scalar2D | |
| procedure, public :: SetDescription => SetDescription_DataObj | |
| generic, public :: SetEquation => SetEquation_DataObj | |
| procedure, public :: SetName => SetName_DataObj | |
| procedure, public :: SetUnits => SetUnits_DataObj | |
| procedure, public :: UpdateDevice => UpdateDevice_Scalar2D | |
| procedure, public :: UpdateHost => UpdateHost_Scalar2D | |
| generic, public :: WriteHDF5 => WriteHDF5_MPI_Scalar2D_t, WriteHDF5_Scalar2D_t |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |
Grow each device buffer to hold the current logical array, reusing the existing allocation when the bytes already fit (AMR Stage 6b). A device pointer carries no shape, so unlike the host side no remapping is needed - only a byte-capacity check.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(in) | :: | this | |||
| type(c_ptr), | intent(inout) | :: | df |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this | |||
| type(c_ptr), | intent(inout) | :: | f |
Rebind to a new element count, reusing host pools and device buffers where they fit. Deliberately does NOT call UpdateDevice: Init uploads freshly zeroed arrays, which in the adaptive loop is pure waste because the solution transfer overwrites them immediately.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this | |||
| type(Lagrange), | intent(in), | target | :: | interp | ||
| integer, | intent(in) | :: | nVar | |||
| integer, | intent(in) | :: | nElem |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Scalar2D), | intent(inout) | :: | this |