Public Member Functions | |
| MixedDOFMap (const Mesh &mesh, const Array< RCP< BasisDOFTopologyBase > > &basis, const CellFilter &maxCells, int setupVerb) | |
| virtual | ~MixedDOFMap () |
| RCP< const MapStructure > | getDOFsForCellBatch (int cellDim, const Array< int > &cellLID, const Set< int > &requestedFuncSet, Array< Array< int > > &dofs, Array< int > &nNodes, int verbosity) const |
| RCP< const MapStructure > | mapStruct () const |
| int | chunkForFuncID (int funcID) const |
| int | indexForFuncID (int funcID) const |
| int | nFuncs (int basisChunk) const |
| int | nBasisChunks () const |
| const RCP< BasisDOFTopologyBase > & | basis (int basisChunk) const |
| const Array< int > & | funcID (int basisChunk) const |
Private Member Functions | |
| void | checkTable () const |
| int | getInitialDOFForCell (int cellDim, int cellLID, int basisChunk) const |
| int * | getInitialDOFPtrForCell (int cellDim, int cellLID, int basisChunk) |
| const int * | getInitialDOFPtrForCell (int cellDim, int cellLID, int basisChunk) const |
| void | allocate (const Mesh &mesh) |
| void | buildMaximalDofTable () const |
| bool | hasBeenAssigned (int cellDim, int cellLID) const |
| void | markAsAssigned (int cellDim, int cellLID) |
| void | initMap () |
| void | setDOFs (int basisChunk, int cellDim, int cellLID, int &nextDOF, bool isRemote=false) |
| void | shareDOFs (int cellDim, const Array< Array< int > > &outgoingCellRequests) |
| void | computeOffsets (int dim, int localCount) |
Static Private Member Functions | |
| static int | uninitializedVal () |
Private Attributes | |
| CellFilter | maxCells_ |
| int | dim_ |
| Array< Array< Array< int > > > | dofs_ |
| Array< Array< int > > | maximalDofs_ |
| bool | haveMaximalDofs_ |
| Array< Array< Array< Array < Array< int > > > > > | localNodePtrs_ |
| Array< Array< int > > | nNodesPerCell_ |
| Array< Array< int > > | nDofsPerCell_ |
| Array< Array< int > > | totalNNodesPerCell_ |
| Array< Array< int > > | totalNDofsPerCell_ |
| Array< int > | cellHasAnyDOFs_ |
| Array< Array< int > > | numFacets_ |
| Array< Array< int > > | originalFacetOrientation_ |
| Array< Array< int > > | hasBeenAssigned_ |
| RCP< const MapStructure > | structure_ |
| Array< int > | nFuncs_ |
A MixedDOFMap is a DOF map for the case where every function is defined on every cell in the mesh, but where functions may have different bases.
Definition at line 63 of file SundanceMixedDOFMap.hpp.
| MixedDOFMap::MixedDOFMap | ( | const Mesh & | mesh, |
| const Array< RCP< BasisDOFTopologyBase > > & | basis, | ||
| const CellFilter & | maxCells, | ||
| int | setupVerb | ||
| ) |
Definition at line 74 of file SundanceMixedDOFMap.cpp.
References allocate(), basis(), buildMaximalDofTable(), checkTable(), Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), initMap(), mixedDOFCtorTimer(), nFuncs_, Sundance::Map< Key, Value, Compare >::put(), structure_, SUNDANCE_MSG1, and SUNDANCE_MSG2.
| virtual Sundance::MixedDOFMap::~MixedDOFMap | ( | ) | [inline, virtual] |
Definition at line 73 of file SundanceMixedDOFMap.hpp.
| void MixedDOFMap::allocate | ( | const Mesh & | mesh | ) | [private] |
Definition at line 144 of file SundanceMixedDOFMap.cpp.
References Sundance::Mesh::assignIntermediateCellGIDs(), basis(), cellHasAnyDOFs_, Sundance::Mesh::cellType(), dim_, dofs_, hasBeenAssigned_, localNodePtrs_, maximalDofs_, Sundance::DOFMapBase::mesh(), nBasisChunks(), nDofsPerCell_, nFuncs(), nNodesPerCell_, Sundance::Mesh::numCells(), Sundance::Mesh::numFacets(), numFacets_, originalFacetOrientation_, Sundance::DOFMapBase::setupVerb(), Sundance::Mesh::spatialDim(), SUNDANCE_MSG1, SUNDANCE_MSG2, SUNDANCE_MSG3, totalNDofsPerCell_, totalNNodesPerCell_, and uninitializedVal().
Referenced by MixedDOFMap().
| const RCP<BasisDOFTopologyBase>& Sundance::MixedDOFMap::basis | ( | int | basisChunk | ) | const [inline] |
Definition at line 105 of file SundanceMixedDOFMap.hpp.
References structure_.
Referenced by allocate(), and MixedDOFMap().
| void MixedDOFMap::buildMaximalDofTable | ( | ) | const [private] |
Definition at line 750 of file SundanceMixedDOFMap.cpp.
References Sundance::DOFMapBase::cellDim(), dim_, dofs_, Sundance::Mesh::getFacetLIDs(), haveMaximalDofs_, localNodePtrs_, maxDOFBuildTimer(), maximalDofs_, Sundance::DOFMapBase::mesh(), nBasisChunks(), nDofsPerCell_, nFuncs(), nNodesPerCell_, Sundance::Mesh::numCells(), Sundance::numFacets(), Sundance::Mesh::numFacets(), originalFacetOrientation_, Sundance::DOFMapBase::setupVerb(), SUNDANCE_MSG2, SUNDANCE_MSG4, and totalNNodesPerCell_.
Referenced by MixedDOFMap().
| void MixedDOFMap::checkTable | ( | ) | const [private] |
Definition at line 956 of file SundanceMixedDOFMap.cpp.
References Playa::MPIComm::allReduce(), Sundance::DOFMapBase::comm(), dofs_, Playa::MPIDataType::intType(), and Playa::MPIOp::sumOp().
Referenced by MixedDOFMap().
| int Sundance::MixedDOFMap::chunkForFuncID | ( | int | funcID | ) | const [inline] |
Definition at line 89 of file SundanceMixedDOFMap.hpp.
References structure_.
| void MixedDOFMap::computeOffsets | ( | int | dim, |
| int | localCount | ||
| ) | [private] |
Definition at line 894 of file SundanceMixedDOFMap.cpp.
References Sundance::Mesh::comm(), Sundance::DOFMapBase::comm(), dofs_, Playa::MPIComm::getRank(), Sundance::DOFMapBase::mesh(), Sundance::DOFMapBase::setLowestLocalDOF(), Sundance::DOFMapBase::setNumLocalDOFs(), Sundance::DOFMapBase::setTotalNumDOFs(), Sundance::DOFMapBase::setupVerb(), SUNDANCE_MSG2, and Playa::MPIComm::synchronize().
Referenced by initMap().
| const Array<int>& Sundance::MixedDOFMap::funcID | ( | int | basisChunk | ) | const [inline] |
Definition at line 109 of file SundanceMixedDOFMap.hpp.
References structure_.
| RCP< const MapStructure > MixedDOFMap::getDOFsForCellBatch | ( | int | cellDim, |
| const Array< int > & | cellLID, | ||
| const Set< int > & | requestedFuncSet, | ||
| Array< Array< int > > & | dofs, | ||
| Array< int > & | nNodes, | ||
| int | verbosity | ||
| ) | const [virtual] |
Implements Sundance::DOFMapBase.
Definition at line 579 of file SundanceMixedDOFMap.cpp.
References Sundance::numFacets(), SUNDANCE_MSG3, and SUNDANCE_MSG4.
| int Sundance::MixedDOFMap::getInitialDOFForCell | ( | int | cellDim, |
| int | cellLID, | ||
| int | basisChunk | ||
| ) | const [inline, private] |
Definition at line 119 of file SundanceMixedDOFMap.hpp.
References Sundance::DOFMapBase::cellDim(), dofs_, and nDofsPerCell_.
Referenced by shareDOFs().
| int* Sundance::MixedDOFMap::getInitialDOFPtrForCell | ( | int | cellDim, |
| int | cellLID, | ||
| int | basisChunk | ||
| ) | [inline, private] |
Definition at line 124 of file SundanceMixedDOFMap.hpp.
References Sundance::DOFMapBase::cellDim(), dofs_, and nDofsPerCell_.
Referenced by setDOFs().
| const int* Sundance::MixedDOFMap::getInitialDOFPtrForCell | ( | int | cellDim, |
| int | cellLID, | ||
| int | basisChunk | ||
| ) | const [inline, private] |
Definition at line 129 of file SundanceMixedDOFMap.hpp.
References Sundance::DOFMapBase::cellDim(), dofs_, and nDofsPerCell_.
| bool Sundance::MixedDOFMap::hasBeenAssigned | ( | int | cellDim, |
| int | cellLID | ||
| ) | const [inline, private] |
Definition at line 141 of file SundanceMixedDOFMap.hpp.
References Sundance::DOFMapBase::cellDim(), and hasBeenAssigned_.
Referenced by initMap().
| int Sundance::MixedDOFMap::indexForFuncID | ( | int | funcID | ) | const [inline] |
Definition at line 93 of file SundanceMixedDOFMap.hpp.
References structure_.
| void MixedDOFMap::initMap | ( | ) | [private] |
Definition at line 284 of file SundanceMixedDOFMap.cpp.
References Sundance::CellSet::begin(), cellHasAnyDOFs_, Sundance::Mesh::comm(), Sundance::DOFMapBase::comm(), computeOffsets(), dim_, Sundance::CellSet::end(), Sundance::CellFilter::getCells(), Sundance::Mesh::getFacetArray(), Playa::MPIComm::getNProc(), hasBeenAssigned(), Sundance::DOFMapBase::isRemote(), Sundance::Mesh::mapLIDToGID(), markAsAssigned(), maxCells_, Sundance::DOFMapBase::mesh(), nBasisChunks(), numFacets_, Sundance::DOFMapBase::numLocalDOFs(), originalFacetOrientation_, setDOFs(), Sundance::DOFMapBase::setLowestLocalDOF(), Sundance::DOFMapBase::setNumLocalDOFs(), Sundance::DOFMapBase::setTotalNumDOFs(), Sundance::DOFMapBase::setupVerb(), shareDOFs(), SUNDANCE_MSG1, and SUNDANCE_MSG4.
Referenced by MixedDOFMap().
| RCP<const MapStructure> Sundance::MixedDOFMap::mapStruct | ( | ) | const [inline, virtual] |
Implements Sundance::SpatiallyHomogeneousDOFMapBase.
Definition at line 85 of file SundanceMixedDOFMap.hpp.
References structure_.
| void Sundance::MixedDOFMap::markAsAssigned | ( | int | cellDim, |
| int | cellLID | ||
| ) | [inline, private] |
Definition at line 144 of file SundanceMixedDOFMap.hpp.
References Sundance::DOFMapBase::cellDim(), and hasBeenAssigned_.
Referenced by initMap().
| int Sundance::MixedDOFMap::nBasisChunks | ( | ) | const [inline] |
Definition at line 101 of file SundanceMixedDOFMap.hpp.
References nFuncs_.
Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().
| int Sundance::MixedDOFMap::nFuncs | ( | int | basisChunk | ) | const [inline] |
Definition at line 97 of file SundanceMixedDOFMap.hpp.
References nFuncs_.
Referenced by allocate(), and buildMaximalDofTable().
| void MixedDOFMap::setDOFs | ( | int | basisChunk, |
| int | cellDim, | ||
| int | cellLID, | ||
| int & | nextDOF, | ||
| bool | isRemote = false |
||
| ) | [private] |
Definition at line 548 of file SundanceMixedDOFMap.cpp.
References Sundance::DOFMapBase::addGhostIndex(), Sundance::DOFMapBase::cellDim(), getInitialDOFPtrForCell(), nDofsPerCell_, Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG3.
Referenced by initMap(), and shareDOFs().
| void MixedDOFMap::shareDOFs | ( | int | cellDim, |
| const Array< Array< int > > & | outgoingCellRequests | ||
| ) | [private] |
Definition at line 416 of file SundanceMixedDOFMap.cpp.
References Sundance::DOFMapBase::cellDim(), Sundance::Mesh::comm(), Sundance::DOFMapBase::comm(), dim_, dofs_, getInitialDOFForCell(), Playa::MPIComm::getNProc(), Playa::MPIComm::getRank(), Sundance::Mesh::mapGIDToLID(), Sundance::DOFMapBase::mesh(), nBasisChunks(), nDofsPerCell_, originalFacetOrientation_, setDOFs(), Sundance::DOFMapBase::setupVerb(), SUNDANCE_MSG2, SUNDANCE_MSG3, and SUNDANCE_MSG4.
Referenced by initMap().
| static int Sundance::MixedDOFMap::uninitializedVal | ( | ) | [inline, static, private] |
Definition at line 162 of file SundanceMixedDOFMap.hpp.
Referenced by allocate().
Array<int> Sundance::MixedDOFMap::cellHasAnyDOFs_ [private] |
Indicates whether the cells of each dimension have any DOFs in this map, for any chunk.
Definition at line 214 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and initMap().
int Sundance::MixedDOFMap::dim_ [private] |
spatial dimension
Definition at line 168 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().
Array<Array<Array<int> > > Sundance::MixedDOFMap::dofs_ [private] |
Tables of DOFs, indexed by dimension and chunk number.
dof(cellDim, cellLID, chunk, func, node) = dofs_[cellDim][chunk][(cellLID*nFunc + func)*nNode + node]
Definition at line 175 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), checkTable(), computeOffsets(), getInitialDOFForCell(), getInitialDOFPtrForCell(), and shareDOFs().
Array<Array<int> > Sundance::MixedDOFMap::hasBeenAssigned_ [private] |
Definition at line 226 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), hasBeenAssigned(), and markAsAssigned().
bool Sundance::MixedDOFMap::haveMaximalDofs_ [mutable, private] |
whether maximal DOFs have been tabulated
Definition at line 185 of file SundanceMixedDOFMap.hpp.
Referenced by buildMaximalDofTable().
Array<Array<Array<Array<Array<int> > > > > Sundance::MixedDOFMap::localNodePtrs_ [private] |
localNodePtrs_[basisChunk][cellDim][facetDim][facetNumber][nodeNumber]
Definition at line 190 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().
CellFilter Sundance::MixedDOFMap::maxCells_ [private] |
Definition at line 165 of file SundanceMixedDOFMap.hpp.
Referenced by initMap().
Array<Array<int> > Sundance::MixedDOFMap::maximalDofs_ [mutable, private] |
DOFs for maximal cells, indexed by basis chunk number
dof(cellLID, chunk, func, node) = maximalDofs_[chunk][(cellLID*nFunc + func)*nNode + node];
Definition at line 182 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().
Array<Array<int> > Sundance::MixedDOFMap::nDofsPerCell_ [private] |
The number of DOFs per cell, for each basis function type, not including the DOFs of the facets of the cell. Indexed as nDofsPerCell_[basis][dimension]
Definition at line 200 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), getInitialDOFForCell(), getInitialDOFPtrForCell(), setDOFs(), and shareDOFs().
Array<int> Sundance::MixedDOFMap::nFuncs_ [private] |
Definition at line 232 of file SundanceMixedDOFMap.hpp.
Referenced by MixedDOFMap(), nBasisChunks(), and nFuncs().
Array<Array<int> > Sundance::MixedDOFMap::nNodesPerCell_ [private] |
The number of nodes per cell, for each basis function type, not including the nodes of the facets of the cell. Indexed as nNodesPerCell_[basis][dimension]
Definition at line 195 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().
Array<Array<int> > Sundance::MixedDOFMap::numFacets_ [private] |
number of facets of dimension facetDim for cells of dimension cellDim. Indexed as numFacets_[cellDim][facetDim]
Definition at line 219 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and initMap().
Array<Array<int> > Sundance::MixedDOFMap::originalFacetOrientation_ [private] |
Orientation of each edge or face as seen by the maximal cell from which its DOFs were originally assigned.
Definition at line 223 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().
RCP<const MapStructure> Sundance::MixedDOFMap::structure_ [private] |
Definition at line 229 of file SundanceMixedDOFMap.hpp.
Referenced by basis(), chunkForFuncID(), funcID(), indexForFuncID(), mapStruct(), and MixedDOFMap().
Array<Array<int> > Sundance::MixedDOFMap::totalNDofsPerCell_ [private] |
The number of DOFs per cell, for each basis function type, including the DOFs of the facets of the cell. Indexed as nDofsPerCell_[basis][dimension]
Definition at line 210 of file SundanceMixedDOFMap.hpp.
Referenced by allocate().
Array<Array<int> > Sundance::MixedDOFMap::totalNNodesPerCell_ [private] |
The number of nodes per cell, for each basis function type, including the nodes of the facets of the cell. Indexed as nNodesPerCell_[basis][dimension]
Definition at line 205 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().