PRISMS-PF Manual v3.0-pre
All Classes Functions Variables Enumerations Pages
triangulation_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 triangulation_handler_h
5#define triangulation_handler_h
6
7#include <deal.II/distributed/tria.h>
8#include <deal.II/grid/tria.h>
9
10#include <prismspf/config.h>
11#include <prismspf/core/solution_handler.h>
12#include <prismspf/user_inputs/user_input_parameters.h>
13
14#include <memory>
15#include <string>
16
17PRISMS_PF_BEGIN_NAMESPACE
18
22template <int dim>
24{
25public:
26 using Triangulation =
27 std::conditional_t<dim == 1,
28 dealii::Triangulation<dim>,
29 dealii::parallel::distributed::Triangulation<dim>>;
30
34 explicit triangulationHandler(const userInputParameters<dim> &_user_inputs);
35
39 [[nodiscard]] const Triangulation &
40 get_triangulation() const;
41
45 [[nodiscard]] const std::vector<std::shared_ptr<const dealii::Triangulation<dim>>> &
47
52 [[nodiscard]] const dealii::Triangulation<dim> &
53 get_mg_triangulation(unsigned int level) const;
54
58 [[nodiscard]] unsigned int
59 get_n_global_levels() const;
60
64 [[nodiscard]] unsigned int
65 get_mg_min_level() const;
66
70 [[nodiscard]] unsigned int
71 get_mg_max_level() const;
72
76 void
78
82 void
83 adaptively_refine_mesh(solutionHandler<dim> &solution_handler);
84
89 void
90 export_triangulation_as_vtk(const std::string &filename) const;
91
92private:
100 void
101 mark_boundaries() const;
102
106 void
107 mark_periodic();
108
112 const userInputParameters<dim> *user_inputs;
113
117 std::shared_ptr<Triangulation> triangulation;
118
126 std::vector<std::shared_ptr<const dealii::Triangulation<dim>>> coarsened_triangulations;
127
131 bool has_multigrid = false;
132
136 unsigned int min_level = 0;
137
141 unsigned int max_level = 0;
142};
143
144PRISMS_PF_END_NAMESPACE
145
146#endif
This class handlers the generation and manipulation of triangulations.
Definition triangulation_handler.h:24
const std::vector< std::shared_ptr< const dealii::Triangulation< dim > > > & get_mg_triangulation() const
Getter function for the multigrid triangulation (constant reference).
Definition triangulation_handler.cc:54
void export_triangulation_as_vtk(const std::string &filename) const
Export triangulation to vtk. This is done for debugging purposes when dealing with unusual meshes (e....
Definition triangulation_handler.cc:187
unsigned int get_mg_min_level() const
Return the maximum multigrid level.
Definition triangulation_handler.cc:83
void generate_mesh()
Generate mesh based on the inputs provided by the user.
Definition triangulation_handler.cc:101
unsigned int get_n_global_levels() const
Return the global maximum level of the triangulation.
Definition triangulation_handler.cc:75
const Triangulation & get_triangulation() const
Getter function for triangulation (constant reference).
Definition triangulation_handler.cc:46
unsigned int get_mg_max_level() const
Return the minimum multigrid level.
Definition triangulation_handler.cc:92
void adaptively_refine_mesh(solutionHandler< dim > &solution_handler)
Adaptively refine the mesh based on the inputs provided by the user.
Definition triangulation_handler.cc:178