/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/mesh/rectangular_mesh.hh Source File#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/mesh/rectangular_mesh.hh Source File
DiFfRG
Discretization Framework for functional Renormalization Group flows
rectangular_mesh.hh
Go to the documentation of this file.
1#pragma once
2
3// external libraries
4#include <deal.II/base/config.h>
5#include <deal.II/grid/tria.h>
6#ifdef DEAL_II_WITH_MPI
7#include <deal.II/distributed/shared_tria.h>
8#endif
9
10// standard library
11#include <type_traits>
12
13// DiFfRG
17
18namespace DiFfRG
19{
20 using namespace dealii;
21
24 };
25
26 namespace internal
27 {
36 template <typename Tria> struct TriangulationHolder {
38 };
39
40#ifdef DEAL_II_WITH_MPI
41 template <int dim> struct TriangulationHolder<dealii::parallel::shared::Triangulation<dim>> {
51 dealii::parallel::shared::Triangulation<dim> triangulation{MPI_COMM_WORLD, dealii::Triangulation<dim>::none,
52 /*allow_artificial_cells=*/false};
53 };
54#endif
55 } // namespace internal
56
72 template <uint dim_, typename TriangulationType_ = DefaultTriangulation<dim_>>
73 class RectangularMesh : protected internal::TriangulationHolder<TriangulationType_>
74 {
75 public:
76 static constexpr uint dim = dim_;
77 using TriangulationType = TriangulationType_;
78 static constexpr bool is_rectangular = true;
79
81 static constexpr bool is_parallel = !std::is_same_v<TriangulationType, dealii::Triangulation<dim_>>;
82
87 [[deprecated("Please use RectangularMesh(const Config::ConfigurationMesh<dim> &mesh_config) instead")]]
89
97 [[deprecated("Please use RectangularMesh(const Config::ConfigurationMesh<dim> &mesh_config, "
98 "RectangularMeshOptions options) instead")]]
100
102
111
113 const TriangulationType &get_triangulation() const { return this->triangulation; }
114
115 protected:
116 virtual void make_grid();
117
120 };
121
134
135#ifdef DEAL_II_WITH_MPI
141 template <uint dim>
143#endif
144} // namespace DiFfRG
A hierarchical configuration tree, readable from JSON and TOML files.
Definition config_tree.hh:32
Definition configuration_mesh.hh:131
Class to manage the discretization mesh, also called grid and triangluation, on which we simulate....
Definition rectangular_mesh.hh:74
const RectangularMeshOptions options
Definition rectangular_mesh.hh:119
TriangulationType_ TriangulationType
Definition rectangular_mesh.hh:77
static constexpr bool is_rectangular
Definition rectangular_mesh.hh:78
RectangularMesh(const Config::ConfigurationMesh< dim > &mesh_config)
const TriangulationType & get_triangulation() const
Definition rectangular_mesh.hh:113
RectangularMesh(const ConfigTree &config, RectangularMeshOptions options)
Construct a new RectangularMesh object from ConfigTree configuration.
RectangularMesh(const Config::ConfigurationMesh< dim > &mesh_config, RectangularMeshOptions options)
Construct a new RectangularMesh object.
const Config::ConfigurationMesh< dim > mesh_config
Definition rectangular_mesh.hh:118
TriangulationType & get_triangulation()
Definition rectangular_mesh.hh:112
static constexpr uint dim
Definition rectangular_mesh.hh:76
RectangularMesh(const ConfigTree &config)
Construct a new RectangularMesh object.
virtual void make_grid()
static constexpr bool is_parallel
Whether cells carry subdomain ids, i.e. whether cell->is_locally_owned() is selective.
Definition rectangular_mesh.hh:81
All compile-time knowledge about which linear algebra types DiFfRG uses.
Definition complex_math.hh:10
@ config
/discretization/threads.
unsigned int uint
Definition utils.hh:24
Definition rectangular_mesh.hh:22
bool origin_cell_centered
Definition rectangular_mesh.hh:23
Holds the triangulation, constructing it the way its type requires.
Definition rectangular_mesh.hh:36
Tria triangulation
Definition rectangular_mesh.hh:37