8#include <ryujin/base/compile_time_options.h>
13 namespace GridGenerator
27 template <
int dim,
int spacedim,
template <
int,
int>
class Triangulation>
28 void wall(Triangulation<dim, spacedim> &,
33 AssertThrow(
false, dealii::ExcNotImplemented());
39 template <
template <
int,
int>
class Triangulation>
40 void wall(Triangulation<2, 2> &triangulation,
43 const double wall_position)
45 using namespace dealii;
47 dealii::Triangulation<2, 2> tria1, tria2, tria3;
48 tria3.set_mesh_smoothing(triangulation.get_mesh_smoothing());
50 GridGenerator::subdivided_hyper_rectangle(
51 tria1, {18, 6}, Point<2>(wall_position, 0), Point<2>(length, height));
53 GridGenerator::subdivided_hyper_rectangle(
54 tria2, {1, 6}, Point<2>(0., 0.), Point<2>(wall_position, height));
56 GridGenerator::merge_triangulations(tria1, tria2, tria3);
58 triangulation.copy_triangulation(tria3);
64 for (
auto cell : triangulation.active_cell_iterators()) {
65 for (
auto f : cell->face_indices()) {
66 const auto face = cell->face(f);
68 if (!face->at_boundary())
77 const auto center = face->center();
79 if (center[0] > wall_position && center[1] < 1.e-6) {
82 }
else if (center[0] > length - 1.e-6) {
109 Wall(
const std::string &subsection)
114 "length", length_,
"length of computational domain");
118 "height", height_,
"height of computational domain");
120 wall_position_ = 1. / 6.;
122 "wall position", wall_position_,
"x position of wall");
126 dealii::Triangulation<dim> &triangulation)
const final
134 double wall_position_;
void create_coarse_triangulation(dealii::Triangulation< dim > &triangulation) const final
Wall(const std::string &subsection)
void wall(Triangulation< dim, spacedim > &, const double, const double, const double)