PRISMS-PF Manual
Loading...
Searching...
No Matches
dof_manager.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/mg_level_object.h>
7#include <deal.II/dofs/dof_handler.h>
8#include <deal.II/fe/fe_system.h>
9
14#include <prismspf/core/types.h>
15
16#include <prismspf/config.h>
17
19
23template <unsigned int dim, unsigned int degree>
25{
26public:
30 DoFManager() = default;
31
35 DoFManager(const std::vector<FieldAttributes> &field_attributes,
36 const TriangulationManager<dim> &triangulation_manager);
40 DoFManager(const DoFManager &) = delete;
41 DoFManager(const DoFManager &&) = delete;
43 operator=(const DoFManager &) = delete;
45 operator=(DoFManager &&other) = delete;
46
50 ~DoFManager() = default;
51
56 void
57 init(unsigned int num_levels);
58
64 void
65 reinit(const TriangulationManager<dim> &triangulation_manager);
66
71 void
72 reinit_mapping(const std::vector<FieldAttributes> &field_attributes);
73
78 [[nodiscard]] const std::vector<std::vector<const dealii::DoFHandler<dim> *>> &
80
85 [[nodiscard]] const std::vector<const dealii::DoFHandler<dim> *> &
86 get_field_dof_handlers(unsigned int relative_level = 0) const;
87
92 [[nodiscard]] const dealii::DoFHandler<dim> &
93 get_field_dof_handler(Types::Index field_index, unsigned int relative_level = 0) const;
94
98 [[nodiscard]] const std::vector<std::array<dealii::DoFHandler<dim>, 2>> &
100
104 [[nodiscard]] const std::array<dealii::DoFHandler<dim>, 2> &
105 get_dof_handlers(unsigned int relative_level = 0) const;
106
110 [[nodiscard]] const dealii::DoFHandler<dim> &
111 get_dof_handler(const unsigned int &rank, unsigned int relative_level = 0) const;
112
117 [[nodiscard]] dealii::types::global_dof_index
118 get_total_dofs() const;
119
120private:
125 std::vector<std::vector<const dealii::DoFHandler<dim> *>> field_dof_handlers;
126
130 std::vector<std::array<dealii::DoFHandler<dim>, 2>> level_dof_handlers;
131};
132
133PRISMS_PF_END_NAMESPACE
DoFManager operator=(const DoFManager &)=delete
DoFManager(const DoFManager &)=delete
Disable copying.
std::vector< std::vector< const dealii::DoFHandler< dim > * > > field_dof_handlers
Pointers to the dof handlers for each field on every mg level. Outer vector is indexed by relative mg...
Definition dof_manager.h:125
dealii::types::global_dof_index get_total_dofs() const
Get the total DoFs excluding multigrid DoFs.
Definition dof_manager.cc:115
DoFManager(const DoFManager &&)=delete
~DoFManager()=default
Destructor.
DoFManager & operator=(DoFManager &&other)=delete
const std::vector< std::vector< const dealii::DoFHandler< dim > * > > & get_field_dof_handlers_levels() const
Getter function for all the DoFHandlers.
Definition dof_manager.cc:71
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
void init(unsigned int num_levels)
Resize the DoFHandlers set.
Definition dof_manager.cc:25
DoFManager()=default
Constructor.
const dealii::DoFHandler< dim > & get_dof_handler(const unsigned int &rank, unsigned int relative_level=0) const
Getter function for a specific scalar or vector DoFHandler.
Definition dof_manager.cc:107
const std::array< dealii::DoFHandler< dim >, 2 > & get_dof_handlers(unsigned int relative_level=0) const
Getter function for the scalar and vector DoFHandlers on a level.
Definition dof_manager.cc:100
void reinit(const TriangulationManager< dim > &triangulation_manager)
Reinitialize the DoFHandlers.
Definition dof_manager.cc:33
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
const dealii::DoFHandler< dim > & get_field_dof_handler(Types::Index field_index, unsigned int relative_level=0) const
Getter function for the DoFHandler (reference).
Definition dof_manager.cc:85
void reinit_mapping(const std::vector< FieldAttributes > &field_attributes)
Reinitialize the DoFHandlers.
Definition dof_manager.cc:51
std::vector< std::array< dealii::DoFHandler< dim >, 2 > > level_dof_handlers
A scalar and a vector dof handler for each level.
Definition dof_manager.h:130
This class handlers the generation and manipulation of triangulations.
Definition triangulation_manager.h:26
Definition conditional_ostreams.cc:20
unsigned int Index
Type for field indices.
Definition types.h:19