From 0f41f7c4fbf1490c5bf90adcb36a043a4d007fb1 Mon Sep 17 00:00:00 2001 From: Mae Markowski Date: Thu, 8 Aug 2019 16:26:17 -0600 Subject: [PATCH] Extended step-3 possible extensions to label boundaries using x, y, z coordinates rather than face labels. --- examples/step-3/doc/results.dox | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/examples/step-3/doc/results.dox b/examples/step-3/doc/results.dox index a295a9d4a4..2f5764aa63 100644 --- a/examples/step-3/doc/results.dox +++ b/examples/step-3/doc/results.dox @@ -124,6 +124,31 @@ suggestions: potentially non-zero Neumann conditions). You will see this if you run the program. + An alternative way to change the boundary indicator is to label + the boundaries by the cartesian coordinates of the cell centers. + For example, we can label all of the cells along the top and + bottom boundaries with a boundary indicator 1 by checking to + see if the cell centers' y-coordiantes are within a tolerance + (here 1e-12) of -1 and 1. Try this immediately after calling + GridGenerator::hyper_cube, as before: + @code + for (; cell != endc; ++cell) + { + { + for (unsigned int face_number = 0; + face_number < GeometryInfo<2>::faces_per_cell; + ++face_number) + if ((std::fabs(cell->face(face_number)->center()(1) - (-1)) < + 1e-12) || + (std::fabs(cell->face(face_number)->center()(1) - (1)) < 1e-12)) + cell->face(face_number)->set_boundary_id(1); + } + } + @code + Although this code is significantly longer than before, it is + useful for complex geometries, as it does not require knowledge + of face labels. +
  • A slight variation of the last point would be to set different boundary values as above, but then use a different boundary value function for -- 2.39.5