Sundance::InhomogeneousDOFMapHN Class Reference

Inheritance diagram for Sundance::InhomogeneousDOFMapHN:

Sundance::HNDoFMapBase Sundance::DOFMapBase Playa::Printable

List of all members.

Public Member Functions

 InhomogeneousDOFMapHN (const Mesh &mesh, const Array< RCP< BasisDOFTopologyBase > > &basis, const Array< Map< Set< int >, CellFilter > > &funcSetToDomainMap, int setupVerb)
virtual ~InhomogeneousDOFMapHN ()
RCP< const MapStructuregetDOFsForCellBatch (int cellDim, const Array< int > &cellLID, const Set< int > &requestedFuncSet, Array< Array< int > > &dofs, Array< int > &nNodes, int verbosity) const
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
RCP< const Set< int > > allowedFuncsOnCellBatch (int cellDim, const Array< int > &cellLID) const
void getDOFsForHNCell (int cellDim, int cellLID, int funcID, Array< int > &dofs, Array< double > &coefs) 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
int getfuncID (int basisChunk, int funcNr) const
const Array< CellFilter > & funcDomains () const
virtual void print (std::ostream &os) const

Private Member Functions

int getInitialDOFForCell (int cellDim, int cellLID, int funcID) const
int * getInitialDOFPtrForCell (int cellDim, int cellLID, int funcID)
const int * getInitialDOFPtrForCell (int cellDim, int cellLID, int funcID) const
void allocate (const Mesh &mesh)
void buildMaximalDofTable ()
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

int dim_
Array< Array< Array< Array
< int > > > > 
dofs_
Array< Array< Array< short
signed int > > > 
funcDefined_
Array< Array< Array< int > > > maximalDofs_
bool haveMaximalDofs_
Array< Array< Array< Array
< Array< int > > > > > 
localNodePtrs_
Array< CellFiltermaxSubdomains_
Array< CellFilterfuncDomains_
Set< int > allFuncs_
Array< Set< int > > elemFuncSetsDomain_
Array< Set< int > > elemFuncSets_
Array< int > funcSetCellCount_
Array< int > maxCellFuncSetsIndex_
int nPoints_
int nrAllFuncs_
Array< bool > hasCellHanging_
Array< Array< bool > > isElementHanging_
Sundance::Map< int, Array< int > > HN_To_globalFacetsLID_
Sundance::Map< int, Array< int > > HN_To_globalFacetsDim_
Sundance::Map< int, Array
< double > > 
HN_To_coeffs_
Sundance::Map< int, Array< int > > maxCellLIDwithHN_to_TrafoMatrix_
MatrixStore matrixStore_
Array< RCP< BasisFamilyBase > > basis_
Array< Array< int > > nNodesPerCell_
Array< Array< int > > nDofsPerCell_
Array< Array< int > > totalNNodesPerCell_
Array< int > cellHasAnyDOFs_
Array< Array< int > > numFacets_
Array< Array< int > > originalFacetOrientation_
Array< Array< int > > hasBeenAssigned_
RCP< const MapStructurestructure_
Array< int > nFuncs_


Detailed Description

A MixedDOFMapHN 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.
MixedDOFMapHN is defined on meshes with hanging nodes, it builds the restriction matrix where it is needed.

Definition at line 57 of file SundanceInhomogeneousDOFMapHN.hpp.


Constructor & Destructor Documentation

InhomogeneousDOFMapHN::InhomogeneousDOFMapHN ( const Mesh mesh,
const Array< RCP< BasisDOFTopologyBase > > &  basis,
const Array< Map< Set< int >, CellFilter > > &  funcSetToDomainMap,
int  setupVerb 
)

virtual Sundance::InhomogeneousDOFMapHN::~InhomogeneousDOFMapHN (  )  [inline, virtual]

Definition at line 67 of file SundanceInhomogeneousDOFMapHN.hpp.


Member Function Documentation

void InhomogeneousDOFMapHN::allocate ( const Mesh mesh  )  [private]

RCP< const Set< int > > InhomogeneousDOFMapHN::allowedFuncsOnCellBatch ( int  cellDim,
const Array< int > &  cellLID 
) const [virtual]

const RCP<BasisDOFTopologyBase>& Sundance::InhomogeneousDOFMapHN::basis ( int  basisChunk  )  const [inline]

Definition at line 145 of file SundanceInhomogeneousDOFMapHN.hpp.

References structure_.

Referenced by allocate(), and InhomogeneousDOFMapHN().

void InhomogeneousDOFMapHN::buildMaximalDofTable (  )  [private]

int Sundance::InhomogeneousDOFMapHN::chunkForFuncID ( int  funcID  )  const [inline]

void InhomogeneousDOFMapHN::computeOffsets ( int  dim,
int  localCount 
) [private]

const Array<CellFilter>& Sundance::InhomogeneousDOFMapHN::funcDomains (  )  const [inline, virtual]

Implements Sundance::DOFMapBase.

Definition at line 158 of file SundanceInhomogeneousDOFMapHN.hpp.

References funcDomains_.

const Array<int>& Sundance::InhomogeneousDOFMapHN::funcID ( int  basisChunk  )  const [inline]

RCP< const MapStructure > InhomogeneousDOFMapHN::getDOFsForCellBatch ( int  cellDim,
const Array< int > &  cellLID,
const Set< int > &  requestedFuncSet,
Array< Array< int > > &  dofs,
Array< int > &  nNodes,
int  verbosity 
) const [virtual]

void InhomogeneousDOFMapHN::getDOFsForHNCell ( int  cellDim,
int  cellLID,
int  funcID,
Array< int > &  dofs,
Array< double > &  coefs 
) const [virtual]

See subclass for docu We can be sure that this is used only for nodal data (for VTK plotting)
This is implemented only for Nodal data call !!!

Function for nodal plotting

Implements Sundance::HNDoFMapBase.

Definition at line 1456 of file SundanceInhomogeneousDOFMapHN.cpp.

References chunkForFuncID(), Sundance::Map< Key, Value, Compare >::containsKey(), dofs_, Sundance::Map< Key, Value, Compare >::get(), HN_To_coeffs_, HN_To_globalFacetsDim_, HN_To_globalFacetsLID_, indexForFuncID(), nPoints_, Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG1.

int Sundance::InhomogeneousDOFMapHN::getfuncID ( int  basisChunk,
int  funcNr 
) const [inline]

Return the function ID for one chunk and index, same as the previous but returns one value

Definition at line 153 of file SundanceInhomogeneousDOFMapHN.hpp.

References funcID().

Referenced by buildMaximalDofTable(), and shareDOFs().

int Sundance::InhomogeneousDOFMapHN::getInitialDOFForCell ( int  cellDim,
int  cellLID,
int  funcID 
) const [inline, private]

Definition at line 166 of file SundanceInhomogeneousDOFMapHN.hpp.

References dofs_.

Referenced by shareDOFs().

const int* Sundance::InhomogeneousDOFMapHN::getInitialDOFPtrForCell ( int  cellDim,
int  cellLID,
int  funcID 
) const [inline, private]

Definition at line 176 of file SundanceInhomogeneousDOFMapHN.hpp.

References dofs_.

int* Sundance::InhomogeneousDOFMapHN::getInitialDOFPtrForCell ( int  cellDim,
int  cellLID,
int  funcID 
) [inline, private]

Definition at line 171 of file SundanceInhomogeneousDOFMapHN.hpp.

References dofs_.

Referenced by setDOFs().

void InhomogeneousDOFMapHN::getTrafoMatrixForCell ( int  cellLID,
int  funcID,
int &  trafoMatrixSize,
bool &  doTransform,
Array< double > &  transfMatrix 
) const [virtual]

Returns the

Parameters:
cellLID [in] the maxCell LID input
funcID [in]
trafoMatrixSize [in/out]
doTransform [out]
transfMatrix [out] row major matrix

Implements Sundance::HNDoFMapBase.

Definition at line 1397 of file SundanceInhomogeneousDOFMapHN.cpp.

References chunkForFuncID(), Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), indexForFuncID(), matrixStore_, maxCellLIDwithHN_to_TrafoMatrix_, Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG1.

void InhomogeneousDOFMapHN::getTrafoMatrixForFacet ( int  cellDim,
int  cellLID,
int  facetIndex,
int  funcID,
int &  trafoMatrixSize,
bool &  doTransform,
Array< double > &  transfMatrix 
) const [virtual]

Function to apply transformation for facets

Parameters:
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 1426 of file SundanceInhomogeneousDOFMapHN.cpp.

References chunkForFuncID(), Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), indexForFuncID(), matrixStore_, maxCellLIDwithHN_to_TrafoMatrix_, Sundance::Mesh::maxCofacetLID(), Sundance::DOFMapBase::mesh(), Sundance::DOFMapBase::setupVerb(), and SUNDANCE_MSG2.

bool Sundance::InhomogeneousDOFMapHN::hasBeenAssigned ( int  cellDim,
int  cellLID 
) const [inline, private]

Definition at line 188 of file SundanceInhomogeneousDOFMapHN.hpp.

References hasBeenAssigned_.

Referenced by initMap().

int Sundance::InhomogeneousDOFMapHN::indexForFuncID ( int  funcID  )  const [inline]

void InhomogeneousDOFMapHN::initMap (  )  [private]

RCP<const MapStructure> Sundance::InhomogeneousDOFMapHN::mapStruct (  )  const [inline]

Definition at line 125 of file SundanceInhomogeneousDOFMapHN.hpp.

References structure_.

void Sundance::InhomogeneousDOFMapHN::markAsAssigned ( int  cellDim,
int  cellLID 
) [inline, private]

Definition at line 191 of file SundanceInhomogeneousDOFMapHN.hpp.

References hasBeenAssigned_.

Referenced by initMap().

int Sundance::InhomogeneousDOFMapHN::nBasisChunks (  )  const [inline]

Definition at line 141 of file SundanceInhomogeneousDOFMapHN.hpp.

References nFuncs_.

Referenced by allocate(), buildMaximalDofTable(), and shareDOFs().

int Sundance::InhomogeneousDOFMapHN::nFuncs ( int  basisChunk  )  const [inline]

Definition at line 137 of file SundanceInhomogeneousDOFMapHN.hpp.

References nFuncs_.

Referenced by buildMaximalDofTable(), and shareDOFs().

void InhomogeneousDOFMapHN::print ( std::ostream &  os  )  const [virtual]

Implements Sundance::DOFMapBase.

Definition at line 1609 of file SundanceInhomogeneousDOFMapHN.cpp.

void InhomogeneousDOFMapHN::setDOFs ( int  basisChunk,
int  cellDim,
int  cellLID,
int &  nextDOF,
bool  isRemote = false 
) [private]

void InhomogeneousDOFMapHN::shareDOFs ( int  cellDim,
const Array< Array< int > > &  outgoingCellRequests 
) [private]

static int Sundance::InhomogeneousDOFMapHN::uninitializedVal (  )  [inline, static, private]

Definition at line 209 of file SundanceInhomogeneousDOFMapHN.hpp.


Member Data Documentation

set which contains all the functions

Definition at line 247 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by InhomogeneousDOFMapHN().

The basis for the transformation

Definition at line 295 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), and InhomogeneousDOFMapHN().

Indicates whether the cells of each dimension have any DOFs in this map, for any chunk.

Definition at line 316 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and initMap().

Array< Array<Array<Array<int> > > > Sundance::InhomogeneousDOFMapHN::dofs_ [private]

Tables of DOFs, indexed by dimension and chunk number.

dof(cellDim, cellLID, funcID , node) = dofs_[cellDim][cellLID][funcID][node]

Definition at line 219 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), buildMaximalDofTable(), computeOffsets(), getDOFsForHNCell(), getInitialDOFForCell(), getInitialDOFPtrForCell(), setDOFs(), and shareDOFs().

store all the combination of functions

Definition at line 254 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allowedFuncsOnCellBatch(), InhomogeneousDOFMapHN(), and initMap().

here we store all combinations of functions which can appear for maxcells in the input parameter used only in the setup face

Definition at line 251 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by InhomogeneousDOFMapHN().

Array< Array<Array<short signed int> > > Sundance::InhomogeneousDOFMapHN::funcDefined_ [private]

if one function is defined on this element then is > 0 , else the function is not defined on this element = funcDefined_[cellDim][funcID][cellLID]

Definition at line 224 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), buildMaximalDofTable(), computeOffsets(), initMap(), setDOFs(), and shareDOFs().

the domains where each function(input) is defined on the maxCells

Definition at line 244 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by funcDomains(), and InhomogeneousDOFMapHN().

how many cells has one combination of "elemFuncSets_"

Definition at line 257 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by InhomogeneousDOFMapHN().

Definition at line 328 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), hasBeenAssigned(), and markAsAssigned().

Is true if the cell has hanging node

Definition at line 272 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and buildMaximalDofTable().

whether maximal DOFs have been tabulated

Definition at line 233 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable().

store the coefs [nPoints*b + facetID]

Definition at line 284 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), and getDOFsForHNCell().

store the facetDim of the points [nPoints*b + facetID]

Definition at line 281 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), and getDOFsForHNCell().

store the facetLIDs of the points [nPoints*b + facetID]

Definition at line 278 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), and getDOFsForHNCell().

Flag per element showing if the element is a hanging element

Definition at line 275 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and setDOFs().

Array<Array<Array<Array<Array<int> > > > > Sundance::InhomogeneousDOFMapHN::localNodePtrs_ [private]

localNodePtrs_[basisChunk][cellDim][facetDim][facetNumber][nodeNumber]

Definition at line 238 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and buildMaximalDofTable().

The object to store all the transformation matrixes

Definition at line 292 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), getTrafoMatrixForCell(), getTrafoMatrixForFacet(), and InhomogeneousDOFMapHN().

for each maxcell store the index in the "elemFuncSets_" , to store the combination of functions

Definition at line 261 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allowedFuncsOnCellBatch(), InhomogeneousDOFMapHN(), and initMap().

Maps one maxCell LID to one transformation matrix, only maxDim elements and basisChunck ID with hanging nodes should have transformation matrix [maxCellLID].get -> [basisChunckID][] is the index of trafo matrix

Definition at line 289 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), getTrafoMatrixForCell(), and getTrafoMatrixForFacet().

Array< Array<Array<int> > > Sundance::InhomogeneousDOFMapHN::maximalDofs_ [mutable, private]

DOFs for maximal cells, indexed by the cell LID this contains all the DoF of one maxDimCell = maximalDofs_[LID][funcID][DoFIndex];

Definition at line 230 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and buildMaximalDofTable().

the domains where each cell filter (as it is in the input) is defined on the maxCells

Definition at line 241 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by InhomogeneousDOFMapHN().

Array<Array<int> > Sundance::InhomogeneousDOFMapHN::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 307 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), buildMaximalDofTable(), setDOFs(), and shareDOFs().

Definition at line 334 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by InhomogeneousDOFMapHN(), nBasisChunks(), and nFuncs().

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 302 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and buildMaximalDofTable().

Nr of points, needed only by plotting

Definition at line 266 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by buildMaximalDofTable(), getDOFsForHNCell(), and InhomogeneousDOFMapHN().

total number of functions

Definition at line 269 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), buildMaximalDofTable(), InhomogeneousDOFMapHN(), and initMap().

Array<Array<int> > Sundance::InhomogeneousDOFMapHN::numFacets_ [private]

number of facets of dimension facetDim for cells of dimension cellDim. Indexed as numFacets_[cellDim][facetDim]

Definition at line 321 of file SundanceInhomogeneousDOFMapHN.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 325 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), buildMaximalDofTable(), initMap(), and shareDOFs().

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 312 of file SundanceInhomogeneousDOFMapHN.hpp.

Referenced by allocate(), and buildMaximalDofTable().

Site Contact