Reference documentation for deal.II version GIT f0f8c7fe18 2023-03-21 21:25:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
additional_data.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2022 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_cgal_additional_data_h
17 #define dealii_cgal_additional_data_h
18 
19 #include <deal.II/base/config.h>
20 
22 
23 #ifdef DEAL_II_WITH_CGAL
24 
25 # include <CGAL/Mesh_facet_topology.h>
26 
27 # include <limits>
28 
30 namespace CGALWrappers
31 {
32  enum class FacetTopology
33  {
38  facet_vertices_on_surface = CGAL::FACET_VERTICES_ON_SURFACE,
39 
45  CGAL::FACET_VERTICES_ON_SAME_SURFACE_PATCH,
46 
53  CGAL::FACET_VERTICES_ON_SAME_SURFACE_PATCH_WITH_ADJACENCY_CHECK,
54  };
55 
91  template <int dim>
93  {
99  double edge_size;
100 
104  double facet_angle;
105 
109  double facet_size;
115 
121 
129  double cell_size;
130 
135  double edge_s = std::numeric_limits<double>::max(),
136  double facet_a = 0.,
137  double facet_s = 0.,
138  double facet_d = 0.,
139  FacetTopology facet_t =
141  double cell_radius_edge_r = 0.,
142  double cell_s = 0.)
143  {
144  AssertThrow(
145  dim == 3,
146  ExcMessage(
147  "These struct can be instantiated with 3d Triangulations only."));
148  edge_size = edge_s;
149  facet_angle = facet_a;
150  facet_size = facet_s;
151  facet_distance = facet_d;
152  facet_topology = facet_t;
153  cell_radius_edge_ratio = cell_radius_edge_r;
154  cell_size = cell_s;
155  }
156  };
157 
171  template <>
172  struct AdditionalData<2>
173  {
178 
183  double radius_bound;
184 
190 
194  AdditionalData(double angular_b = 0.,
195  double radius_b = 0.,
196  double distance_b = 0.)
197  {
198  angular_bound = angular_b;
199  radius_bound = radius_b;
200  distance_bound = distance_b;
201  }
202  };
203 
204 } // namespace CGALWrappers
206 
207 #else
208 
210 namespace CGALWrappers
211 {
215  template <int dim>
216  struct AdditionalData
217  {};
218 } // namespace CGALWrappers
219 
221 #endif
222 
223 #endif
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:474
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:475
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
Definition: exceptions.h:1675
@ facet_vertices_on_same_surface_patch_with_adjacency_check
AdditionalData(double angular_b=0., double radius_b=0., double distance_b=0.)
AdditionalData(double edge_s=std::numeric_limits< double >::max(), double facet_a=0., double facet_s=0., double facet_d=0., FacetTopology facet_t=::CGALWrappers::FacetTopology::facet_vertices_on_surface, double cell_radius_edge_r=0., double cell_s=0.)