168 dealii::Triangulation<dim> &triangulation)
const final
172 dealii::Triangulation<dim, dim> tria1;
173 tria1.set_mesh_smoothing(triangulation.get_mesh_smoothing());
175 if constexpr (dim == 1) {
176 dealii::GridGenerator::subdivided_hyper_rectangle<dim, dim>(
177 tria1, {subdivisions_x_}, point_left_, point_right_);
178 }
else if constexpr (dim == 2) {
179 dealii::GridGenerator::subdivided_hyper_rectangle(
181 {subdivisions_x_, subdivisions_y_},
184 }
else if constexpr (dim == 3) {
185 dealii::GridGenerator::subdivided_hyper_rectangle(
187 {subdivisions_x_, subdivisions_y_, subdivisions_z_},
192 triangulation.copy_triangulation(tria1);
193 triangulation.reset_all_manifolds();
195 triangulation.set_all_manifold_ids(0);
199 for (
auto cell : triangulation.active_cell_iterators()) {
200 for (
auto f : cell->face_indices()) {
201 auto face = cell->face(f);
202 if (!face->at_boundary())
204 const auto position = face->center();
206 if (position[0] < point_left_[0] + 1.e-8) {
207 face->set_boundary_id(boundary_left_);
208 face->set_manifold_id(dealii::numbers::flat_manifold_id);
211 if (position[0] > point_right_[0] - 1.e-8) {
212 face->set_boundary_id(boundary_right_);
213 face->set_manifold_id(dealii::numbers::flat_manifold_id);
217 if constexpr (dim == 2) {
218 if (position[1] < point_left_[1] + 1.e-8) {
219 face->set_boundary_id(boundary_bottom_);
221 face->set_manifold_id(1);
223 if (position[1] > point_right_[1] - 1.e-8) {
224 face->set_boundary_id(boundary_top_);
225 face->set_manifold_id(dealii::numbers::flat_manifold_id);
229 if constexpr (dim == 3) {
230 if (position[1] < point_left_[1] + 1.e-8) {
231 face->set_boundary_id(boundary_bottom_);
232 face->set_manifold_id(dealii::numbers::flat_manifold_id);
235 if (position[1] > point_right_[1] - 1.e-8) {
236 face->set_boundary_id(boundary_top_);
237 face->set_manifold_id(dealii::numbers::flat_manifold_id);
246 if (position[2] < point_left_[2] + 1.e-8) {
247 face->set_boundary_id(boundary_back_);
249 face->set_manifold_id(1);
252 if (position[2] > point_right_[2] - 1.e-8) {
253 face->set_boundary_id(boundary_front_);
254 face->set_manifold_id(dealii::numbers::flat_manifold_id);
261 make_profile_manifold<dim>([&](dealii::Point<dim> point) {
265 if constexpr (dim == 1) {
267 }
else if constexpr (dim == 2) {
272 point[1] = reference_y_coordinate_;
274 }
else if constexpr (dim == 3) {
278 triangulation.set_manifold(1, profile);
280 dealii::TransfiniteInterpolationManifold<dim> transfinite_interpolation;
281 transfinite_interpolation.initialize(triangulation);
282 triangulation.set_manifold(0, transfinite_interpolation);