19 #ifndef GEOS_LINEARALGEBRA_MULTISCALE_DOFMANAGER_HPP
20 #define GEOS_LINEARALGEBRA_MULTISCALE_DOFMANAGER_HPP
29 class MeshObjectManager;
100 return m_fields.size();
115 string const &
key(
string const & fieldName )
const;
195 template<
typename MATRIX >
197 MPI_Comm
const & comm,
199 MATRIX & restrictor )
const;
206 struct FieldDescription
223 FieldDescription
const & getField(
string const & name )
const;
229 void createIndexArray( FieldDescription
const & field );
238 std::vector< FieldDescription > m_fields;
241 bool m_reordered =
false;
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Degree-of-freedom manager that works with multiscale mesh levels.
integer numComponents(string const &fieldName) const
DofManager(DofManager const &)=delete
Deleted copy constructor.
globalIndex numGlobalDofs(string const &fieldName) const
string const & key(string const &fieldName) const
Return the key used to record the field in the DofManager.
globalIndex rankOffset() const
integer numComponents() const
globalIndex globalOffset(string const &fieldName) const
void reorderByRank()
Finish populating fields and apply appropriate dof renumbering.
void clear()
Remove all previously added fields.
std::size_t numFields() const
void makeRestrictor(string const &fieldName, MPI_Comm const &comm, bool transpose, MATRIX &restrictor) const
Create a matrix that restricts vectors and matrices to a subset of DOFs.
MeshObjectManager const & manager(string const &fieldName) const
DofManager & operator=(DofManager &&)=default
Defaulted move assignment.
void setDomain(DomainPartition &domain)
Assign a domain.
localIndex localOffset(string const &fieldName) const
DofManager(DofManager &&)=default
Move constructor.
globalIndex rankOffset(string const &fieldName) const
void addField(string const &fieldName, integer const components, MeshObjectManager &manager)
Add a field.
localIndex numLocalDofs() const
localIndex numLocalDofs(string const &fieldName) const
bool fieldExists(string const &name) const
Check if string key is already being used.
DofManager(string name)
Constructor.
DofManager & operator=(DofManager const &)=delete
Deleted copy assignment.
DomainPartition & domain()
globalIndex numGlobalDofs() const
Mesh object manager used in multiscale preconditioners to keep a simplified (node/cell only) represen...
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
std::size_t size_t
Unsigned size type.
int integer
Signed integer type.