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_ |
Definition at line 52 of file SundanceMixedDOFMap.hpp.
MixedDOFMap::MixedDOFMap | ( | const Mesh & | mesh, | |
const Array< RCP< BasisDOFTopologyBase > > & | basis, | |||
const CellFilter & | maxCells, | |||
int | setupVerb | |||
) |
Definition at line 63 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 62 of file SundanceMixedDOFMap.hpp.
void MixedDOFMap::allocate | ( | const Mesh & | mesh | ) | [private] |
Definition at line 133 of file SundanceMixedDOFMap.cpp.
References Sundance::Mesh::assignIntermediateCellGIDs(), basis(), cellHasAnyDOFs_, Sundance::Mesh::cellType(), dim_, dofs_, hasBeenAssigned_, localNodePtrs_, maximalDofs_, 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 94 of file SundanceMixedDOFMap.hpp.
References structure_.
Referenced by allocate(), and MixedDOFMap().
void MixedDOFMap::buildMaximalDofTable | ( | ) | const [private] |
Definition at line 739 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::Mesh::numFacets(), Sundance::numFacets(), originalFacetOrientation_, Sundance::DOFMapBase::setupVerb(), SUNDANCE_MSG2, SUNDANCE_MSG4, and totalNNodesPerCell_.
Referenced by MixedDOFMap().
void MixedDOFMap::checkTable | ( | ) | const [private] |
Definition at line 945 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] |
void MixedDOFMap::computeOffsets | ( | int | dim, | |
int | localCount | |||
) | [private] |
Definition at line 883 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] |
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 568 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 108 of file SundanceMixedDOFMap.hpp.
References dofs_, and nDofsPerCell_.
Referenced by shareDOFs().
const int* Sundance::MixedDOFMap::getInitialDOFPtrForCell | ( | int | cellDim, | |
int | cellLID, | |||
int | basisChunk | |||
) | const [inline, private] |
int* Sundance::MixedDOFMap::getInitialDOFPtrForCell | ( | int | cellDim, | |
int | cellLID, | |||
int | basisChunk | |||
) | [inline, private] |
Definition at line 113 of file SundanceMixedDOFMap.hpp.
References dofs_, and nDofsPerCell_.
Referenced by setDOFs().
bool Sundance::MixedDOFMap::hasBeenAssigned | ( | int | cellDim, | |
int | cellLID | |||
) | const [inline, private] |
Definition at line 130 of file SundanceMixedDOFMap.hpp.
References hasBeenAssigned_.
Referenced by initMap().
int Sundance::MixedDOFMap::indexForFuncID | ( | int | funcID | ) | const [inline] |
void MixedDOFMap::initMap | ( | ) | [private] |
Definition at line 273 of file SundanceMixedDOFMap.cpp.
References Sundance::CellSet::begin(), cellHasAnyDOFs_, Sundance::DOFMapBase::comm(), Sundance::Mesh::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 74 of file SundanceMixedDOFMap.hpp.
References structure_.
void Sundance::MixedDOFMap::markAsAssigned | ( | int | cellDim, | |
int | cellLID | |||
) | [inline, private] |
Definition at line 133 of file SundanceMixedDOFMap.hpp.
References hasBeenAssigned_.
Referenced by initMap().
int Sundance::MixedDOFMap::nBasisChunks | ( | ) | const [inline] |
Definition at line 90 of file SundanceMixedDOFMap.hpp.
References nFuncs_.
Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().
int Sundance::MixedDOFMap::nFuncs | ( | int | basisChunk | ) | const [inline] |
Definition at line 86 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 537 of file SundanceMixedDOFMap.cpp.
References Sundance::DOFMapBase::addGhostIndex(), 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 405 of file SundanceMixedDOFMap.cpp.
References Sundance::DOFMapBase::comm(), Sundance::Mesh::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] |
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 203 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and initMap().
int Sundance::MixedDOFMap::dim_ [private] |
spatial dimension
Definition at line 157 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 164 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), checkTable(), computeOffsets(), getInitialDOFForCell(), getInitialDOFPtrForCell(), and shareDOFs().
Array<Array<int> > Sundance::MixedDOFMap::hasBeenAssigned_ [private] |
Definition at line 215 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 174 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 179 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().
CellFilter Sundance::MixedDOFMap::maxCells_ [private] |
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 171 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 189 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), getInitialDOFForCell(), getInitialDOFPtrForCell(), setDOFs(), and shareDOFs().
Array<int> Sundance::MixedDOFMap::nFuncs_ [private] |
Definition at line 221 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 184 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 208 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 212 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().
RCP<const MapStructure> Sundance::MixedDOFMap::structure_ [private] |
Definition at line 218 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 199 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 194 of file SundanceMixedDOFMap.hpp.
Referenced by allocate(), and buildMaximalDofTable().