Encapsulate block boundary data for structured_grid halo exchanges
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=*), | public, | parameter, dimension(*) | :: | coordinate_name | = | ["x", "y", "z"] | |
character(len=*), | public, | parameter, dimension(*) | :: | face_name | = | ["backward", "forward "] |
enumerator | :: | backward | = | 1 | surface outward-normal direction: 'forward'/'backward' -> direction of increasing/decreasing coordinate values |
enumerator | :: | forward | = | 2 | surface outward-normal direction: 'forward'/'backward' -> direction of increasing/decreasing coordinate values |
enumerator | :: | x_dir | = | 1 | |
enumerator | :: | y_dir | = | 2 | |
enumerator | :: | z_dir | = | 3 |
array indices
result contains the block identifiers that start the subrange of blocks owned by each image such that [block_partitions(me), block_partitions(me+1)-1] = spans the block identifiers owned by image me
output singleton_halo_outbox of shape [number of blocks, space_dimension, size([backward,forward])]
result is the block_id of the neighbor adjacent to the image that owns the given structured_grid block
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | my_block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer, | intent(in) | :: | face_direction |
result contains the the surface-normal component of the designated scalar flus at the designated grid block surface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | image | |||
integer, | intent(in) | :: | block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer, | intent(in) | :: | face_direction | |||
integer, | intent(in) | :: | scalar_id |
surface-normal scalar flux components: shape = [Ny, Nz] or [Nx, Nz] or [Nx, Ny] depending on orientation
result is the distance to the nearest plane inside the specified block at the specified boundary
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | image | |||
integer, | intent(in) | :: | block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer(kind=enumeration), | intent(in) | :: | face_direction |
result contains the vertices inside the designated grid block surface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | image | |||
integer, | intent(in) | :: | block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer, | intent(in) | :: | face_direction |
surface vertices: shape=[Nx,Ny,Nz,space_dim] where findloc(shape(positions, value=1)) designates surface-normal direction
result is .true. if the identified structured_grid block surface corresponds to a problem domain boundary
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer(kind=enumeration), | intent(in) | :: | face |
define halo_outbox component array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(package), | intent(in), | dimension(:,:,:) | :: | my_halo_outbox | ||
integer, | intent(in), | dimension(:) | :: | block_partitions |
define halo outbox for a specific surface
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | block_id | |||
integer, | intent(in) | :: | coordinate_direction | |||
integer(kind=enumeration), | intent(in) | :: | face | |||
real(kind=r8k), | intent(in), | dimension(:,:) | :: | s_flux_normal | surface-normal scalar flux components: shape = [Ny, Nz] or [Nx, Nz] or [Nx, Ny] |
|
integer, | intent(in) | :: | scalar_id |
hexahedral structured_grid block surface data
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(package), | private, | allocatable, dimension(:,:,:) | :: | halo_outbox | allocate to dimensions [number of blocks, space_dimension, size([forward, backward])) |
procedure, public, nopass :: get_block_image | |
procedure, public, nopass :: get_global_block_partitions | |
procedure, public, nopass :: get_halo_outbox | |
procedure, public, nopass :: get_neighbor_block_id | |
procedure, public, nopass :: get_normal_scalar_fluxes | |
procedure, public, nopass :: get_surface_normal_spacing | |
procedure, public, nopass :: get_surface_positions | |
procedure, public, nopass :: is_external_boundary | |
procedure, public, nopass :: set_halo_outbox | |
procedure, public, nopass :: set_normal_scalar_fluxes | |
procedure, public, nopass :: set_num_scalars |