Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
AMP::Discretization::DOFManager Class Reference

#include <DOF_Manager.h>

Inheritance diagram for AMP::Discretization::DOFManager:
Inheritance graph
[legend]

Public Member Functions

virtual size_t appendDOFs (const AMP::Mesh::MeshElementID &id, size_t *dofs, size_t index, size_t capacity) const
 
virtual size_t beginDOF () const
 The first D.O.F. on this core.
 
virtual std::string className () const
 Return a string with the mesh class name.
 
 DOFManager (int64_t fid, AMP::IO::RestartManager *manager)
 Write restart data to file.
 
 DOFManager (size_t N_local, const AMP_MPI &comm, std::vector< size_t > remoteDOFs={})
 Basic constructor for DOFManager.
 
virtual size_t endDOF () const
 One past the last D.O.F. on this core.
 
const AMP_MPIgetComm () const
 Get the comm for the DOFManger.
 
void getDOFs (const AMP::Mesh::MeshElementID &id, std::vector< size_t > &dofs) const
 Get the entry indices of DOFs given a mesh element ID.
 
void getDOFs (const std::vector< AMP::Mesh::MeshElementID > &ids, std::vector< size_t > &dofs) const
 Get the entry indices of DOFs given a mesh element ID.
 
void getDOFs (int N_ids, const AMP::Mesh::MeshElementID *ids, std::vector< size_t > &dofs) const
 Get the entry indices of DOFs given a mesh element ID.
 
virtual int getDOFsPerPoint () const
 Get the number of DOFs per element.
 
virtual std::unique_ptr< AMP::Mesh::MeshElementgetElement (size_t dof) const
 Get the mesh element for a DOF.
 
virtual AMP::Mesh::MeshElementID getElementID (size_t dof) const
 Get the mesh element for a DOF.
 
uint64_t getID () const
 Get a unique id hash.
 
virtual AMP::Mesh::MeshIterator getIterator () const
 Get an entry over the mesh elements associated with the DOFs.
 
virtual std::vector< size_t > getLocalSizes () const
 The local number of D.O.F on each rank.
 
virtual std::shared_ptr< const AMP::Mesh::MeshgetMesh () const
 Get the underlying mesh.
 
virtual std::vector< size_t > getRemoteDOFs () const
 Get the remote DOFs for a vector.
 
std::vector< size_t > getRowDOFs (const AMP::Mesh::MeshElementID &id) const
 Get the row DOFs given a mesh element.
 
virtual size_t getRowDOFs (const AMP::Mesh::MeshElementID &id, size_t *dofs, size_t N_alloc, bool sort=true) const
 Get the row DOFs given a mesh element.
 
virtual size_t numGlobalDOF () const
 The global number of D.O.F.
 
virtual size_t numLocalDOF () const
 The local number of D.O.F.
 
bool operator!= (const DOFManager &rhs) const
 Inverse of ==.
 
virtual bool operator== (const DOFManager &rhs) const
 Compares two DOFManager for equality.
 
virtual void registerChildObjects (AMP::IO::RestartManager *manager) const
 Register any child objects.
 
virtual void replaceRemoteDOFs (std::vector< size_t > &newRemote)
 
std::shared_ptr< AMP::Discretization::DOFManagershared_from_this ()
 
std::shared_ptr< const AMP::Discretization::DOFManagershared_from_this () const
 
virtual std::shared_ptr< DOFManagersubset (const AMP::Mesh::MeshIterator &iterator, const AMP_MPI &comm)
 Subset the DOF Manager for a mesh element iterator.
 
virtual std::shared_ptr< DOFManagersubset (const AMP_MPI &comm)
 Subset the DOF Manager for a AMP_MPI communicator.
 
virtual std::shared_ptr< DOFManagersubset (const std::shared_ptr< const AMP::Mesh::Mesh > mesh, bool useMeshComm=true)
 Subset the DOF Manager for a mesh.
 
virtual void writeRestart (int64_t fid) const
 Write restart data to file.
 
virtual ~DOFManager ()
 Deconstructor.
 

Protected Member Functions

 DOFManager ()
 Empty constructor for a DOF manager object.
 

Protected Attributes

size_t d_begin = 0
 The begining DOF, ending DOF and number of local DOFs for this processor.
 
AMP_MPI d_comm
 The comm for this DOFManager.
 
size_t d_end = 0
 
size_t d_global = 0
 
std::vector< size_t > d_localSize
 
std::vector< size_t > d_remoteDOFs
 The remote dofs (if cached)
 
std::shared_ptr< DOFManagerParametersparams
 The DOF manager parameters.
 
std::weak_ptr< AMP::Discretization::DOFManagerweak_ptr_
 

Detailed Description

Definition at line 27 of file DOF_Manager.h.

Constructor & Destructor Documentation

◆ DOFManager() [1/3]

AMP::Discretization::DOFManager::DOFManager ( size_t  N_local,
const AMP_MPI comm,
std::vector< size_t >  remoteDOFs = {} 
)

Basic constructor for DOFManager.

This will create a very simple DOFManager with the given number of DOFs on each processor. It will not contain info to relate that to a mesh. A derived implementation should be used for more advanced features. For example see simpleDOFManager and multiDOFManager.

Parameters
[in]N_localThe local number of DOFs
[in]commThe comm over which the DOFManager exists
[in]remoteDOFsOptional list of remote DOFs

◆ ~DOFManager()

virtual AMP::Discretization::DOFManager::~DOFManager ( )
virtual

Deconstructor.

◆ DOFManager() [2/3]

AMP::Discretization::DOFManager::DOFManager ( int64_t  fid,
AMP::IO::RestartManager manager 
)

Write restart data to file.

This function will write the mesh to an HDF5 file

Parameters
fidFile identifier to read
managerRestart manager

◆ DOFManager() [3/3]

AMP::Discretization::DOFManager::DOFManager ( )
inlineprotected

Empty constructor for a DOF manager object.

Definition at line 254 of file DOF_Manager.h.

Member Function Documentation

◆ appendDOFs()

virtual size_t AMP::Discretization::DOFManager::appendDOFs ( const AMP::Mesh::MeshElementID id,
size_t *  dofs,
size_t  index,
size_t  capacity 
) const
virtual

◆ beginDOF()

virtual size_t AMP::Discretization::DOFManager::beginDOF ( ) const
virtual

The first D.O.F. on this core.

Returns
The first D.O.F. on this core

◆ className()

virtual std::string AMP::Discretization::DOFManager::className ( ) const
virtual

Return a string with the mesh class name.

Reimplemented in AMP::Discretization::simpleDOFManager.

◆ endDOF()

virtual size_t AMP::Discretization::DOFManager::endDOF ( ) const
virtual

One past the last D.O.F. on this core.

Returns
One past the last D.O.F. on this core

◆ getComm()

const AMP_MPI & AMP::Discretization::DOFManager::getComm ( ) const
inline

Get the comm for the DOFManger.

Definition at line 168 of file DOF_Manager.h.

References d_comm.

◆ getDOFs() [1/3]

void AMP::Discretization::DOFManager::getDOFs ( const AMP::Mesh::MeshElementID id,
std::vector< size_t > &  dofs 
) const

Get the entry indices of DOFs given a mesh element ID.

This will return a vector of pointers into a Vector that are associated with which.

Parameters
[in]idThe element ID to collect nodal objects for. Note: the mesh element may be any type (include a vertex).
[out]dofsThe entries in the vector associated with D.O.F.s

◆ getDOFs() [2/3]

void AMP::Discretization::DOFManager::getDOFs ( const std::vector< AMP::Mesh::MeshElementID > &  ids,
std::vector< size_t > &  dofs 
) const

Get the entry indices of DOFs given a mesh element ID.

This will return a vector of pointers into a Vector that are associated with which.

Parameters
[in]idsThe element IDs to collect nodal objects for. Note: the mesh element may be any type (include a vertex).
[out]dofsThe entries in the vector associated with D.O.F.s on the nodes

◆ getDOFs() [3/3]

void AMP::Discretization::DOFManager::getDOFs ( int  N_ids,
const AMP::Mesh::MeshElementID ids,
std::vector< size_t > &  dofs 
) const

Get the entry indices of DOFs given a mesh element ID.

This will return a vector of pointers into a Vector that are associated with which.

Parameters
[in]N_idsThe number of element ids
[in]idsThe element IDs to collect nodal objects for. Note: the mesh element may be any type (include a vertex).
[out]dofsThe entries in the vector associated with D.O.F.s on the nodes

◆ getDOFsPerPoint()

virtual int AMP::Discretization::DOFManager::getDOFsPerPoint ( ) const
virtual

Get the number of DOFs per element.

This will return the number of DOFs per mesh element. If some DOFs are not associated with a mesh element or if all elements do not contain the same number of DOFs than this routine will return -1.

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, and AMP::Discretization::subsetDOFManager.

◆ getElement()

virtual std::unique_ptr< AMP::Mesh::MeshElement > AMP::Discretization::DOFManager::getElement ( size_t  dof) const
virtual

Get the mesh element for a DOF.

This will return the mesh element associated with a given DOF.

Parameters
[in]dofThe entry in the vector associated with DOF
Returns
The element for the given DOF.

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, and AMP::Discretization::subsetDOFManager.

◆ getElementID()

virtual AMP::Mesh::MeshElementID AMP::Discretization::DOFManager::getElementID ( size_t  dof) const
virtual

Get the mesh element for a DOF.

This will return the mesh element associated with a given DOF.

Parameters
[in]dofThe entry in the vector associated with DOF
Returns
The element for the given DOF.

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, and AMP::Discretization::subsetDOFManager.

◆ getID()

uint64_t AMP::Discretization::DOFManager::getID ( ) const

Get a unique id hash.

◆ getIterator()

virtual AMP::Mesh::MeshIterator AMP::Discretization::DOFManager::getIterator ( ) const
virtual

Get an entry over the mesh elements associated with the DOFs.

This will return an iterator over the mesh elements associated with the DOFs. Each element in the iterator will have 1 or more DOFs that are associated with that element. For example, a nodal vector with 3 DOFs stored at each node would return an iterator over all the nodes with no element repeated. Note that this iterator does not contain ghost elements because there would be repeated elements between the different processors. Calling this iterator ensures that each owned element is called once regardless of the number of DOFs on that element and the number of processors that share a ghost copy.

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, and AMP::Discretization::subsetDOFManager.

◆ getLocalSizes()

virtual std::vector< size_t > AMP::Discretization::DOFManager::getLocalSizes ( ) const
virtual

The local number of D.O.F on each rank.

Returns
The local number of D.O.F on each rank

Reimplemented in AMP::Discretization::multiDOFManager, and AMP::Discretization::subsetCommSelfDOFManager.

◆ getMesh()

virtual std::shared_ptr< const AMP::Mesh::Mesh > AMP::Discretization::DOFManager::getMesh ( ) const
virtual

◆ getRemoteDOFs()

virtual std::vector< size_t > AMP::Discretization::DOFManager::getRemoteDOFs ( ) const
virtual

◆ getRowDOFs() [1/2]

std::vector< size_t > AMP::Discretization::DOFManager::getRowDOFs ( const AMP::Mesh::MeshElementID id) const

Get the row DOFs given a mesh element.

◆ getRowDOFs() [2/2]

virtual size_t AMP::Discretization::DOFManager::getRowDOFs ( const AMP::Mesh::MeshElementID id,
size_t *  dofs,
size_t  N_alloc,
bool  sort = true 
) const
virtual

◆ numGlobalDOF()

virtual size_t AMP::Discretization::DOFManager::numGlobalDOF ( ) const
virtual

The global number of D.O.F.

Returns
The global number of D.O.F

◆ numLocalDOF()

virtual size_t AMP::Discretization::DOFManager::numLocalDOF ( ) const
virtual

The local number of D.O.F.

Returns
The local number of D.O.F

◆ operator!=()

bool AMP::Discretization::DOFManager::operator!= ( const DOFManager rhs) const

Inverse of ==.

This function performs an equality check and negates it. Hence, it is not virtual

Parameters
rhsDOFManager to compare

◆ operator==()

virtual bool AMP::Discretization::DOFManager::operator== ( const DOFManager rhs) const
virtual

Compares two DOFManager for equality.

This operation compares two DOF managers to see if they are equivalent

Parameters
rhsDOFManager to compare

◆ registerChildObjects()

virtual void AMP::Discretization::DOFManager::registerChildObjects ( AMP::IO::RestartManager manager) const
virtual

Register any child objects.

This function will register child objects with the manager

Parameters
managerRestart manager

Reimplemented in AMP::Discretization::simpleDOFManager.

◆ replaceRemoteDOFs()

virtual void AMP::Discretization::DOFManager::replaceRemoteDOFs ( std::vector< size_t > &  newRemote)
inlinevirtual

Definition at line 174 of file DOF_Manager.h.

References d_remoteDOFs.

◆ shared_from_this() [1/2]

std::shared_ptr< AMP::Discretization::DOFManager > AMP::enable_shared_from_this< AMP::Discretization::DOFManager >::shared_from_this ( )
inlineinherited

Definition at line 28 of file enable_shared_from_this.h.

◆ shared_from_this() [2/2]

std::shared_ptr< const AMP::Discretization::DOFManager > AMP::enable_shared_from_this< AMP::Discretization::DOFManager >::shared_from_this ( ) const
inlineinherited

Definition at line 46 of file enable_shared_from_this.h.

◆ subset() [1/3]

virtual std::shared_ptr< DOFManager > AMP::Discretization::DOFManager::subset ( const AMP::Mesh::MeshIterator iterator,
const AMP_MPI comm 
)
virtual

Subset the DOF Manager for a mesh element iterator.

This will subset a DOF manager for a given mesh element iterator. The resulting DOFManager will exist on the privided comm.

Parameters
[in]iteratorThe mesh iterator for the subset
[in]commThe desired comm

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, AMP::Discretization::subsetDOFManager, and AMP::Discretization::multiDOFManager.

◆ subset() [2/3]

virtual std::shared_ptr< DOFManager > AMP::Discretization::DOFManager::subset ( const AMP_MPI comm)
virtual

Subset the DOF Manager for a AMP_MPI communicator.

This will subset a DOF manager for a given communicator.

Parameters
[in]commThe communicator to use to subset

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, AMP::Discretization::subsetDOFManager, and AMP::Discretization::multiDOFManager.

◆ subset() [3/3]

virtual std::shared_ptr< DOFManager > AMP::Discretization::DOFManager::subset ( const std::shared_ptr< const AMP::Mesh::Mesh mesh,
bool  useMeshComm = true 
)
virtual

Subset the DOF Manager for a mesh.

This will subset a DOF manager for a particular mesh. The resulting DOFManager can exist on either the comm of the parent DOF manager, or the comm of the mesh (default).

Parameters
[in]meshThe mesh to use to subset
[in]useMeshCommDo we want to use the mesh comm for the new DOFManager. Note: if this is true, any processors that do not contain the mesh will return NULL.

Reimplemented in AMP::Discretization::multiDOFManager, AMP::Discretization::simpleDOFManager, AMP::Discretization::structuredFaceDOFManager, AMP::Discretization::subsetCommSelfDOFManager, AMP::Discretization::subsetDOFManager, AMP::Discretization::multiDOFManager, and AMP::Discretization::simpleDOFManager.

◆ writeRestart()

virtual void AMP::Discretization::DOFManager::writeRestart ( int64_t  fid) const
virtual

Write restart data to file.

This function will write the mesh to an HDF5 file

Parameters
fidFile identifier to write

Reimplemented in AMP::Discretization::simpleDOFManager.

Member Data Documentation

◆ d_begin

size_t AMP::Discretization::DOFManager::d_begin = 0
protected

The begining DOF, ending DOF and number of local DOFs for this processor.

Definition at line 260 of file DOF_Manager.h.

Referenced by AMP::Discretization::subsetCommSelfDOFManager::getLocalSizes().

◆ d_comm

AMP_MPI AMP::Discretization::DOFManager::d_comm
protected

The comm for this DOFManager.

Definition at line 267 of file DOF_Manager.h.

Referenced by getComm().

◆ d_end

size_t AMP::Discretization::DOFManager::d_end = 0
protected

◆ d_global

size_t AMP::Discretization::DOFManager::d_global = 0
protected

Definition at line 260 of file DOF_Manager.h.

◆ d_localSize

std::vector<size_t> AMP::Discretization::DOFManager::d_localSize
mutableprotected

Definition at line 261 of file DOF_Manager.h.

◆ d_remoteDOFs

std::vector<size_t> AMP::Discretization::DOFManager::d_remoteDOFs
protected

The remote dofs (if cached)

Definition at line 264 of file DOF_Manager.h.

Referenced by replaceRemoteDOFs().

◆ params

std::shared_ptr<DOFManagerParameters> AMP::Discretization::DOFManager::params
protected

The DOF manager parameters.

Definition at line 257 of file DOF_Manager.h.

◆ weak_ptr_

std::weak_ptr<AMP::Discretization::DOFManager > AMP::enable_shared_from_this< AMP::Discretization::DOFManager >::weak_ptr_
mutableprotectedinherited

Definition at line 69 of file enable_shared_from_this.h.


The documentation for this class was generated from the following file:



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:42.
Comments on this page