1#ifndef included_AMP_subsetDOF_Manager
2#define included_AMP_subsetDOF_Manager
4#include "AMP/discretization/DOF_Manager.h"
5#include "AMP/mesh/MeshElement.h"
30 static std::shared_ptr<DOFManager>
create( std::shared_ptr<const DOFManager> parentDOFManager,
31 const std::vector<size_t> &dofs,
49 std::unique_ptr<AMP::Mesh::MeshElement>
getElement(
size_t dof )
const override;
59 std::shared_ptr<const AMP::Mesh::Mesh>
getMesh()
const override;
78 virtual std::vector<size_t>
getParentDOF(
const std::vector<size_t> & )
const;
86 virtual std::vector<size_t>
getSubsetDOF(
const std::vector<size_t> & )
const;
106 bool sort =
true )
const override;
113 size_t capacity )
const override;
Provides C++ wrapper around MPI routines.
std::vector< size_t > getRowDOFs(const AMP::Mesh::MeshElementID &id) const
Get the row DOFs given a mesh element.
virtual std::shared_ptr< DOFManager > subset(const AMP_MPI &comm)
Subset the DOF Manager for a AMP_MPI communicator.
A derived class to subset a DOFManagers.
std::vector< size_t > d_localDOFs
The list of local DOFs (sorted, using the parent DOF numbering)
int getDOFsPerPoint() const override
Get the number of DOFs per element.
std::vector< size_t > d_remoteParentDOFs
The list of remote DOFs.
AMP::Mesh::MeshIterator d_iterator
The iterator for the subset.
virtual std::vector< size_t > getParentDOF(const std::vector< size_t > &) const
Function to convert DOFs from a subset DOFManager DOF to the parent DOF.
size_t getRowDOFs(const AMP::Mesh::MeshElementID &id, size_t *dofs, size_t N_alloc, bool sort=true) const override
Get the row DOFs given a mesh element.
size_t d_parentBegin
The parent begin, end, and global DOFs.
virtual std::vector< size_t > getSubsetDOF(const std::vector< size_t > &) const
virtual std::vector< size_t > getLocalParentDOFs() const
Function to return the local DOFs on the parent DOF manager.
static std::shared_ptr< DOFManager > create(std::shared_ptr< const DOFManager > parentDOFManager, const std::vector< size_t > &dofs, const AMP::Mesh::MeshIterator &iterator, const AMP_MPI &comm)
Default constructor.
std::shared_ptr< const DOFManager > d_parentDOFManager
The parent DOF Manager.
std::vector< size_t > d_remoteSubsetDOFs
size_t appendDOFs(const AMP::Mesh::MeshElementID &id, size_t *dofs, size_t index, size_t capacity) const override
AMP::Mesh::MeshElementID getElementID(size_t dof) const override
Get the mesh element ID for a DOF.
std::shared_ptr< const AMP::Mesh::Mesh > getMesh() const override
Get the underlying mesh.
virtual std::shared_ptr< const DOFManager > getDOFManager() const
Get the parent DOFManager.
AMP::Mesh::MeshIterator getIterator() const override
Get an entry over the mesh elements associated with the DOFs.
std::unique_ptr< AMP::Mesh::MeshElement > getElement(size_t dof) const override
Get the mesh element for a DOF.
std::vector< size_t > getRemoteDOFs() const override
Get the remote DOFs for a vector.
virtual ~subsetDOFManager()
Deconstructor.
A class used to iterate over elements in a Mesh.
A structure used to identify the mesh element.