PRISMS-PF Manual
Loading...
Searching...
No Matches
triangulation_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/distributed/tria.h>
7#include <deal.II/grid/tria.h>
8
11
12#include <prismspf/config.h>
13
14#include <memory>
15#include <string>
16
18
22template <unsigned int dim>
24{
25public:
29 explicit TriangulationManager();
30
34 void
35 init_mg();
36
40 void
41 clear_mg();
42
46 [[nodiscard]] bool
47 has_mg() const;
48
52 [[nodiscard]] unsigned int
53 num_levels() const;
54
58 [[nodiscard]] const Triangulation<dim> &
59 get_triangulation() const;
60
65 [[nodiscard]] const dealii::Triangulation<dim> &
66 get_triangulation(unsigned int relative_level) const;
67
71 [[nodiscard]] const std::vector<dealii::GridTools::PeriodicFacePair<
72 typename dealii::Triangulation<dim>::cell_iterator>> &
74
78 [[nodiscard]] double
79 get_volume() const;
80
84 void
85 generate_mesh(const SpatialDiscretization<dim> &discretization_params);
86
91 void
92 export_triangulation_as_vtk(const std::string &filename) const;
93
97 void
99 {
100 triangulation.prepare_coarsening_and_refinement();
101 }
102
106 void
108 {
109 triangulation.execute_coarsening_and_refinement();
110 }
111
115 void
117 {
118 triangulation.clear_user_flags();
119 }
120
121private:
126
130 std::vector<std::shared_ptr<const dealii::Triangulation<dim>>> coarsened_triangulations;
131
135 std::vector<dealii::GridTools::PeriodicFacePair<
136 typename dealii::Triangulation<dim>::cell_iterator>>
138
142 double volume = 0;
143};
144
145PRISMS_PF_END_NAMESPACE
Triangulation< dim > triangulation
Main triangulation.
Definition triangulation_manager.h:125
void clear_mg()
Remove the multigrid triangulations.
Definition triangulation_manager.cc:53
void init_mg()
Initialize the multigrid triangulations.
Definition triangulation_manager.cc:42
void generate_mesh(const SpatialDiscretization< dim > &discretization_params)
Generate mesh based on the inputs provided by the user.
Definition triangulation_manager.cc:115
double volume
Volume of the triangulation.
Definition triangulation_manager.h:142
std::vector< std::shared_ptr< const dealii::Triangulation< dim > > > coarsened_triangulations
Coarsened triangulations for multigrid.
Definition triangulation_manager.h:130
void execute_grid_refinement()
Execute grid refinement on the triangulation.
Definition triangulation_manager.h:107
bool has_mg() const
Check if the multigrid triangulations are initialized.
Definition triangulation_manager.cc:60
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_manager.cc:149
const std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::Triangulation< dim >::cell_iterator > > & get_periodic_face_pairs() const
Get the vector of periodic face pairs.
Definition triangulation_manager.cc:101
void clear_user_flags()
Clear all user flags.
Definition triangulation_manager.h:116
void prepare_for_grid_refinement()
Prepare the triangulation for grid refinement.
Definition triangulation_manager.h:98
std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::Triangulation< dim >::cell_iterator > > periodicity_vector
Periodic face pairs on the coarsest mesh if they exist.
Definition triangulation_manager.h:137
double get_volume() const
Get the volume of the triangulation.
Definition triangulation_manager.cc:108
const Triangulation< dim > & get_triangulation() const
Getter function for triangulation.
Definition triangulation_manager.cc:78
TriangulationManager()
Constructor.
Definition triangulation_manager.cc:34
unsigned int num_levels() const
Get the number of levels in the multigrid.
Definition triangulation_manager.cc:67
Definition conditional_ostreams.cc:20
std::conditional_t< dim==1, dealii::Triangulation< dim >, dealii::parallel::distributed::Triangulation< dim > > Triangulation
Definition spatial_discretization.h:34
Struct that holds spatial discretization parameters.
Definition spatial_discretization.h:231