Sundance::HNMesh3D Class Reference

Class for 3D hierarchical structured quad Mesh
The main internal idea of the mesh ist that there are different numberings of the elements ID -> each element has an ID (also those which are completely outside the mesh domain, and those which are not leaf)
In the code sometimes internaly LID is used instead of ID due to legacy !! :-P
GID -> all leaf elements which are visible to Sundance (only the leaf elements should be visible)
LID -> all the elements which have GID and belong and either belong to the local processor or are in the ghost cells
. More...

Inheritance diagram for Sundance::HNMesh3D:

Sundance::MeshBase Sundance::ObjectWithClassVerbosity< MeshBase > Sundance::ObjectWithInstanceID< MeshBase > Playa::ObjectWithVerbosity

List of all members.

Public Member Functions

 HNMesh3D (int dim, const MPIComm &comm, const MeshEntityOrder &order)
 The Ctor for the dummy grid with hanging nodes.
void createMesh (double position_x, double position_y, double position_z, double offset_x, double offset_y, double offset_z, int resolution_x, int resolution_y, int resolution_z, const RefinementClass &refineClass, const MeshDomainDef &meshDomain)
 The Ctor for the HNMesh3D grid in 3D.
virtual ~HNMesh3D ()
 Dtor.
virtual int numCells (int dim) const
 Get the number of cells having dimension dim.
virtual Point nodePosition (int i) const
 Return the position of the i-th node.
const double * nodePositionView (int i) const
 Return a view of the i-th node's position.
virtual void getJacobians (int cellDim, const Array< int > &cellLID, CellJacobianBatch &jBatch) const
 Compute the jacobians of a batch of cells, returning the result via reference argument.
virtual void getCellDiameters (int cellDim, const Array< int > &cellLID, Array< double > &cellDiameters) const
 Compute the diameters of a batch of cells, result via reference argument.
virtual void pushForward (int cellDim, const Array< int > &cellLID, const Array< Point > &refQuadPts, Array< Point > &physQuadPts) const
 Map reference quadrature points to physical points on the given cells.
virtual int ownerProcID (int cellDim, int cellLID) const
 Return the rank of the processor that owns the given cell.
virtual int numFacets (int cellDim, int cellLID, int facetDim) const
 Return the number of facets of the given cell.
virtual int facetLID (int cellDim, int cellLID, int facetDim, int facetIndex, int &facetOrientation) const
 Return the local ID of a facet cell.
virtual void getFacetLIDs (int cellDim, const Array< int > &cellLID, int facetDim, Array< int > &facetLID, Array< int > &facetSign) const
 Return by reference argument an array containing&(elemVerts_.value(cellLID, 0)) the LIDs of the facetDim-dimensional facets of the given batch of cells.
const int * elemZeroFacetView (int cellLID) const
 Return a view of an element's zero-dimensional facets,.
virtual int numMaxCofacets (int cellDim, int cellLID) const
 Return the number of maximal cofacets of the given cell.
virtual int maxCofacetLID (int cellDim, int cellLID, int cofacetIndex, int &facetIndex) const
 Return the local ID of a maximal cofacet cell.
virtual void getMaxCofacetLIDs (const Array< int > &cellLIDs, MaximalCofacetBatch &cofacets) const
 Get the LIDs of the maximal cofacets for a batch of codimension-one cells.
void getCofacets (int cellDim, int cellLID, int cofacetDim, Array< int > &cofacetLIDs) const
 Find the cofacets of the given cell.
virtual int mapGIDToLID (int cellDim, int globalIndex) const
 Find the local ID of a cell given its global index.
virtual bool hasGID (int cellDim, int globalIndex) const
 Determine whether a given cell GID exists on this processor.
virtual int mapLIDToGID (int cellDim, int localIndex) const
 Find the global ID of a cell given its local index.
virtual CellType cellType (int cellDim) const
 Get the type of the given cell.
virtual int label (int cellDim, int cellLID) const
 Get the label of the given cell.
virtual void getLabels (int cellDim, const Array< int > &cellLID, Array< int > &labels) const
 Get the labels for a batch of cells.
virtual Set< int > getAllLabelsForDimension (int cellDim) const
 Get the list of all labels defined for cells of the given dimension.
virtual void getLIDsForLabel (int cellDim, int label, Array< int > &cellLIDs) const
 Get the cells associated with a specified label.
virtual void setLabel (int cellDim, int cellLID, int label)
 Set the label of the given cell.
virtual void assignIntermediateCellGIDs (int cellDim)
 Coordinate intermediate cell definitions across processors.
virtual bool hasIntermediateGIDs (int dim) const
 Return if cells of dimension cellDim have been assigned global IDs or not.
virtual bool allowsHangingHodes () const
 Function returns true if the mesh allows hanging nodes (by refinement), false otherwise.
virtual bool isElementHangingNode (int cellDim, int cellLID) const
 Function returns true if the specified element is a "hanging" element false otherwise
.
virtual int indexInParent (int maxCellLID) const
 Returns the index in the parent maxdim Cell of the refinement tree.
virtual int maxChildren () const
 How many children has a refined element.
virtual void returnParentFacets (int childCellLID, int dimFacets, Array< int > &facetsLIDs, int &parentCellLIDs) const
 Function returns the facets of the maxdim parent cell (needed for HN treatment)
.

Private Member Functions

int facetLID_tree (int cellDim, int cellLID, int facetDim, int facetIndex) const
 For HN , returns parent facets, if the facet is not leaf, then return -1 at that place.
void addVertex (int vertexLID, int ownerProc, bool isHanging, double coordx, double coordy, double coordz, const Array< int > &maxCoF)
 adds one vertex to the mesh
void addEdge (int edgeLID, int ownerProc, bool isHanging, int edgeOrientation, const Array< int > &vertexLIDs, const Array< int > &maxCoF)
 adds one edge to the mesh
void addFace (int faceLID, int ownerProc, bool isHanging, int faceOrientation, const Array< int > &vertexLIDs, const Array< int > &edgeLIDs, const Array< int > &maxCoF)
 adds one edge to the mesh
void addCell (int cellLID, int ownerProc, int indexInParent, int parentCellLID, int level, const Array< int > &faceLIDs, const Array< int > &edgeLIDs, const Array< int > &vertexLIDs)
 adds one cell(3D) to the mesh
cell must be always leaf
void createCoarseMesh ()
 creates the mesh on the coarsest level as it is specified
bool oneRefinementIteration ()
 Does one single refinement iteration.
void refineCell (int cellLID)
 refine the given cell by cellID, (method assumes that this cell can be refined)
void createLeafNumbering ()
 Create Leaf numbering.
void createLeafNumbering_sophisticated ()
 Create Leaf numbering, but with a better load balancing for parallel case.
int estimateCellLoad (int ID)
 estimate the load of one cell
void markCellsAndFacets (int cellID, int procID)
 marks the cells recursivly in the tree (and facets) owned by one processor
void updateLocalCoarseNumbering (int ix, int iy, int iz, int Nx, int Ny)
 this updates the array with the local index of vertex, edge and face in the static array
this method is only used in the coarse mesh creation
int getHangingElement (int cellDim, bool useEdge, int parentID, int parentOffset)
 Used for refinemement.
void addHangingElement (int cellDim, int cellID, bool useEdge, int parentID, int parentOffset)
 Used for refinemement.
int numMaxCofacets_ID (int cellDim, int cellID)

Private Attributes

int nrProc_
 Number of processors.
int myRank_
const MPIComm_comm
 The communicator.
double _pos_x
double _pos_y
double _pos_z
double _ofs_x
double _ofs_y
double _ofs_z
int _res_x
int _res_y
int _res_z
RefinementClass refineClass_
MeshDomainDef meshDomain_
Array< Pointpoints_
 all the global points index is [ID]
Array< int > nrElem_
 [4] the nr of ID per dim
Array< int > nrElemOwned_
 [4] the nr of owned elements per dim
Array< Array< int > > cellsPoints_
 [cellID][8]
Array< Array< int > > cellsEdges_
 [cellID][12]
Array< Array< int > > cellsFaces_
 [cellID][6]
Array< Array< int > > faceEdges_
 [faceID][4]
Array< Array< int > > facePoints_
 [faceID][4]
Array< Array< int > > edgePoints_
 [edgeID][2]
Array< short int > edgeOrientation_
 stores the edge orientation {0,1,2} [edgeID]
Array< short int > faceOrientation_
 stores the face orientation {0,1,2} [faceID]
Array< Array< int > > faceMaxCoF_
 [faceID][2]
Array< Array< int > > edgeMaxCoF_
 [edgeID][4]
Array< Array< int > > pointMaxCoF_
 [pointID][8]
Array< Array< short int > > elementOwner_
 contains the ownership of the local elements [dim][ID]
Array< short int > indexInParent_
 [cellID] , the child index in the parent
Array< int > parentCellLID_
 [cellID] , the LID of the parent cell
Array< short int > cellLevel_
 [cellID] , actual level of the cell
Array< bool > isCellLeaf_
 [cellID] , if the element is leaf
Array< bool > isCellOut_
 [cellID] , if the cell is complete outside the user defined mesh domain
Array< Array< int > > cellsChildren_
 [cellID] , children of the cell
Array< bool > isPointHanging_
 [pointID] , true if the node is hanging , false otherwise
Array< bool > isEdgeHanging_
 [edgeID] , true if the edge is hanging , false otherwise
Array< bool > isFaceHanging_
 [faceID] , true if the face is hanging , false otherwise
Hashtable< int, Array< int > > edgeHangingElmStore_
 [edgeID] - > { h P0 LID , h P1 LID , h E0 LID , h E1 LID , h E2 LID }
These elements will only be put on not hanging when we access it 3 times
together 5 elements
Array< short int > hangingAccessCount_
 the counter for each edge which stores hanging node information, when the counter reaches 2 (3 read access)
then the hanging elements can be marked as not hanging
At the beginning this should be equal with the numMaxCofacets
Hashtable< int, Array< int > > faceHangingElmStore_
 [faceID] - > { h P0 LID , h P1 LID , h P2 LID , h P3 LID ,
h E0 LID , h E1 LID , h E2 LID , h E3 LID , h E4 LID , h E5 LID , (4+)
h E6 LID , h E7 LID , h E8 LID , h E9 LID , h E10 LID, h E11 LID , (16+)
h F0 LID , h F1 LID , h F2 LID , h F3 LID , h F4 LID , h F5 LID ,
h F6 LID , h F7 LID , h F8 LID }
together 16+9 = 25 elements
Array< short int > refineCell_
 Neighbor Cell can mark the cell to provoke refinement.
Array< int > vertexLeafToLIDMapping_
 [leaf_vertexLID] , the value must be a positive number
Array< int > edgeLeafToLIDMapping_
 [leaf_edgeLID] , the value must be a positive number
Array< int > faceLeafToLIDMapping_
 [leaf_faceLID] , the value must be a positive number
Array< int > cellLeafToLIDMapping_
 [leaf_cellLID] , the value must be a positive number
Array< int > vertexLIDToLeafMapping_
 [vertexLID] if vertex is inside the domain then > 0 , -1 otherwise
Array< int > edgeLIDToLeafMapping_
 [edgeLID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise
Array< int > faceLIDToLeafMapping_
 [faceLID] if face is leaf(or inside the domain) then > 0 , -1 otherwise
Array< int > cellLIDToLeafMapping_
 [cellLID] if cell is leaf(or inside the domain) then > 0 , -1 otherwise
int nrVertexLeafLID_
 leaf LID numbering
int nrEdgeLeafLID_
int nrFaceLeafLID_
int nrCellLeafLID_
Array< int > vertexLeafToGIDMapping_
 [leaf_vertexGID] , the value must be a positive number
Array< int > edgeLeafToGIDMapping_
 [leaf_edgeGID] , the value must be a positive number
Array< int > faceLeafToGIDMapping_
 [leaf_faceGID] , the value must be a positive number
Array< int > cellLeafToGIDMapping_
 [leaf_cellGID] , the value must be a positive number
Array< int > vertexGIDToLeafMapping_
 [vertexGID] if vertex is inside the domain then > 0 , -1 otherwise
Array< int > edgeGIDToLeafMapping_
 [edgeGID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise
Array< int > faceGIDToLeafMapping_
 [faceGID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise
Array< int > cellGIDToLeafMapping_
 [cellGID] if cell is leaf(or inside the domain) then > 0 , -1 otherwise
int nrVertexLeafGID_
 leaf GID numbering
int nrEdgeLeafGID_
int nrFaceLeafGID_
int nrCellLeafGID_

Static Private Attributes

static int offs_Points_x_ [8] = {0, 1, 0, 1 , 0 , 1 , 0 , 1}
 the offset in the X coordinate on the reference cell
static int offs_Points_y_ [8] = {0, 0, 1, 1 , 0 , 0 , 1 , 1}
 the offset in the Y coordinate on the reference cell
static int offs_Points_z_ [8] = {0, 0, 0, 0 , 1 , 1 , 1 , 1 }
 the offset in the Z coordinate on the reference cell
static int edge_Points_localIndex [12][2]
 stores the facet information on the reference Cell
static int edge_Orientation [12] = { 0, 1, 2, 1, 2, 0, 2, 2, 0, 1, 1, 0 }
 the edge orientation (local orientation)
static int edge_MaxCofacetIndex [3][4] = { {0,5,8,11},{1,3,9,10},{2,4,6,7} }
static int edge_MaxCof [12] = { 0,0,0, 1, 1, 1, 2, 3, 2, 2, 3, 3 }
static int face_Edges_localIndex [6][4] = { {0,1,3,5} , {0,2,4,8} , {1,2,6,9} , {3,4,7,10}, {5,6,7,11}, {8,9,10,11}}
 face edge-facet information
static int face_Points_localIndex [6][4] = { {0,1,2,3} , {0,1,4,5} , {0,2,4,6} , {1,3,5,7} , {2,3,6,7} , {4,5,6,7} }
 face point-facet information
static int face_Orientation [6] = { 0,1,2,2,1,0 }
 face orientation (local orientation)
static int face_MaxCofacetIndex [3][2] = { {0,5},{1,4},{2,3}}
static int face_MaxCof [6] = { 0,0,0,1,1,1 }
static int vInd [8]
 used for coarse mesh creation for the vertex indexing
static int eInd [12]
 used for coarse mesh creation for the edge indexing
static int fInd [6]
 used for coarse mesh creation for the face indexing
static double vertex_X [64]
static double vertex_Y [64]
static double vertex_Z [64]
static int vertexToParentEdge [64]
static int vertexInParentIndex [64]
static int edgeToParentEdge [144]
static int edgeInParentIndex [144]
static int faceToParentFace [108]
static int faceInParentIndex [108]


Detailed Description

Class for 3D hierarchical structured quad Mesh
The main internal idea of the mesh ist that there are different numberings of the elements ID -> each element has an ID (also those which are completely outside the mesh domain, and those which are not leaf)
In the code sometimes internaly LID is used instead of ID due to legacy !! :-P
GID -> all leaf elements which are visible to Sundance (only the leaf elements should be visible)
LID -> all the elements which have GID and belong and either belong to the local processor or are in the ghost cells
.

Definition at line 69 of file SundanceHNMesh3D.hpp.


Constructor & Destructor Documentation

HNMesh3D::HNMesh3D ( int  dim,
const MPIComm comm,
const MeshEntityOrder order 
)

virtual Sundance::HNMesh3D::~HNMesh3D (  )  [inline, virtual]

Dtor.

Definition at line 94 of file SundanceHNMesh3D.hpp.


Member Function Documentation

void HNMesh3D::addCell ( int  cellLID,
int  ownerProc,
int  indexInParent,
int  parentCellLID,
int  level,
const Array< int > &  faceLIDs,
const Array< int > &  edgeLIDs,
const Array< int > &  vertexLIDs 
) [private]

void HNMesh3D::addEdge ( int  edgeLID,
int  ownerProc,
bool  isHanging,
int  edgeOrientation,
const Array< int > &  vertexLIDs,
const Array< int > &  maxCoF 
) [private]

void HNMesh3D::addFace ( int  faceLID,
int  ownerProc,
bool  isHanging,
int  faceOrientation,
const Array< int > &  vertexLIDs,
const Array< int > &  edgeLIDs,
const Array< int > &  maxCoF 
) [private]

void HNMesh3D::addHangingElement ( int  cellDim,
int  cellID,
bool  useEdge,
int  parentID,
int  parentOffset 
) [private]

Used for refinemement.

Parameters:
cellDim the requested elements dimension (if exists)
cellID,ID of the new hanging cell
usedge,whould we look for that element in edge or in face
parentID,ID of the parent edge or face
parentOffset,the offset in the parent

Definition at line 1507 of file SundanceHNMesh3D.cpp.

References edgeHangingElmStore_, faceHangingElmStore_, hangingAccessCount_, numMaxCofacets_ID(), SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

Referenced by refineCell().

void HNMesh3D::addVertex ( int  vertexLID,
int  ownerProc,
bool  isHanging,
double  coordx,
double  coordy,
double  coordz,
const Array< int > &  maxCoF 
) [private]

adds one vertex to the mesh

Definition at line 853 of file SundanceHNMesh3D.cpp.

References elementOwner_, isPointHanging_, nrElem_, pointMaxCoF_, points_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

Referenced by createCoarseMesh(), and refineCell().

virtual bool Sundance::HNMesh3D::allowsHangingHodes (  )  const [inline, virtual]

Function returns true if the mesh allows hanging nodes (by refinement), false otherwise.

Reimplemented from Sundance::MeshBase.

Definition at line 284 of file SundanceHNMesh3D.hpp.

void HNMesh3D::assignIntermediateCellGIDs ( int  cellDim  )  [virtual]

Coordinate intermediate cell definitions across processors.

Implements Sundance::MeshBase.

Definition at line 759 of file SundanceHNMesh3D.cpp.

CellType HNMesh3D::cellType ( int  cellDim  )  const [virtual]

Get the type of the given cell.

Implements Sundance::MeshBase.

Definition at line 715 of file SundanceHNMesh3D.cpp.

References Sundance::BrickCell, Sundance::LineCell, Sundance::NullCell, Sundance::PointCell, and Sundance::QuadCell.

void HNMesh3D::createCoarseMesh (  )  [private]

void HNMesh3D::createLeafNumbering (  )  [private]

void HNMesh3D::createLeafNumbering_sophisticated (  )  [private]

void HNMesh3D::createMesh ( double  position_x,
double  position_y,
double  position_z,
double  offset_x,
double  offset_y,
double  offset_z,
int  resolution_x,
int  resolution_y,
int  resolution_z,
const RefinementClass &  refineClass,
const MeshDomainDef meshDomain 
)

The Ctor for the HNMesh3D grid in 3D.

creates one regular mesh without refinement.

With a different function the refinement can start later , independently from this function.
The structure of this mesh also supports unstructured storage of the cells, so we might create unstructured mesh and later refine in the same way

Definition at line 956 of file SundanceHNMesh3D.cpp.

References _ofs_x, _ofs_y, _ofs_z, _pos_x, _pos_y, _pos_z, _res_x, _res_y, _res_z, createCoarseMesh(), createLeafNumbering_sophisticated(), meshDomain_, oneRefinementIteration(), refineClass_, and Playa::ObjectWithVerbosity::setVerb().

Referenced by Sundance::HNMesher3D::fillMesh().

const int * HNMesh3D::elemZeroFacetView ( int  cellLID  )  const [virtual]

Return a view of an element's zero-dimensional facets,.

Returns:
an array of integers with the indexes of the points which for it

Implements Sundance::MeshBase.

Definition at line 511 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, cellsPoints_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

int HNMesh3D::estimateCellLoad ( int  ID  )  [private]

estimate the load of one cell

Definition at line 1896 of file SundanceHNMesh3D.cpp.

References cellLevel_, cellsChildren_, isCellLeaf_, and isCellOut_.

Referenced by createLeafNumbering_sophisticated().

int HNMesh3D::facetLID ( int  cellDim,
int  cellLID,
int  facetDim,
int  facetIndex,
int &  facetOrientation 
) const [virtual]

Return the local ID of a facet cell.

Parameters:
cellDim dimension of the cell whose facets are being obtained
cellLID local index of the cell whose facets are being obtained
facetDim dimension of the desired facet
facetIndex index into the list of the cell's facets
facetOrientation orientation of the facet as seen from the given cell (returned via reference)

Implements Sundance::MeshBase.

Definition at line 438 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, cellsEdges_, cellsFaces_, cellsPoints_, edgeLeafToLIDMapping_, edgeLIDToLeafMapping_, edgePoints_, faceEdges_, faceLeafToLIDMapping_, faceLIDToLeafMapping_, facePoints_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLIDToLeafMapping_.

Referenced by getFacetLIDs().

int HNMesh3D::facetLID_tree ( int  cellDim,
int  cellLID,
int  facetDim,
int  facetIndex 
) const [private]

For HN , returns parent facets, if the facet is not leaf, then return -1 at that place.

Definition at line 829 of file SundanceHNMesh3D.cpp.

References cellsEdges_, cellsFaces_, cellsPoints_, edgeLIDToLeafMapping_, faceLIDToLeafMapping_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLIDToLeafMapping_.

Referenced by returnParentFacets().

Set< int > HNMesh3D::getAllLabelsForDimension ( int  cellDim  )  const [virtual]

Get the list of all labels defined for cells of the given dimension.

Implements Sundance::MeshBase.

Definition at line 741 of file SundanceHNMesh3D.cpp.

void HNMesh3D::getCellDiameters ( int  cellDim,
const Array< int > &  cellLID,
Array< double > &  cellDiameters 
) const [virtual]

Compute the diameters of a batch of cells, result via reference argument.

Parameters:
cellDim dimension of the cells whose diameters are to be computed
cellLID local indices of the cells for which diameters are to be computed
diameters reference to the array of cell diameters

Reimplemented from Sundance::MeshBase.

Definition at line 302 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, cellsPoints_, edgeLeafToLIDMapping_, edgePoints_, faceLeafToLIDMapping_, facePoints_, points_, Sundance::MeshBase::spatialDim(), SUNDANCE_MSG3, SUNDANCE_VERB_HIGH, and Playa::ObjectWithVerbosity::verb().

void HNMesh3D::getCofacets ( int  cellDim,
int  cellLID,
int  cofacetDim,
Array< int > &  cofacetLIDs 
) const [virtual]

Find the cofacets of the given cell.

Parameters:
cellDim dimension of the cell whose cofacets are being obtained
cellLID local index of the cell whose cofacets are being obtained
cofacetDim dimension of the cofacets to get
cofacetLIDs LIDs of the cofacet

Implements Sundance::MeshBase.

Definition at line 638 of file SundanceHNMesh3D.cpp.

void HNMesh3D::getFacetLIDs ( int  cellDim,
const Array< int > &  cellLID,
int  facetDim,
Array< int > &  facetLID,
Array< int > &  facetSign 
) const [virtual]

Return by reference argument an array containing&(elemVerts_.value(cellLID, 0)) the LIDs of the facetDim-dimensional facets of the given batch of cells.

Implements Sundance::MeshBase.

Definition at line 484 of file SundanceHNMesh3D.cpp.

References facetLID(), numFacets(), SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

int HNMesh3D::getHangingElement ( int  cellDim,
bool  useEdge,
int  parentID,
int  parentOffset 
) [private]

Used for refinemement.

Parameters:
cellDim the requested elements dimension (if exists)
usedge,whould we look for that element in edge or in face
parentID,ID of the parent edge or face
parentOffset,the offset in the parent

Definition at line 1559 of file SundanceHNMesh3D.cpp.

References edgeHangingElmStore_, faceHangingElmStore_, hangingAccessCount_, isEdgeHanging_, isFaceHanging_, isPointHanging_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

Referenced by refineCell().

void HNMesh3D::getJacobians ( int  cellDim,
const Array< int > &  cellLID,
CellJacobianBatch jBatch 
) const [virtual]

Compute the jacobians of a batch of cells, returning the result via reference argument.

Parameters:
cellDim dimension of the cells whose Jacobians are to be computed
cellLID local indices of the cells for which Jacobians are to be computed
jBatch reference to the resulting Jacobian batch

Reimplemented from Sundance::MeshBase.

Definition at line 232 of file SundanceHNMesh3D.cpp.

References _ofs_x, _ofs_y, _ofs_z, cellLeafToLIDMapping_, cellsPoints_, Sundance::cross(), Sundance::CellJacobianBatch::detJ(), edgeLeafToLIDMapping_, edgePoints_, faceLeafToLIDMapping_, facePoints_, Sundance::CellJacobianBatch::jVals(), points_, Sundance::CellJacobianBatch::resize(), Sundance::MeshBase::spatialDim(), SUNDANCE_MSG3, SUNDANCE_VERB_HIGH, and Playa::ObjectWithVerbosity::verb().

void HNMesh3D::getLabels ( int  cellDim,
const Array< int > &  cellLID,
Array< int > &  labels 
) const [virtual]

Get the labels for a batch of cells.

Implements Sundance::MeshBase.

Definition at line 735 of file SundanceHNMesh3D.cpp.

void HNMesh3D::getLIDsForLabel ( int  cellDim,
int  label,
Array< int > &  cellLIDs 
) const [virtual]

Get the cells associated with a specified label.

The array cellLID will be filled with those cells of dimension cellDim having the given label.

Implements Sundance::MeshBase.

Definition at line 748 of file SundanceHNMesh3D.cpp.

void HNMesh3D::getMaxCofacetLIDs ( const Array< int > &  cellLIDs,
MaximalCofacetBatch cofacets 
) const [virtual]

Get the LIDs of the maximal cofacets for a batch of codimension-one cells.

Parameters:
cellLIDs [in] array of LIDs of the cells whose cofacets are being obtained
cofacets [out] the batch of cofacets

Implements Sundance::MeshBase.

Definition at line 645 of file SundanceHNMesh3D.cpp.

bool HNMesh3D::hasGID ( int  cellDim,
int  globalIndex 
) const [virtual]

Determine whether a given cell GID exists on this processor.

Implements Sundance::MeshBase.

Definition at line 680 of file SundanceHNMesh3D.cpp.

bool HNMesh3D::hasIntermediateGIDs ( int  cellDim  )  const [virtual]

Return if cells of dimension cellDim have been assigned global IDs or not.

Parameters:
cellDim [in] Dimension of the cell

Implements Sundance::MeshBase.

Definition at line 764 of file SundanceHNMesh3D.cpp.

int HNMesh3D::indexInParent ( int  maxCellLID  )  const [virtual]

Returns the index in the parent maxdim Cell of the refinement tree.

Parameters:
maxCellLID [in] the LID of the cell

Reimplemented from Sundance::MeshBase.

Definition at line 792 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, and indexInParent_.

bool HNMesh3D::isElementHangingNode ( int  cellDim,
int  cellLID 
) const [virtual]

Function returns true if the specified element is a "hanging" element false otherwise
.

Parameters:
dim [in] should be between 0 , D-1
cellLID [in] the local ID of the element

Reimplemented from Sundance::MeshBase.

Definition at line 771 of file SundanceHNMesh3D.cpp.

References edgeLeafToLIDMapping_, faceLeafToLIDMapping_, isEdgeHanging_, isFaceHanging_, isPointHanging_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLeafToLIDMapping_.

int HNMesh3D::label ( int  cellDim,
int  cellLID 
) const [virtual]

Get the label of the given cell.

Implements Sundance::MeshBase.

Definition at line 728 of file SundanceHNMesh3D.cpp.

int HNMesh3D::mapGIDToLID ( int  cellDim,
int  globalIndex 
) const [virtual]

int HNMesh3D::mapLIDToGID ( int  cellDim,
int  localIndex 
) const [virtual]

void HNMesh3D::markCellsAndFacets ( int  cellID,
int  procID 
) [private]

marks the cells recursivly in the tree (and facets) owned by one processor

mark the cells and its facets for one processor

Definition at line 1913 of file SundanceHNMesh3D.cpp.

References cellLevel_, cellsChildren_, cellsEdges_, cellsFaces_, cellsPoints_, elementOwner_, and isCellLeaf_.

Referenced by createLeafNumbering_sophisticated().

virtual int Sundance::HNMesh3D::maxChildren (  )  const [inline, virtual]

How many children has a refined element.


This function provides information of either we have bi or trisection

Reimplemented from Sundance::MeshBase.

Definition at line 298 of file SundanceHNMesh3D.hpp.

int HNMesh3D::maxCofacetLID ( int  cellDim,
int  cellLID,
int  cofacetIndex,
int &  facetIndex 
) const [virtual]

Return the local ID of a maximal cofacet cell.

Parameters:
cellDim dimension of the cell whose cofacets are being obtained
cellLID local index of the cell whose cofacets are being obtained
cofacetIndex which maximal cofacet to get
facetIndex index of the cell cellLID into the list of the maximal cell's facets

Implements Sundance::MeshBase.

Definition at line 558 of file SundanceHNMesh3D.cpp.

References cellLIDToLeafMapping_, edge_MaxCofacetIndex, edgeLeafToLIDMapping_, edgeMaxCoF_, edgeOrientation_, face_MaxCofacetIndex, faceLeafToLIDMapping_, faceMaxCoF_, faceOrientation_, pointMaxCoF_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLeafToLIDMapping_.

Point HNMesh3D::nodePosition ( int  i  )  const [virtual]

Return the position of the i-th node.

Implements Sundance::MeshBase.

Definition at line 220 of file SundanceHNMesh3D.cpp.

References points_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLeafToLIDMapping_.

const double * HNMesh3D::nodePositionView ( int  i  )  const [virtual]

Return a view of the i-th node's position.

Implements Sundance::MeshBase.

Definition at line 226 of file SundanceHNMesh3D.cpp.

References points_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLeafToLIDMapping_.

int HNMesh3D::numCells ( int  dim  )  const [virtual]

Get the number of cells having dimension dim.

Implements Sundance::MeshBase.

Definition at line 209 of file SundanceHNMesh3D.cpp.

References nrCellLeafLID_, nrEdgeLeafLID_, nrFaceLeafLID_, nrVertexLeafLID_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

int HNMesh3D::numFacets ( int  cellDim,
int  cellLID,
int  facetDim 
) const [virtual]

Return the number of facets of the given cell.

Implements Sundance::MeshBase.

Definition at line 421 of file SundanceHNMesh3D.cpp.

Referenced by getFacetLIDs().

int HNMesh3D::numMaxCofacets ( int  cellDim,
int  cellLID 
) const [virtual]

int HNMesh3D::numMaxCofacets_ID ( int  cellDim,
int  cellID 
) [private]

Parameters:
cellDim 
cellID 

Definition at line 1616 of file SundanceHNMesh3D.cpp.

References edgeMaxCoF_, faceMaxCoF_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

Referenced by addHangingElement(), and refineCell().

bool HNMesh3D::oneRefinementIteration (  )  [private]

Does one single refinement iteration.


Iterates trough all cells which are owned by the processor and refines if necessary

Definition at line 1239 of file SundanceHNMesh3D.cpp.

References cellLevel_, cellsEdges_, cellsPoints_, edgeMaxCoF_, elementOwner_, isCellLeaf_, isCellOut_, isEdgeHanging_, nrElem_, parentCellLID_, points_, refineCell(), refineCell_, refineClass_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

Referenced by createMesh().

int HNMesh3D::ownerProcID ( int  cellDim,
int  cellLID 
) const [virtual]

Return the rank of the processor that owns the given cell.

Implements Sundance::MeshBase.

Definition at line 409 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, edgeLeafToLIDMapping_, elementOwner_, faceLeafToLIDMapping_, SUNDANCE_MSG3, Playa::ObjectWithVerbosity::verb(), and vertexLeafToLIDMapping_.

void HNMesh3D::pushForward ( int  cellDim,
const Array< int > &  cellLID,
const Array< Point > &  refQuadPts,
Array< Point > &  physQuadPts 
) const [virtual]

Map reference quadrature points to physical points on the given cells.

Reimplemented from Sundance::MeshBase.

Definition at line 356 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, cellsPoints_, edgeLeafToLIDMapping_, edgePoints_, faceLeafToLIDMapping_, facePoints_, points_, Sundance::MeshBase::spatialDim(), SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

void HNMesh3D::refineCell ( int  cellLID  )  [private]

void HNMesh3D::returnParentFacets ( int  childCellLID,
int  dimFacets,
Array< int > &  facetsLIDs,
int &  parentCellLIDs 
) const [virtual]

Function returns the facets of the maxdim parent cell (needed for HN treatment)
.

Parameters:
childCellLID [in] the LID of the maxdim cell, whos parents facets we want
dimFacets [in] the dimension of the facets which we want to have
facetsLIDs [out] the LID of the parents facets (all) in the defined order
parentCellLIDs [out] the maxdim parent cell LID

Reimplemented from Sundance::MeshBase.

Definition at line 799 of file SundanceHNMesh3D.cpp.

References cellLeafToLIDMapping_, facetLID_tree(), parentCellLID_, SUNDANCE_MSG3, and Playa::ObjectWithVerbosity::verb().

void HNMesh3D::setLabel ( int  cellDim,
int  cellLID,
int  label 
) [virtual]

Set the label of the given cell.

Implements Sundance::MeshBase.

Definition at line 753 of file SundanceHNMesh3D.cpp.

void HNMesh3D::updateLocalCoarseNumbering ( int  ix,
int  iy,
int  iz,
int  Nx,
int  Ny 
) [private]

this updates the array with the local index of vertex, edge and face in the static array
this method is only used in the coarse mesh creation

Definition at line 994 of file SundanceHNMesh3D.cpp.

References eInd, fInd, and vInd.

Referenced by createCoarseMesh(), and refineCell().


Member Data Documentation

The communicator.

Definition at line 384 of file SundanceHNMesh3D.hpp.

double Sundance::HNMesh3D::_ofs_x [private]

Definition at line 392 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), createMesh(), and getJacobians().

double Sundance::HNMesh3D::_ofs_y [private]

Definition at line 394 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), createMesh(), and getJacobians().

double Sundance::HNMesh3D::_ofs_z [private]

Definition at line 396 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), createMesh(), and getJacobians().

double Sundance::HNMesh3D::_pos_x [private]

Definition at line 386 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and createMesh().

double Sundance::HNMesh3D::_pos_y [private]

Definition at line 388 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and createMesh().

double Sundance::HNMesh3D::_pos_z [private]

Definition at line 390 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and createMesh().

[cellGID] if cell is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 538 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapLIDToGID().

[leaf_cellGID] , the value must be a positive number

Definition at line 530 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapGIDToLID().

Array<short int> Sundance::HNMesh3D::cellLevel_ [private]

[cellLID] if cell is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 515 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), mapGIDToLID(), maxCofacetLID(), and numMaxCofacets().

Array< Array<int> > Sundance::HNMesh3D::cellsChildren_ [private]

[cellID] , children of the cell

Definition at line 465 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), estimateCellLoad(), markCellsAndFacets(), and refineCell().

Array< Array<int> > Sundance::HNMesh3D::cellsEdges_ [private]

Array< Array<int> > Sundance::HNMesh3D::cellsFaces_ [private]

Array< Array<int> > Sundance::HNMesh3D::cellsPoints_ [private]

int HNMesh3D::edge_MaxCof = { 0,0,0, 1, 1, 1, 2, 3, 2, 2, 3, 3 } [static, private]

Definition at line 563 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

int HNMesh3D::edge_MaxCofacetIndex = { {0,5,8,11},{1,3,9,10},{2,4,6,7} } [static, private]

Definition at line 562 of file SundanceHNMesh3D.hpp.

Referenced by maxCofacetLID().

int HNMesh3D::edge_Orientation = { 0, 1, 2, 1, 2, 0, 2, 2, 0, 1, 1, 0 } [static, private]

the edge orientation (local orientation)

Definition at line 561 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

int HNMesh3D::edge_Points_localIndex [static, private]

Initial value:

 { {0,1} , {0,2} , {0,4} , {1,3} , {1,5} , {2,3} , {2,6} , {3,7} ,
                                            {4,5} , {4,6} , {5,7} , {6,7} }
stores the facet information on the reference Cell

Definition at line 558 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

[edgeGID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 534 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapLIDToGID().

Hashtable< int, Array<int> > Sundance::HNMesh3D::edgeHangingElmStore_ [private]

[edgeID] - > { h P0 LID , h P1 LID , h E0 LID , h E1 LID , h E2 LID }
These elements will only be put on not hanging when we access it 3 times
together 5 elements

Definition at line 480 of file SundanceHNMesh3D.hpp.

Referenced by addHangingElement(), getHangingElement(), and HNMesh3D().

int HNMesh3D::edgeInParentIndex [static, private]

Initial value:

                      {  0,  1,  2,  0, 20, 21,  0, 22, 23, 24,  1, 25, 26,  1, 27, 28, 29,  2, 30, 31,
                       2,  0,  1,  2,  0, 20, 21,  0, 20, -1, -1, 20, 21, -1, -1, 21,  0, 20, 21,  0,
                      22, 23, 24, 22, -1, -1, 22, -1, -1, -1, 23, -1, -1, 23, -1, -1, -1, 24, -1, -1,
                      24, 22, 23, 24,  1, 25, 26,  1, 25, -1, -1, 25, 26, -1, -1, 26,  1, 25, 26,  1,
                        27, 28, 29, 27, -1, -1, 27, -1, -1, -1, 28, -1, -1, 28, -1, -1, -1, 29, -1, -1,
                      29, 27, 28, 29,  2, 30, 31,  2, 30, -1, -1, 30, 31, -1, -1, 31,  2, 30, 31,  2,
                       0,  1,  2,  0, 20, 21,  0, 22, 23, 24,  1, 25, 26,  1, 27, 28, 29,  2, 30, 31,
                         2,  0,  1,  2  }

Definition at line 599 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

[leaf_edgeGID] , the value must be a positive number

Definition at line 526 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapGIDToLID().

[edgeLID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 511 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), facetLID(), facetLID_tree(), and mapGIDToLID().

Array< Array<int> > Sundance::HNMesh3D::edgeMaxCoF_ [private]

Array<short int> Sundance::HNMesh3D::edgeOrientation_ [private]

stores the edge orientation {0,1,2} [edgeID]

Definition at line 433 of file SundanceHNMesh3D.hpp.

Referenced by addEdge(), HNMesh3D(), and maxCofacetLID().

Array< Array<int> > Sundance::HNMesh3D::edgePoints_ [private]

[edgeID][2]

Definition at line 429 of file SundanceHNMesh3D.hpp.

Referenced by addEdge(), facetLID(), getCellDiameters(), getJacobians(), HNMesh3D(), and pushForward().

int HNMesh3D::edgeToParentEdge [static, private]

Initial value:

                      {  0,  0,  0,  1, 20, 20,  3, 20, 20, 20,  1, 20, 20,  3, 20, 20, 20,  1, 20, 20,
                         3,  5,  5,  5,  2, 21, 21,  4, 22, -1, -1, 23, 22, -1, -1, 23,  6, 24, 24,  7,
                        21, 21, 21, 22, -1, -1, 23, -1, -1, -1, 22, -1, -1, 23, -1, -1, -1, 22, -1, -1,
                        23, 24, 24, 24,  2, 21, 21,  4, 22, -1, -1, 23, 22, -1, -1, 23,  6, 24, 24,  7,
                        21, 21, 21, 22, -1, -1, 23, -1, -1, -1, 22, -1, -1, 23, -1, -1, -1, 22, -1, -1,
                        23, 24, 24, 24,  2, 21, 21,  4, 22, -1, -1, 23, 22, -1, -1, 23,  6, 24, 24,  7,
                         8,  8,  8,  9, 25, 25, 10, 25, 25, 25,  9, 25, 25, 10, 25, 25, 25,  9, 25, 25,
                        10, 11, 11, 11  }

Definition at line 597 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

int HNMesh3D::eInd [static, private]

used for coarse mesh creation for the edge indexing

Definition at line 580 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), refineCell(), and updateLocalCoarseNumbering().

Array< Array<short int> > Sundance::HNMesh3D::elementOwner_ [private]

int HNMesh3D::face_Edges_localIndex = { {0,1,3,5} , {0,2,4,8} , {1,2,6,9} , {3,4,7,10}, {5,6,7,11}, {8,9,10,11}} [static, private]

face edge-facet information

Definition at line 566 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

int HNMesh3D::face_MaxCof = { 0,0,0,1,1,1 } [static, private]

Definition at line 574 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

int HNMesh3D::face_MaxCofacetIndex = { {0,5},{1,4},{2,3}} [static, private]

Definition at line 573 of file SundanceHNMesh3D.hpp.

Referenced by maxCofacetLID().

int HNMesh3D::face_Orientation = { 0,1,2,2,1,0 } [static, private]

face orientation (local orientation)

Definition at line 572 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

int HNMesh3D::face_Points_localIndex = { {0,1,2,3} , {0,1,4,5} , {0,2,4,6} , {1,3,5,7} , {2,3,6,7} , {4,5,6,7} } [static, private]

face point-facet information

Definition at line 569 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), and refineCell().

Array< Array<int> > Sundance::HNMesh3D::faceEdges_ [private]

[faceID][4]

Definition at line 425 of file SundanceHNMesh3D.hpp.

Referenced by addFace(), facetLID(), and HNMesh3D().

[faceGID] if edge is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 536 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapLIDToGID().

Hashtable< int, Array<int> > Sundance::HNMesh3D::faceHangingElmStore_ [private]

[faceID] - > { h P0 LID , h P1 LID , h P2 LID , h P3 LID ,
h E0 LID , h E1 LID , h E2 LID , h E3 LID , h E4 LID , h E5 LID , (4+)
h E6 LID , h E7 LID , h E8 LID , h E9 LID , h E10 LID, h E11 LID , (16+)
h F0 LID , h F1 LID , h F2 LID , h F3 LID , h F4 LID , h F5 LID ,
h F6 LID , h F7 LID , h F8 LID }
together 16+9 = 25 elements

Definition at line 493 of file SundanceHNMesh3D.hpp.

Referenced by addHangingElement(), getHangingElement(), and HNMesh3D().

int HNMesh3D::faceInParentIndex [static, private]

Initial value:

                      {  0,  1,  2,  3,  4,  5,  6,  7,  8,  0,  1,  2,  0, -1, -1,  0, -1, -1, -1,  1,
                      -1, -1,  1, -1, -1, -1,  2, -1, -1,  2,  0,  1,  2, -1, -1, -1, -1, -1, -1, -1,
                      -1, -1,  3,  4,  5,  3, -1, -1,  3, -1, -1, -1,  4, -1, -1,  4, -1, -1, -1,  5,
                      -1, -1,  5,  3,  4,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1,  6,  7,  8,  6, -1,
                        -1,  6, -1, -1, -1,  7, -1, -1,  7, -1, -1, -1,  8, -1, -1,  8,  6,  7,  8,  0,
                       1,  2,  3,  4,  5,  6,  7,  8 }

Definition at line 603 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

[leaf_faceGID] , the value must be a positive number

Definition at line 528 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapGIDToLID().

[faceLID] if face is leaf(or inside the domain) then > 0 , -1 otherwise

Definition at line 513 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), facetLID(), facetLID_tree(), and mapGIDToLID().

Array< Array<int> > Sundance::HNMesh3D::faceMaxCoF_ [private]

Array<short int> Sundance::HNMesh3D::faceOrientation_ [private]

stores the face orientation {0,1,2} [faceID]

Definition at line 436 of file SundanceHNMesh3D.hpp.

Referenced by addFace(), HNMesh3D(), and maxCofacetLID().

Array< Array<int> > Sundance::HNMesh3D::facePoints_ [private]

[faceID][4]

Definition at line 427 of file SundanceHNMesh3D.hpp.

Referenced by addFace(), facetLID(), getCellDiameters(), getJacobians(), HNMesh3D(), and pushForward().

int HNMesh3D::faceToParentFace [static, private]

Initial value:

                      {  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  2, -1, -1,  3, -1, -1, -1,  2,
                        -1, -1,  3, -1, -1, -1,  2, -1, -1,  3,  4,  4,  4, -1, -1, -1, -1, -1, -1, -1,
                        -1, -1,  1,  1,  1,  2, -1, -1,  3, -1, -1, -1,  2, -1, -1,  3, -1, -1, -1,  2,
                        -1, -1,  3,  4,  4,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1,  1,  1,  1,  2, -1,
                        -1,  3, -1, -1, -1,  2, -1, -1,  3, -1, -1, -1,  2, -1, -1,  3,  4,  4,  4,  5,
                         5,  5,  5,  5,  5,  5,  5,  5  }

Definition at line 601 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

int HNMesh3D::fInd [static, private]

used for coarse mesh creation for the face indexing

Definition at line 583 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), refineCell(), and updateLocalCoarseNumbering().

Array<short int> Sundance::HNMesh3D::hangingAccessCount_ [private]

the counter for each edge which stores hanging node information, when the counter reaches 2 (3 read access)
then the hanging elements can be marked as not hanging
At the beginning this should be equal with the numMaxCofacets

Definition at line 485 of file SundanceHNMesh3D.hpp.

Referenced by addEdge(), addHangingElement(), getHangingElement(), and HNMesh3D().

Array<short int> Sundance::HNMesh3D::indexInParent_ [private]

[cellID] , the child index in the parent

Definition at line 455 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), HNMesh3D(), and indexInParent().

Array<bool> Sundance::HNMesh3D::isCellLeaf_ [private]

Array<bool> Sundance::HNMesh3D::isCellOut_ [private]

[cellID] , if the cell is complete outside the user defined mesh domain

Definition at line 463 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), createLeafNumbering(), createLeafNumbering_sophisticated(), estimateCellLoad(), HNMesh3D(), and oneRefinementIteration().

Array<bool> Sundance::HNMesh3D::isEdgeHanging_ [private]

[edgeID] , true if the edge is hanging , false otherwise

Definition at line 471 of file SundanceHNMesh3D.hpp.

Referenced by addEdge(), createLeafNumbering(), createLeafNumbering_sophisticated(), getHangingElement(), HNMesh3D(), isElementHangingNode(), and oneRefinementIteration().

Array<bool> Sundance::HNMesh3D::isFaceHanging_ [private]

[faceID] , true if the face is hanging , false otherwise

Definition at line 473 of file SundanceHNMesh3D.hpp.

Referenced by addFace(), createLeafNumbering(), createLeafNumbering_sophisticated(), getHangingElement(), and isElementHangingNode().

Array<bool> Sundance::HNMesh3D::isPointHanging_ [private]

[pointID] , true if the node is hanging , false otherwise

Definition at line 469 of file SundanceHNMesh3D.hpp.

Referenced by addVertex(), createLeafNumbering(), createLeafNumbering_sophisticated(), getHangingElement(), HNMesh3D(), and isElementHangingNode().

Definition at line 406 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), and createMesh().

Array<int> Sundance::HNMesh3D::nrElem_ [private]

Array<int> Sundance::HNMesh3D::nrElemOwned_ [private]

[4] the nr of owned elements per dim

Definition at line 414 of file SundanceHNMesh3D.hpp.

Referenced by HNMesh3D().

Number of processors.

Definition at line 381 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), createLeafNumbering_sophisticated(), and HNMesh3D().

leaf GID numbering

Definition at line 541 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and HNMesh3D().

leaf LID numbering

Definition at line 518 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), HNMesh3D(), and numCells().

int HNMesh3D::offs_Points_x_ = {0, 1, 0, 1 , 0 , 1 , 0 , 1} [static, private]

the offset in the X coordinate on the reference cell

Definition at line 549 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh().

int HNMesh3D::offs_Points_y_ = {0, 0, 1, 1 , 0 , 0 , 1 , 1} [static, private]

the offset in the Y coordinate on the reference cell

Definition at line 552 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh().

int HNMesh3D::offs_Points_z_ = {0, 0, 0, 0 , 1 , 1 , 1 , 1 } [static, private]

the offset in the Z coordinate on the reference cell

Definition at line 555 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh().

Array<int> Sundance::HNMesh3D::parentCellLID_ [private]

[cellID] , the LID of the parent cell

Definition at line 457 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), createLeafNumbering(), createLeafNumbering_sophisticated(), HNMesh3D(), oneRefinementIteration(), and returnParentFacets().

Array< Array<int> > Sundance::HNMesh3D::pointMaxCoF_ [private]

Array<short int> Sundance::HNMesh3D::refineCell_ [private]

Neighbor Cell can mark the cell to provoke refinement.

Definition at line 496 of file SundanceHNMesh3D.hpp.

Referenced by addCell(), HNMesh3D(), and oneRefinementIteration().

RefinementClass Sundance::HNMesh3D::refineClass_ [mutable, private]

Definition at line 404 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), createMesh(), and oneRefinementIteration().

double HNMesh3D::vertex_X [static, private]

Initial value:

                      { 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 ,
                        0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 , 0.0 , 1.0/3.0 , 2.0/3.0 , 1.0 }

Definition at line 586 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

double HNMesh3D::vertex_Y [static, private]

Initial value:

                      { 0.0 , 0.0 , 0.0 , 0.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
                        0.0 , 0.0 , 0.0 , 0.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
                        0.0 , 0.0 , 0.0 , 0.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
                        0.0 , 0.0 , 0.0 , 0.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 1.0 , 1.0 , 1.0 , 1.0 }

Definition at line 588 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

double HNMesh3D::vertex_Z [static, private]

Initial value:

                      { 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,
                    0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,
                        1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 , 1.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 ,
                        2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 , 2.0/3.0 ,
                        1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0  , 1.0 , 1.0 ,
                        1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0  , 1.0 , 1.0 }

Definition at line 590 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

[vertexGID] if vertex is inside the domain then > 0 , -1 otherwise

Definition at line 532 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapLIDToGID().

int HNMesh3D::vertexInParentIndex [static, private]

Initial value:

                      { -1,  0,  1, -1,  0, 20, 21,  0,  1, 22, 23,  1, -1,  0,  1, -1,  0, 20, 21,  0,
                      20, -1, -1, 20, 21, -1, -1, 21,  0, 20, 21,  0,  1, 22, 23,  1, 22, -1, -1, 22,
                      23, -1, -1, 23,  1, 22, 23,  1, -1,  0,  1, -1,  0, 20, 21,  0,  1, 22, 23,  1,
                        -1,  0,  1, -1  }

Definition at line 595 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

[leaf_vertexGID] , the value must be a positive number

Definition at line 524 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), and mapGIDToLID().

[vertexLID] if vertex is inside the domain then > 0 , -1 otherwise

Definition at line 509 of file SundanceHNMesh3D.hpp.

Referenced by createLeafNumbering(), createLeafNumbering_sophisticated(), facetLID(), facetLID_tree(), and mapGIDToLID().

int HNMesh3D::vertexToParentEdge [static, private]

Initial value:

                      { -1,  0,  0, -1,  1, 20, 20,  3,  1, 20, 20,  3, -1,  5,  5, -1,  2, 21, 21,  4,
                        22, -1, -1, 23, 22, -1, -1, 23,  6, 24, 24,  7,  2, 21, 21,  4, 22, -1, -1, 23,
                        22, -1, -1, 23,  6, 24, 24,  7, -1,  8,  8, -1,  9, 25, 25, 10,  9, 25, 25, 10,
                        -1, 11, 11, -1  }

Definition at line 593 of file SundanceHNMesh3D.hpp.

Referenced by refineCell().

int HNMesh3D::vInd [static, private]

used for coarse mesh creation for the vertex indexing

Definition at line 577 of file SundanceHNMesh3D.hpp.

Referenced by createCoarseMesh(), refineCell(), and updateLocalCoarseNumbering().

Site Contact