PRISMS-PF Manual v3.0-pre
All Classes Functions Variables Enumerations Pages
matrix_free_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 matrix_free_handler_h
5#define matrix_free_handler_h
6
7#include <deal.II/dofs/dof_handler.h>
8#include <deal.II/fe/mapping.h>
9#include <deal.II/lac/affine_constraints.h>
10#include <deal.II/matrix_free/matrix_free.h>
11
12#include <prismspf/config.h>
13#include <prismspf/user_inputs/user_input_parameters.h>
14
15#include <memory>
16#include <vector>
17
18PRISMS_PF_BEGIN_NAMESPACE
19
23template <int dim, typename number = double>
25{
26public:
31
35 void
36 reinit(const dealii::Mapping<dim> &mapping,
37 const dealii::DoFHandler<dim> &dof_handler,
38 const dealii::AffineConstraints<number> &constraint,
39 const dealii::Quadrature<1> &quad);
40
44 void
45 reinit(const dealii::Mapping<dim> &mapping,
46 const std::vector<const dealii::DoFHandler<dim> *> &dof_handler,
47 const std::vector<const dealii::AffineConstraints<number> *> &constraint,
48 const dealii::Quadrature<1> &quad);
49
53 void
54 reinit(const dealii::Mapping<dim> &mapping,
55 const std::vector<const dealii::DoFHandler<dim> *> &dof_handler,
56 const std::vector<const dealii::AffineConstraints<number> *> &constraint,
57 const std::vector<dealii::Quadrature<1>> &quad);
58
62 [[nodiscard]] std::shared_ptr<dealii::MatrixFree<dim, number>>
63 get_matrix_free() const;
64
65private:
69 const userInputParameters<dim> &user_inputs;
70
74 std::shared_ptr<dealii::MatrixFree<dim, number>> matrix_free_object;
75
79 typename dealii::MatrixFree<dim, number>::AdditionalData additional_data;
80};
81
82PRISMS_PF_END_NAMESPACE
83
84#endif
This class handlers the management and access of the matrix-free objects.
Definition matrix_free_handler.h:25
void reinit(const dealii::Mapping< dim > &mapping, const dealii::DoFHandler< dim > &dof_handler, const dealii::AffineConstraints< number > &constraint, const dealii::Quadrature< 1 > &quad)
Reinitialize the matrix-free object with the same quad rule.
Definition matrix_free_handler.cc:38
std::shared_ptr< dealii::MatrixFree< dim, number > > get_matrix_free() const
Getter function for the matrix-free object (shared ptr).
Definition matrix_free_handler.cc:71
Definition user_input_parameters.h:22