15#ifndef dealii_grid_generator_h
16#define dealii_grid_generator_h
104 template <
int dim,
int spacedim>
107 const double left = 0.,
108 const double right = 1.,
109 const bool colorize =
false);
155 template <
int dim,
int spacedim>
190 template <
int dim,
int spacedim>
193 const unsigned int repetitions,
194 const double left = 0.,
195 const double right = 1.,
196 const bool colorize =
false);
236 template <
int dim,
int spacedim>
241 const bool colorize =
false);
296 template <
int dim,
int spacedim>
299 const std::vector<unsigned int> &repetitions,
302 const bool colorize =
false);
326 const std::vector<std::vector<double>> &step_sizes,
329 const bool colorize =
false);
348 const std::vector<std::vector<double>> &spacing,
351 const bool colorize =
false);
380 template <
int dim,
int spacedim>
383 const std::vector<unsigned int> &holes);
437 const double inner_radius = 0.4,
438 const double outer_radius = 1.,
439 const double pad_bottom = 2.,
440 const double pad_top = 2.,
441 const double pad_left = 1.,
442 const double pad_right = 1.,
447 const unsigned int n_slices = 2,
448 const bool colorize =
false);
545 const double shell_region_width = 0.03,
546 const unsigned int n_shells = 2,
547 const double skewness = 2.0,
548 const bool colorize =
false);
638 const std::vector<unsigned int> &lengths_and_heights,
639 const double depth = 1,
640 const unsigned int depth_division = 1,
641 const double shell_region_radius = 0.75,
642 const unsigned int n_shells = 2,
643 const double skewness = 2.0,
644 const bool use_transfinite_region =
false,
645 const bool colorize =
false);
670 template <
int dim,
int spacedim>
674 const bool colorize =
false);
699 const bool colorize =
false);
723 const bool colorize =
false);
743 const unsigned int n_subdivisions,
745 const bool colorize =
false);
763 const unsigned int (&n_subdivisions)[dim],
765 const unsigned int *n_subdivisions,
768 const bool colorize =
false);
793 template <
int dim,
int spacedim>
798 const std::vector<unsigned int> &subdivisions = {},
799 const bool colorize =
false);
824 const double left = 0.,
825 const double right = 1.,
826 const double thickness = 1.,
827 const bool colorize =
false);
911 template <
int dim,
int spacedim>
915 const double radius = 1.,
916 const bool attach_spherical_manifold_on_boundary_cells =
false);
957 const double radius = 1.);
979 const unsigned int n_rotate_middle_square);
1004 const bool face_orientation,
1005 const bool face_flip,
1006 const bool face_rotation,
1007 const bool manipulate_left_cube);
1038 template <
int spacedim>
1042 const double radius = 1.);
1084 const double radius = 1.);
1105 const double radius = 1.);
1136 const double radius = 1.,
1137 const double half_length = 1.);
1180 const unsigned int x_subdivisions,
1181 const double radius = 1.,
1182 const double half_length = 1.);
1222 const double radius_0 = 1.0,
1223 const double radius_1 = 0.5,
1224 const double half_length = 1.0);
1349 template <
int dim,
int spacedim>
1354 const double aspect_ratio = 0.5);
1382 template <
int dim,
int spacedim>
1385 const std::vector<unsigned int> &sizes,
1386 const bool colorize_cells =
false);
1426 const double left = -1.,
1427 const double right = 1.,
1428 const bool colorize =
false);
1461 template <
int dim,
int spacedim>
1464 const std::vector<unsigned int> &repetitions,
1467 const std::vector<int> &n_cells_to_remove);
1491 const double left = 0.,
1492 const double right = 1.,
1493 const bool colorize =
false);
1556 template <
int dim,
int spacedim>
1560 const double inner_radius,
1561 const double outer_radius,
1562 const unsigned int n_cells = 0,
1563 bool colorize =
false);
1603 const double inner_radius,
1604 const double outer_radius,
1605 const unsigned int n_cells);
1640 const double inner_radius,
1641 const double outer_radius,
1642 const unsigned int n_cells = 0,
1643 const bool colorize =
false);
1675 const double inner_radius,
1676 const double outer_radius,
1677 const unsigned int n_cells = 0,
1678 const bool colorize =
false);
1714 const double length,
1715 const double inner_radius,
1716 const double outer_radius,
1717 const unsigned int n_radial_cells = 0,
1718 const unsigned int n_axial_cells = 0,
1719 const bool colorize =
false);
1772 template <
int dim,
int spacedim>
1775 const double centerline_radius,
1776 const double inner_radius,
1777 const unsigned int n_cells_toroidal = 6,
1813 template <
int dim,
int spacedim>
1816 const double inner_radius = .25,
1817 const double outer_radius = .5,
1818 const double L = .5,
1819 const unsigned int repetitions = 1,
1820 const bool colorize =
false);
1896 const double inner_radius = 0.125,
1897 const double outer_radius = 0.25,
1898 const unsigned int n_shells = 1,
1899 const double skewness = 0.1,
1900 const unsigned int n_cells_per_shell = 0,
1901 const bool colorize =
false);
1918 const unsigned int n_cells,
1919 const unsigned int n_rotations,
1958 template <
int dim,
int spacedim>
1962 const std::string &grid_generator_function_name,
1963 const std::string &grid_generator_function_arguments);
2022 const double &outer_ball_radius = 1.0);
2111 template <
int dim,
int spacedim>
2116 const double duplicated_vertex_tolerance = 1.0e-12,
2117 const bool copy_manifold_ids =
false,
2118 const bool copy_boundary_ids =
false);
2139 template <
int dim,
int spacedim>
2144 const double duplicated_vertex_tolerance = 1.0e-12,
2145 const bool copy_manifold_ids =
false,
2146 const bool copy_boundary_ids =
false);
2198 template <
int dim,
int spacedim = dim>
2201 const std::vector<unsigned int> &extents,
2241 template <
int dim,
int spacedim>
2284 template <
int dim,
int spacedim>
2365 const unsigned int n_slices,
2366 const double height,
2368 const bool copy_manifold_ids =
false,
2369 const std::vector<types::manifold_id> &manifold_priorities = {});
2380 const unsigned int n_slices,
2381 const double height,
2383 const bool copy_manifold_ids =
false,
2384 const std::vector<types::manifold_id> &manifold_priorities = {});
2408 const std::vector<double> &slice_coordinates,
2410 const bool copy_manifold_ids =
false,
2411 const std::vector<types::manifold_id> &manifold_priorities = {});
2422 const std::vector<double> &slice_coordinates,
2424 const bool copy_manifold_ids =
false,
2425 const std::vector<types::manifold_id> &manifold_priorities = {});
2468 template <
int dim,
int spacedim1,
int spacedim2>
2526 template <
int dim,
int spacedim>
2530 const unsigned int n_divisions = (dim == 2 ?
2556 template <
int dim,
int spacedim>
2764 template <
int dim,
int spacedim>
2768 const std::vector<unsigned int> &repetitions,
2771 const bool colorize =
false);
2790 template <
int dim,
int spacedim>
2793 const unsigned int repetitions,
2794 const double p1 = 0.0,
2795 const double p2 = 1.0,
2796 const bool colorize =
false);
2814 template <
template <
int,
int>
class MeshType,
int dim,
int spacedim>
2817 struct ExtractBoundaryMesh
2820 std::map<
typename MeshType<dim - 1, spacedim>::cell_iterator,
2821 typename MeshType<dim, spacedim>::face_iterator>;
2922 template <
template <
int,
int>
class MeshType,
int dim,
int spacedim>
2929 std::map<
typename MeshType<dim - 1, spacedim>::cell_iterator,
2930 typename MeshType<dim, spacedim>::face_iterator>
2932 typename ExtractBoundaryMesh<MeshType, dim, spacedim>::return_type
2936 MeshType<dim - 1, spacedim> &surface_mesh,
2937 const std::set<types::boundary_id> &boundary_ids =
2938 std::set<types::boundary_id>());
2958 <<
"The number of repetitions " << arg1 <<
" must be >=1.");
2964 <<
"The vector of repetitions must have " << arg1
2971 "The input to this function is oriented in a way that will"
2972 " cause all cells to have negative measure.");
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
#define DeclException0(Exception0)
static ::ExceptionBase & ExcInvalidInputOrientation()
static ::ExceptionBase & ExcInvalidRepetitions(int arg1)
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcInvalidRadii()
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcInvalidRepetitionsDimension(int arg1)
TriaActiveIterator< CellAccessor< dim, spacedim > > active_cell_iterator
TriaIterator< CellAccessor< dim, spacedim > > cell_iterator
void create_triangulation(Triangulation< dim, dim > &tria, const AdditionalData &additional_data=AdditionalData())
void subdivided_hyper_cube_with_simplices(Triangulation< dim, spacedim > &tria, const unsigned int repetitions, const double p1=0.0, const double p2=1.0, const bool colorize=false)
void parallelepiped(Triangulation< dim > &tria, const Point< dim >(&corners)[dim], const bool colorize=false)
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_cube_with_cylindrical_hole(Triangulation< dim, spacedim > &triangulation, const double inner_radius=.25, const double outer_radius=.5, const double L=.5, const unsigned int repetitions=1, const bool colorize=false)
void hyper_ball_balanced(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1.)
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 > ¢er=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 generate_from_name_and_arguments(Triangulation< dim, spacedim > &tria, const std::string &grid_generator_function_name, const std::string &grid_generator_function_arguments)
void enclosed_hyper_cube(Triangulation< dim > &tria, const double left=0., const double right=1., const double thickness=1., const bool colorize=false)
void replicate_triangulation(const Triangulation< dim, spacedim > &input, const std::vector< unsigned int > &extents, Triangulation< dim, spacedim > &result)
Replicate a given triangulation in multiple coordinate axes.
void parallelogram(Triangulation< dim > &tria, const Point< dim >(&corners)[dim], const bool colorize=false)
void general_cell(Triangulation< dim, spacedim > &tria, const std::vector< Point< spacedim > > &vertices, const bool colorize=false)
void subdivided_hyper_cube(Triangulation< dim, spacedim > &tria, const unsigned int repetitions, const double left=0., const double right=1., const bool colorize=false)
void hyper_shell(Triangulation< dim, spacedim > &tria, const Point< spacedim > ¢er, const double inner_radius, const double outer_radius, const unsigned int n_cells=0, bool colorize=false)
void hyper_L(Triangulation< dim > &tria, const double left=-1., const double right=1., const bool colorize=false)
void hyper_cube_slit(Triangulation< dim > &tria, const double left=0., const double right=1., const bool colorize=false)
void eccentric_hyper_shell(Triangulation< dim > &triangulation, const Point< dim > &inner_center, const Point< dim > &outer_center, const double inner_radius, const double outer_radius, const unsigned int n_cells)
void hyper_rectangle(Triangulation< dim, spacedim > &tria, const Point< dim > &p1, const Point< dim > &p2, const bool colorize=false)
void surface_mesh_to_volumetric_mesh(const Triangulation< 2, 3 > &surface_tria, Triangulation< 3 > &vol_tria, const CGALWrappers::AdditionalData< 3 > &data=CGALWrappers::AdditionalData< 3 >{})
void uniform_channel_with_cylinder(Triangulation< dim > &tria, const std::vector< unsigned int > &lengths_and_heights, const double depth=1, const unsigned int depth_division=1, const double shell_region_radius=0.75, const unsigned int n_shells=2, const double skewness=2.0, const bool use_transfinite_region=false, const bool colorize=false)
void cylinder(Triangulation< dim > &tria, const double radius=1., const double half_length=1.)
void moebius(Triangulation< 3, 3 > &tria, const unsigned int n_cells, const unsigned int n_rotations, const double R, const double r)
void pipe_junction(Triangulation< dim, spacedim > &tria, const std::vector< std::pair< Point< spacedim >, double > > &openings, const std::pair< Point< spacedim >, double > &bifurcation, const double aspect_ratio=0.5)
void extrude_triangulation(const Triangulation< 2, 2 > &input, const unsigned int n_slices, const double height, Triangulation< 3, 3 > &result, const bool copy_manifold_ids=false, const std::vector< types::manifold_id > &manifold_priorities={})
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 quarter_hyper_ball(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1.)
void cheese(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &holes)
Rectangular domain with rectangular pattern of holes.
void implicit_function(Triangulation< dim, 3 > &tria, const Function< 3 > &implicit_function, const CGALWrappers::AdditionalData< dim > &data=CGALWrappers::AdditionalData< dim >{}, const Point< 3 > &interior_point=Point< 3 >(), const double &outer_ball_radius=1.0)
void create_union_triangulation(const Triangulation< dim, spacedim > &triangulation_1, const Triangulation< dim, spacedim > &triangulation_2, Triangulation< dim, spacedim > &result)
void hyper_ball(Triangulation< dim, spacedim > &tria, const Point< spacedim > ¢er={}, const double radius=1., const bool attach_spherical_manifold_on_boundary_cells=false)
void subdivided_hyper_rectangle_with_simplices(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &repetitions, const Point< dim > &p1, const Point< dim > &p2, const bool colorize=false)
void non_standard_orientation_mesh(Triangulation< 2 > &tria, const unsigned int n_rotate_middle_square)
return_type 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 alfeld_split_of_simplex_mesh(const Triangulation< dim, spacedim > &in_tria, Triangulation< dim, spacedim > &out_tria)
void subdivided_parallelepiped(Triangulation< dim > &tria, const unsigned int n_subdivisions, const Point< dim >(&corners)[dim], const bool colorize=false)
void subdivided_cylinder(Triangulation< dim > &tria, const unsigned int x_subdivisions, const double radius=1., const double half_length=1.)
void convert_hypercube_to_simplex_mesh(const Triangulation< dim, spacedim > &in_tria, Triangulation< dim, spacedim > &out_tria, const unsigned int n_divisions=(dim==2 ? 8u :24u))
void channel_with_cylinder(Triangulation< dim > &tria, const double shell_region_width=0.03, const unsigned int n_shells=2, const double skewness=2.0, const bool colorize=false)
void subdivided_hyper_L(Triangulation< dim, spacedim > &tria, const std::vector< unsigned int > &repetitions, const Point< dim > &bottom_left, const Point< dim > &top_right, const std::vector< int > &n_cells_to_remove)
void hyper_sphere(Triangulation< spacedim - 1, spacedim > &tria, const Point< spacedim > ¢er=Point< spacedim >(), const double radius=1.)
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 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 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 hyper_cube(Triangulation< dim, spacedim > &tria, const double left=0., const double right=1., const bool colorize=false)
void torus(Triangulation< dim, spacedim > &tria, const double centerline_radius, const double inner_radius, const unsigned int n_cells_toroidal=6, const double phi=2.0 *numbers::PI)
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)
void simplex(Triangulation< dim, dim > &tria, const std::vector< Point< dim > > &vertices)
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 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, const bool copy_boundary_ids=false)
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell &reference_cell)
void half_hyper_ball(Triangulation< dim > &tria, const Point< dim > ¢er=Point< dim >(), const double radius=1.)
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, const bool colorize=false)
void flatten_triangulation(const Triangulation< dim, spacedim1 > &in_tria, Triangulation< dim, spacedim2 > &out_tria)
unsigned int n_subdivision_x_0
unsigned int n_subdivision_y
unsigned int n_subdivision_x_2
void add_parameters(ParameterHandler &prm)
unsigned int airfoil_sampling_factor
unsigned int n_subdivision_x_1
Point< 2, double > joukowski_center