1#ifndef included_AMP_simpleDOF_Manager
2#define included_AMP_simpleDOF_Manager
4#include "AMP/discretization/DOF_Manager.h"
5#include "AMP/mesh/Mesh.h"
6#include "AMP/mesh/MeshElement.h"
37 static std::shared_ptr<DOFManager>
create( std::shared_ptr<const AMP::Mesh::Mesh> mesh,
67 static std::shared_ptr<DOFManager>
create( std::shared_ptr<const AMP::Mesh::Mesh> mesh,
89 std::string
className()
const override {
return "simpleDOFManager"; }
105 std::unique_ptr<AMP::Mesh::MeshElement>
getElement(
size_t dof )
const override;
111 std::shared_ptr<const AMP::Mesh::Mesh>
getMesh()
const override;
136 std::shared_ptr<DOFManager>
subset(
const std::shared_ptr<const AMP::Mesh::Mesh> mesh,
137 bool useMeshComm =
true )
override;
151 bool sort =
true )
const override;
158 size_t capacity )
const override;
171 std::vector<size_t>
getRemoteDOF(
const std::vector<AMP::Mesh::MeshElementID> &ids )
const;
181 std::shared_ptr<const AMP::Mesh::Mesh>
d_mesh;
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 create a simple DOF_Manager.
static std::shared_ptr< DOFManager > create(std::shared_ptr< const AMP::Mesh::Mesh > mesh, AMP::Mesh::GeomType type, int gcw, int DOFsPerElement, bool split=true)
Create a new DOF manager object.
simpleDOFManager(int64_t, AMP::IO::RestartManager *)
AMP::Mesh::MeshIterator getIterator() const override
Get an entry over the mesh elements associated with the DOFs.
AMP::Mesh::MeshID d_meshID
std::vector< size_t > getRemoteDOFs() const override
Get the remote DOFs for a vector.
std::vector< AMP::Mesh::MeshElementID > d_local_id
std::unique_ptr< AMP::Mesh::MeshElement > getElement(size_t dof) const override
Get the mesh element for a DOF.
int getDOFsPerPoint() const override
Get the number of DOFs per element.
std::shared_ptr< const AMP::Mesh::Mesh > getMesh() const override
Get the underlying mesh.
simpleDOFManager(std::shared_ptr< const AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &local, const AMP::Mesh::MeshIterator &ghost, AMP::Mesh::GeomType type, int DOFsPerElement)
Create a new DOF manager object.
AMP::Mesh::GeomType d_type
AMP::Mesh::MeshIterator d_localIterator
std::string className() const override
Return a string with the mesh class name.
std::vector< AMP::Mesh::MeshElementID > d_remote_id
static std::shared_ptr< DOFManager > create(const AMP::Mesh::MeshIterator &it, int DOFsPerElement)
Create a new DOF manager object.
std::vector< size_t > getRemoteDOF(const std::vector< AMP::Mesh::MeshElementID > &ids) const
void registerChildObjects(AMP::IO::RestartManager *manager) const override
Register any child objects.
std::vector< AMP::Mesh::MeshID > d_baseMeshIDs
std::shared_ptr< const AMP::Mesh::Mesh > d_mesh
AMP::Mesh::MeshElementID getElementID(size_t dof) const override
Get the mesh element ID for a DOF.
AMP::Mesh::MeshIterator d_ghostIterator
std::shared_ptr< DOFManager > subset(const std::shared_ptr< const AMP::Mesh::Mesh > mesh, bool useMeshComm=true) override
Subset the DOF Manager for a mesh.
simpleDOFManager()=delete
void writeRestart(int64_t) const override
Write restart data to file.
virtual ~simpleDOFManager()
Destructor.
size_t appendDOFs(const AMP::Mesh::MeshElementID &id, size_t *dofs, size_t index, size_t capacity) const override
static std::shared_ptr< DOFManager > create(std::shared_ptr< const AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &ghost, const AMP::Mesh::MeshIterator &local, int DOFsPerElement)
Create a new DOF manager object.
std::vector< size_t > d_remote_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.
Class to manage reading/writing restart data.
A class used to iterate over elements in a Mesh.
GeomType
Enumeration for basic mesh-based quantities.
A structure used to identify the mesh element.
A structure used to identify the mesh.