SELF_Scalar_2D Module


Uses

  • module~~self_scalar_2d~~UsesGraph module~self_scalar_2d SELF_Scalar_2D module~self_gpuinterfaces SELF_GPUInterfaces module~self_scalar_2d->module~self_gpuinterfaces module~self_scalar_2d_t SELF_Scalar_2D_t module~self_scalar_2d->module~self_scalar_2d_t module~self_constants SELF_Constants module~self_scalar_2d->module~self_constants iso_c_binding iso_c_binding module~self_scalar_2d->iso_c_binding module~self_gpu SELF_GPU module~self_scalar_2d->module~self_gpu module~self_gpuinterfaces->iso_c_binding module~self_gpuinterfaces->module~self_gpu module~self_scalar_2d_t->module~self_constants module~self_scalar_2d_t->iso_c_binding module~self_metadata SELF_Metadata module~self_scalar_2d_t->module~self_metadata module~self_lagrange~3 SELF_Lagrange module~self_scalar_2d_t->module~self_lagrange~3 HDF5 HDF5 module~self_scalar_2d_t->HDF5 module~self_hdf5 SELF_HDF5 module~self_scalar_2d_t->module~self_hdf5 module~self_data SELF_Data module~self_scalar_2d_t->module~self_data FEQParse FEQParse module~self_scalar_2d_t->FEQParse module~self_datapool SELF_DataPool module~self_scalar_2d_t->module~self_datapool module~self_constants->iso_c_binding iso_fortran_env iso_fortran_env module~self_constants->iso_fortran_env module~self_gpu->iso_c_binding module~self_gpu_enums~2 SELF_GPU_enums module~self_gpu->module~self_gpu_enums~2 module~self_metadata->HDF5 module~self_metadata->module~self_hdf5 module~self_lagrange~3->module~self_constants module~self_lagrange~3->iso_c_binding module~self_lagrange~3->module~self_gpu 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_data->module~self_constants module~self_data->iso_c_binding module~self_data->module~self_metadata module~self_data->module~self_lagrange~3 module~self_data->HDF5 module~self_data->module~self_hdf5 module~self_data->FEQParse module~self_datapool->module~self_constants module~self_gpu_enums~2->iso_c_binding 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_scalar_2d~~UsedByGraph module~self_scalar_2d SELF_Scalar_2D module~self_mappedscalar_2d_t SELF_MappedScalar_2D_t module~self_mappedscalar_2d_t->module~self_scalar_2d module~self_geometry_2d SELF_Geometry_2D module~self_mappedscalar_2d_t->module~self_geometry_2d module~self_geometry_2d->module~self_scalar_2d module~self_refinementindicator_2d_t SELF_RefinementIndicator_2D_t module~self_refinementindicator_2d_t->module~self_scalar_2d module~self_mappedscalar_2d~2 SELF_MappedScalar_2D module~self_mappedscalar_2d~2->module~self_scalar_2d module~self_mappedscalar_2d~2->module~self_mappedscalar_2d_t module~self_columnoperators_3d_t SELF_ColumnOperators_3D_t module~self_columnoperators_3d_t->module~self_scalar_2d module~self_refinementindicator_2d SELF_RefinementIndicator_2D module~self_refinementindicator_2d->module~self_scalar_2d module~self_refinementindicator_2d->module~self_refinementindicator_2d_t module~self_columnoperators_3d SELF_ColumnOperators_3D module~self_columnoperators_3d->module~self_scalar_2d module~self_columnoperators_3d->module~self_columnoperators_3d_t module~self_lineareuler2d_pml_t self_LinearEuler2D_PML_t module~self_lineareuler2d_pml_t->module~self_mappedscalar_2d~2 module~self_dgmodel2d~2 SELF_DGModel2D module~self_lineareuler2d_pml_t->module~self_dgmodel2d~2 module~self_lineareuler2d_t self_LinearEuler2D_t module~self_lineareuler2d_pml_t->module~self_lineareuler2d_t module~self_columnoperators_3d~2 SELF_ColumnOperators_3D module~self_columnoperators_3d~2->module~self_columnoperators_3d_t module~self_mappedscalar_2d SELF_MappedScalar_2D module~self_mappedscalar_2d->module~self_mappedscalar_2d_t module~self_dgmodel2d~2->module~self_geometry_2d module~self_dgmodel2d_t SELF_DGModel2D_t module~self_dgmodel2d~2->module~self_dgmodel2d_t module~self_mappedvector_2d_t SELF_MappedVector_2D_t module~self_mappedvector_2d_t->module~self_geometry_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_mappedscalar_2d~2 module~self_points_t SELF_Points_t module~self_points->module~self_points_t module~self_dgmodel2d_t->module~self_geometry_2d module~self_dgmodel2d_t->module~self_mappedscalar_2d~2 module~self_mappedvector_2d SELF_MappedVector_2D module~self_dgmodel2d_t->module~self_mappedvector_2d module~self_points_t->module~self_geometry_2d module~self_points_t->module~self_mappedscalar_2d~2 module~self_amrcontroller_2d SELF_AMRController_2D module~self_amrcontroller_2d->module~self_geometry_2d module~self_amrcontroller_2d->module~self_refinementindicator_2d module~self_amrcontroller_2d->module~self_dgmodel2d_t module~self_amrcontroller_extruded SELF_AMRController_Extruded module~self_amrcontroller_extruded->module~self_geometry_2d module~self_amrcontroller_extruded->module~self_dgmodel2d_t module~self_amrcontroller_extruded->module~self_amrcontroller_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_t SELF_ESAtmo2D_t module~self_esatmo2d->module~self_esatmo2d_t module~self_esatmo2d->module~self_ecdgmodel2d_t module~self_refinementindicator_2d~2 SELF_RefinementIndicator_2D module~self_refinementindicator_2d~2->module~self_refinementindicator_2d_t module~self_esatmo2d_t->module~self_mappedscalar_2d~2 module~self_ecdgmodel2d SELF_ECDGModel2D module~self_esatmo2d_t->module~self_ecdgmodel2d module~self_dgmodel2d SELF_DGModel2D module~self_dgmodel2d->module~self_dgmodel2d_t module~self_mappedtwopointvector_2d SELF_MappedTwoPointVector_2D module~self_mappedtwopointvector_2d->module~self_mappedtwopointvector_2d_t module~self_esatmo2d~2 SELF_ESAtmo2D module~self_esatmo2d~2->module~self_esatmo2d_t module~self_lineareuler2d_pml self_LinearEuler2D_PML module~self_lineareuler2d_pml->module~self_lineareuler2d_pml_t module~self_lineareuler2d_t->module~self_dgmodel2d~2 module~self_lineareuler2d_pml~2 self_LinearEuler2D_PML module~self_lineareuler2d_pml~2->module~self_lineareuler2d_pml_t module~self_nulldgmodel2d_t self_NullDGModel2D_t module~self_nulldgmodel2d_t->module~self_dgmodel2d~2 module~self_ecdgmodel2d_t->module~self_dgmodel2d~2 module~self_mappedtwopointvector_2d~2 SELF_MappedTwoPointVector_2D 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_advection_diffusion_2d_t self_advection_diffusion_2d_t module~self_advection_diffusion_2d_t->module~self_dgmodel2d~2 module~self_mappedvector_2d->module~self_mappedvector_2d_t module~self_mappedvector_2d~2 SELF_MappedVector_2D module~self_mappedvector_2d~2->module~self_mappedvector_2d_t module~self_mappedtwopointvector_2d~2->module~self_mappedtwopointvector_2d_t module~self_points~2 SELF_Points module~self_points~2->module~self_points_t module~self_lineareuler2d self_LinearEuler2D module~self_lineareuler2d->module~self_lineareuler2d_t module~self_ecdgmodel2d->module~self_ecdgmodel2d_t module~self_nulldgmodel2d~2 self_NullDGModel2D module~self_nulldgmodel2d~2->module~self_nulldgmodel2d_t module~self_nulldgmodel2d self_NullDGModel2D module~self_nulldgmodel2d->module~self_nulldgmodel2d_t module~self_lineareuler2d~2 self_LinearEuler2D module~self_lineareuler2d~2->module~self_lineareuler2d_t module~self_ecdgmodel2d~2 SELF_ECDGModel2D module~self_ecdgmodel2d~2->module~self_ecdgmodel2d_t module~self_linearshallowwater2d self_LinearShallowWater2D module~self_linearshallowwater2d->module~self_linearshallowwater2d_t module~self_linearshallowwater2d~2 self_LinearShallowWater2D module~self_linearshallowwater2d~2->module~self_linearshallowwater2d_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_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(Scalar2D_t) :: Scalar2D

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, 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()

Type-Bound Procedures

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

Subroutines

public subroutine AverageSides_Scalar2D(this)

Arguments

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

public subroutine BoundaryInterp_Scalar2D(this)

Arguments

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

public subroutine EnsureDeviceBuffers_Scalar2D(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.

Arguments

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

public subroutine Free_Scalar2D(this)

Arguments

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

public subroutine Gradient_Scalar2D(this, df)

Arguments

TypeIntentOptionalAttributesName
class(Scalar2D), intent(in) :: this
type(c_ptr), intent(inout) :: df

public subroutine GridInterp_Scalar2D(this, f)

Arguments

TypeIntentOptionalAttributesName
class(Scalar2D), intent(inout) :: this
type(c_ptr), intent(inout) :: f

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

Arguments

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

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

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.

Arguments

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

public subroutine UpdateDevice_Scalar2D(this)

Arguments

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

public subroutine UpdateHost_Scalar2D(this)

Arguments

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