18 #ifndef LIBMESH_STATIC_CONDENSATION_DOF_MAP_H 19 #define LIBMESH_STATIC_CONDENSATION_DOF_MAP_H 21 #include "libmesh/libmesh_config.h" 23 #include "libmesh/id_types.h" 24 #include "libmesh/libmesh_common.h" 25 #include "libmesh/dof_map_base.h" 26 #include "libmesh/variable.h" 27 #include "libmesh/sparsity_pattern.h" 28 #include "libmesh/utility.h" 30 #include <unordered_map> 91 std::vector<dof_id_type> & di,
92 const unsigned int vn,
93 int p_level = -12345)
const override;
96 std::vector<dof_id_type> & di,
97 const unsigned int vn)
const override;
109 virtual void clear()
override;
137 bool involved_in_constraints,
138 std::unordered_map<dof_id_type, dof_id_type> & uncondensed_global_to_local_map,
139 std::unordered_set<dof_id_type> & local_uncondensed_dofs_set,
141 nonlocal_uncondensed_dofs,
142 std::vector<dof_id_type> & elem_uncondensed_dofs,
144 std::unordered_set<dof_id_type> & constraint_dofs);
164 bool involved_in_constraints,
165 std::unordered_map<dof_id_type, dof_id_type> & uncondensed_global_to_local_map,
166 std::unordered_set<dof_id_type> & local_uncondensed_dofs_set,
168 nonlocal_uncondensed_dofs,
169 std::vector<dof_id_type> & elem_uncondensed_dofs,
171 std::unordered_set<dof_id_type> & constraint_dofs);
258 #endif // LIBMESH_STATIC_CONDENSATION_DOF_MAP_H
A class holding degree of freedom information pertinent to static condensation.
A Node is like a Point, but with more information.
std::unordered_set< unsigned int > _uncondensed_vars
Variables for which we will keep all dofs.
virtual const Variable & variable(const unsigned int c) const override
std::unordered_map< dof_id_type, dof_id_type > _full_to_reduced_constraint_dofs
A small map from full system degrees of freedom to reduced/condensed system degrees of freedom involv...
std::vector< dof_id_type > _reduced_nnz
Number of on-diagonal nonzeros per row in the reduced system.
std::unordered_map< dof_id_type, dof_id_type > condensed_global_to_local_map
A map from the global degree of freedom number for the full system (condensed + uncondensed) to an el...
std::unordered_map< dof_id_type, dof_id_type > uncondensed_global_to_local_map
A map from the global degree of freedom number for the full system (condensed + uncondensed) to an el...
std::vector< dof_id_type > _reduced_noz
Number of off-diagonal nonzeros per row in the reduced system.
std::vector< Variable > _reduced_vars
The variables in the reduced system.
This is the base class from which all geometric element types are derived.
virtual ~StaticCondensationDofMap()
dof_id_type get_reduced_from_global_constraint_dof(dof_id_type full_dof) const
Retrieve the dof index in the reduced system corresponding to the provided dof index in the full syst...
The libMesh namespace provides an interface to certain functionality in the library.
Data stored on a per-element basis used to compute element Schur complements and their applications t...
uint8_t processor_id_type
This is the MeshBase class.
System * _reduced_system
A dummyish system to help with DofObjects.
std::unordered_map< dof_id_type, DofData > _elem_to_dof_data
A map from element ID to Schur complement data.
std::vector< std::vector< dof_id_type > > reduced_space_indices
The uncondensed degrees of freedom with global numbering corresponding to the the reduced system...
virtual unsigned int n_variables() const override
This class handles the numbering of degrees of freedom on a mesh.
void add_uncondensed_dof(dof_id_type full_dof_number, bool involved_in_constraints, std::unordered_map< dof_id_type, dof_id_type > &uncondensed_global_to_local_map, std::unordered_set< dof_id_type > &local_uncondensed_dofs_set, std::unordered_map< processor_id_type, std::unordered_set< dof_id_type >> &nonlocal_uncondensed_dofs, std::vector< dof_id_type > &elem_uncondensed_dofs, dof_id_type &uncondensed_local_dof_number, std::unordered_set< dof_id_type > &constraint_dofs)
Add an uncondensed dof.
void dont_condense_vars(const std::unordered_set< unsigned int > &vars)
Add vars to the list of variables not to condense.
This class defines the notion of a variable in the system.
StaticCondensationDofMap(MeshBase &mesh, System &system, const DofMap &dof_map)
bool _sc_is_initialized
Whether our object has been initialized.
const std::unordered_set< unsigned int > & uncondensed_vars() const
Manages consistently variables, degrees of freedom, and coefficient vectors.
std::vector< dof_id_type > _local_uncondensed_dofs
All the uncondensed degrees of freedom (numbered in the "full" uncondensed + condensed space)...
This base class provides a minimal set of interfaces for satisfying user requests for...
void reinit()
Build the element global to local index maps.
const System & reduced_system() const
virtual void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di, const unsigned int vn, int p_level=-12345) const override
Fills the vector di with the global degree of freedom indices for the element.
std::unique_ptr< SparsityPattern::Build > _reduced_sp
Owned storage of the reduced system sparsity pattern.
bool initialized() const
Whether we are initialized.
void add_uncondensed_dof_plus_constraint_dofs(dof_id_type full_dof_number, bool involved_in_constraints, std::unordered_map< dof_id_type, dof_id_type > &uncondensed_global_to_local_map, std::unordered_set< dof_id_type > &local_uncondensed_dofs_set, std::unordered_map< processor_id_type, std::unordered_set< dof_id_type >> &nonlocal_uncondensed_dofs, std::vector< dof_id_type > &elem_uncondensed_dofs, dof_id_type &uncondensed_local_dof_number, std::unordered_set< dof_id_type > &constraint_dofs)
Add an uncondensed dof potentially along with constraining dofs which themselves must/will also be un...
virtual void clear() override