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/grid_tools_geometry.h>
8#include <deal.II/grid/tria.h>
9#include <deal.II/multigrid/mg_transfer_global_coarsening.h>
10
13
14#include <prismspf/config.h>
15
16#include <memory>
17#include <string>
18
20
24template <unsigned int dim>
26{
27public:
31 explicit TriangulationManager(bool _has_multigrid = false);
32
40
44 void
49
54 void
55 reinit();
56
61 get_triangulation() const;
62
67 [[nodiscard]] const dealii::Triangulation<dim> &
68 get_triangulation(unsigned int relative_level) const;
69
73 [[nodiscard]] const std::vector<dealii::GridTools::PeriodicFacePair<
74 typename dealii::Triangulation<dim>::cell_iterator>> &
76
80 [[nodiscard]] double
81 get_volume() const;
82
86 void
88
93 void
94 export_triangulation_as_vtk(const std::string &filename) const;
95
99 void
101 {
102 triangulation.prepare_coarsening_and_refinement();
103 }
104
108 void
110 {
111 triangulation.execute_coarsening_and_refinement();
112 }
113
117 void
119 {
120 triangulation.clear_user_flags();
121 }
122
123private:
127 bool has_multigrid = false;
128
133
137 std::vector<std::shared_ptr<const dealii::Triangulation<dim>>> coarsened_triangulations;
138
142 std::vector<dealii::GridTools::PeriodicFacePair<
143 typename dealii::Triangulation<dim>::cell_iterator>>
145
149 double volume = 0;
150};
151
This class handlers the generation and manipulation of triangulations.
Definition triangulation_manager.h:26
Triangulation< dim > triangulation
Main triangulation.
Definition triangulation_manager.h:132
bool has_multigrid
Whether we have multigrid.
Definition triangulation_manager.h:127
void reinit()
Reinitialize the triangulation handler. This is used for AMR with multigrid so the coarsened meshes c...
Definition triangulation_manager.cc:44
void generate_mesh(const SpatialDiscretization< dim > &discretization_params)
Generate mesh based on the inputs provided by the user.
Definition triangulation_manager.cc:107
double volume
Periodic face pairs on the coarsest mesh if they exist.
Definition triangulation_manager.h:149
std::vector< std::shared_ptr< const dealii::Triangulation< dim > > > coarsened_triangulations
Coarsened triangulations for multigrid.
Definition triangulation_manager.h:137
void execute_grid_refinement()
Execute grid refinement on the triangulation.
Definition triangulation_manager.h:109
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:143
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:93
TriangulationManager(const SpatialDiscretization< dim > &discretization_params, bool _has_multigrid=false)
Definition triangulation_manager.h:33
void clear_user_flags()
Clear all user flags.
Definition triangulation_manager.h:118
void prepare_for_grid_refinement()
Prepare the triangulation for grid refinement.
Definition triangulation_manager.h:100
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:144
double get_volume() const
Get the vector of periodic face pairs.
Definition triangulation_manager.cc:100
void set_using_multigrid(bool _has_multigrid)
Set whether multigrid triangulations will be generated.
Definition triangulation_manager.h:45
const Triangulation< dim > & get_triangulation() const
Getter function for triangulation (constant reference).
Definition triangulation_manager.cc:66
@ Value
Use value of the variable as a criterion for refinement.
Definition grid_refiner_criterion.h:31
Definition conditional_ostreams.cc:20
std::conditional_t< dim==1, dealii::Triangulation< dim >, dealii::parallel::distributed::Triangulation< dim > > Triangulation
Definition spatial_discretization.h:36
Struct that holds spatial discretization parameters.
Definition spatial_discretization.h:230