
Public Member Functions | |
| NodalDOFMapHN (const Mesh &mesh, int nFuncs, const CellFilter &maxCellFilter, int setupVerb) | |
| virtual | ~NodalDOFMapHN () |
| RCP< const MapStructure > | getDOFsForCellBatch (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 MapStructure > | mapStruct () 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 MapStructure > | structure_ |
| 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_ |
Definition at line 50 of file SundanceNodalDOFMapHN.hpp.
| NodalDOFMapHN::NodalDOFMapHN | ( | const Mesh & | mesh, | |
| int | nFuncs, | |||
| const CellFilter & | maxCellFilter, | |||
| int | setupVerb | |||
| ) |
| virtual Sundance::NodalDOFMapHN::~NodalDOFMapHN | ( | ) | [inline, virtual] |
Definition at line 60 of file SundanceNodalDOFMapHN.hpp.
| void NodalDOFMapHN::computeOffsets | ( | int | localCount | ) | [protected] |
Definition at line 566 of file SundanceNodalDOFMapHN.cpp.
References Sundance::DOFMapBase::comm(), Sundance::Mesh::comm(), Playa::MPIComm::getNProc(), Playa::MPIComm::getRank(), Sundance::DOFMapBase::mesh(), nFuncs_, nNodes_, nodeDofs_, Sundance::DOFMapBase::setLowestLocalDOF(), Sundance::DOFMapBase::setNumLocalDOFs(), Sundance::DOFMapBase::setTotalNumDOFs(), Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG2.
Referenced by init().
| 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.
| 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() 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] k=0...nDOFsPerCell[c]-1 nDOFsPerCell[c]
= mapStructure.basis(basisChunk).nNodes( spatialDim,
this->mesh()->cellType(cellDim) ) *
mapStructure.numFuncs(basisChunk)
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. |
requestedFuncSet.setDifference( this->allowedFuncsOnCellBatch(cellDim,cellLIDs) ).size() == 0
mapStructure where mapStructure = *returnVal.
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] |
See subclass for docu.
Function for nodal plotting.
Implements Sundance::HNDoFMapBase.
Definition at line 412 of file SundanceNodalDOFMapHN.cpp.
References Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), hangindNodeLID_to_Coefs_, hangingNodeLID_to_NodesLIDs_, nFuncs_, and nodeDofs_.
| 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] |
| 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.
| 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] |
Definition at line 74 of file SundanceNodalDOFMapHN.cpp.
References Sundance::CellSet::begin(), cellsWithHangingDoF_globalDoFs_, Sundance::DOFMapBase::comm(), computeOffsets(), dim_, elemDofs_, Sundance::CellSet::end(), facetLID_, Sundance::CellFilter::getCells(), Sundance::Mesh::getFacetLIDs(), getPointLIDsForHN(), hangindNodeLID_to_Coefs_, hangingNodeLID_to_NodesLIDs_, hasCellHanging_, Sundance::DOFMapBase::isRemote(), Sundance::Mesh::mapLIDToGID(), matrixStore_, maxCellFilter_, maxCellLIDwithHN_to_TrafoMatrix_, Sundance::DOFMapBase::mesh(), nElems_, nFacets_, nFuncs_, nNodes_, nodeDofs_, Sundance::Mesh::numFacets(), Sundance::Map< Key, Value, Compare >::put(), Sundance::DOFMapBase::setupVerb(), shareRemoteDOFs(), and SUNDANCE_MSG2.
Referenced by NodalDOFMapHN().
| 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] |
| void NodalDOFMapHN::shareRemoteDOFs | ( | const Array< Array< int > > & | remoteNodes | ) | [protected] |
Definition at line 597 of file SundanceNodalDOFMapHN.cpp.
References Sundance::DOFMapBase::addGhostIndex(), Sundance::DOFMapBase::comm(), Sundance::Mesh::comm(), Playa::MPIComm::getNProc(), Playa::MPIComm::getRank(), Sundance::Mesh::mapGIDToLID(), Sundance::DOFMapBase::mesh(), nFuncs_, nodeDofs_, Sundance::DOFMapBase::setupVerb(), SUNDANCE_MSG2, and SUNDANCE_MSG3.
Referenced by init().
Sundance::Map< int , Array<int> > Sundance::NodalDOFMapHN::cells_To_NodeLIDs_ [protected] |
maps one Cell index to the point LIDs, where are global DoFs which
Definition at line 164 of file SundanceNodalDOFMapHN.hpp.
Sundance::Map< int , Array<int> > Sundance::NodalDOFMapHN::cellsWithHangingDoF_globalDoFs_ [protected] |
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().
int Sundance::NodalDOFMapHN::dim_ [protected] |
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] |
Sundance::Map< int , Array<double> > Sundance::NodalDOFMapHN::hangindNodeLID_to_Coefs_ [protected] |
Maps the local (hanging) node (Point) DoF to the global DoFs.
Definition at line 170 of file SundanceNodalDOFMapHN.hpp.
Referenced by getDOFsForHNCell(), and init().
Sundance::Map< int , Array<int> > Sundance::NodalDOFMapHN::hangingNodeLID_to_NodesLIDs_ [protected] |
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().
Array<bool> Sundance::NodalDOFMapHN::hasCellHanging_ [protected] |
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().
CellFilter Sundance::NodalDOFMapHN::maxCellFilter_ [protected] |
Sundance::Map< int , int > Sundance::NodalDOFMapHN::maxCellLIDwithHN_to_TrafoMatrix_ [protected] |
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().
int Sundance::NodalDOFMapHN::nElems_ [protected] |
int Sundance::NodalDOFMapHN::nFacets_ [protected] |
Definition at line 146 of file SundanceNodalDOFMapHN.hpp.
Referenced by getTrafoMatrixForCell(), and init().
int Sundance::NodalDOFMapHN::nFuncs_ [protected] |
Definition at line 138 of file SundanceNodalDOFMapHN.hpp.
Referenced by computeOffsets(), getDOFsForCellBatch(), getDOFsForHNCell(), init(), nFuncs(), and shareRemoteDOFs().
int Sundance::NodalDOFMapHN::nNodes_ [protected] |
Definition at line 142 of file SundanceNodalDOFMapHN.hpp.
Referenced by computeOffsets(), and init().
int Sundance::NodalDOFMapHN::nNodesPerElem_ [protected] |
Array<int> Sundance::NodalDOFMapHN::nodeDofs_ [protected] |
Definition at line 150 of file SundanceNodalDOFMapHN.hpp.
Referenced by computeOffsets(), getDOFsForCellBatch(), getDOFsForHNCell(), init(), and shareRemoteDOFs().
Array<bool> Sundance::NodalDOFMapHN::nodeIsHanging_ [protected] |
RCP<const MapStructure> Sundance::NodalDOFMapHN::structure_ [protected] |
Definition at line 152 of file SundanceNodalDOFMapHN.hpp.
Referenced by getDOFsForCellBatch(), and mapStruct().