
Public Member Functions | |
| NodalDOFMap (const Mesh &mesh, int nFuncs, const CellFilter &maxCellFilter, int setupVerb) | |
| virtual | ~NodalDOFMap () |
| 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. | |
| RCP< const MapStructure > | mapStruct () const |
| int | nFuncs () const |
Protected Member Functions | |
| void | init () |
| void | computeOffsets (int localCount) |
| void | shareRemoteDOFs (const Array< Array< int > > &remoteNodes) |
Protected Attributes | |
| CellFilter | maxCellFilter_ |
| int | dim_ |
| int | nFuncs_ |
| int | nElems_ |
| int | nNodes_ |
| int | nNodesPerElem_ |
| Array< int > | elemDofs_ |
| Array< int > | nodeDofs_ |
| RCP< const MapStructure > | structure_ |
Definition at line 48 of file SundanceNodalDOFMap.hpp.
| NodalDOFMap::NodalDOFMap | ( | const Mesh & | mesh, | |
| int | nFuncs, | |||
| const CellFilter & | maxCellFilter, | |||
| int | setupVerb | |||
| ) |
| virtual Sundance::NodalDOFMap::~NodalDOFMap | ( | ) | [inline, virtual] |
Definition at line 57 of file SundanceNodalDOFMap.hpp.
| void NodalDOFMap::computeOffsets | ( | int | localCount | ) | [protected] |
Definition at line 233 of file SundanceNodalDOFMap.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(), and Sundance::DOFMapBase::setTotalNumDOFs().
Referenced by init().
| RCP< const MapStructure > NodalDOFMap::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 65 of file SundanceNodalDOFMap.cpp.
References Sundance::DOFMapBase::batchedDofLookupTimer(), dim_, elemDofs_, Sundance::Mesh::getFacetLIDs(), Sundance::DOFMapBase::mesh(), nFuncs_, nNodesPerElem_, nodeDofs_, Sundance::Mesh::numFacets(), structure_, and SUNDANCE_MSG3.
| void NodalDOFMap::init | ( | ) | [protected] |
Definition at line 145 of file SundanceNodalDOFMap.cpp.
References Sundance::CellSet::begin(), Sundance::DOFMapBase::comm(), computeOffsets(), dim_, elemDofs_, Sundance::CellSet::end(), Sundance::CellFilter::getCells(), Sundance::Mesh::getFacetLIDs(), Sundance::DOFMapBase::isRemote(), Sundance::Mesh::mapLIDToGID(), maxCellFilter_, Sundance::DOFMapBase::mesh(), nElems_, nFuncs_, nNodes_, nodeDofs_, Sundance::Mesh::numFacets(), Sundance::DOFMapBase::setupVerb(), shareRemoteDOFs(), and SUNDANCE_MSG1.
Referenced by NodalDOFMap().
| RCP<const MapStructure> Sundance::NodalDOFMap::mapStruct | ( | ) | const [inline, virtual] |
Implements Sundance::SpatiallyHomogeneousDOFMapBase.
Definition at line 69 of file SundanceNodalDOFMap.hpp.
References structure_.
| int Sundance::NodalDOFMap::nFuncs | ( | ) | const [inline] |
| void NodalDOFMap::shareRemoteDOFs | ( | const Array< Array< int > > & | remoteNodes | ) | [protected] |
Definition at line 262 of file SundanceNodalDOFMap.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, SUNDANCE_MSG3, and SUNDANCE_MSG4.
Referenced by init().
int Sundance::NodalDOFMap::dim_ [protected] |
Definition at line 84 of file SundanceNodalDOFMap.hpp.
Referenced by getDOFsForCellBatch(), and init().
Array<int> Sundance::NodalDOFMap::elemDofs_ [protected] |
Definition at line 89 of file SundanceNodalDOFMap.hpp.
Referenced by getDOFsForCellBatch(), and init().
CellFilter Sundance::NodalDOFMap::maxCellFilter_ [protected] |
int Sundance::NodalDOFMap::nElems_ [protected] |
int Sundance::NodalDOFMap::nFuncs_ [protected] |
Definition at line 85 of file SundanceNodalDOFMap.hpp.
Referenced by computeOffsets(), getDOFsForCellBatch(), init(), nFuncs(), and shareRemoteDOFs().
int Sundance::NodalDOFMap::nNodes_ [protected] |
int Sundance::NodalDOFMap::nNodesPerElem_ [protected] |
Array<int> Sundance::NodalDOFMap::nodeDofs_ [protected] |
Definition at line 90 of file SundanceNodalDOFMap.hpp.
Referenced by computeOffsets(), getDOFsForCellBatch(), init(), and shareRemoteDOFs().
RCP<const MapStructure> Sundance::NodalDOFMap::structure_ [protected] |
Definition at line 91 of file SundanceNodalDOFMap.hpp.
Referenced by getDOFsForCellBatch(), and mapStruct().