package_interface Module

Encapsulate halo data to be communicated across structured_grid block boundaries


Uses

  • module~~package_interface~~UsesGraph module~package_interface package_interface module~kind_parameters kind_parameters module~package_interface->module~kind_parameters iso_fortran_env iso_fortran_env module~kind_parameters->iso_fortran_env

Used by

  • module~~package_interface~~UsedByGraph module~package_interface package_interface module~spherical_grid_implementation spherical_grid_implementation module~spherical_grid_implementation->module~package_interface module~surfaces_interface surfaces_interface module~spherical_grid_implementation->module~surfaces_interface module~spherical_grid_interface spherical_grid_interface module~spherical_grid_implementation->module~spherical_grid_interface module~surfaces_interface->module~package_interface module~problem_discretization_interface problem_discretization_interface module~problem_discretization_interface->module~package_interface module~problem_discretization_interface->module~surfaces_interface module~structured_grid_interface structured_grid_interface module~problem_discretization_interface->module~structured_grid_interface module~cartesian_grid_implementation cartesian_grid_implementation module~cartesian_grid_implementation->module~package_interface module~cartesian_grid_implementation->module~surfaces_interface module~cartesian_grid_interface cartesian_grid_interface module~cartesian_grid_implementation->module~cartesian_grid_interface module~cylindrical_grid_implementation cylindrical_grid_implementation module~cylindrical_grid_implementation->module~package_interface module~cylindrical_grid_implementation->module~surfaces_interface module~cylindrical_grid_interface cylindrical_grid_interface module~cylindrical_grid_implementation->module~cylindrical_grid_interface module~package_implementation package_implementation module~package_implementation->module~package_interface module~define_problem_discretization define_problem_discretization module~define_problem_discretization->module~problem_discretization_interface module~cartesian_grid_interface->module~surfaces_interface module~cartesian_grid_interface->module~structured_grid_interface module~cylindrical_grid_interface->module~surfaces_interface module~cylindrical_grid_interface->module~structured_grid_interface module~surfaces_implementation surfaces_implementation module~surfaces_implementation->module~surfaces_interface module~spherical_grid_interface->module~surfaces_interface module~spherical_grid_interface->module~structured_grid_interface module~structured_grid_interface->module~surfaces_interface proc~initialize_from_plate_3d initialize_from_plate_3d proc~initialize_from_plate_3d->module~cartesian_grid_interface proc~initialize_from_sphere_1d initialize_from_sphere_1d proc~initialize_from_sphere_1d->module~spherical_grid_interface proc~evaluate evaluate proc~evaluate->module~cartesian_grid_interface proc~initialize_from_cylinder_2d initialize_from_cylinder_2d proc~initialize_from_cylinder_2d->module~cylindrical_grid_interface module~curvilinear_grid_interface curvilinear_grid_interface module~curvilinear_grid_interface->module~structured_grid_interface proc~laplacian laplacian proc~laplacian->module~cartesian_grid_interface module~structured_grid_implementation structured_grid_implementation module~structured_grid_implementation->module~structured_grid_interface

Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: null_neighbor_id =-1

Interfaces

interface

  • private pure module subroutine copy(this, rhs)

    copy rhs package components into this package

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    type(package), intent(in) :: rhs

interface

  • private pure module function get_fluxes(this, scalar_id) result(this_fluxes)

    result contains planar positions for surface fluxes

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(in) :: this
    integer, intent(in) :: scalar_id

    Return Value real(kind=r8k), allocatable, dimension(:,:)

interface

  • private pure module function get_neighbor_block_id(this) result(this_neighbor_block_id)

    result is block_id correspdonding to the destination structured_grid block for this package

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(in) :: this

    Return Value integer

interface

  • private pure module function get_positions(this) result(this_positions)

    result contains planar positions for surface fluxes

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(in) :: this

    Return Value real(kind=r8k), allocatable, dimension(:,:,:,:)

interface

  • private elemental module function neighbor_block_id_null(this) result(is_null)

    result is true if for external boundaries (no block sends halo data to a boundary)

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(in) :: this

    Return Value logical

interface

  • private elemental module subroutine set_neighbor_block_id(this, neighbor_block_id)

    set the block_id correspdonding to the destination structured_grid block for this package

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    integer, intent(in) :: neighbor_block_id

interface

  • private pure module subroutine set_normal_scalar_fluxes(this, fluxes, scalar_id)

    set data to be communicated across structured_grid block internal surfaces

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    real(kind=r8k), intent(in), dimension(:,:):: fluxes

    surface-normal scalar flux components: shape = [Ny, Nz] or [Nx, Nz] or [Nx, Ny]

    integer, intent(in) :: scalar_id

interface

  • private elemental module subroutine set_num_scalars(this, num_scalars)

    establish the number of scalars

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    integer, intent(in) :: num_scalars

    set size of surface_normal_fluxes array

interface

  • private elemental module subroutine set_step(this, step)

    record the time step in order to verify the correct synchronization across images

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    integer, intent(in) :: step

interface

  • private pure module subroutine set_surface_positions(this, positions)

    Arguments

    Type IntentOptional AttributesName
    class(package), intent(inout) :: this
    real(kind=r8k), intent(in), dimension(:,:,:,:):: positions

    surface vertices: shape=[Nx,Ny,Nz,space_dim] where dimension(s) of unit extent designate fixed coordinate(s)


Derived Types

type, public :: package

basic transmission data. extend this type to add coordinate-specific data

Components

TypeVisibility AttributesNameInitial
procedure, public :: copy
procedure, public :: get_fluxes
procedure, public :: get_neighbor_block_id
procedure, public :: get_positions
procedure, public :: neighbor_block_id_null
procedure, public :: set_neighbor_block_id
procedure, public :: set_normal_scalar_fluxes
procedure, public :: set_num_scalars
procedure, public :: set_step
procedure, public :: set_surface_positions
integer, private :: neighbor_block_id

block id corresponding to the destination block for this outbound package

real(kind=r8k), private, allocatable, dimension(:,:,:,:):: positions

surface vertices: shape=[Nx,Ny,Nz,space_dim] where dimension(s) of unit extent designate fixed coordinate(s)

integer, private :: step

time step

type(flux_planes), private, allocatable, dimension(:):: surface_normal_fluxes

size = number of scalars; using a derived type allows for setting the number of scalars without knowing surface grid resolution and orientation (both of which are determined by shape(positions)).

type, private :: flux_planes

Components

TypeVisibility AttributesNameInitial
real(kind=r8k), public, allocatable, dimension(:,:):: fluxes

surface-normal scalar flux components: shape = [Ny, Nz] or [Nx, Nz] or [Nx, Ny]