PPL Logo

refineClient Class Reference

The user inherits from this class to receive "split" calls, and to be informed when the refinement is complete. More...

#include <chunk.h>

Inheritance diagram for refineClient:

Inheritance graph
[legend]

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)

Detailed Description

The user inherits from this class to receive "split" calls, and to be informed when the refinement is complete.

Definition at line 25 of file chunk.h.


Constructor & Destructor Documentation

virtual refineClient::~refineClient (  )  [inline, virtual]

Definition at line 27 of file chunk.h.

virtual refineClient::~refineClient (  )  [inline, virtual]

Definition at line 388 of file tri.h.

virtual refineClient::~refineClient (  )  [inline, virtual]

Definition at line 39 of file tri.h.


Member Function Documentation

virtual void refineClient::splinter ( int  triNo,
double  x,
double  y,
double  z 
) [pure virtual]

virtual void refineClient::collapse ( int  triNo1,
int  triNo2,
int  pt1,
int  pt2 
) [pure virtual]

Referenced by edge::localCollapse().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

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.

Definition at line 75 of file tri.h.

virtual void refineClient::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 in resultsRefineClient.

Definition at line 84 of file tri.h.

virtual void refineClient::collapse ( int  elemId,
int  nodeToKeep,
int  nodeToDelete,
double  newX,
double  newY,
int  flag,
int  updatedEdgeBoundary,
double  frac 
) [inline, virtual]

Reimplemented in resultsCoarsenClient.

Definition at line 93 of file tri.h.

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().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:


The documentation for this class was generated from the following files:

Generated on Mon Sep 21 08:29:28 2020 for Charm++ by  doxygen 1.5.5