#include <chunk.h>
Public Member Functions | |
virtual | ~refineClient () |
virtual void | splinter (int triNo, double x, double y, double z)=0 |
virtual void | collapse (int triNo1, int triNo2, int pt1, int pt2)=0 |
virtual void | movePoint (int pt, double x, double y, double z)=0 |
virtual | ~refineClient () |
virtual void | split (int triNo, int edgeOfTri, int movingNode, double frac)=0 |
This triangle of our chunk is being split along this edge. | |
virtual void | split (int triNo, int edgeOfTri, int movingNode, double frac, int flags)=0 |
virtual | ~refineClient () |
virtual void | split (int triNo, int edgeOfTri, int movingNode, double frac) |
This triangle of our chunk is being split along this edge. | |
virtual void | split (int tri, int A, int B, int C, int D, int _new, double frac, int flag, int origEdgeB, int newEdge1B, int newEdge2B) |
virtual void | collapse (int elemId, int nodeToKeep, int nodeToDelete, double newX, double newY, int flag, int updatedEdgeBoundary, double frac) |
virtual void | nodeUpdate (int nodeID, double newX, double newY, int boundaryFlag, int shareCount, int *adjChunks, int *adjIndices) |
virtual void | nodeReplaceDelete (int elementID, int relnodeID, int oldNodeID, int newNodeID) |
Definition at line 25 of file chunk.h.
virtual void refineClient::splinter | ( | int | triNo, | |
double | x, | |||
double | y, | |||
double | z | |||
) | [pure virtual] |
virtual void refineClient::movePoint | ( | int | pt, | |
double | x, | |||
double | y, | |||
double | z | |||
) | [pure virtual] |
virtual void refineClient::split | ( | int | triNo, | |
int | edgeOfTri, | |||
int | movingNode, | |||
double | frac | |||
) | [pure 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.
Implemented in resultsRefineClient.
Referenced by element::split(), element::splitBorderLocal(), element::splitHelp(), element::splitNeighborsLocal(), and element::splitResponse().
virtual void refineClient::split | ( | int | triNo, | |
int | edgeOfTri, | |||
int | movingNode, | |||
double | frac, | |||
int | flags | |||
) | [pure virtual] |
Implemented in resultsRefineClient.
virtual void refineClient::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:
____ A ____ A / | / | C | => C ----- D <- new node \ | \ | ---- B ---- B
The original triangle should be shrunk to ADC; while a new triangle should be inserted at DBC.
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 also receive a "split" call for the same edge.
Client's responsibilities: -Add the new node D. Since both sides of a shared edge will receive a "split" call, you must ensure the node is not added twice. -Update connectivity for source triangle -Add new triangle DBC.
Reimplemented in resultsRefineClient.
virtual void refineClient::nodeUpdate | ( | int | nodeID, | |
double | newX, | |||
double | newY, | |||
int | boundaryFlag, | |||
int | shareCount, | |||
int * | adjChunks, | |||
int * | adjIndices | |||
) | [inline, virtual] |
Definition at line 96 of file tri.h.
Referenced by chunk::nodeReplaceDelete().
virtual void refineClient::nodeReplaceDelete | ( | int | elementID, | |
int | relnodeID, | |||
int | oldNodeID, | |||
int | newNodeID | |||
) | [inline, virtual] |
Reimplemented in resultsCoarsenClient.
Definition at line 98 of file tri.h.
Referenced by chunk::nodeReplaceDelete().