p4est 2.8.6
p4est is a software library for parallel adaptive mesh refinement.
|
This structure holds complete parallel node information. More...
#include <p4est_nodes.h>
Data Fields | |
p4est_locidx_t | num_local_quadrants |
p4est_locidx_t | num_owned_indeps |
p4est_locidx_t | num_owned_shared |
p4est_locidx_t | offset_owned_indeps |
sc_array_t | indep_nodes |
sc_array_t | face_hangings |
p4est_locidx_t * | local_nodes |
sc_array_t | shared_indeps |
p4est_locidx_t * | shared_offsets |
int * | nonlocal_ranks |
p4est_locidx_t * | global_owned_indeps |
This structure holds complete parallel node information.
Nodes are unique and either independent or face hanging. Independent nodes store their owner's tree id in piggy3.which_tree. The index in their owner's ordering is stored in piggy3.local_num. Hanging nodes store their owner's tree id in piggy.which_tree. The numbers of their associated independent nodes are in piggy.depends[].
The local_nodes table is of dimension 4 * num_local_quadrants and encodes the node indexes for all corners of all quadrants. Let ni := indep_nodes.elem_count, fi := face_hangings.elem_count, If for l := local_nodes[k] l >= 0 && l < ni: l indexes into indep_nodes. l >= ni && l < ni + fi: l - ni indexes into face_hangings. No other values for l are permitted.
The array shared_indeps holds lists of node sharers (not including rank). The entry shared_indeps[i] is of type sc_recycle_array_t and holds the list of nodes with i + 1 sharers. For each independent node, its member pad8 holds the number of sharers and its member pad16 holds the position in the assigned recycle array if this number fits into an int16_t. If this limit is exceeded, the array shared_offsets is filled with these positions as one p4est_locidx_t per independent node, and all pad16 members are set to -1. To recognize the latter situation you can check for shared_offsets != NULL.
Each processor owns num_owned_indeps of the stored independent nodes. The first independent owned node is at index offset_owned_indeps. The table nonlocal_ranks contains the ranks of all stored non-owned nodes. The table global_owned_indeps holds the number of owned nodes for each rank.