p4est  1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
p4est_nodes_t Struct Reference

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_tlocal_nodes
 
sc_array_t shared_indeps
 
p4est_locidx_tshared_offsets
 
int * nonlocal_ranks
 
p4est_locidx_tglobal_owned_indeps
 

Detailed Description

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.


The documentation for this struct was generated from the following file: