#include <oda.h>
Public Member Functions | |
std::vector< ot::TreeNode > | getBlocks () |
unsigned int | getInputSize () |
unsigned int | getLocalBufferSize () |
std::vector< ot::TreeNode > | getMinAllBlocks () |
A function to get information about the partitioning of the mesh. | |
unsigned int | getNumBlocks () |
bool | iAmActive () |
bool | isLUTcompressed () |
void | updateQuotientCounter () |
Call this function, if a call to getNodeIndices() is skipped within the loop and if the element-to-node mappings are compressed. | |
Array access functions | |
bool | computedLocalToGlobal () |
bool | computedLocalToGlobalElems () |
int | computeLocalToGlobalElemMappings () |
Computes mappings between the local and global numberings for elemental buffers. This function is probably required only for developers. Typical users will not need this. This function should not be called more than once for a given mesh. | |
int | computeLocalToGlobalMappings () |
Computes mappings between the local and global numberings for nodal buffers. | |
int | createActiveMatrix (Mat &M, MatType mtype, unsigned int dof=1) |
Similar to createMatrix, except the matrix is only distributed on the active processors. | |
int | createActiveVector (Vec &local, bool isElemental, bool isGhosted, unsigned int dof=1) |
Similar to createVector(), except the vector is only distributed on the active processors. | |
int | createMatrix (Mat &M, MatType mtype, unsigned int dof=1) |
Returns a PETSc Matrix of appropriate size of the requested type. | |
template<typename T> | |
int | createVector (std::vector< T > &local, bool isElemental, bool isGhosted, unsigned int dof=1) |
Returns a std. vector of appropriate size of the requested type. | |
int | createVector (Vec &local, bool isElemental, bool isGhosted, unsigned int dof=1) |
Returns a PETSc vector of appropriate size of the requested type. | |
int | setValuesInMatrix (Mat mat, std::vector< ot::MatRecord > &records, unsigned int dof, InsertMode mode) |
a wrapper for setting values into the Matrix. This internally calls PETSc's MatSetValues() function. | |
template<typename T> | |
int | vecGetBuffer (std::vector< T > &in, T *&out, bool isElemental, bool isGhosted, bool isReadOnly, unsigned int dof=1) |
Returns a C-array of type T from a distributed std vector for quick local access. | |
int | vecGetBuffer (Vec in, PetscScalar *&out, bool isElemental, bool isGhosted, bool isReadOnly, unsigned int dof=1) |
Returns a C-array of type PetscScalar from a PETSc Vec for quick local access. | |
template<typename T> | |
int | vecRestoreBuffer (std::vector< T > &in, T *out, bool isElemental, bool isGhosted, bool isReadOnly, unsigned int dof=1) |
Restores the C-array of type T to a distributed std vector after quick local access. | |
int | vecRestoreBuffer (Vec in, PetscScalar *out, bool isElemental, bool isGhosted, bool isReadOnly, unsigned int dof=1) |
Restores the C-array of type PetscScalar to a PETSc Vec after quick local access. | |
Element/Node access and iterators | |
unsigned int | curr () |
Returns an index to the begining of the current loop. The loop needs to be initialized using a call to init(). | |
unsigned int | currWithInfo () |
Returns an index to the begining of the current loop. The loop needs to be initialized using a call to init(). This also stores the current position within an internal structure. This can be used to re-start a loop using the FROM_STORED loopType. | |
template<ot::DA_FLAGS::loopType type> | |
unsigned int | end () |
Returns an index to the end of the current loop. The loop needs to be initialized using a call to init(). | |
unsigned char | getChildNumber () |
Returns the child number of the current element. | |
unsigned char | getFlag (unsigned int i) |
Returns the compressed representation of the octant at index i. | |
unsigned char | getHangingNodeIndex (unsigned int i) |
Returns information pertaining to which of the elements 8 nodes are hanging. | |
unsigned char | getLevel (unsigned int i) |
Returns the level of the octant specified by the index. | |
int | getNodeIndices (unsigned int *nodes) |
Returns the indices to the nodes of the current element. | |
unsigned char | getTypeMask (unsigned int i) |
Returns the type mask for the given element. | |
template<ot::DA_FLAGS::loopType type> | |
void | init () |
Initializes the internal counters for a new loop. Remember that the DA currently only supports elemental loops. | |
bool | isGhost (unsigned int i) |
Returns true if the element/node specified by the index is a Ghost. | |
bool | isHanging (unsigned int i) |
Returns true if the element specified by the index contains a hanging node. | |
bool | isNode (unsigned int i) |
Returns true if the element specified by the index corresponds to a node. | |
template<ot::DA_FLAGS::loopType type> | |
unsigned int | next () |
Returns an index to the next element of the current loop. The loop needs to be initialized using a call to initializeLoopCounter(). | |
Constructors and destructors | |
DA (unsigned int dummy, std::vector< ot::TreeNode > &in, MPI_Comm comm, MPI_Comm inputActiveComm, bool compressLut=false, const std::vector< ot::TreeNode > *blocksPtr=NULL, bool *iAmActive=NULL) | |
Private constructor used from within DAMG. This assumes that the input already included positive boundaries, the original octree has been embedded into the larger octree and the maxdepth has been set apropriately and the octants without hanging anchors have been tagged. | |
DA (std::vector< ot::TreeNode > &in, MPI_Comm comm, MPI_Comm inputActiveComm, bool compressLut=false, const std::vector< ot::TreeNode > *blocksPtr=NULL, bool *iAmActive=NULL) | |
The constructor that builds the DA from a Sorted, Linear, Complete, 2:1 Balanced, Octree. | |
~DA () | |
The destructor for the DA object. | |
Information about the DA / domain | |
unsigned int | getBoundaryNodeSize () |
Returns the total number of positive Boundary Nodes belonging to this processor. This does not include the ghost nodes. | |
MPI_Comm | getComm () |
Get the MPI communicator from the DA. | |
MPI_Comm | getCommActive () |
Get the communicator only containing the active processors. | |
Point | getCurrentOffset () |
Get the offset for the current index. | |
unsigned int | getDimension () |
Returns the dimension of the octree from which this DA was created. | |
unsigned int | getElementSize () |
Returns the total number of elements belonging to this processor. This does not include the ghost elements. | |
unsigned int | getGhostedElementSize () |
Returns the total number of elements on this processor, including the ghost elements. | |
unsigned int | getGhostedNodeSize () |
Returns the total number of Nodes on this processor, including the ghost nodes. This will include the boundary nodes if any belong to this processor. | |
Point | getGhostedOffset () |
Get the offset for the smallest element on this processor, including ghost elements. | |
unsigned int | getIdxElementBegin () |
unsigned int | getIdxElementEnd () |
unsigned int | getIdxPostGhostBegin () |
unsigned int | getIndependentSize () |
Returns the number of INDEPENDENT elements belonging to this processor. | |
unsigned int | getInternalNodeSize () |
Returns the total number of internal Nodes belonging to this processor. This does not include the ghost nodes and positive boundaries . | |
DendroIntL * | getLocalToGlobalElemsMap () |
DendroIntL * | getLocalToGlobalMap () |
unsigned int | getMaxDepth () |
Returns the maximum depth (level) of the octree from which this DA was created. | |
Point | getNextOffset (Point p, unsigned char d) |
Given an octant specified by a point (its anchor) and its level it returns the anchor of the octant that immediately follows the given point in the Morton ordering. This function assumes that the octree is linear. | |
unsigned int | getNodeSize () |
Returns the total number of Nodes belonging to this processor. This does not include the ghost nodes. This will include the positive boundary nodes if any belong to this processor. | |
int | getNpesActive () |
int | getNpesAll () |
Point | getOffset () |
Get the offset for the smallest element on this processor, not including ghost elements. | |
unsigned int | getPreGhostElementSize () |
Returns the total number of pre-ghost elements. | |
int | getRankActive () |
int | getRankAll () |
void | incrementCurrentOffset () |
Points to the next anchor. This function is required because we only store the levels of the octants and not their anchors. So the anchors are computed on the fly within the loops. | |
void | incrementPreGhostOffset () |
Points to the anchor of the next pre-ghost octant. This function is required because we only store the levels of the octants and not their anchors. So the anchors are computed on the fly within the loops. | |
bool | isBoundaryOctant (unsigned char *flags=NULL) |
Call this function to check if curr() points to an octant touching the domain boundaries from the inside. This function is for real octants only, pseudo-octants can not be tested using this function. | |
Communication functions | |
template<typename T> | |
int | ReadFromGhostElemsBegin (T *arr, unsigned int dof=1) |
template<typename T> | |
int | ReadFromGhostElemsEnd (T *arr) |
template<typename T> | |
int | ReadFromGhostsBegin (T *arr, unsigned int dof=1) |
Updates the ghost values by obtaining values from the processors which own them. | |
template<typename T> | |
int | ReadFromGhostsEnd (T *arr) |
Waits for updates of the ghost values to finish. | |
template<typename T> | |
int | WriteToGhostElemsBegin (T *arr, unsigned int dof=1) |
template<typename T> | |
int | WriteToGhostElemsEnd (T *arr, unsigned int dof=1) |
template<typename T> | |
int | WriteToGhostsBegin (T *arr, unsigned int dof=1) |
Send the ghost values to the processors that own them so that these values can be added. | |
template<typename T> | |
int | WriteToGhostsEnd (T *arr, unsigned int dof=1) |
Waits for updates of the ghost values to finish. | |
Protected Member Functions | |
void | buildNodeList (std::vector< ot::TreeNode > &in) |
Builds the element-to-node mappings and (optionally) compresses it using Goloumb-Rice encoding. | |
void | DA_FactoryPart0 (std::vector< ot::TreeNode > &in, MPI_Comm comm, MPI_Comm activeInputComm, bool compressLut, bool *iAmActive) |
This function is called from within the constructor. It includes all components of the constructor. | |
void | DA_FactoryPart1 (std::vector< ot::TreeNode > &in) |
void | DA_FactoryPart2 (std::vector< ot::TreeNode > &in) |
void | DA_FactoryPart3 (std::vector< ot::TreeNode > &in, MPI_Comm comm, bool compressLut, const std::vector< ot::TreeNode > *blocksPtr, bool *iAmActive) |
Protected Attributes | |
bool | m_bCompressLut |
bool | m_bComputedLocalToGlobal |
bool | m_bComputedLocalToGlobalElems |
bool | m_bIamActive |
DendroIntL * | m_dilpLocalToGlobal |
DendroIntL * | m_dilpLocalToGlobalElems |
int | m_iNpesActive |
int | m_iNpesAll |
int | m_iRankActive |
int | m_iRankAll |
LoopCounters | m_lcLoopInfo |
MPI_Comm | m_mpiCommActive |
MPI_Comm | m_mpiCommAll |
std::vector< updateContext > | m_mpiContexts |
Point | m_ptCurrentOffset |
Point | m_ptGhostedOffset |
Point | m_ptIndependentOffset |
Point | m_ptOffset |
std::vector< Point > | m_ptsPreGhostOffsets |
Point * | m_ptsPreGhostOffsetsPtr |
std::vector< ot::TreeNode > | m_tnBlocks |
std::vector< ot::TreeNode > | m_tnMinAllBlocks |
std::vector< unsigned char > | m_ucpLutMasks |
unsigned char * | m_ucpLutMasksPtr |
std::vector< unsigned char > | m_ucpLutRemainders |
unsigned char * | m_ucpLutRemaindersPtr |
unsigned char * | m_ucpOctLevels |
std::vector< unsigned char > | m_ucpPreGhostConnectivity |
unsigned char * | m_ucpPreGhostConnectivityPtr |
std::vector< unsigned char > | m_ucpSortOrders |
unsigned char * | m_ucpSortOrdersPtr |
unsigned int | m_uiBoundaryNodeSize |
unsigned int | m_uiCommTag |
unsigned int | m_uiCurrent |
unsigned int | m_uiDimension |
unsigned int | m_uiElementBegin |
unsigned int | m_uiElementEnd |
unsigned int | m_uiElementQuotient |
unsigned int | m_uiElementSize |
unsigned int | m_uiIndependentElementBegin |
unsigned int | m_uiIndependentElementEnd |
unsigned int | m_uiIndependentElementQuotient |
unsigned int | m_uiIndependentElementSize |
unsigned int | m_uiInputSize |
unsigned int | m_uiLocalBufferSize |
unsigned int | m_uiMaxDepth |
std::vector< unsigned int > | m_uiNlist |
unsigned int * | m_uiNlistPtr |
unsigned int | m_uiNodeSize |
std::vector< unsigned int > | m_uipElemRecvCounts |
std::vector< unsigned int > | m_uipElemRecvOffsets |
std::vector< unsigned int > | m_uipElemRecvProcs |
std::vector< unsigned int > | m_uipElemScatterMap |
std::vector< unsigned int > | m_uipElemSendCounts |
std::vector< unsigned int > | m_uipElemSendOffsets |
std::vector< unsigned int > | m_uipElemSendProcs |
unsigned int | m_uiPostGhostBegin |
unsigned int | m_uiPostGhostNodeSize |
std::vector< unsigned int > | m_uipRecvCounts |
std::vector< unsigned int > | m_uipRecvOffsets |
std::vector< unsigned int > | m_uipRecvProcs |
unsigned int | m_uiPreGhostBoundaryNodeSize |
unsigned int | m_uiPreGhostElementSize |
unsigned int | m_uiPreGhostNodeSize |
unsigned int | m_uiPreGhostQuotientCnt |
std::vector< unsigned int > | m_uipScatterMap |
std::vector< unsigned int > | m_uipSendCounts |
std::vector< unsigned int > | m_uipSendOffsets |
std::vector< unsigned int > | m_uipSendProcs |
unsigned int | m_uiQuotientCounter |
std::vector< unsigned short > | m_uspLutQuotients |
unsigned short * | m_uspLutQuotientsPtr |
std::vector< Point > | PreGhostAnchors |
Rahul S. Sampath, rahulss@seas.upenn.edu
int
to only one char
per node. On systems with 4 byte
words, this translated to a 16x compression. The algorithm does not add any overheads for in order iterations over either the nodes or the elements.
Only one char
(8 bits) is stored per element/node. This stores a number of things, including the level of the element (5 bits), whether it is a Node (N, 1-bit), whether it is a Boundary node (BN, 1-bit), and whether it is a dependent element(DE, 1-bit). A dependent element is one which has at least 1 node, which is owned by another processor. Whether the element/node is a ghost or not can be determined purely by it's index.
The bit structure for this char
is
N BN DE LEVEL
where the highest bit determines whether it is an element or not.
Random access into the elemental/nodal array is however not currently possible, and should not be required. The DA can be extended if required to support random access, by having additional markers, for every nodes, within the nodal array, which will enable searching in
and increase storage by
int
. For the search to be efficient, we will need to choose such that
. This will allow us to search within the DA in
, but will increase storage from
to
.
In addition we need the neighbourhood data to be prepared for each element/node. In case of and elemental iteration, we need to store the information pertaining to the 7 additional nodes (in 3D) defining this hexahedral element. In the case of a node-based iteration, we will need to store the information about 26 neighbouring nodes, connected to this node via adjacent elements.
The major issue with this is the storage of the indices, which is 8 times the number of nodes in the octree. In order to reduce storage costs only the offsets from the current index are stored. In addition, these offsets are compressed by using a variant of the Golomb-Rice encoding.
In order to overlap computation and communication, it is preferable that the Finite Element calculations be done in two stages. The communication is initialized first, and simultaneously we process the independent elements. We then wait for the communication to finish before processing the dependent element. A sample loop will look like,
// Start communication readFromGhostsBegin(array, true); // Process independent elements for ( init<ot::DA_FLAGS::INDEPENDENT> ; curr() < end<ot::DA_FLAGS::INDEPENDENT>(); next<ot::DA_FLAGS::INDEPENDENT>() ) { // process current element ... } // wait for communication to end. readFromGhostsEnd(); // Now process the dependent elements for ( init<ot::DA_FLAGS::DEPENDENT>; curr() < end<ot::DA_FLAGS::DEPENDENT>(); next<ot::DA_FLAGS::DEPENDENT>() ) { // process current element ... }
Definition at line 310 of file oda.h.
|
The constructor that builds the DA from a Sorted, Linear, Complete, 2:1 Balanced, Octree.
Definition at line 175 of file oda.C. References DA_FactoryPart0(), DA_FactoryPart1(), DA_FactoryPart2(), DA_FactoryPart3(), PROF_BUILD_DA_BEGIN, and PROF_BUILD_DA_END. |
|
Private constructor used from within DAMG. This assumes that the input already included positive boundaries, the original octree has been embedded into the larger octree and the maxdepth has been set apropriately and the octants without hanging anchors have been tagged.
Definition at line 196 of file oda.C. References DA_FactoryPart0(), DA_FactoryPart3(), PROF_BUILD_DA_BEGIN, and PROF_BUILD_DA_END. |
|
The destructor for the DA object.
Definition at line 214 of file oda.C. References m_dilpLocalToGlobal, m_dilpLocalToGlobalElems, m_ucpLutMasks, m_ucpLutRemainders, m_ucpOctLevels, m_ucpSortOrders, m_uiNlist, and m_uspLutQuotients. |
|
|
Definition at line 83 of file oda.txx. Referenced by CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), CreateConstVecMass(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), and main(). |
|
Definition at line 79 of file oda.txx. Referenced by main(). |
|
Computes mappings between the local and global numberings for elemental buffers. This function is probably required only for developers. Typical users will not need this. This function should not be called more than once for a given mesh.
Definition at line 34 of file oda.C. References DendroIntL, getElementSize(), m_bComputedLocalToGlobalElems, m_bIamActive, m_iNpesActive, and m_iRankActive. Referenced by main(). |
|
Computes mappings between the local and global numberings for nodal buffers.
Definition at line 76 of file oda.C. References DendroIntL, getNodeSize(), m_bComputedLocalToGlobal, m_bIamActive, m_iNpesActive, and m_iRankActive. Referenced by CreateConstVecMass(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), and main(). |
|
Similar to createMatrix, except the matrix is only distributed on the active processors.
Definition at line 429 of file oda.C. References m_iNpesActive, m_mpiCommActive, and m_uiNodeSize. Referenced by CreateAndComputeFullActiveJacobian1(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian2(), and CreateJacobian3(). |
|
Similar to createVector(), except the vector is only distributed on the active processors.
Definition at line 489 of file oda.C. References m_iNpesActive, m_mpiCommActive, m_uiNodeSize, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. |
|
Returns a PETSc Matrix of appropriate size of the requested type.
Definition at line 399 of file oda.C. References m_iNpesAll, m_mpiCommAll, and m_uiNodeSize. Referenced by CreateAndComputeFullJacobian1(), CreateConstVecMass(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian2(), and CreateJacobian3(). |
|
Returns a std. vector of appropriate size of the requested type.
Definition at line 819 of file oda.txx. References m_uiNodeSize, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. |
|
Returns a PETSc vector of appropriate size of the requested type.
Definition at line 459 of file oda.C. References m_iNpesAll, m_mpiCommAll, m_uiNodeSize, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. Referenced by ot::assignBoundaryFlags(), CalculateCenters(), computeInvBlockDiagEntriesForElasticityMat(), ot::createInterpolationType1(), ot::createInterpolationType2(), ot::DAMGSetUp(), ot::dummyRestrictMatVecType1(), ot::injectNodalVector(), main(), SetPDECoefFromPts(), and TestError5(). |
|
Returns an index to the begining of the current loop. The loop needs to be initialized using a call to init().
for ( init<loopType>; curr() < end<loopType>(); next<loopType>() ) { // Do whatever is required ... }
Definition at line 25 of file oda.txx. References m_bIamActive. Referenced by ot::assignBoundaryFlags(), CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DA_FactoryPart3(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), incrementPreGhostOffset(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), isBoundaryOctant(), ot::isRegularGrid(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetDirichletJacContexts(), SetElasticityContexts(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Returns an index to the begining of the current loop. The loop needs to be initialized using a call to init(). This also stores the current position within an internal structure. This can be used to re-start a loop using the FROM_STORED loopType.
Definition at line 32 of file oda.txx. References ot::LoopCounters::currentIndex, ot::LoopCounters::currentOffset, m_bIamActive, m_lcLoopInfo, ot::LoopCounters::pgQcounter, and ot::LoopCounters::qCounter. Referenced by Jacobian3MatMult(), ot::prolongMatVecType1(), and ot::restrictMatVecType1(). |
|
This function is called from within the constructor. It includes all components of the constructor.
Definition at line 100 of file odaFactory.C. References m_bIamActive, m_iNpesActive, m_iRankActive, m_mpiCommActive, m_uiDimension, m_uiInputSize, m_uiMaxDepth, RESET_DA_BLOCK, and par::splitComm2way(). Referenced by DA(). |
|
Definition at line 143 of file odaFactory.C. References ot::addBoundaryNodesType1(), m_mpiCommActive, m_uiDimension, m_uiMaxDepth, PROF_BUILD_DA_STAGE1_BEGIN, PROF_BUILD_DA_STAGE1_END, and par::splitComm2way(). Referenced by DA(). |
|
Definition at line 183 of file odaFactory.C. References ot::flagNodesType3(), m_mpiCommActive, PROF_BUILD_DA_STAGE2_BEGIN, and PROF_BUILD_DA_STAGE2_END. Referenced by DA(). |
|
Definition at line 199 of file odaFactory.C. References ot::blockPartStage1(), buildNodeList(), curr(), ot::DA_blockPartStage2(), ot::DA_blockPartStage3(), DendroIntL, getLevel(), getNodeIndices(), ot::getTouchConfig(), ot::includeSiblingsOfBoundary(), m_bIamActive, m_iNpesActive, m_iRankActive, m_mpiCommActive, m_ptGhostedOffset, m_ptOffset, m_ptsPreGhostOffsets, m_tnBlocks, m_tnMinAllBlocks, m_ucpLutMasks, m_ucpLutMasksPtr, m_ucpLutRemainders, m_ucpLutRemaindersPtr, m_ucpOctLevels, m_ucpPreGhostConnectivity, m_ucpSortOrders, m_ucpSortOrdersPtr, m_uiDimension, m_uiElementBegin, m_uiElementEnd, m_uiElementSize, m_uiLocalBufferSize, m_uiMaxDepth, m_uiNlist, m_uiNlistPtr, m_uiPostGhostBegin, m_uipRecvCounts, m_uipRecvProcs, m_uiPreGhostElementSize, m_uipScatterMap, m_uipSendCounts, m_uipSendProcs, m_uspLutQuotients, m_uspLutQuotientsPtr, ot::pickInterProcessorBoundaryNodes(), PreGhostAnchors, ot::prepareAprioriCommMessagesInDAtype2(), PROF_BUILD_DA_STAGE3_BEGIN, PROF_BUILD_DA_STAGE3_END, PROF_BUILD_DA_STAGE4_BEGIN, PROF_BUILD_DA_STAGE4_END, PROF_BUILD_DA_STAGE5_BEGIN, PROF_BUILD_DA_STAGE5_END, PROF_BUILD_DA_STAGE6_BEGIN, PROF_BUILD_DA_STAGE6_END, PROF_BUILD_DA_STAGE7_BEGIN, PROF_BUILD_DA_STAGE7_END, PROF_BUILD_DA_STAGE8_BEGIN, PROF_BUILD_DA_STAGE8_END, PROF_BUILD_DA_STAGE9_BEGIN, PROF_BUILD_DA_STAGE9_END, PROF_DA_BPART1_BEGIN, PROF_DA_BPART1_END, PROF_DA_BPART2_BEGIN, PROF_DA_BPART2_END, PROF_DA_BPART3_BEGIN, PROF_DA_BPART3_END, RESET_DA_BLOCK, and par::splitCommUsingSplittingRank(). Referenced by DA(). |
|
Returns an index to the end of the current loop. The loop needs to be initialized using a call to init().
for ( init<loopType>; curr() < end<loopType>(); next<loopType>() ) { // Do whatever is required ... }
Referenced by ot::assignBoundaryFlags(), buildNodeList(), CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), ot::isRegularGrid(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetDirichletJacContexts(), SetElasticityContexts(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Definition at line 95 of file oda.txx. Referenced by ot::DAMGCreateAndSetDA(), and main(). |
|
Returns the total number of positive Boundary Nodes belonging to this processor. This does not include the ghost nodes.
|
|
Returns the child number of the current element.
Definition at line 1074 of file oda.txx. References m_bCompressLut, m_bIamActive, m_ptCurrentOffset, m_ucpLutMasksPtr, m_ucpOctLevels, m_ucpSortOrdersPtr, m_uiCurrent, m_uiMaxDepth, Point::xint(), Point::yint(), and Point::zint(). Referenced by ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS2(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), getNodeIndices(), ot::interpolateData(), Jacobian1MatGetDiagonal(), MassMatGetDiagonal(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Get the MPI communicator from the DA.
Definition at line 169 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), CreateAndComputeMassMatrix(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), ot::interpolateData(), and ot::isRegularGrid(). |
|
Get the communicator only containing the active processors.
Definition at line 173 of file oda.txx. Referenced by ComputeError5(), CreateActiveJacobian1(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), ot::DAMGCreateAndSetDA(), ot::DAMGSetKSP(), getActiveStateAndActiveCommForKSP_Shell_DirichletJac(), getActiveStateAndActiveCommForKSP_Shell_Elas(), getActiveStateAndActiveCommForKSP_Shell_Jac1(), getActiveStateAndActiveCommForKSP_Shell_Jac2or3(), main(), ot::PrintDAMG(), and SetPDECoefFromPts(). |
|
Get the offset for the current index.
Definition at line 193 of file oda.txx. References m_bIamActive. Referenced by CalculateCenters(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeSol(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), isBoundaryOctant(), main(), SetSolution5(), SetSolutionFBM(), and SetSolutionFBM2(). |
|
Returns the dimension of the octree from which this DA was created.
Definition at line 87 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), stiffnessMatrix::preMatVec(), and massMatrix::preMatVec(). |
|
Returns the total number of elements belonging to this processor. This does not include the ghost elements.
Definition at line 115 of file oda.txx. Referenced by computeLocalToGlobalElemMappings(), ot::DAMGCreateAndSetDA(), Jacobian3MatMult(), main(), ot::PrintDAMG(), ot::prolongMatVecType1(), and ot::restrictMatVecType1(). |
|
Returns the compressed representation of the octant at index i.
Definition at line 44 of file oda.txx. References m_bIamActive, and m_ucpOctLevels. Referenced by buildNodeList(). |
|
Returns the total number of elements on this processor, including the ghost elements.
Definition at line 133 of file oda.txx. References m_uiElementSize. Referenced by ot::PrintDAMG(). |
|
Returns the total number of Nodes on this processor, including the ghost nodes. This will include the boundary nodes if any belong to this processor.
Definition at line 127 of file oda.txx. References m_uiBoundaryNodeSize, m_uiNodeSize, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. |
|
Get the offset for the smallest element on this processor, including ghost elements.
Definition at line 200 of file oda.txx. References m_bIamActive. |
|
Returns information pertaining to which of the elements 8 nodes are hanging.
Definition at line 781 of file oda.C. References m_bIamActive, and m_ucpLutMasks. Referenced by ot::assignBoundaryFlags(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), stiffnessMatrix::ElementalMatGetDiagonal(), stiffnessMatrix::ElementalMatVec(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatGetDiagonal(), main(), MassMatGetDiagonal(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Definition at line 153 of file oda.txx. Referenced by ot::DAMGCreateAndSetDA(), and main(). |
|
Definition at line 157 of file oda.txx. Referenced by main(). |
|
Definition at line 161 of file oda.txx. Referenced by main(). |
|
Returns the number of INDEPENDENT elements belonging to this processor.
Definition at line 123 of file oda.txx. Referenced by ot::createInterpolationType1(), ot::createInterpolationType2(), ot::DAMGCreateAndSetDA(), and main(). |
|
|
|
Returns the total number of internal Nodes belonging to this processor. This does not include the ghost nodes and positive boundaries .
|
|
Returns the level of the octant specified by the index.
Definition at line 51 of file oda.txx. References m_bIamActive, and m_ucpOctLevels. Referenced by CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DA_FactoryPart3(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), stiffnessMatrix::ElementalMatGetDiagonal(), massMatrix::ElementalMatGetDiagonal(), stiffnessMatrix::ElementalMatVec(), massMatrix::ElementalMatVec(), EnforceZeroFBM(), EnforceZeroFBM2(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), isBoundaryOctant(), Jacobian1MatGetDiagonal(), main(), MassMatGetDiagonal(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), TmpDirichletLaplacianMatMult(), and ot::writePartitionVTK(). |
|
Definition at line 111 of file oda.txx. Referenced by ot::DAMGCreateSuppressedDOFs(), ot::injectNodalVector(), and main(). |
|
Definition at line 218 of file oda.txx. References DendroIntL. Referenced by main(). |
|
Definition at line 214 of file oda.txx. References DendroIntL. Referenced by main(). |
|
Returns the maximum depth (level) of the octree from which this DA was created.
Definition at line 91 of file oda.txx. Referenced by CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::interpolateData(), isBoundaryOctant(), Jacobian1MatMult(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), MassMatMult(), stiffnessMatrix::preMatVec(), massMatrix::preMatVec(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), solve_neumann_oct(), TmpDirichletJacobianMatMult(), TmpDirichletLaplacianMatMult(), and ot::writePartitionVTK(). |
|
A function to get information about the partitioning of the mesh.
Definition at line 103 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), ot::interpolateData(), and ot::writePartitionVTK(). |
|
Given an octant specified by a point (its anchor) and its level it returns the anchor of the octant that immediately follows the given point in the Morton ordering. This function assumes that the octree is linear.
Definition at line 238 of file oda.C. References m_bIamActive, m_uiMaxDepth, Point::x(), Point::xint(), Point::y(), Point::yint(), Point::z(), and Point::zint(). Referenced by incrementCurrentOffset(). |
|
Returns the indices to the nodes of the current element.
Definition at line 1098 of file oda.txx. References getChildNumber(), m_bIamActive, m_iRankActive, m_ptCurrentOffset, m_ucpLutMasksPtr, m_ucpLutRemaindersPtr, m_ucpOctLevels, m_ucpSortOrdersPtr, m_uiCurrent, m_uiDimension, m_uiElementBegin, m_uiElementEnd, m_uiLocalBufferSize, m_uiMaxDepth, m_uiNlistPtr, m_uiPostGhostBegin, m_uiPreGhostElementSize, m_uiQuotientCounter, m_uspLutQuotientsPtr, NRM, RED, Point::xint(), Point::yint(), and Point::zint(). Referenced by ot::assignBoundaryFlags(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DA_FactoryPart3(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatGetDiagonal(), main(), MassMatGetDiagonal(), SetDirichletJacContexts(), SetElasticityContexts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Returns the total number of Nodes belonging to this processor. This does not include the ghost nodes. This will include the positive boundary nodes if any belong to this processor.
Definition at line 141 of file oda.txx. References m_uiNodeSize. Referenced by computeInvBlockDiagEntriesForElasticityMat(), computeLocalToGlobalMappings(), CreateActiveJacobian1(), CreateAndComputeMassMatrix(), CreateConstVecMass(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), ot::createInterpolationType1(), ot::createInterpolationType2(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), CreateTmpDirichletJacobian(), CreateTmpDirichletLaplacian(), getDofAndNodeSizeForElasticityMat(), InitializeData(), main(), and ot::PrintDAMG(). |
|
Definition at line 181 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), ot::DAMGCreateAndSetDA(), ot::DAMGSetKSP(), ot::interpolateData(), and ot::PrintDAMG(). |
|
Definition at line 177 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), ot::DAMGSetKSP(), and ot::interpolateData(). |
|
Definition at line 99 of file oda.txx. References m_tnBlocks. Referenced by ot::PrintDAMG(). |
|
Get the offset for the smallest element on this processor, not including ghost elements.
Definition at line 207 of file oda.txx. References m_bIamActive. |
|
Returns the total number of pre-ghost elements.
Definition at line 119 of file oda.txx. Referenced by main(). |
|
Definition at line 189 of file oda.txx. Referenced by ot::isRegularGrid(). |
|
Definition at line 185 of file oda.txx. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), ot::interpolateData(), and ot::writePartitionVTK(). |
|
Returns the type mask for the given element.
|
|
Definition at line 165 of file oda.txx. Referenced by ot::assignBoundaryFlags(), CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateActiveJacobian1(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), CreateDirichletJacobian(), CreateDirichletLaplacian(), CreateElasticityMat(), CreateJacobian1(), CreateJacobian2(), CreateJacobian3(), ot::DAMGCreateAndSetDA(), ot::DAMGSetKSP(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), getActiveStateAndActiveCommForKSP_Shell_DirichletJac(), getActiveStateAndActiveCommForKSP_Shell_Elas(), getActiveStateAndActiveCommForKSP_Shell_Jac1(), getActiveStateAndActiveCommForKSP_Shell_Jac2or3(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), ot::injectNodalVector(), ot::interpolateData(), ot::isRegularGrid(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), ot::PC_KSP_Shell_SetUp(), ot::PrintDAMG(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetDirichletJacContexts(), SetElasticityContexts(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Points to the next anchor. This function is required because we only store the levels of the octants and not their anchors. So the anchors are computed on the fly within the loops.
Definition at line 292 of file oda.C. References getNextOffset(), m_bIamActive, m_ptCurrentOffset, m_ucpOctLevels, m_uiCurrent, m_uiElementBegin, m_uiMaxDepth, NRM, RED, Point::x(), Point::xint(), Point::y(), Point::yint(), Point::z(), and Point::zint(). |
|
Points to the anchor of the next pre-ghost octant. This function is required because we only store the levels of the octants and not their anchors. So the anchors are computed on the fly within the loops.
Definition at line 788 of file oda.C. References curr(), m_bIamActive, m_ptCurrentOffset, m_ptsPreGhostOffsets, m_ucpOctLevels, m_ucpPreGhostConnectivity, m_uiCurrent, m_uiMaxDepth, m_uiPreGhostQuotientCnt, Point::xint(), Point::yint(), and Point::zint(). |
|
Initializes the internal counters for a new loop. Remember that the DA currently only supports elemental loops.
for ( init<loopType>; curr() < end<loopType>(); next<loopType>() ) { // Do whatever is required ... }
Referenced by ot::assignBoundaryFlags(), CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), ot::isRegularGrid(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetDirichletJacContexts(), SetElasticityContexts(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Call this function to check if curr() points to an octant touching the domain boundaries from the inside. This function is for real octants only, pseudo-octants can not be tested using this function.
Definition at line 369 of file oda.C. References curr(), getCurrentOffset(), getLevel(), getMaxDepth(), m_bIamActive, Point::xint(), Point::yint(), and Point::zint(). Referenced by ot::assignBoundaryFlags(), and ot::injectNodalVector(). |
|
Returns true if the element/node specified by the index is a Ghost.
Definition at line 65 of file oda.txx. References m_bIamActive. |
|
Returns true if the element specified by the index contains a hanging node.
Definition at line 72 of file oda.txx. References m_bIamActive, and m_ucpLutMasksPtr. Referenced by ot::isRegularGrid(). |
|
Definition at line 107 of file oda.txx. Referenced by ot::assignBoundaryFlags(), and ot::injectNodalVector(). |
|
Returns true if the element specified by the index corresponds to a node.
Definition at line 58 of file oda.txx. References m_bIamActive, and m_ucpOctLevels. Referenced by buildNodeList(). |
|
Returns an index to the next element of the current loop. The loop needs to be initialized using a call to initializeLoopCounter().
for ( init<loopType>; curr() < end<loopType>(); next<loopType>() ) { // Do whatever is required ... }
Referenced by ot::assignBoundaryFlags(), CalculateCenters(), ComputeDirichletJacobian(), ComputeDirichletLaplacian(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), CreateAndComputeFullActiveJacobian1(), CreateAndComputeFullJacobian1(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), ot::getGlobalMaxLevel(), ot::getGlobalMinLevel(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), ot::isRegularGrid(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetDirichletJacContexts(), SetElasticityContexts(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Definition at line 648 of file oda.txx. References ot::updateContext::buffer, ot::updateContext::keys, m_mpiContexts, m_uiCommTag, m_uipElemRecvCounts, m_uipElemRecvOffsets, m_uipElemRecvProcs, m_uipElemScatterMap, m_uipElemSendCounts, m_uipElemSendOffsets, m_uipElemSendProcs, PROF_READ_GHOST_ELEMS_BEGIN_BEGIN, PROF_READ_GHOST_ELEMS_BEGIN_END, and ot::updateContext::requests. |
|
Definition at line 695 of file oda.txx. References m_mpiContexts, PROF_READ_GHOST_ELEMS_END_BEGIN, PROF_READ_GHOST_ELEMS_END_END, and ot::updateContext::requests. |
|
Updates the ghost values by obtaining values from the processors which own them.
Definition at line 480 of file oda.txx. References ot::updateContext::buffer, ot::updateContext::keys, m_mpiContexts, m_uiCommTag, m_uipRecvCounts, m_uipRecvOffsets, m_uipRecvProcs, m_uipScatterMap, m_uipSendCounts, m_uipSendOffsets, m_uipSendProcs, PROF_READ_GHOST_NODES_BEGIN_BEGIN, PROF_READ_GHOST_NODES_BEGIN_END, and ot::updateContext::requests. Referenced by ComputeError5(), DirichletJacobianMatMult(), DirichletLaplacianMatMult(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatMult(), Jacobian3MatMult(), MassMatMult(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Waits for updates of the ghost values to finish.
Definition at line 525 of file oda.txx. References m_mpiContexts, PROF_READ_GHOST_NODES_END_BEGIN, PROF_READ_GHOST_NODES_END_END, and ot::updateContext::requests. Referenced by ComputeError5(), DirichletJacobianMatMult(), DirichletLaplacianMatMult(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatMult(), Jacobian3MatMult(), MassMatMult(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
a wrapper for setting values into the Matrix. This internally calls PETSc's MatSetValues() function.
Definition at line 116 of file oda.C. References m_bComputedLocalToGlobal, m_dilpLocalToGlobal, PROF_SET_MAT_VALUES_BEGIN, PROF_SET_MAT_VALUES_END, and sort(). Referenced by ComputeDirichletJacobian(), ComputeDirichletLaplacian(), CreateAndComputeFullActiveJacobian1(), and CreateAndComputeFullJacobian1(). |
|
Call this function, if a call to getNodeIndices() is skipped within the loop and if the element-to-node mappings are compressed.
Definition at line 765 of file oda.C. References m_bIamActive, m_ucpLutMasksPtr, and m_uiQuotientCounter. Referenced by ot::assignBoundaryFlags(), and ot::injectNodalVector(). |
|
Returns a C-array of type T from a distributed std vector for quick local access.
Definition at line 846 of file oda.txx. References m_ucpOctLevels, m_uiElementBegin, m_uiElementEnd, m_uiLocalBufferSize, m_uiNodeSize, m_uiPostGhostBegin, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. |
|
Returns a C-array of type PetscScalar from a PETSc Vec for quick local access.
Definition at line 521 of file oda.C. References m_iRankAll, m_ucpOctLevels, m_uiElementBegin, m_uiElementEnd, m_uiLocalBufferSize, m_uiNodeSize, m_uiPostGhostBegin, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. Referenced by ot::assignBoundaryFlags(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatGetDiagonal(), Jacobian1MatMult(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), MassMatGetDiagonal(), MassMatMult(), stiffnessMatrix::preMatVec(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Restores the C-array of type T to a distributed std vector after quick local access.
Definition at line 966 of file oda.txx. References m_ucpOctLevels, m_uiElementBegin, m_uiElementEnd, m_uiLocalBufferSize, m_uiNodeSize, m_uiPostGhostBegin, m_uiPreGhostBoundaryNodeSize, and m_uiPreGhostNodeSize. |
|
Restores the C-array of type PetscScalar to a PETSc Vec after quick local access.
Definition at line 648 of file oda.C. References m_ucpOctLevels, m_uiElementBegin, m_uiElementEnd, m_uiLocalBufferSize, m_uiNodeSize, m_uiPostGhostBegin, m_uiPreGhostBoundaryNodeSize, m_uiPreGhostNodeSize, NRM, and RED. Referenced by ot::assignBoundaryFlags(), ComputeElasticityRHS(), ComputeError5(), ComputeFBM2_RHS_Part1(), ComputeFBM2_RHS_Part2(), ComputeFBM_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeFBM_RHS_Part3(), computeInvBlockDiagEntriesForElasticityMat(), ComputeRHS1(), ComputeRHS2(), ComputeRHS5(), ComputeRHS7(), ComputeRHS8(), ComputeRHS9(), ComputeRHS_omgNeumann(), ComputeSol(), DirichletJacobianMatGetDiagonal(), DirichletJacobianMatMult(), DirichletLaplacianMatGetDiagonal(), DirichletLaplacianMatMult(), ot::dummyRestrictMatVecType1(), EnforceZeroFBM(), EnforceZeroFBM2(), InitializeData(), ot::injectNodalVector(), ot::interpolateData(), Jacobian1MatGetDiagonal(), Jacobian1MatMult(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), main(), MassMatGetDiagonal(), MassMatMult(), stiffnessMatrix::postMatVec(), ot::prolongMatVecType1(), ot::restrictMatVecType1(), SetPDECoefFromPts(), SetSolution5(), SetSolutionFBM(), SetSolutionFBM2(), TmpDirichletJacobianMatMult(), and TmpDirichletLaplacianMatMult(). |
|
Definition at line 733 of file oda.txx. References ot::updateContext::buffer, ot::updateContext::keys, m_mpiContexts, m_uiCommTag, m_uipElemRecvCounts, m_uipElemRecvOffsets, m_uipElemRecvProcs, m_uipElemScatterMap, m_uipElemSendCounts, m_uipElemSendOffsets, m_uipElemSendProcs, PROF_WRITE_GHOST_ELEMS_BEGIN_BEGIN, PROF_WRITE_GHOST_ELEMS_BEGIN_END, and ot::updateContext::requests. |
|
Definition at line 774 of file oda.txx. References m_mpiContexts, m_uipElemScatterMap, PROF_WRITE_GHOST_ELEMS_END_BEGIN, PROF_WRITE_GHOST_ELEMS_END_END, and ot::updateContext::requests. |
|
Send the ghost values to the processors that own them so that these values can be added.
Definition at line 563 of file oda.txx. References ot::updateContext::buffer, ot::updateContext::keys, m_mpiContexts, m_uiCommTag, m_uipRecvCounts, m_uipRecvOffsets, m_uipRecvProcs, m_uipScatterMap, m_uipSendCounts, m_uipSendOffsets, m_uipSendProcs, PROF_WRITE_GHOST_NODES_BEGIN_BEGIN, PROF_WRITE_GHOST_NODES_BEGIN_END, and ot::updateContext::requests. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), ot::dummyRestrictMatVecType1(), ot::injectNodalVector(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), ot::prolongMatVecType1(), and ot::restrictMatVecType1(). |
|
Waits for updates of the ghost values to finish.
Definition at line 603 of file oda.txx. References m_mpiContexts, m_uipScatterMap, PROF_WRITE_GHOST_NODES_END_BEGIN, PROF_WRITE_GHOST_NODES_END_END, and ot::updateContext::requests. Referenced by ComputeFBM2_RHS_Part1(), ComputeFBM_RHS_Part2(), ComputeRHS9(), ot::dummyRestrictMatVecType1(), ot::injectNodalVector(), Jacobian3MatGetDiagonal(), Jacobian3MatMult(), ot::prolongMatVecType1(), and ot::restrictMatVecType1(). |
|
Definition at line 318 of file oda.h. Referenced by getChildNumber(). |
|
Definition at line 319 of file oda.h. Referenced by computeLocalToGlobalMappings(), and setValuesInMatrix(). |
|
Definition at line 320 of file oda.h. Referenced by computeLocalToGlobalElemMappings(). |
|
Definition at line 321 of file oda.h. Referenced by computeLocalToGlobalElemMappings(), computeLocalToGlobalMappings(), curr(), currWithInfo(), DA_FactoryPart0(), DA_FactoryPart3(), getChildNumber(), getCurrentOffset(), getFlag(), getGhostedOffset(), getHangingNodeIndex(), getLevel(), getNextOffset(), getNodeIndices(), getOffset(), incrementCurrentOffset(), incrementPreGhostOffset(), isBoundaryOctant(), isGhost(), isHanging(), isNode(), and updateQuotientCounter(). |
|
Definition at line 327 of file oda.h. Referenced by setValuesInMatrix(), and ~DA(). |
|
Definition at line 328 of file oda.h. Referenced by ~DA(). |
|
Definition at line 423 of file oda.h. Referenced by computeLocalToGlobalElemMappings(), computeLocalToGlobalMappings(), createActiveMatrix(), createActiveVector(), DA_FactoryPart0(), and DA_FactoryPart3(). |
|
Definition at line 420 of file oda.h. Referenced by createMatrix(), and createVector(). |
|
Definition at line 422 of file oda.h. Referenced by buildNodeList(), computeLocalToGlobalElemMappings(), computeLocalToGlobalMappings(), DA_FactoryPart0(), DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 419 of file oda.h. Referenced by buildNodeList(), and vecGetBuffer(). |
|
Definition at line 314 of file oda.h. Referenced by currWithInfo(). |
|
Definition at line 421 of file oda.h. Referenced by buildNodeList(), createActiveMatrix(), createActiveVector(), DA_FactoryPart0(), DA_FactoryPart1(), DA_FactoryPart2(), and DA_FactoryPart3(). |
|
Definition at line 418 of file oda.h. Referenced by createMatrix(), and createVector(). |
|
Definition at line 445 of file oda.h. Referenced by ReadFromGhostElemsBegin(), ReadFromGhostElemsEnd(), ReadFromGhostsBegin(), ReadFromGhostsEnd(), WriteToGhostElemsBegin(), WriteToGhostElemsEnd(), WriteToGhostsBegin(), and WriteToGhostsEnd(). |
|
Definition at line 375 of file oda.h. Referenced by getChildNumber(), getNodeIndices(), incrementCurrentOffset(), and incrementPreGhostOffset(). |
|
Definition at line 368 of file oda.h. Referenced by DA_FactoryPart3(). |
|
Definition at line 374 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 372 of file oda.h. Referenced by DA_FactoryPart3(). |
|
Definition at line 351 of file oda.h. Referenced by DA_FactoryPart3(), and incrementPreGhostOffset(). |
|
|
|
Definition at line 323 of file oda.h. Referenced by DA_FactoryPart3(), and getNumBlocks(). |
|
Definition at line 324 of file oda.h. Referenced by DA_FactoryPart3(). |
|
Definition at line 345 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), getHangingNodeIndex(), and ~DA(). |
|
Definition at line 346 of file oda.h. Referenced by DA_FactoryPart3(), getChildNumber(), getNodeIndices(), isHanging(), and updateQuotientCounter(). |
|
Definition at line 332 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), and ~DA(). |
|
Definition at line 333 of file oda.h. Referenced by DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 317 of file oda.h. Referenced by DA_FactoryPart3(), getChildNumber(), getFlag(), getLevel(), getNodeIndices(), incrementCurrentOffset(), incrementPreGhostOffset(), isNode(), vecGetBuffer(), vecRestoreBuffer(), and ~DA(). |
|
Definition at line 348 of file oda.h. Referenced by DA_FactoryPart3(), and incrementPreGhostOffset(). |
|
|
|
Definition at line 334 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), and ~DA(). |
|
Definition at line 335 of file oda.h. Referenced by DA_FactoryPart3(), getChildNumber(), and getNodeIndices(). |
|
Definition at line 381 of file oda.h. Referenced by buildNodeList(), and getGhostedNodeSize(). |
|
Definition at line 446 of file oda.h. Referenced by ReadFromGhostElemsBegin(), ReadFromGhostsBegin(), WriteToGhostElemsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 408 of file oda.h. Referenced by getChildNumber(), getNodeIndices(), incrementCurrentOffset(), and incrementPreGhostOffset(). |
|
Definition at line 412 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart0(), DA_FactoryPart1(), DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 401 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), getNodeIndices(), incrementCurrentOffset(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 402 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), getNodeIndices(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 363 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 383 of file oda.h. Referenced by DA_FactoryPart3(), and getGhostedElementSize(). |
|
Definition at line 405 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 406 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 364 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 385 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 322 of file oda.h. Referenced by DA_FactoryPart0(). |
|
Definition at line 398 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), getNodeIndices(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 415 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart0(), DA_FactoryPart1(), DA_FactoryPart3(), getChildNumber(), getNextOffset(), getNodeIndices(), incrementCurrentOffset(), and incrementPreGhostOffset(). |
|
Definition at line 325 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), and ~DA(). |
|
Definition at line 326 of file oda.h. Referenced by DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 380 of file oda.h. Referenced by buildNodeList(), createActiveMatrix(), createActiveVector(), createMatrix(), createVector(), getGhostedNodeSize(), getNodeSize(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 442 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 440 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 441 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 431 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), WriteToGhostElemsBegin(), and WriteToGhostElemsEnd(). |
|
Definition at line 434 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 432 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 433 of file oda.h. Referenced by buildNodeList(), ReadFromGhostElemsBegin(), and WriteToGhostElemsBegin(). |
|
Definition at line 403 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), getNodeIndices(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 396 of file oda.h. Referenced by buildNodeList(). |
|
Definition at line 438 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 436 of file oda.h. Referenced by buildNodeList(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 437 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 393 of file oda.h. Referenced by buildNodeList(), createActiveVector(), createVector(), getGhostedNodeSize(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 388 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 392 of file oda.h. Referenced by buildNodeList(), createActiveVector(), createVector(), getGhostedNodeSize(), vecGetBuffer(), and vecRestoreBuffer(). |
|
Definition at line 360 of file oda.h. Referenced by incrementPreGhostOffset(). |
|
Definition at line 426 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), ReadFromGhostsBegin(), WriteToGhostsBegin(), and WriteToGhostsEnd(). |
|
Definition at line 429 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 427 of file oda.h. Referenced by buildNodeList(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 428 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), ReadFromGhostsBegin(), and WriteToGhostsBegin(). |
|
Definition at line 359 of file oda.h. Referenced by getNodeIndices(), and updateQuotientCounter(). |
|
Definition at line 339 of file oda.h. Referenced by buildNodeList(), DA_FactoryPart3(), and ~DA(). |
|
Definition at line 340 of file oda.h. Referenced by DA_FactoryPart3(), and getNodeIndices(). |
|
Definition at line 354 of file oda.h. Referenced by DA_FactoryPart3(). |