30 #ifndef P4EST_LNODES_H
31 #define P4EST_LNODES_H
181 sc_array_t shared_nodes;
203 P4EST_ASSERT (face_code >= 0);
207 int8_t c = face_code & 0x03;
209 int8_t work = face_code >> 2;
211 memset (hanging_face, -1, 4 *
sizeof (
int));
213 for (i = 0; i < 2; ++i) {
283 int partition_for_coarsening);
290 int nodes_per_volume,
292 int nodes_per_corner,
294 partition_for_coarsening);
312 sc_array_t *requests;
313 sc_array_t *send_buffers;
314 sc_array_t *recv_buffers;
387 p4est_lnodes_rank_array_index_int (sc_array_t * array,
int it)
390 P4EST_ASSERT (it >= 0 && (
size_t) it < array->elem_count);
400 p4est_lnodes_rank_array_index (sc_array_t * array,
size_t it)
403 P4EST_ASSERT (it < array->elem_count);
415 P4EST_ASSERT (lidx >= 0 && lidx < lnodes->num_local_nodes);
int32_t p4est_locidx_t
Typedef for processor-local indexing of quadrants and nodes.
Definition: p4est_base.h:106
int64_t p4est_gloidx_t
Typedef for globally unique indexing of quadrants.
Definition: p4est_base.h:118
const int p4est_corner_faces[4][2]
Store the face numbers 0..3 for each tree corner.
const int p4est_corner_face_corners[4][4]
Store the face corner numbers for the faces touching a tree corner.
Passing quadrants and data to neighboring processes.
p4est_lnodes_buffer_t * p4est_lnodes_share_all_begin(sc_array_t *node_data, p4est_lnodes_t *lnodes)
p4est_lnodes_share_all_begin
void p4est_partition_lnodes_detailed(p4est_t *p4est, p4est_ghost_t *ghost, int nodes_per_volume, int nodes_per_face, int nodes_per_corner, int partition_for_coarsening)
Partition using weights that are broken down by where they reside: in volumes, on faces,...
p4est_lnodes_buffer_t * p4est_lnodes_share_all(sc_array_t *node_data, p4est_lnodes_t *lnodes)
Equivalent to calling p4est_lnodes_share_all_end directly after p4est_lnodes_share_all_begin.
struct p4est_lnodes_rank p4est_lnodes_rank_t
The structure stored in the sharers array.
void p4est_ghost_expand_by_lnodes(p4est_t *p4est, p4est_lnodes_t *lnodes, p4est_ghost_t *ghost)
Expand the ghost layer as in p4est_ghost_expand(), but use node support to define adjacency instead o...
struct p4est_lnodes p4est_lnodes_t
Store a parallel numbering of Lobatto points of a given degree > 0.
p4est_lnodes_buffer_t * p4est_lnodes_share_owned_begin(sc_array_t *node_data, p4est_lnodes_t *lnodes)
p4est_lnodes_share_owned_begin
void p4est_lnodes_share_owned(sc_array_t *node_data, p4est_lnodes_t *lnodes)
Equivalent to calling p4est_lnodes_share_owned_end directly after p4est_lnodes_share_owned_begin.
void p4est_partition_lnodes(p4est_t *p4est, p4est_ghost_t *ghost, int degree, int partition_for_coarsening)
Partition using weights based on the number of nodes assigned to each element in lnodes.
void p4est_ghost_support_lnodes(p4est_t *p4est, p4est_lnodes_t *lnodes, p4est_ghost_t *ghost)
Expand the ghost layer to include the support of all nodes supported on the local partition.
struct p4est_lnodes_buffer p4est_lnodes_buffer_t
p4est_lnodes_buffer_t handles the communication of data associated with nodes.
void p4est_lnodes_destroy(p4est_lnodes_t *lnodes)
Free all memory in a previously constructed lnodes structure.
const int p4est_lnodes_corner_hanging[4]
For each corner, the normal direction of the hanging face.
int8_t p4est_lnodes_code_t
The face code encodes the configuration of a hanging quadrant.
Definition: p4est_lnodes.h:44
p4est_lnodes_t * p4est_lnodes_new(p4est_t *p4est, p4est_ghost_t *ghost_layer, int degree)
Create a tensor-product Lobatto node structure for a given degree.
Quadrants that neighbor the local domain.
Definition: p4est_ghost.h:46
p4est_lnodes_buffer_t handles the communication of data associated with nodes.
Definition: p4est_lnodes.h:311
The structure stored in the sharers array.
Definition: p4est_lnodes.h:179
Store a parallel numbering of Lobatto points of a given degree > 0.
Definition: p4est_lnodes.h:145
p4est_gloidx_t * nonlocal_nodes
For nonlocal nodes: global number.
Definition: p4est_lnodes.h:150
p4est_lnodes_code_t * face_code
One entry per local element encoding its hanging situation.
Definition: p4est_lnodes.h:161
p4est_locidx_t * global_owned_count
For each rank: owned count.
Definition: p4est_lnodes.h:154
int degree
Degree used in construction.
Definition: p4est_lnodes.h:156
p4est_gloidx_t global_offset
Global number of first local node.
Definition: p4est_lnodes.h:149
p4est_locidx_t owned_count
Number of owned nodes of process.
Definition: p4est_lnodes.h:148
sc_MPI_Comm mpicomm
Valid MPI communicator.
Definition: p4est_lnodes.h:146
p4est_locidx_t num_local_nodes
Number of nodes known to process.
Definition: p4est_lnodes.h:147
p4est_locidx_t * element_nodes
Flat list: element_nodes * vnodes.
Definition: p4est_lnodes.h:163
sc_array_t * sharers
Encoding of sharer processes' nodes.
Definition: p4est_lnodes.h:151
int vnodes
Number of nodes of each element.
Definition: p4est_lnodes.h:159
p4est_locidx_t num_local_elements
Elements local to process.
Definition: p4est_lnodes.h:160
The p4est forest datatype.
Definition: p4est.h:150