Public Attributes | |
integer | nb |
Number of nodes, overlapping regions included. | |
integer, dimension(:), allocatable | i |
First index of nodes. | |
integer, dimension(:), allocatable | j |
Second index of nodes. | |
integer, dimension(:), allocatable | k |
Third index of nodes. | |
integer | nbc |
Number of nodes, overlapping regions excluded. | |
type(t_mpi_exchange_list) | exchange |
Parallel communication information. | |
Node_list packs selected node indexes in 1D arrays. This allows to efficiently loop over the subset of nodes. The attribute node_list::nb represent the total number of nodes in the numerical domain.
Things get more complex when one wants to exchange data between procs. The numerical domain is divided in 9 parts (27 in 3D) as follows:
┌──┬──────┬──┐ │-+│ ·+ │++│ ├──┼──────┼──┤ │ │ │ │ │-·│ ·· │+·│ │ │ │ │ ├──┼──────┼──┤ │--│ ·- │+-│ └──┴──────┴──┘
The 1D array should be arranged in the following order:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬┈ ┈ ┈ ··· -·· +·· ·-· ·+· --· +-· -+· ++· ┈ ┈ ┈┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬┈ ┈ ┈ ··- -·- +·- ·-- ·+- --- +-- -+- ++- ┈ ┈ ┈┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ··+ -·+ +·+ ·-+ ·++ --+ +-+ -++ +++
Where each block is ordered using classical loop ordering. Indexes of the central block is then easily acceded by obji(1:objnbc).