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.