Public Member Functions | |
resultsRefineClient (refineResults *res_) | |
void | split (int tri, int side, int node, double frac) |
This triangle of our chunk is being split along this edge. | |
void | split (int tri, int side, int node, double frac, int flag) |
resultsRefineClient (refineResults *res_, FEM_Refine_Operation_Data *data_) | |
void | split (int tri, int A, int B, int C, int D, int _new, double frac, int flag, int origEdgeB, int newEdge1B, int newEdge2B) |
Private Attributes | |
refineResults * | res |
refineResults * | res |
FEM_Refine_Operation_Data * | data |
Definition at line 128 of file refine.C.
resultsRefineClient::resultsRefineClient | ( | refineResults * | res_ | ) | [inline] |
resultsRefineClient::resultsRefineClient | ( | refineResults * | res_, | |
FEM_Refine_Operation_Data * | data_ | |||
) | [inline] |
void resultsRefineClient::split | ( | int | triNo, | |
int | edgeOfTri, | |||
int | movingNode, | |||
double | frac | |||
) | [inline, virtual] |
This triangle of our chunk is being split along this edge.
For our purposes, edges are numbered 0 (connecting nodes 0 and 1), 1 (connecting 1 and 2), and 2 (connecting 2 and 0).
Taking as A and B the (triangle-order) nodes of the splitting edge:
C C / \ /|\ / \ / | \ / \ => / | \ / \ / | \ / \ /old | new\ B --------- A B --- D --- A
The original triangle's node A should be replaced by D; while a new triangle should be inserted with nodes CAD.
The new node D's location should equal A*(1-frac)+B*frac. For a simple splitter, frac will always be 0.5.
If nodes A and B are shared with some other processor, that processor will also receive a "split" call for the same edge. If nodes A and B are shared by some other local triangle, that triangle will immediately receive a "split" call for the same edge.
flag denotes the properties of the new node added by the split 0x1 - node is on the chunk boundary 0x2 - since split will be called twice for each new node, this bit shows whether it is the first time or not
Client's responsibilities: -Add the new node D. Since both sides of a shared local edge will receive a "split" call, you must ensure the node is not added twice. -Update connectivity for source triangle -Add new triangle.
Implements refineClient.
Definition at line 132 of file refine.C.
References refineResults::add(), and res.
void resultsRefineClient::split | ( | int | tri, | |
int | side, | |||
int | node, | |||
double | frac, | |||
int | flag | |||
) | [inline, virtual] |
Implements refineClient.
Definition at line 140 of file refine.C.
References refineResults::add(), and res.
void resultsRefineClient::split | ( | int | tri, | |
int | A, | |||
int | B, | |||
int | C, | |||
int | D, | |||
int | _new, | |||
double | frac, | |||
int | flag, | |||
int | origEdgeB, | |||
int | newEdge1B, | |||
int | newEdge2B | |||
) | [inline, virtual] |
Reimplemented from refineClient.
Definition at line 130 of file refine.C.
References refineResults::add(), refineResults::createRefineData(), PUP::d, data, FEM_Modify_IDXL(), and res.
refineResults* resultsRefineClient::res [private] |
refineResults* resultsRefineClient::res [private] |