PRISMS-PF Manual
Loading...
Searching...
No Matches
triangulation_manager.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2026 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:
27
31 explicit TriangulationManager();
32
36 void
37 init_mg();
38
42 void
43 clear_mg();
44
48 [[nodiscard]] bool
49 has_mg() const;
50
54 [[nodiscard]] unsigned int
55 num_levels() const;
56
60 [[nodiscard]] const Triangulation &
61 get_triangulation() const;
62
67 [[nodiscard]] const dealii::Triangulation<dim> &
68 get_triangulation(unsigned int relative_level) const;
69
73 [[nodiscard]] double
74 get_volume() const;
75
79 void
80 generate_mesh(const SpatialDiscretization<dim> &discretization_params);
81
86 void
87 export_triangulation_as_vtk(const std::string &filename) const;
88
92 void
94 {
95 triangulation.prepare_coarsening_and_refinement();
96 }
97
101 void
103 {
104 triangulation.execute_coarsening_and_refinement();
105 }
106
110 void
112 {
113 triangulation.clear_user_flags();
114 }
115
116private:
121
125 std::vector<std::shared_ptr<const dealii::Triangulation<dim>>> coarsened_triangulations;
126
130 double volume = 0;
131};
132
133PRISMS_PF_END_NAMESPACE
Triangulation triangulation
Main triangulation.
Definition triangulation_manager.h:120
void clear_mg()
Remove the multigrid triangulations.
Definition triangulation_manager.cc:54
void init_mg()
Initialize the multigrid triangulations.
Definition triangulation_manager.cc:43
const Triangulation & get_triangulation() const
Getter function for triangulation.
Definition triangulation_manager.cc:79
void generate_mesh(const SpatialDiscretization< dim > &discretization_params)
Generate mesh based on the inputs provided by the user.
Definition triangulation_manager.cc:108
double volume
Volume of the triangulation.
Definition triangulation_manager.h:130
std::vector< std::shared_ptr< const dealii::Triangulation< dim > > > coarsened_triangulations
Coarsened triangulations for multigrid.
Definition triangulation_manager.h:125
void execute_grid_refinement()
Execute grid refinement on the triangulation.
Definition triangulation_manager.h:102
bool has_mg() const
Check if the multigrid triangulations are initialized.
Definition triangulation_manager.cc:61
typename Mesh< dim >::Triangulation Triangulation
Definition triangulation_manager.h:26
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:127
void clear_user_flags()
Clear all user flags.
Definition triangulation_manager.h:111
void prepare_for_grid_refinement()
Prepare the triangulation for grid refinement.
Definition triangulation_manager.h:93
double get_volume() const
Get the volume of the triangulation.
Definition triangulation_manager.cc:101
TriangulationManager()
Constructor.
Definition triangulation_manager.cc:35
unsigned int num_levels() const
Get the number of levels in the multigrid.
Definition triangulation_manager.cc:68
Definition conditional_ostreams.cc:20
std::conditional_t< dim==1, dealii::Triangulation< dim >, dealii::parallel::distributed::Triangulation< dim > > Triangulation
Definition spatial_discretization.h:63
Struct that holds spatial discretization parameters.
Definition spatial_discretization.h:308