PRISMS-PF Manual v3.0-pre
All Classes Functions Variables Enumerations Pages
constraint_handler.h
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#ifndef constraint_handler_h
5#define constraint_handler_h
6
7#include <deal.II/base/mg_level_object.h>
8#include <deal.II/dofs/dof_handler.h>
9#include <deal.II/fe/mapping_q1.h>
10#include <deal.II/lac/affine_constraints.h>
11
12#include <prismspf/config.h>
13#include <prismspf/user_inputs/user_input_parameters.h>
14
15#include <vector>
16
17PRISMS_PF_BEGIN_NAMESPACE
18
23template <int dim>
25{
26public:
30 explicit constraintHandler(const userInputParameters<dim> &_user_inputs);
31
35 [[nodiscard]] std::vector<const dealii::AffineConstraints<double> *>
37
41 [[nodiscard]] const dealii::AffineConstraints<double> &
42 get_constraint(const unsigned int &index) const;
43
48 [[nodiscard]] const dealii::MGLevelObject<dealii::AffineConstraints<float>> &
49 get_mg_constraint(unsigned int index) const;
50
55 [[nodiscard]] const dealii::AffineConstraints<float> &
56 get_mg_constraint(unsigned int index, unsigned int level) const;
57
61 void
62 make_constraints(const dealii::Mapping<dim> &mapping,
63 const std::vector<const dealii::DoFHandler<dim> *> &dof_handlers);
64
68 void
70 const dealii::Mapping<dim> &mapping,
71 const std::map<unsigned int, dealii::MGLevelObject<dealii::DoFHandler<dim>>>
72 &mg_dof_handlers);
73
74private:
78 void
79 make_constraint(const dealii::Mapping<dim> &mapping,
80 const dealii::DoFHandler<dim> &dof_handler,
81 const unsigned int &index);
82
86 void
87 make_mg_constraint(const dealii::Mapping<dim> &mapping,
88 const dealii::MGLevelObject<dealii::DoFHandler<dim>> &dof_handler,
89 const unsigned int &index);
90
94 void
95 set_pinned_point(const dealii::DoFHandler<dim> &dof_handler, const unsigned int &index);
96
100 const userInputParameters<dim> *user_inputs;
101
105 std::vector<dealii::AffineConstraints<double>> constraints;
106
110 std::map<unsigned int, dealii::MGLevelObject<dealii::AffineConstraints<float>>>
111 mg_constraints;
112};
113
114PRISMS_PF_END_NAMESPACE
115
116#endif
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_handler.h:25
const dealii::AffineConstraints< double > & get_constraint(const unsigned int &index) const
Getter function for the constraint of an index (constant reference).
Definition constraint_handler.cc:46
void make_constraints(const dealii::Mapping< dim > &mapping, const std::vector< const dealii::DoFHandler< dim > * > &dof_handlers)
Make constraints based on the inputs of the constructor.
Definition constraint_handler.cc:85
std::vector< const dealii::AffineConstraints< double > * > get_constraints()
Getter function for the constraints.
Definition constraint_handler.cc:33
const dealii::MGLevelObject< dealii::AffineConstraints< float > > & get_mg_constraint(unsigned int index) const
Getter function for the multigrid constraints of an index (constant reference).
Definition constraint_handler.cc:56
void make_mg_constraints(const dealii::Mapping< dim > &mapping, const std::map< unsigned int, dealii::MGLevelObject< dealii::DoFHandler< dim > > > &mg_dof_handlers)
Make multigrid constraints based on the inputs of the constructor.
Definition constraint_handler.cc:97
Definition user_input_parameters.h:22