#include <Pane_connectivity.h>
Public Member Functions | |
Pane_connectivity (const COM::Attribute *mesh, MPI_Comm c=MPI_COMM_WORLD) | |
Constructors. More... | |
Pane_connectivity (const Simple_manifold_2 **mani2, MPI_Comm c=MPI_COMM_WORLD) | |
Construct from an array of Simple_manifold_2. More... | |
void | compute_pconn (COM::Attribute *pconn_n, COM::Attribute *pconn_f=NULL) throw (int) |
Create b2v mapping for nodes and facets (edges or faces) correspondence. More... | |
Static Public Member Functions | |
static void | size_of_cpanes (const COM::Attribute *pconn, const int *pane_id, int *npanes_total, int *npanes_ghost=NULL) |
Get the number of communicating panes. More... | |
static int | pconn_nblocks (const COM::Attribute *pconn) |
Determine the number of pconn blocks for all panes. More... | |
static int | pconn_offset () |
Retrieve an offset to avoid the number of communicating panes when reading a pconn attribute. More... | |
Protected Member Functions | |
void | create_b2map (COM::Attribute *pconn, bool for_facet) throw (int) |
Create b2v mapping (pane connectivity) for nodes or edges and store the solution into the given Roccom Attribute. More... | |
void | create_b2map (std::vector< std::vector< int > > &b2, bool for_facet) throw (int) |
Create b2v mapping (pane connectivity) for nodes or edges and store the results into a vector of vectors (with the same format as above). More... | |
double | get_local_boundary_nodes (std::vector< int > &nodes, std::vector< Point_3 > &pnts, bool for_facet) throw (int) |
Obtains the IDs and coordinates of boundary nodes of all local panes. More... | |
double | collect_boundary_nodes (std::vector< int > &nodes, std::vector< Point_3 > &pnts, bool for_facet) throw (int) |
Collect the boundary nodes of all panes that are coincident with the boundary nodes of local panes. More... | |
void | determine_coisolated_nodes (const COM::Pane &pn, std::vector< Point_3 > &pnts, const double tol, std::vector< bool > &is_co, KD_tree_3 *tree=NULL) throw (int) |
Private Types | |
typedef std::vector< const COM::Pane * > | Pane_set |
typedef MAP::Point_3< double > | Point_3 |
Private Member Functions | |
void | collect_nodes (const std::vector< std::vector< int > > &ns, std::vector< int > &nodes, std::vector< Point_3 > &pnts, bool for_facet) |
void | collect_points (const std::vector< std::vector< int > > &ns, std::vector< Point_3 > &pnts) |
Private Attributes | |
const COM::Window *const | _win |
const Pane_set | _panes |
const Simple_manifold_2 ** | _mani2 |
MPI_Comm | _comm |
Static Private Attributes | |
static const int | _pconn_offset =1 |
Definition at line 46 of file Pane_connectivity.h.
|
private |
Definition at line 47 of file Pane_connectivity.h.
|
private |
Definition at line 48 of file Pane_connectivity.h.
|
explicit |
|
explicit |
|
protected |
Collect the boundary nodes of all panes that are coincident with the boundary nodes of local panes.
Also returns an estimated tolerance for window query.
The output nodes is in the following format: <+/-pane_id> <n=#of nodes> <local_id 1> ... <local_id n>=""> <+/-pane_id 2> .... !repeat the above Note that for remote panes, the negative of pane ids are given. The local nodes are always listed first. For points, they are stored as minx miny minz maxx maxy maxz x1 y1 z1 x2 y2 z2 ... xn yn zn ! then repeats for other panes in consecutive order for all the boundary nodes. It returns an estimated tolerance for window query.
Definition at line 433 of file Pane_connectivity.C.
References collect_coincident_nodes(), i, and make_kd_tree().
|
private |
Definition at line 96 of file Pane_connectivity.C.
References _panes, COM_NC, d, Facet_ID::eid(), i, iend, j, k, Facet_ID::lid(), max(), min(), and s.
|
private |
Definition at line 153 of file Pane_connectivity.C.
References _panes, COM_NC, d, i, iend, j, k, and s.
void compute_pconn | ( | COM::Attribute * | pconn_n, |
COM::Attribute * | pconn_f = NULL |
||
) | |||
throw | ( | int | |
) |
Create b2v mapping for nodes and facets (edges or faces) correspondence.
Definition at line 717 of file Pane_connectivity.C.
Referenced by Rocmap::compute_pconn().
|
protected |
Create b2v mapping (pane connectivity) for nodes or edges and store the solution into the given Roccom Attribute.
Create b2v mapping for nodes.
The output is a vector of b2v mapping for the local panes (b2v[i] for panes[i]). Each mapping has the following format: <remote_pane_id> <n=#of coincident nodes> <local_id 1> ... <local_id n>=""> <remote_pane_id 2> .... !repeat the above
Definition at line 676 of file Pane_connectivity.C.
References COM_assertion_msg, copy, i, j, min(), and n.
|
protected |
Create b2v mapping (pane connectivity) for nodes or edges and store the results into a vector of vectors (with the same format as above).
Create b2v mapping for nodes or edges.
The output is a vector of b2v mapping for the local panes (b2v[i] for panes[i]). Each mapping has the following format: <remote_pane_id> <n=#of coincident nodes> <local_id 1> ... <local_id n>=""> <remote_pane_id 2> .... !repeat the above
Definition at line 513 of file Pane_connectivity.C.
References NTS::abs(), COM_assertion, i, iend, j, jend, k, make_kd_tree(), n, offset(), s, Point_3< T >::x(), Point_3< T >::y(), and Point_3< T >::z().
|
protected |
Definition at line 178 of file Pane_connectivity.C.
References COM_NC, d, j, k, n, q, Point_3< T >::x(), Point_3< T >::y(), and Point_3< T >::z().
|
protected |
Obtains the IDs and coordinates of boundary nodes of all local panes.
Also returns a tolerance for window query.
Definition at line 221 of file Pane_connectivity.C.
References convert_nodelist(), Pane_boundary::determine_border_nodes(), i, min(), Pane_boundary::min_squared_edge_len(), MPI_MIN, s, and sqrt().
|
static |
Determine the number of pconn blocks for all panes.
Must be called collectively by all processes of the owner window of pconn. Return 0 if pconn is empty; 1 if has only shared noodes; 2 if with shared nodes and ghost nodes; 3 if with ghost elements as well.
Definition at line 762 of file Pane_connectivity.C.
References _pconn_offset, COMMPI_Initialized(), i, max(), and MPI_MAX.
|
inlinestatic |
Retrieve an offset to avoid the number of communicating panes when reading a pconn attribute.
Definition at line 74 of file Pane_connectivity.h.
References _pconn_offset.
Referenced by Rocmop::determine_shared_border().
|
static |
Get the number of communicating panes.
Definition at line 723 of file Pane_connectivity.C.
References _pconn_offset, COM_assertion_msg, and i.
Referenced by Rocmap::size_of_cpanes().
|
private |
Definition at line 129 of file Pane_connectivity.h.
|
private |
Definition at line 128 of file Pane_connectivity.h.
|
private |
Definition at line 127 of file Pane_connectivity.h.
Referenced by collect_nodes(), collect_points(), and Pane_connectivity().
|
staticprivate |
Definition at line 130 of file Pane_connectivity.h.
Referenced by pconn_nblocks(), pconn_offset(), and size_of_cpanes().
|
private |
Definition at line 126 of file Pane_connectivity.h.
Referenced by Pane_connectivity().