![]() |
PRISMS-PF Manual
|
The class handles the generation and application of boundary conditions based on the user-inputs. More...
#include <constraint_manager.h>
Public Member Functions | |
| ConstraintManager (const std::vector< FieldAttributes > &field_attributes, const BoundaryParameters< dim > &_boundary_parameters, const SpatialDiscretization< dim > &_spatial_discretization, const DoFManager< dim, degree > &_dof_manager, const PDEOperatorBase< dim, degree, number > &_pde_operator) | |
| Constructor. | |
| std::vector< const dealii::AffineConstraints< number > * > | get_constraints (const std::set< unsigned int > &field_indices, unsigned int relative_level=0) const |
| Getter function for the constraints. | |
| const dealii::AffineConstraints< number > & | get_constraint (Types::Index index, unsigned int relative_level=0) const |
| Getter function for the constraint of an index (constant reference). | |
| const std::vector< std::array< dealii::AffineConstraints< number >, 2 > > & | get_generic_constraints () const |
| Getter function for the constraints. | |
| const dealii::AffineConstraints< number > & | get_generic_constraint (unsigned int rank, unsigned int relative_level=0) const |
| Getter function for the constraint of an index (constant reference). | |
| void | reinit (const std::vector< FieldAttributes > &field_attributes) |
| Make constraints based on the inputs of the constructor. | |
| void | update_time_dependent_constraints (const std::vector< FieldAttributes > &field_attributes) |
| Update time-dependent constraints. For now this only updates the non-uniform dirichlet constraints. | |
Private Member Functions | |
| void | make_constraints_for_single_field (dealii::AffineConstraints< number > &constraint, const dealii::DoFHandler< dim > &dof_handler, const FieldConstraints< dim > &field_constraints, TensorRank tensor_rank, Types::Index field_index) |
| Construct constraints for a single field based on the boundary conditions. | |
| void | make_bc_constraints (dealii::AffineConstraints< number > &constraint, const dealii::DoFHandler< dim > &dof_handler, const FieldConstraints< dim > &boundary_condition, TensorRank tensor_rank, Types::Index field_index) |
| Add boundary conditions to a single constraint. | |
| void | make_one_boundary_constraint (dealii::AffineConstraints< number > &_constraints, unsigned int boundary_id, unsigned int component, Condition boundary_type, const dealii::DoFHandler< dim > &dof_handler, TensorRank tensor_rank, Types::Index field_index) const |
| Apply constraints for common boundary conditions. | |
| void | make_natural_constraints () const |
| Apply natural constraints. | |
| void | make_dirichlet_constraints (dealii::AffineConstraints< number > &_constraints, const dealii::DoFHandler< dim > &dof_handler, const unsigned int &boundary_id, const unsigned int &field_index, const bool &is_vector_field, const dealii::ComponentMask &mask) const |
| Make dirichlet constraints. | |
| void | make_periodic_constraints (dealii::AffineConstraints< number > &_constraints, const dealii::DoFHandler< dim > &dof_handler, const unsigned int &boundary_id, const dealii::ComponentMask &mask) const |
| make periodic constraints. | |
| void | set_pinned_point (dealii::AffineConstraints< number > &constraint, const dealii::Point< dim > &target_point, const std::array< number, dim > &value, const dealii::DoFHandler< dim > &dof_handler, TensorRank tensor_rank) const |
| Set the dirichlet constraint for the pinned point. | |
Private Attributes | |
| const BoundaryParameters< dim > * | boundary_parameters |
| User-inputs constraint parameters. | |
| const SpatialDiscretization< dim > * | spatial_discretization |
| User-inputs discretization. | |
| const DoFManager< dim, degree > * | dof_manager |
| Dof manager pointer. | |
| const PDEOperatorBase< dim, degree, number > * | pde_operator |
| PDE operator. | |
| std::vector< std::vector< dealii::AffineConstraints< number > > > | constraints |
| Constraints. Outer vector is indexed by field index. Inner vector is indexed by relative mg level. | |
| std::vector< std::array< dealii::AffineConstraints< number >, 2 > > | generic_constraints |
| Constraints not specific to any field. We need this for invm. | |
Static Private Attributes | |
| static const std::array< dealii::ComponentMask, dim > | vector_component_mask |
| Create a component mask. | |
| static const dealii::ComponentMask | scalar_empty_mask {} |
The class handles the generation and application of boundary conditions based on the user-inputs.
| PRISMS_PF_BEGIN_NAMESPACE ConstraintManager< dim, degree, number >::ConstraintManager | ( | const std::vector< FieldAttributes > & | field_attributes, |
| const BoundaryParameters< dim > & | _boundary_parameters, | ||
| const SpatialDiscretization< dim > & | _spatial_discretization, | ||
| const DoFManager< dim, degree > & | _dof_manager, | ||
| const PDEOperatorBase< dim, degree, number > & | _pde_operator | ||
| ) |
Constructor.
| const dealii::AffineConstraints< number > & ConstraintManager< dim, degree, number >::get_constraint | ( | Types::Index | index, |
| unsigned int | relative_level = 0 |
||
| ) | const |
Getter function for the constraint of an index (constant reference).
| std::vector< const dealii::AffineConstraints< number > * > ConstraintManager< dim, degree, number >::get_constraints | ( | const std::set< unsigned int > & | field_indices, |
| unsigned int | relative_level = 0 |
||
| ) | const |
Getter function for the constraints.
| const dealii::AffineConstraints< number > & ConstraintManager< dim, degree, number >::get_generic_constraint | ( | unsigned int | rank, |
| unsigned int | relative_level = 0 |
||
| ) | const |
Getter function for the constraint of an index (constant reference).
| const std::vector< std::array< dealii::AffineConstraints< number >, 2 > > & ConstraintManager< dim, degree, number >::get_generic_constraints | ( | ) | const |
Getter function for the constraints.
|
private |
Add boundary conditions to a single constraint.
|
private |
Construct constraints for a single field based on the boundary conditions.
|
private |
Make dirichlet constraints.
|
private |
Apply natural constraints.
|
private |
Apply constraints for common boundary conditions.
|
private |
make periodic constraints.
| void ConstraintManager< dim, degree, number >::reinit | ( | const std::vector< FieldAttributes > & | field_attributes | ) |
Make constraints based on the inputs of the constructor.
|
private |
Set the dirichlet constraint for the pinned point.
| void ConstraintManager< dim, degree, number >::update_time_dependent_constraints | ( | const std::vector< FieldAttributes > & | field_attributes | ) |
Update time-dependent constraints. For now this only updates the non-uniform dirichlet constraints.
|
private |
User-inputs constraint parameters.
|
private |
Constraints. Outer vector is indexed by field index. Inner vector is indexed by relative mg level.
|
private |
Dof manager pointer.
|
private |
Constraints not specific to any field. We need this for invm.
|
private |
PDE operator.
|
staticprivate |
|
private |
User-inputs discretization.
|
staticprivate |