Panzer
Version of the Day
|
#include <Panzer_DOFManager.hpp>
Classes | |
class | ElementBlockAccess |
Public Member Functions | |
virtual | ~DOFManager () |
DOFManager () | |
DOFManager (const Teuchos::RCP< ConnManager > &connMngr, MPI_Comm mpiComm) | |
void | setConnManager (const Teuchos::RCP< ConnManager > &connMngr, MPI_Comm mpiComm) |
Adds a Connection Manager that will be associated with this DOFManager. More... | |
Teuchos::RCP< const ConnManager > | getConnManager () const |
Returns the connection manager currently being used. More... | |
int | addField (const std::string &str, const Teuchos::RCP< const FieldPattern > &pattern, const panzer::FieldType &type=panzer::FieldType::CG) |
Add a field to the DOF manager. More... | |
int | addField (const std::string &blockID, const std::string &str, const Teuchos::RCP< const FieldPattern > &pattern, const panzer::FieldType &type=panzer::FieldType::CG) |
Add a field with an option for specifying the block. More... | |
Teuchos::RCP< const FieldPattern > | getFieldPattern (const std::string &name) const |
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum) . More... | |
Teuchos::RCP< const FieldPattern > | getFieldPattern (const std::string &blockId, const std::string &fieldName) const |
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum) . More... | |
void | getOwnedIndices (std::vector< panzer::GlobalOrdinal > &indices) const |
Get the set of indices owned by this processor. More... | |
void | getGhostedIndices (std::vector< panzer::GlobalOrdinal > &indices) const |
Get the set of indices ghosted for this processor. More... | |
void | getOwnedAndGhostedIndices (std::vector< panzer::GlobalOrdinal > &indices) const |
Get the set of owned and ghosted indices for this processor. More... | |
void | getElementGIDsAsInt (panzer::LocalOrdinal localElementID, std::vector< int > &gids, const std::string &blockIdHint="") const |
Get the global IDs for a particular element. This function overwrites the gids variable. More... | |
void | getOwnedIndicesAsInt (std::vector< int > &indices) const |
Get the set of indices owned by this processor. More... | |
void | getGhostedIndicesAsInt (std::vector< int > &indices) const |
Get the set of indices ghosted for this processor. More... | |
void | getOwnedAndGhostedIndicesAsInt (std::vector< int > &indices) const |
Get the set of owned and ghosted indices for this processor. More... | |
int | getNumOwned () const |
Get the number of indices owned by this processor. More... | |
int | getNumGhosted () const |
Get the number of indices ghosted for this processor. More... | |
int | getNumOwnedAndGhosted () const |
Get the number of owned and ghosted indices for this processor. More... | |
int | getNumFields () const |
gets the number of fields More... | |
const std::vector< int > & | getGIDFieldOffsets (const std::string &blockID, int fieldNum) const |
const Kokkos::View< const int *, PHX::Device > | getGIDFieldOffsetsKokkos (const std::string &blockID, int fieldNum) const |
void | getElementGIDs (panzer::LocalOrdinal localElementID, std::vector< panzer::GlobalOrdinal > &gids, const std::string &blockIdHint="") const |
get associated GIDs for a given local element More... | |
void | buildGlobalUnknowns () |
builds the global unknowns array More... | |
void | buildGlobalUnknowns (const Teuchos::RCP< const FieldPattern > &geomPattern) |
builds the global unknowns array More... | |
int | getFieldNum (const std::string &string) const |
Get the number used for access to this field. More... | |
Teuchos::RCP< Teuchos::Comm < int > > | getComm () const |
Teuchos::RCP< const FieldPattern > | getGeometricFieldPattern () const |
void | getElementBlockIds (std::vector< std::string > &elementBlockIds) const |
bool | fieldInBlock (const std::string &field, const std::string &block) const |
const std::vector< int > & | getBlockFieldNumbers (const std::string &blockId) const |
const std::pair< std::vector < int >, std::vector< int > > & | getGIDFieldOffsets_closure (const std::string &blockId, int fieldNum, int subcellDim, int subcellId) const |
Use the field pattern so that you can find a particular field in the GIDs array. This version lets you specify the sub cell you are interested in and gets the closure. Meaning all the IDs of equal or lesser sub cell dimension that are contained within the specified sub cell. For instance for an edge, this function would return offsets for the edge and the nodes on that edge. More... | |
const std::vector < panzer::LocalOrdinal > & | getElementBlock (const std::string &blockId) const |
Get the owned element block. More... | |
void | ownedIndices (const std::vector< panzer::GlobalOrdinal > &indices, std::vector< bool > &isOwned) const |
void | setFieldOrder (const std::vector< std::string > &fieldOrder) |
void | getFieldOrder (std::vector< std::string > &fieldOrder) const |
bool | validFieldOrder (const std::vector< std::string > &proposed_fieldOrder) |
void | buildUnknownsOrientation () |
bool | getOrientationsRequired () const |
void | setOrientationsRequired (bool ro) |
void | getElementOrientation (panzer::LocalOrdinal localElmtId, std::vector< double > &gidsOrientation) const |
Get a vector containg the orientation of the GIDs relative to the neighbors. More... | |
const std::string & | getFieldString (int num) const |
Reverse lookup of the field string from a field number. More... | |
Teuchos::RCP< ConnManager > | resetIndices () |
Reset the indices for this DOF manager. More... | |
virtual int | getElementBlockGIDCount (const std::string &blockId) const |
How any GIDs are associate with a particular element block. More... | |
virtual int | getElementBlockGIDCount (const std::size_t &blockIndex) const |
How any GIDs are associate with a particular element block. More... | |
void | printFieldInformation (std::ostream &os) const |
void | enableTieBreak (bool enable) |
void | useNeighbors (bool flag) |
std::size_t | getNumberElementGIDArrays () const |
Public Member Functions inherited from panzer::GlobalIndexer | |
virtual | ~GlobalIndexer () |
Pure virtual destructor: prevents warnings with inline empty implementation. More... | |
const Kokkos::View< const panzer::LocalOrdinal *, Kokkos::LayoutRight, PHX::Device > | getElementLIDs (panzer::LocalOrdinal localElmtId) const |
const Kokkos::View< const panzer::LocalOrdinal **, Kokkos::LayoutRight, PHX::Device > | getLIDs () const |
void | getElementLIDs (Kokkos::View< const int *, PHX::Device > cellIds, Kokkos::View< panzer::LocalOrdinal **, PHX::Device > lids) const |
Protected Member Functions | |
Teuchos::RCP< const Tpetra::Map < panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > > | runLocalRCMReordering (const Teuchos::RCP< const Tpetra::Map< panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > > &) |
std::size_t | blockIdToIndex (const std::string &blockId) const |
Teuchos::RCP< const Tpetra::Map < panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > > | buildOverlapMapFromElements (const ElementBlockAccess &access) const |
Teuchos::RCP < Tpetra::MultiVector < panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > > | buildTaggedMultiVector (const ElementBlockAccess &access) |
std::pair< Teuchos::RCP < Tpetra::MultiVector < panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > >, Teuchos::RCP < Tpetra::MultiVector < panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > > > | buildGlobalUnknowns_GUN (const Tpetra::MultiVector< panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > &tagged_overlap_mv, Tpetra::MultiVector< panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > &overlap_mv) const |
void | fillGIDsFromOverlappedMV (const ElementBlockAccess &access, std::vector< std::vector< panzer::GlobalOrdinal > > &elementGIDs, const Tpetra::Map< panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > &overlapmap, const Tpetra::MultiVector< panzer::GlobalOrdinal, panzer::LocalOrdinal, panzer::GlobalOrdinal, panzer::TpetraNodeType > &overlap_mv) const |
void | buildLocalIdsFromOwnedAndGhostedElements () |
Protected Member Functions inherited from panzer::GlobalIndexer | |
void | buildLocalIds () |
void | buildLocalIdsFromOwnedElements (std::vector< std::vector< panzer::LocalOrdinal > > &localIDs) const |
void | setLocalIds (const std::vector< std::vector< panzer::LocalOrdinal > > &localIDs) |
void | shareLocalIDs (const GlobalIndexer &src) |
Protected Attributes | |
Teuchos::RCP< ConnManager > | connMngr_ |
Teuchos::RCP< Teuchos::Comm < int > > | communicator_ |
std::vector< Teuchos::RCP < const FieldPattern > > | fieldPatterns_ |
std::vector< FieldType > | fieldTypes_ |
std::map< std::string, int > | fieldNameToAID_ |
std::vector< std::string > | blockOrder_ |
std::map< std::string, int > | blockNameToID_ |
std::vector< std::vector< int > > | blockToAssociatedFP_ |
std::vector< std::string > | fieldStringOrder_ |
std::vector< int > | fieldAIDOrder_ |
Teuchos::RCP< const panzer::FieldPattern > | ga_fp_ |
std::vector< Teuchos::RCP < panzer::FieldAggPattern > > | fa_fps_ |
std::vector < panzer::GlobalOrdinal > | owned_ |
std::vector < panzer::GlobalOrdinal > | ghosted_ |
std::vector< std::vector < panzer::GlobalOrdinal > > | elementGIDs_ |
std::vector< int > | elementBlockGIDCount_ |
int | numFields_ |
bool | buildConnectivityRun_ |
bool | requireOrientations_ |
std::vector< std::vector < signed char > > | orientation_ |
bool | useTieBreak_ |
bool | useNeighbors_ |
Definition at line 66 of file Panzer_DOFManager.hpp.
|
inlinevirtual |
Definition at line 69 of file Panzer_DOFManager.hpp.
panzer::DOFManager::DOFManager | ( | ) |
Definition at line 148 of file Panzer_DOFManager.cpp.
panzer::DOFManager::DOFManager | ( | const Teuchos::RCP< ConnManager > & | connMngr, |
MPI_Comm | mpiComm | ||
) |
Constructor that sets the connection manager and communicator objects. This is equivalent to calling the default constructor and then "setConnManager(...)" routine.
Definition at line 153 of file Panzer_DOFManager.cpp.
void panzer::DOFManager::setConnManager | ( | const Teuchos::RCP< ConnManager > & | connMngr, |
MPI_Comm | mpiComm | ||
) |
Adds a Connection Manager that will be associated with this DOFManager.
Definition at line 160 of file Panzer_DOFManager.cpp.
|
inlinevirtual |
Returns the connection manager currently being used.
Implements panzer::GlobalIndexer.
Definition at line 82 of file Panzer_DOFManager.hpp.
int panzer::DOFManager::addField | ( | const std::string & | str, |
const Teuchos::RCP< const FieldPattern > & | pattern, | ||
const panzer::FieldType & | type = panzer::FieldType::CG |
||
) |
Add a field to the DOF manager.
Add a field to the DOF manager. Immediately after adding the field the field number and field size will be available for a user to access
[in] | str | Human readable name of the field |
[in] | pattern | Pattern defining the basis function to be used |
[in] | type | Type of the Field (CG/DG) for generating GIDs |
addField
cannot be called after buildGlobalUnknowns
or registerFields
. Definition at line 179 of file Panzer_DOFManager.cpp.
int panzer::DOFManager::addField | ( | const std::string & | blockID, |
const std::string & | str, | ||
const Teuchos::RCP< const FieldPattern > & | pattern, | ||
const panzer::FieldType & | type = panzer::FieldType::CG |
||
) |
Add a field with an option for specifying the block.
Add a field to the DOF manager. Immediately after adding the field the field number and field size will be available for a user to access
[in] | blockID | Name of the element block that this field should be added to |
[in] | str | Human readable name of the field |
[in] | pattern | Pattern defining the basis function to be used |
[in] | type | Type of the Field (CG/DG) for generating GIDs |
addField
cannot be called after buildGlobalUnknowns
or registerFields
. Definition at line 203 of file Panzer_DOFManager.cpp.
Teuchos::RCP< const FieldPattern > panzer::DOFManager::getFieldPattern | ( | const std::string & | name | ) | const |
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum)
.
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum)
. If no pattern is found this function returns Teuchos::null
.
[in] | blockId | Element block id |
[in] | fieldNum | Field integer identifier |
FieldPattern
requested if the field exists, otherwise Teuchos::null
is returned. Definition at line 250 of file Panzer_DOFManager.cpp.
Teuchos::RCP< const FieldPattern > panzer::DOFManager::getFieldPattern | ( | const std::string & | blockId, |
const std::string & | fieldName | ||
) | const |
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum)
.
Find a field pattern stored for a particular block and field number. This will retrive the pattern added with addField(blockId,fieldNum)
. If no pattern is found this function returns Teuchos::null
.
[in] | blockId | Element block id |
[in] | fieldName | Field string identifier |
FieldPattern
requested if the field exists, otherwise Teuchos::null
is returned. Definition at line 263 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of indices owned by this processor.
[out] | indices | A vector that will be fille with the indices owned by this processor. |
Implements panzer::GlobalIndexer.
Definition at line 293 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of indices ghosted for this processor.
[out] | indices | A vector that will be fille with the indices ghosted for this processor. |
Implements panzer::GlobalIndexer.
Definition at line 299 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of owned and ghosted indices for this processor.
[out] | indices | A vector that will be fille with the owned and ghosted indices for this processor. |
Implements panzer::GlobalIndexer.
Definition at line 305 of file Panzer_DOFManager.cpp.
|
virtual |
Get the global IDs for a particular element. This function overwrites the gids
variable.
Implements panzer::GlobalIndexer.
Definition at line 316 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of indices owned by this processor.
[out] | A | vector that will be filled with the indices owned by this processor. |
Implements panzer::GlobalIndexer.
Definition at line 325 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of indices ghosted for this processor.
[out] | A | vector that will be filled with the indices ghosted for this processor. |
Implements panzer::GlobalIndexer.
Definition at line 333 of file Panzer_DOFManager.cpp.
|
virtual |
Get the set of owned and ghosted indices for this processor.
[out] | A | vector that will be filled with the owned and ghosted indices for this processor. |
Implements panzer::GlobalIndexer.
Definition at line 341 of file Panzer_DOFManager.cpp.
|
virtual |
Get the number of indices owned by this processor.
Implements panzer::GlobalIndexer.
Definition at line 351 of file Panzer_DOFManager.cpp.
|
virtual |
Get the number of indices ghosted for this processor.
Implements panzer::GlobalIndexer.
Definition at line 357 of file Panzer_DOFManager.cpp.
|
virtual |
Get the number of owned and ghosted indices for this processor.
Implements panzer::GlobalIndexer.
Definition at line 363 of file Panzer_DOFManager.cpp.
|
virtual |
gets the number of fields
Implements panzer::GlobalIndexer.
Definition at line 369 of file Panzer_DOFManager.cpp.
|
virtual |
gets the field pattern so you can find a particular field in the GIDs array.
Implements panzer::GlobalIndexer.
Definition at line 376 of file Panzer_DOFManager.cpp.
const Kokkos::View< const int *, PHX::Device > panzer::DOFManager::getGIDFieldOffsetsKokkos | ( | const std::string & | blockID, |
int | fieldNum | ||
) | const |
gets the field pattern so you can find a particular field in the GIDs array.
Definition at line 393 of file Panzer_DOFManager.cpp.
|
virtual |
get associated GIDs for a given local element
Implements panzer::GlobalIndexer.
Definition at line 409 of file Panzer_DOFManager.cpp.
void panzer::DOFManager::buildGlobalUnknowns | ( | ) |
builds the global unknowns array
Definition at line 415 of file Panzer_DOFManager.cpp.
void panzer::DOFManager::buildGlobalUnknowns | ( | const Teuchos::RCP< const FieldPattern > & | geomPattern | ) |
builds the global unknowns array
Definition at line 439 of file Panzer_DOFManager.cpp.
|
virtual |
Get the number used for access to this field.
Get the number used for access to this field. This is used as the input parameter to the other functions that provide access to the global unknowns.
[in] | str | Human readable name of the field |
Implements panzer::GlobalIndexer.
Definition at line 959 of file Panzer_DOFManager.cpp.
|
inlinevirtual |
Get communicator associated with this global indexer.
Implements panzer::GlobalIndexer.
Definition at line 227 of file Panzer_DOFManager.hpp.
|
inline |
Definition at line 230 of file Panzer_DOFManager.hpp.
|
inlinevirtual |
What are the blockIds included in this connection manager?
Implements panzer::GlobalIndexer.
Definition at line 233 of file Panzer_DOFManager.hpp.
|
virtual |
Is the specified field in the element block?
Implements panzer::GlobalIndexer.
Definition at line 986 of file Panzer_DOFManager.cpp.
|
virtual |
Get field numbers associated with a particular element block.
Implements panzer::GlobalIndexer.
Definition at line 1015 of file Panzer_DOFManager.cpp.
|
virtual |
Use the field pattern so that you can find a particular field in the GIDs array. This version lets you specify the sub cell you are interested in and gets the closure. Meaning all the IDs of equal or lesser sub cell dimension that are contained within the specified sub cell. For instance for an edge, this function would return offsets for the edge and the nodes on that edge.
[in] | blockId | |
[in] | fieldNum | |
[in] | subcellDim | |
[in] | subcellId |
Implements panzer::GlobalIndexer.
Definition at line 1035 of file Panzer_DOFManager.cpp.
|
inlinevirtual |
Get the owned element block.
Implements panzer::GlobalIndexer.
Definition at line 258 of file Panzer_DOFManager.hpp.
|
virtual |
Get a yes/no on ownership for each index in a vector
Implements panzer::GlobalIndexer.
Definition at line 1051 of file Panzer_DOFManager.cpp.
void panzer::DOFManager::setFieldOrder | ( | const std::vector< std::string > & | fieldOrder | ) |
Definition at line 1063 of file Panzer_DOFManager.cpp.
|
virtual |
Get the field order used by this global indexer.
Implements panzer::GlobalIndexer.
Definition at line 978 of file Panzer_DOFManager.cpp.
bool panzer::DOFManager::validFieldOrder | ( | const std::vector< std::string > & | proposed_fieldOrder | ) |
Definition at line 1081 of file Panzer_DOFManager.cpp.
void panzer::DOFManager::buildUnknownsOrientation | ( | ) |
Definition at line 1114 of file Panzer_DOFManager.cpp.
|
inline |
Definition at line 272 of file Panzer_DOFManager.hpp.
|
inline |
Definition at line 275 of file Panzer_DOFManager.hpp.
|
virtual |
Get a vector containg the orientation of the GIDs relative to the neighbors.
Implements panzer::GlobalIndexer.
Definition at line 1185 of file Panzer_DOFManager.cpp.
|
virtual |
Reverse lookup of the field string from a field number.
[in] | num | Field number. Assumed to be a valid field number. Computed from getFieldNum . |
Implements panzer::GlobalIndexer.
Definition at line 1100 of file Panzer_DOFManager.cpp.
Teuchos::RCP< ConnManager > panzer::DOFManager::resetIndices | ( | ) |
Reset the indices for this DOF manager.
This method resets the indices and wipes out internal state. This method does preserve the fields and the patterns added to the object. Also the old connection manager is returned.
Definition at line 1197 of file Panzer_DOFManager.cpp.
|
inlinevirtual |
How any GIDs are associate with a particular element block.
This is a per-element count. If you have a quad element with two piecewise bi-linear fields this method returns 8.
Implements panzer::GlobalIndexer.
Definition at line 299 of file Panzer_DOFManager.hpp.
|
inlinevirtual |
How any GIDs are associate with a particular element block.
This is a per-element count. If you have a quad element with two piecewise bi-linear fields this method returns 8.
Implements panzer::GlobalIndexer.
Definition at line 307 of file Panzer_DOFManager.hpp.
void panzer::DOFManager::printFieldInformation | ( | std::ostream & | os | ) | const |
Prints to an output stream the information about the aggregated field.
Definition at line 1224 of file Panzer_DOFManager.cpp.
|
inline |
Turn on/off the use of a tie break object in the createOneToOne algorithm. Turning this one gives better load balancing.
Definition at line 319 of file Panzer_DOFManager.hpp.
|
inline |
Turn on/off the use of neighbor elements in the construction of the global ids. If on, then the ghosted GIDs will include GIDs from neighbor elements, and you will be able to call getElement(G/L)IDs for elements in the one ring of this processor.
Definition at line 327 of file Panzer_DOFManager.hpp.
|
inline |
Definition at line 336 of file Panzer_DOFManager.hpp.
|
protected |
Use Zoltan2 to locally reorder with RCM.
|
protected |
Using the natural ordering associated with the std::vector retrieved from the connection manager
Definition at line 1215 of file Panzer_DOFManager.cpp.
|
protected |
Build the overlapped communication map given an element access object. This map is used to construct the GIDs, and also to communicate the used GIDs. (this is steps 1 and 2)
Definition at line 1243 of file Panzer_DOFManager.cpp.
|
protected |
Build a tagged multivector (as defined in GUN paper) to use in global unknown numbering algorithm. Note that this is non-const. It does modify the elementBlockGIDCount
member variable.
Definition at line 843 of file Panzer_DOFManager.cpp.
|
protected |
Build global unknowns using the algorithm in the Global Unknowns Numbering paper (GUN). This returns a non-overlapped multi-vector with the unique global IDs as owned by this processor. The input tagged overlapped multi-vector (overlap_mv
) is overwritten with the global IDs. Note fields on geometric entities that are not assigned a global ID are given an entry of -1.
Definition at line 687 of file Panzer_DOFManager.cpp.
|
protected |
Definition at line 1276 of file Panzer_DOFManager.cpp.
|
protected |
Definition at line 1335 of file Panzer_DOFManager.cpp.
|
protected |
Definition at line 401 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 402 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 406 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 407 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 408 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 410 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 411 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 412 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 414 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 415 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 418 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 419 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 421 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 422 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 425 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 429 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 431 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 433 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 435 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 436 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 438 of file Panzer_DOFManager.hpp.
|
protected |
Definition at line 439 of file Panzer_DOFManager.hpp.