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] |