Encapsulate halo data to be communicated across structured_grid block boundaries
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | null_neighbor_id | = | -1 |
result contains planar positions for surface fluxes
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | scalar_id |
result is block_id correspdonding to the destination structured_grid block for this package
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(in) | :: | this |
result contains planar positions for surface fluxes
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(in) | :: | this |
result is true if for external boundaries (no block sends halo data to a boundary)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(in) | :: | this |
set the block_id correspdonding to the destination structured_grid block for this package
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | neighbor_block_id |
set data to be communicated across structured_grid block internal surfaces
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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 |
establish the number of scalars
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | num_scalars | set size of surface_normal_fluxes array |
record the time step in order to verify the correct synchronization across images
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(package), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | step |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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) |
basic transmission data. extend this type to add coordinate-specific data
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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 | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=r8k), | public, | allocatable, dimension(:,:) | :: | fluxes | surface-normal scalar flux components: shape = [Ny, Nz] or [Nx, Nz] or [Nx, Ny] |