Pack a subset of node indexes. More...
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. | |
Pack a subset of node indexes.
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).
| type(t_mpi_exchange_list) type_node_list::t_node_list::exchange |
Parallel communication information.
| integer, dimension(:), allocatable type_node_list::t_node_list::i |
First index of nodes.
| integer, dimension(:), allocatable type_node_list::t_node_list::j |
Second index of nodes.
| integer, dimension(:), allocatable type_node_list::t_node_list::k |
Third index of nodes.
| integer type_node_list::t_node_list::nb |
Number of nodes, overlapping regions included.
| integer type_node_list::t_node_list::nbc |
Number of nodes, overlapping regions excluded.