Sundance::NodalDOFMapHN Class Reference

Inheritance diagram for Sundance::NodalDOFMapHN:

Sundance::HNDoFMapBaseHomogeneous Sundance::SpatiallyHomogeneousDOFMapBase Sundance::HNDoFMapBase Sundance::DOFMapBase Playa::Printable

List of all members.

Public Member Functions

 NodalDOFMapHN (const Mesh &mesh, int nFuncs, const CellFilter &maxCellFilter, int setupVerb)
virtual ~NodalDOFMapHN ()
RCP< const MapStructuregetDOFsForCellBatch (int cellDim, const Array< int > &cellLID, const Set< int > &requestedFuncSet, Array< Array< int > > &dofs, Array< int > &nNodes, int verb) const
 Return the global DOFs for a batch of cells for a given set of functions on those cells.
void getTrafoMatrixForCell (int cellLID, int funcID, int &trafoMatrixSize, bool &doTransform, Array< double > &transfMatrix) const
void getTrafoMatrixForFacet (int cellDim, int cellLID, int facetIndex, int funcID, int &trafoMatrixSize, bool &doTransform, Array< double > &transfMatrix) const
 Function to apply transformation for facets.
void getDOFsForHNCell (int cellDim, int cellLID, int funcID, Array< int > &dofs, Array< double > &coefs) const
 See subclass for docu.
RCP< const MapStructuremapStruct () const
int nFuncs () const

Protected Member Functions

void init ()
void computeOffsets (int localCount)
void shareRemoteDOFs (const Array< Array< int > > &remoteNodes)
void getPointLIDsForHN (int pointLID, int facetIndex, int maxCellIndex, Array< int > &glbLIDs, Array< double > &coefsArray, Array< int > &nodeIndex)
 This is a temporary function which later could be out source to the Basis.

Protected Attributes

CellFilter maxCellFilter_
int dim_
int nFuncs_
int nElems_
int nNodes_
int nNodesPerElem_
int nFacets_
Array< int > elemDofs_
Array< int > nodeDofs_
RCP< const MapStructurestructure_
Array< bool > hasCellHanging_
 Is true if the cell has hanging node.
Array< bool > nodeIsHanging_
 Is true if the node is hanging.
Sundance::Map< int, Array< int > > cellsWithHangingDoF_globalDoFs_
 maps one Cell index to the point LIDs, where are global DoFs which
Sundance::Map< int, Array< int > > cells_To_NodeLIDs_
 maps one Cell index to the point LIDs, where are global DoFs which
Sundance::Map< int, Array< int > > hangingNodeLID_to_NodesLIDs_
 Maps the local (hanging) node (Point) LID to the global DoFs index.
Sundance::Map< int, Array
< double > > 
hangindNodeLID_to_Coefs_
 Maps the local (hanging) node (Point) DoF to the global DoFs.
Sundance::Map< int, int > maxCellLIDwithHN_to_TrafoMatrix_
 Maps the local (hanging) node (Point) DoF to the matrix index.
MatrixStore matrixStore_
 The object to store all the transformation matrixes.
Array< int > facetLID_


Detailed Description

Definition at line 50 of file SundanceNodalDOFMapHN.hpp.


Constructor & Destructor Documentation

NodalDOFMapHN::NodalDOFMapHN ( const Mesh mesh,
int  nFuncs,
const CellFilter maxCellFilter,
int  setupVerb 
)

Definition at line 46 of file SundanceNodalDOFMapHN.cpp.

References init(), and matrixStore_.

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

Definition at line 60 of file SundanceNodalDOFMapHN.hpp.


Member Function Documentation

void NodalDOFMapHN::computeOffsets ( int  localCount  )  [protected]

RCP< const MapStructure > NodalDOFMapHN::getDOFsForCellBatch ( int  cellDim,
const Array< int > &  cellLIDs,
const Set< int > &  requestedFuncSet,
Array< Array< int > > &  dofs,
Array< int > &  nNodes,
int  verb 
) const [virtual]

Return the global DOFs for a batch of cells for a given set of functions on those cells.

Parameters:
cellDim [in] The dimension of the cells in the batch of cells
cellLIDs [in] Local IDs (LIDs) for the batch of cells
requestedFuncSet [in] Set of function IDs for which DOFs are requested. Note that this must be equal to the allowed set of requested functions this->allowedFuncsOnCellBatch(cellDim,cellLIDs).
dofs [out] Global IDs for DOFs of the requested functions on the batch of cells. The size of this array on output is
           dofs.size()==mapStructure.numBasisChunks() 
. The global DOFs for cell cellLIDs[c] (where 0 <= c < cellLIDs.size()) for the cell for the basis chunk basisChunk (where 0 <= basisChunk < mapStructure.numBasisChunks()) are given by
           dofs[c*nDOFsPerCell[c]+k] 
, where
           k=0...nDOFsPerCell[c]-1 
and
 nDOFsPerCell[c]
           = mapStructure.basis(basisChunk).nNodes( spatialDim,
           this->mesh()->cellType(cellDim) ) *
           mapStructure.numFuncs(basisChunk) 
. Note that the array nDOFsPerCell used above is not actually computed here or returned by this interface. It is only used abstractly to define the dofs array above.
nNodes [out] Array giving the number of coefficients for each type of basis family in mapStructure for each function. The size of this array on return is nNodes.size()==mapStructure.numBasisChunks() and nNodes[b]==mapStructure.basis(b).nNodes(spatialDim,cellType), for b=0...mapStructure.numBasisChunks()-1.
Preconditions:
  • requestedFuncSet.setDifference( this->allowedFuncsOnCellBatch(cellDim,cellLIDs) ).size() == 0
  • ???Others???

Returns:
The map structure that groups sets of different functions according with respect to those that have the same basis family. Above, we will refer to this returned object as mapStructure where mapStructure = *returnVal.
ToDo: Remove the argument requestedFuncSet since all current use cases and implemenations asume that all of the functions are requested and returned.

ToDo: Remove the nNodes return argument since this information can be gotten just from the return mapStructure object. Specifically, nNodes[basisChunk] = mapStructure.basis(basisChunk).nNodes(spatialDim,cellType) so what is the point in returning this array? Since this is needed for a whole batch of cells, it is cheap to just grab this from the returned mapStructure object as shown above.

Implements Sundance::DOFMapBase.

Definition at line 243 of file SundanceNodalDOFMapHN.cpp.

References Sundance::DOFMapBase::batchedDofLookupTimer(), dim_, elemDofs_, Sundance::Mesh::facetLID(), Sundance::Mesh::getFacetLIDs(), Sundance::Mesh::maxCofacetLID(), Sundance::DOFMapBase::mesh(), nFuncs_, nNodesPerElem_, nodeDofs_, Sundance::numFacets(), Sundance::Mesh::numFacets(), Sundance::Mesh::returnParentFacets(), structure_, and SUNDANCE_MSG2.

void NodalDOFMapHN::getDOFsForHNCell ( int  cellDim,
int  cellLID,
int  funcID,
Array< int > &  dofs,
Array< double > &  coefs 
) const [virtual]

void NodalDOFMapHN::getPointLIDsForHN ( int  pointLID,
int  facetIndex,
int  maxCellIndex,
Array< int > &  glbLIDs,
Array< double > &  coefsArray,
Array< int > &  nodeIndex 
) [protected]

This is a temporary function which later could be out source to the Basis.

This function is only for TRISECTION implemented.

Definition at line 437 of file SundanceNodalDOFMapHN.cpp.

References dim_, Sundance::Mesh::indexInParent(), Sundance::DOFMapBase::mesh(), Sundance::Mesh::returnParentFacets(), Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG2.

Referenced by init().

void NodalDOFMapHN::getTrafoMatrixForCell ( int  cellLID,
int  funcID,
int &  trafoMatrixSize,
bool &  doTransform,
Array< double > &  transfMatrix 
) const [virtual]

Parameters:
cellLID [in] the maxCell LID input
funcID [in] the function ID
trafoMatrixSize [in/out]
doTransform [out]
transfMatrix [out] (we assume that the array is already pre-sized )

Implements Sundance::HNDoFMapBase.

Definition at line 359 of file SundanceNodalDOFMapHN.cpp.

References cellsWithHangingDoF_globalDoFs_, Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), matrixStore_, maxCellLIDwithHN_to_TrafoMatrix_, and nFacets_.

void NodalDOFMapHN::getTrafoMatrixForFacet ( int  cellDim,
int  cellLID,
int  facetIndex,
int  funcID,
int &  trafoMatrixSize,
bool &  doTransform,
Array< double > &  transfMatrix 
) const [virtual]

Function to apply transformation for facets.

Parameters:
cellDim,the facet dimension
cellLID,facet LID
facetIndex,facet index in the maxCofacet
funcID [in] the function ID
trafoMatrixSize [in/out]
doTransform [out]
transfMatrix [out] (we assume that the array is already pre-sized )

Implements Sundance::HNDoFMapBase.

Definition at line 381 of file SundanceNodalDOFMapHN.cpp.

References cellsWithHangingDoF_globalDoFs_, Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), matrixStore_, maxCellLIDwithHN_to_TrafoMatrix_, Sundance::Mesh::maxCofacetLID(), Sundance::DOFMapBase::mesh(), Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG2.

void NodalDOFMapHN::init (  )  [protected]

RCP<const MapStructure> Sundance::NodalDOFMapHN::mapStruct (  )  const [inline, virtual]

Implements Sundance::SpatiallyHomogeneousDOFMapBase.

Definition at line 112 of file SundanceNodalDOFMapHN.hpp.

References structure_.

int Sundance::NodalDOFMapHN::nFuncs (  )  const [inline]

Definition at line 116 of file SundanceNodalDOFMapHN.hpp.

References nFuncs_.

void NodalDOFMapHN::shareRemoteDOFs ( const Array< Array< int > > &  remoteNodes  )  [protected]


Member Data Documentation

maps one Cell index to the point LIDs, where are global DoFs which

Definition at line 164 of file SundanceNodalDOFMapHN.hpp.

maps one Cell index to the point LIDs, where are global DoFs which

Definition at line 161 of file SundanceNodalDOFMapHN.hpp.

Referenced by getTrafoMatrixForCell(), getTrafoMatrixForFacet(), and init().

Definition at line 136 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForCellBatch(), getPointLIDsForHN(), and init().

Array<int> Sundance::NodalDOFMapHN::elemDofs_ [protected]

Definition at line 148 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForCellBatch(), and init().

Array<int> Sundance::NodalDOFMapHN::facetLID_ [protected]

Definition at line 179 of file SundanceNodalDOFMapHN.hpp.

Referenced by init().

Maps the local (hanging) node (Point) DoF to the global DoFs.

Definition at line 170 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForHNCell(), and init().

Maps the local (hanging) node (Point) LID to the global DoFs index.

Definition at line 167 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForHNCell(), and init().

Is true if the cell has hanging node.

Definition at line 155 of file SundanceNodalDOFMapHN.hpp.

Referenced by init().

MatrixStore Sundance::NodalDOFMapHN::matrixStore_ [protected]

The object to store all the transformation matrixes.

Definition at line 176 of file SundanceNodalDOFMapHN.hpp.

Referenced by getTrafoMatrixForCell(), getTrafoMatrixForFacet(), init(), and NodalDOFMapHN().

Definition at line 134 of file SundanceNodalDOFMapHN.hpp.

Referenced by init().

Maps the local (hanging) node (Point) DoF to the matrix index.

Definition at line 173 of file SundanceNodalDOFMapHN.hpp.

Referenced by getTrafoMatrixForCell(), getTrafoMatrixForFacet(), and init().

Definition at line 140 of file SundanceNodalDOFMapHN.hpp.

Referenced by init().

Definition at line 146 of file SundanceNodalDOFMapHN.hpp.

Referenced by getTrafoMatrixForCell(), and init().

Definition at line 142 of file SundanceNodalDOFMapHN.hpp.

Referenced by computeOffsets(), and init().

Definition at line 144 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForCellBatch().

Array<int> Sundance::NodalDOFMapHN::nodeDofs_ [protected]

Array<bool> Sundance::NodalDOFMapHN::nodeIsHanging_ [protected]

Is true if the node is hanging.

Definition at line 158 of file SundanceNodalDOFMapHN.hpp.

Definition at line 152 of file SundanceNodalDOFMapHN.hpp.

Referenced by getDOFsForCellBatch(), and mapStruct().

Site Contact