6#include <deal.II/base/vectorization.h>
7#include <deal.II/dofs/dof_handler.h>
8#include <deal.II/fe/fe_system.h>
9#include <deal.II/lac/affine_constraints.h>
10#include <deal.II/lac/la_parallel_vector.h>
11#include <deal.II/matrix_free/fe_evaluation.h>
12#include <deal.II/matrix_free/matrix_free.h>
19#include <prismspf/config.h>
26template <
unsigned int dim,
typename number>
42 template <
unsigned int degree>
47 [[nodiscard]]
const std::vector<MatrixFree<dim, number>> &
50 [[nodiscard]]
const MatrixFree<dim, number> &
53 [[nodiscard]]
const std::vector<MatrixFree<dim, number>> &
56 [[nodiscard]]
const MatrixFree<dim, number> &
71template <
unsigned int dim,
typename number>
72template <
unsigned int degree>
78 using AdditionalData =
typename MatrixFree<dim, number>::AdditionalData;
81 static const AdditionalData additional_data(
82 AdditionalData::TasksParallelScheme::partition_partition,
84 dealii::update_values | dealii::update_gradients | dealii::update_hessians |
85 dealii::update_JxW_values | dealii::update_quadrature_points);
87 const std::vector<std::array<dealii::DoFHandler<dim>, 2>> &generic_dof_handlers_levels =
89 const std::vector<std::array<dealii::AffineConstraints<number>, 2>>
92 const unsigned int num_levels = generic_dof_handlers_levels.size();
95 for (
unsigned int relative_level = 0; relative_level < num_levels; ++relative_level)
97 MatrixFree<dim, number> &shared_matrix_free =
99 MatrixFree<dim, number> &generic_matrix_free =
106 dealii::QGaussLobatto<1>(degree + 1),
112 std::vector<
const dealii::DoFHandler<dim> *>(
113 {&generic_dof_handlers_levels[relative_level][0],
114 &generic_dof_handlers_levels[relative_level][1]}),
115 std::vector<const dealii::AffineConstraints<number> *>(
116 {&generic_constraints_levels[relative_level][0],
117 &generic_constraints_levels[relative_level][1]}),
122template <
unsigned int dim,
typename number>
123const std::vector<MatrixFree<dim, number>> &
129template <
unsigned int dim,
typename number>
130const MatrixFree<dim, number> &
136template <
unsigned int dim,
typename number>
137const std::vector<MatrixFree<dim, number>> &
143template <
unsigned int dim,
typename number>
144const MatrixFree<dim, number> &
150PRISMS_PF_END_NAMESPACE
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_manager.h:50
std::vector< const dealii::AffineConstraints< number > * > get_field_constraints(unsigned int relative_level=0) const
Getter function for the constraints.
Definition constraint_manager.cc:66
const std::vector< std::array< dealii::AffineConstraints< number >, 2 > > & get_generic_constraints_levels() const
Getter function for the constraints.
Definition constraint_manager.cc:88
Class that manages the deal.II DoFHandlers.
Definition dof_manager.h:25
const std::vector< std::array< dealii::DoFHandler< dim >, 2 > > & get_dof_handlers_levels() const
Getter function for the scalar and vector DoFHandlers.
Definition dof_manager.cc:93
const std::vector< const dealii::DoFHandler< dim > * > & get_field_dof_handlers(unsigned int relative_level=0) const
Getter function for all the DoFHandlers on a level.
Definition dof_manager.cc:78
void reinit(const DoFManager< dim, degree > &dof_manager, const ConstraintManager< dim, degree, number > &constraint_manager)
Reinit.
Definition matrix_free_manager.h:74
const std::vector< MatrixFree< dim, number > > & get_generic_matrix_free_levels() const
Definition matrix_free_manager.h:138
std::vector< MatrixFree< dim, number > > shared_matrix_free_levels
MatrixFree object on each level for every field.
Definition matrix_free_manager.h:63
const MatrixFree< dim, number > & get_shared_matrix_free(unsigned int relative_level) const
Definition matrix_free_manager.h:131
dealii::VectorizedArray< number > ScalarValue
Definition matrix_free_manager.h:30
const MatrixFree< dim, number > & get_generic_matrix_free(unsigned int relative_level) const
Definition matrix_free_manager.h:145
MatrixFreeManager()=default
Constructor.
const std::vector< MatrixFree< dim, number > > & get_shared_matrix_free_levels() const
Definition matrix_free_manager.h:124
std::vector< MatrixFree< dim, number > > generic_matrix_free_levels
Generic Matrix-free object with a scalar and vector entry on each level.
Definition matrix_free_manager.h:68
dealii::Tensor< 1, dim, ScalarValue > VectorValue
Definition matrix_free_manager.h:31
static const dealii::QGaussLobatto< dim > quadrature
Quadrature rule.
Definition system_wide.h:41
static const dealii::MappingQ1< dim > mapping
Mappings to and from reference cell.
Definition system_wide.h:36
Definition conditional_ostreams.cc:20