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 |