Reference documentation for deal.II version 9.4.0
\(\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 
29 namespace CGALWrappers
30 {
31  enum class FacetTopology
32  {
37  facet_vertices_on_surface = CGAL::FACET_VERTICES_ON_SURFACE,
38 
44  CGAL::FACET_VERTICES_ON_SAME_SURFACE_PATCH,
45 
52  CGAL::FACET_VERTICES_ON_SAME_SURFACE_PATCH_WITH_ADJACENCY_CHECK,
53  };
54 
90  template <int dim>
92  {
98  double edge_size;
99 
103  double facet_angle;
104 
108  double facet_size;
114 
120 
128  double cell_size;
129 
134  double edge_s = std::numeric_limits<double>::max(),
135  double facet_a = 0.,
136  double facet_s = 0.,
137  double facet_d = 0.,
138  FacetTopology facet_t =
140  double cell_radius_edge_r = 0.,
141  double cell_s = 0.)
142  {
143  AssertThrow(
144  dim == 3,
145  ExcMessage(
146  "These struct can be instantiated with 3D Triangulations only."));
147  edge_size = edge_s;
148  facet_angle = facet_a;
149  facet_size = facet_s;
150  facet_distance = facet_d;
151  facet_topology = facet_t;
152  cell_radius_edge_ratio = cell_radius_edge_r;
153  cell_size = cell_s;
154  }
155  };
156 
170  template <>
171  struct AdditionalData<2>
172  {
177 
182  double radius_bound;
183 
189 
193  AdditionalData(double angular_b = 0.,
194  double radius_b = 0.,
195  double distance_b = 0.)
196  {
197  angular_bound = angular_b;
198  radius_bound = radius_b;
199  distance_bound = distance_b;
200  }
201  };
202 
203 } // namespace CGALWrappers
205 
206 #else
207 
209 namespace CGALWrappers
210 {
214  template <int dim>
215  struct AdditionalData
216  {};
217 } // namespace CGALWrappers
218 
220 #endif
221 
222 #endif
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:442
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:443
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
Definition: exceptions.h:1583
@ 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.)