16 #ifndef dealii_grid_generator_h 17 #define dealii_grid_generator_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 23 #include <deal.II/base/function.h> 24 #include <deal.II/base/point.h> 25 #include <deal.II/base/table.h> 27 #include <deal.II/grid/tria.h> 32 DEAL_II_NAMESPACE_OPEN
89 template <
int dim,
int spacedim>
92 const double left = 0.,
93 const double right = 1.,
94 const bool colorize =
false);
138 template <
int dim,
int spacedim>
141 const unsigned int repetitions,
142 const double left = 0.,
143 const double right = 1.);
176 template <
int dim,
int spacedim>
181 const bool colorize =
false);
232 template <
int dim,
int spacedim>
235 const std::vector<unsigned int> &repetitions,
238 const bool colorize =
false);
258 const std::vector<std::vector<double>> &step_sizes,
261 const bool colorize =
false);
276 const std::vector<std::vector<double>> &spacing,
279 const bool colorize =
false);
307 template <
int dim,
int spacedim>
310 const std::vector<unsigned int> &holes);
357 const double inner_radius = 0.4,
358 const double outer_radius = 1.,
359 const double pad_bottom = 2.,
360 const double pad_top = 2.,
361 const double pad_left = 1.,
362 const double pad_right = 1.,
367 const unsigned int n_slices = 2,
368 const bool colorize =
false);
389 const bool colorize =
false);
405 const bool colorize =
false);
425 const bool colorize =
false);
440 const unsigned int n_subdivisions,
442 const bool colorize =
false);
455 const unsigned int (&n_subdivisions)[dim],
457 const unsigned int *n_subdivisions,
460 const bool colorize =
false);
485 template <
int dim,
int spacedim>
491 const std::vector<unsigned int> &subdivisions = std::vector<unsigned int>(),
492 const bool colorize =
false);
512 const double left = 0.,
513 const double right = 1.,
514 const double thickness = 1.,
515 const bool colorize =
false);
555 const double radius = 1.,
556 const bool attach_spherical_manifold_on_boundary_cells =
false);
583 template <
int spacedim>
586 const double radius = 1.);
603 const double radius = 1.);
620 const double radius = 1.);
649 const double radius = 1.,
650 const double half_length = 1.);
681 const double radius_0 = 1.0,
682 const double radius_1 = 0.5,
683 const double half_length = 1.0);
714 template <
int dim,
int spacedim>
717 const std::vector<unsigned int> &sizes,
718 const bool colorize_cells =
false);
757 const double left = -1.,
758 const double right = 1.,
759 const bool colorize =
false);
782 const double left = 0.,
783 const double right = 1.,
784 const bool colorize =
false);
828 const double inner_radius,
829 const double outer_radius,
830 const unsigned int n_cells = 0,
831 bool colorize =
false);
862 const double inner_radius,
863 const double outer_radius,
864 const unsigned int n_cells = 0,
865 const bool colorize =
false);
896 const double inner_radius,
897 const double outer_radius,
898 const unsigned int n_cells = 0,
899 const bool colorize =
false);
924 const double inner_radius,
925 const double outer_radius,
926 const unsigned int n_radial_cells = 0,
927 const unsigned int n_axial_cells = 0);
952 template <
int dim,
int spacedim>
988 const double inner_radius = .25,
989 const double outer_radius = .5,
991 const unsigned int repetitions = 1,
992 const bool colorize =
false);
1069 const double inner_radius = 0.125,
1070 const double outer_radius = 0.25,
1071 const unsigned int n_shells = 1,
1072 const double skewness = 0.1,
1073 const unsigned int n_cells_per_shell = 0,
1074 const bool colorize =
false);
1090 const unsigned int n_cells,
1091 const unsigned int n_rotations,
1159 template <
int dim,
int spacedim>
1164 const double duplicated_vertex_tolerance = 1.0e-12,
1165 const bool copy_manifold_ids =
false);
1181 template <
int dim,
int spacedim>
1187 const double duplicated_vertex_tolerance = 1.0e-12,
1188 const bool copy_manifold_ids =
false);
1223 template <
int dim,
int spacedim>
1265 template <
int dim,
int spacedim>
1289 const unsigned int n_slices,
1290 const double height,
1313 const std::vector<double> &slice_coordinates,
1347 template <
int dim,
int spacedim1,
int spacedim2>
1367 template <
template <
int,
int>
class MeshType,
int dim,
int spacedim>
1368 struct ExtractBoundaryMesh
1371 std::map<
typename MeshType<dim - 1, spacedim>::cell_iterator,
1372 typename MeshType<dim, spacedim>::face_iterator>;
1450 template <
template <
int,
int>
class MeshType,
int dim,
int spacedim>
1452 std::map<
typename MeshType<dim - 1, spacedim>::cell_iterator,
1453 typename MeshType<dim, spacedim>::face_iterator>
1455 typename ExtractBoundaryMesh<MeshType, dim, spacedim>::return_type
1458 MeshType<dim - 1, spacedim> & surface_mesh,
1459 const std::set<types::boundary_id> &boundary_ids =
1460 std::set<types::boundary_id>());
1480 <<
"The number of repetitions " << arg1 <<
" must be >=1.");
1486 <<
"The vector of repetitions must have " << arg1
1493 "The input to this function is oriented in a way that will" 1494 " cause all cells to have negative measure.");
1529 DEAL_II_NAMESPACE_CLOSE
void create_union_triangulation(const Triangulation< dim, spacedim > &triangulation_1, const Triangulation< dim, spacedim > &triangulation_2, Triangulation< dim, spacedim > &result)
void torus(Triangulation< dim, spacedim > &tria, const double R, const double r)
void simplex(Triangulation< dim, dim > &tria, const std::vector< Point< dim >> &vertices)
Triangulation of a d-simplex with (d+1) vertices and mesh cells.
void concentric_hyper_shells(Triangulation< dim > &triangulation, const Point< dim > ¢er, const double inner_radius=0.125, const double outer_radius=0.25, const unsigned int n_shells=1, const double skewness=0.1, const unsigned int n_cells_per_shell=0, const bool colorize=false)
void truncated_cone(Triangulation< dim > &tria, const double radius_0=1.0, const double radius_1=0.5, const double half_length=1.0)
void hyper_rectangle(Triangulation< dim, spacedim > &tria, const Point< dim > &p1, const Point< dim > &p2, const bool colorize=false)
void moebius(Triangulation< 3, 3 > &tria, const unsigned int n_cells, const unsigned int n_rotations, const double R, const double r)
void flatten_triangulation(const Triangulation< dim, spacedim1 > &in_tria, Triangulation< dim, spacedim2 > &out_tria)
void quarter_hyper_shell(Triangulation< dim > &tria, const Point< dim > ¢er, const double inner_radius, const double outer_radius, const unsigned int n_cells=0, const bool colorize=false)
void extrude_triangulation(const Triangulation< 2, 2 > &input, const unsigned int n_slices, const double height, Triangulation< 3, 3 > &result)
void enclosed_hyper_cube(Triangulation< dim > &tria, const double left=0., const double right=1., const double thickness=1., const bool colorize=false)
void subdivided_parallelepiped(Triangulation< dim > &tria, const unsigned int n_subdivisions, const Point< dim >(&corners)[dim], const bool colorize=false)
static::ExceptionBase & ExcInvalidRepetitionsDimension(int arg1)
void parallelogram(Triangulation< dim > &tria, const Point< dim >(&corners)[dim], const bool colorize=false)
void hyper_shell(Triangulation< dim > &tria, const Point< dim > ¢er, const double inner_radius, const double outer_radius, const unsigned int n_cells=0, bool colorize=false)
void hyper_sphere(Triangulation< spacedim-1, spacedim > &tria, const Point< spacedim > ¢er=Point< spacedim >(), const double radius=1.)
static::ExceptionBase & ExcInvalidInputOrientation()
void cylinder_shell(Triangulation< dim > &tria, const double length, const double inner_radius, const double outer_radius, const unsigned int n_radial_cells=0, const unsigned int n_axial_cells=0)
void hyper_cross(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &sizes, const bool colorize_cells=false)
A center cell with stacks of cell protruding from each surface.
void hyper_L(Triangulation< dim > &tria, const double left=-1., const double right=1., const bool colorize=false)
void half_hyper_ball(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1.)
#define DeclException1(Exception1, type1, outsequence)
void cylinder(Triangulation< dim > &tria, const double radius=1., const double half_length=1.)
#define DeclExceptionMsg(Exception, defaulttext)
#define DeclException0(Exception0)
void quarter_hyper_ball(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1.)
void subdivided_hyper_cube(Triangulation< dim, spacedim > &tria, const unsigned int repetitions, const double left=0., const double right=1.)
void create_triangulation_with_removed_cells(const Triangulation< dim, spacedim > &input_triangulation, const std::set< typename Triangulation< dim, spacedim >::active_cell_iterator > &cells_to_remove, Triangulation< dim, spacedim > &result)
std::map< typename MeshType< dim-1, spacedim >::cell_iterator, typename MeshType< dim, spacedim >::face_iterator > extract_boundary_mesh(const MeshType< dim, spacedim > &volume_mesh, MeshType< dim-1, spacedim > &surface_mesh, const std::set< types::boundary_id > &boundary_ids=std::set< types::boundary_id >())
void hyper_cube_slit(Triangulation< dim > &tria, const double left=0., const double right=1., const bool colorize=false)
void subdivided_hyper_rectangle(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &repetitions, const Point< dim > &p1, const Point< dim > &p2, const bool colorize=false)
void merge_triangulations(const Triangulation< dim, spacedim > &triangulation_1, const Triangulation< dim, spacedim > &triangulation_2, Triangulation< dim, spacedim > &result, const double duplicated_vertex_tolerance=1.0e-12, const bool copy_manifold_ids=false)
static::ExceptionBase & ExcInvalidRadii()
void cheese(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &holes)
Rectangular domain with rectangular pattern of holes.
void parallelepiped(Triangulation< dim > &tria, const Point< dim >(&corners)[dim], const bool colorize=false)
void general_cell(Triangulation< dim > &tria, const std::vector< Point< dim >> &vertices, const bool colorize=false)
void half_hyper_shell(Triangulation< dim > &tria, const Point< dim > ¢er, const double inner_radius, const double outer_radius, const unsigned int n_cells=0, const bool colorize=false)
void hyper_cube(Triangulation< dim, spacedim > &tria, const double left=0., const double right=1., const bool colorize=false)
void hyper_ball(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1., const bool attach_spherical_manifold_on_boundary_cells=false)
void plate_with_a_hole(Triangulation< dim > &tria, const double inner_radius=0.4, const double outer_radius=1., const double pad_bottom=2., const double pad_top=2., const double pad_left=1., const double pad_right=1., const Point< dim > center=Point< dim >(), const types::manifold_id polar_manifold_id=0, const types::manifold_id tfi_manifold_id=1, const double L=1., const unsigned int n_slices=2, const bool colorize=false)
Rectangular plate with an (offset) cylindrical hole.
void hyper_cube_with_cylindrical_hole(Triangulation< dim > &triangulation, const double inner_radius=.25, const double outer_radius=.5, const double L=.5, const unsigned int repetitions=1, const bool colorize=false)
static::ExceptionBase & ExcInvalidRepetitions(int arg1)