Template Class BoundaryConditions

Nested Relationships

Nested Types

Class Documentation

template<int dim, int spacedim = dim>
class BoundaryConditions

Persistent, aggregable recipes for an FE space’s affine constraints.

Public Types

using Space = FiniteElementSpace<dim, spacedim>
using DoFHandler = dealii::DoFHandler<dim, spacedim>
using Constraints = dealii::AffineConstraints<double>
using BoundaryId = dealii::types::boundary_id
using Function = dealii::Function<spacedim>
using ConstraintRecipe = std::function<void(double, const Target&, Constraints&)>

Public Functions

inline explicit BoundaryConditions(Space &space)
template<typename Extractor>
inline explicit BoundaryConditions(const Field<dim, spacedim, Extractor> &field)
template<typename FunctionType, typename = std::enable_if_t<std::is_base_of_v<Function, FunctionType>>>
inline void add_dirichlet(const BoundaryId boundary_id, const FunctionType &function, const std::optional<dealii::ComponentMask> &mask = {})

Add one strong Dirichlet rule, optionally restricted by component.

inline void add_dirichlet(const BoundaryId boundary_id, std::shared_ptr<const Function> function, const std::optional<dealii::ComponentMask> &mask = {})

Add a Dirichlet rule while retaining ownership of the function.

template<typename FunctionType, typename = std::enable_if_t<std::is_base_of_v<Function, FunctionType>>>
inline void add_dirichlet(const std::set<BoundaryId> &boundary_ids, const FunctionType &function, const std::optional<dealii::ComponentMask> &mask = {})
template<typename FunctionType, typename = std::enable_if_t<std::is_base_of_v<Function, FunctionType>>>
inline void add_nonzero_normal_flux(const BoundaryId boundary_id, const FunctionType &function, const std::optional<unsigned int> first_vector_component = {})

Add one possibly time-dependent nonzero normal-flux rule.

inline void add_nonzero_normal_flux(const BoundaryId boundary_id, std::shared_ptr<const Function> function, const std::optional<unsigned int> first_vector_component = {})

Add a normal-flux rule while retaining ownership of the function.

template<typename FunctionType, typename = std::enable_if_t<std::is_base_of_v<Function, FunctionType>>>
inline void add_nonzero_normal_flux(const std::set<BoundaryId> &boundary_ids, const FunctionType &function, const std::optional<unsigned int> first_vector_component = {})
inline void clear()

Remove recipes; the current constraints remain until update().

inline void update(const double time) const

Rebuild the same AffineConstraints object at the supplied time.

template<typename Builder>
inline void register_with(Builder &builder) const

Register update(time) as a once-per-evaluation context hook.

inline void include_hanging_node_constraints(const bool include = true)
inline bool includes_hanging_node_constraints() const
inline std::size_t n_dirichlet_rules() const
inline std::size_t n_normal_flux_rules() const
inline std::size_t value_revision() const
inline std::size_t structure_revision() const
inline Space &space() const
struct Target

Public Members

std::function<const DoFHandler&()> dof_handler
std::function<const dealii::Mapping<dim, spacedim>&()> mapping
std::function<const dealii::IndexSet&()> locally_owned_dofs
std::function<const dealii::IndexSet&()> locally_relevant_dofs
std::function<Constraints&()> constraints
std::optional<dealii::ComponentMask> component_mask
std::optional<unsigned int> first_vector_component
Space *space = nullptr