46 mfem::ParFiniteElementSpace& space,
const std::optional<int> component = {});
56 void addEssential(
const mfem::Array<int>& local_dofs, std::shared_ptr<mfem::Coefficient> ess_bdr_coef,
57 mfem::ParFiniteElementSpace& space, std::optional<int> component = {});
66 void addEssentialByTrueDofs(
const mfem::Array<int>& true_dofs, std::shared_ptr<mfem::VectorCoefficient> ess_bdr_coef,
67 mfem::ParFiniteElementSpace& space);
75 if (!all_dofs_valid_) {
78 return all_true_dofs_;
87 if (!all_dofs_valid_) {
90 return all_local_dofs_;
108 std::vector<BoundaryCondition>&
essentials() {
return ess_bdr_; }
113 const std::vector<BoundaryCondition>&
essentials()
const {
return ess_bdr_; }
119 void updateAllDofs()
const;
124 const int num_attrs_;
129 std::vector<BoundaryCondition> ess_bdr_;
136 std::set<int> attrs_in_use_;
142 mutable mfem::Array<int> all_true_dofs_;
148 mutable mfem::Array<int> all_local_dofs_;
153 mutable bool all_dofs_valid_ =
false;
This file contains the declaration of the boundary condition class.
A container for the boundary condition information relating to a specific physics module.
const mfem::Array< int > & allEssentialTrueDofs() const
Returns all the true degrees of freedom associated with all the essential BCs.
void addEssentialByTrueDofs(const mfem::Array< int > &true_dofs, std::shared_ptr< mfem::VectorCoefficient > ess_bdr_coef, mfem::ParFiniteElementSpace &space)
BoundaryConditionManager(const mfem::ParMesh &mesh)
Construct a new Boundary Condition Manager object.
std::unique_ptr< mfem::HypreParMatrix > eliminateAllEssentialDofsFromMatrix(mfem::HypreParMatrix &matrix) const
Eliminates all essential BCs from a matrix.
std::vector< BoundaryCondition > & essentials()
Accessor for the essential BC objects.
const std::vector< BoundaryCondition > & essentials() const
Accessor for the essential BC objects.
const mfem::Array< int > & allEssentialLocalDofs() const
Returns all the local degrees of freedom associated with all the essential BCs.
void addEssential(const std::set< int > &ess_bdr, smith::GeneralCoefficient ess_bdr_coef, mfem::ParFiniteElementSpace &space, const std::optional< int > component={})
Set the essential boundary conditions from a list of boundary markers and a coefficient.
This file contains the declaration of structure that manages the MFEM objects that make up the state ...
Accelerator functionality.