Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
Sundance::MixedDOFMap Class Reference
Inheritance diagram for Sundance::MixedDOFMap:
Sundance::SpatiallyHomogeneousDOFMapBase Sundance::DOFMapBase Playa::Printable

List of all members.

Public Member Functions

 MixedDOFMap (const Mesh &mesh, const Array< RCP< BasisDOFTopologyBase > > &basis, const CellFilter &maxCells, int setupVerb)
virtual ~MixedDOFMap ()
RCP< const MapStructuregetDOFsForCellBatch (int cellDim, const Array< int > &cellLID, const Set< int > &requestedFuncSet, Array< Array< int > > &dofs, Array< int > &nNodes, int verbosity) const
RCP< const MapStructuremapStruct () 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 MapStructurestructure_
Array< int > nFuncs_

Detailed Description

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.


Constructor & Destructor Documentation

MixedDOFMap::MixedDOFMap ( const Mesh mesh,
const Array< RCP< BasisDOFTopologyBase > > &  basis,
const CellFilter maxCells,
int  setupVerb 
)
virtual Sundance::MixedDOFMap::~MixedDOFMap ( ) [inline, virtual]

Definition at line 73 of file SundanceMixedDOFMap.hpp.


Member Function Documentation

void MixedDOFMap::allocate ( const Mesh mesh) [private]
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]
void MixedDOFMap::checkTable ( ) const [private]
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]
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]
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]
void MixedDOFMap::shareDOFs ( int  cellDim,
const Array< Array< int > > &  outgoingCellRequests 
) [private]
static int Sundance::MixedDOFMap::uninitializedVal ( ) [inline, static, private]

Definition at line 162 of file SundanceMixedDOFMap.hpp.

Referenced by allocate().


Member Data Documentation

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().

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().

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().

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().

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().

Site Contact