Feature #12101
Updating Corner halo grid boxes
Status:
New
Priority:
Low
Assignee:
-
Category:
-
Target version:
-
Start date:
10/10/2018
Due date:
% Done:
0%
Description
This is a feature desirable for output_station
.
Here's a grid seen by one processor, assuming a halo of 1:
| C | x | x | x | C | |---+---+---+---+---| | x | . | . | . | x | |---+---+---+---+---| | x | . | . | . | x | |---+---+---+---+---| | x | . | . | . | x | |---+---+---+---+---| | C | x | x | x | C |
The domain attached to the processor is indicated by the dotted area. When needed, information from the neighboring processors (indicated with X) is fetched, filling the halo. This is typically done in the code with calls to
update_halo
functions, and is useful for transport and some interpolations. However, if your interpolation scheme requires one of the corner neighbors (indicated by C), it will not work, because there is no routine to retrieve their value.
What's need to be done is known. In the base/domain_decomp.F90
:
- add a
integer :: corners(4)
attribute to the Dist_Grid type - fill it with the correct processors numbers if any (similar to what is done to
DistGrid%neighbors
) - write
Update_corners
communication routines similar toUpdate_halo
.
The last step is the tricky one, and will require a get_corner_type
(similar to what is done with get_halo_type
) to define the adequate derived MPI type.