From 895c89120421b041901944a6139ffc98bc718960 Mon Sep 17 00:00:00 2001 From: David Wells Date: Sat, 8 Sep 2018 15:20:46 -0400 Subject: [PATCH] Update the glossary entry on distorted cells. The problem described in the glossary now cannot occur with Manifolds and the new scheme for placing new vertices. --- doc/doxygen/headers/glossary.h | 65 ++---------------- .../images/distorted_2d_refinement_01.png | Bin 1491 -> 0 bytes .../images/distorted_2d_refinement_02.png | Bin 1727 -> 0 bytes .../images/distorted_2d_refinement_03.png | Bin 1809 -> 0 bytes 4 files changed, 7 insertions(+), 58 deletions(-) delete mode 100644 doc/doxygen/images/distorted_2d_refinement_01.png delete mode 100644 doc/doxygen/images/distorted_2d_refinement_02.png delete mode 100644 doc/doxygen/images/distorted_2d_refinement_03.png diff --git a/doc/doxygen/headers/glossary.h b/doc/doxygen/headers/glossary.h index 24c2616624..7fee4e3731 100644 --- a/doc/doxygen/headers/glossary.h +++ b/doc/doxygen/headers/glossary.h @@ -795,14 +795,14 @@ * * Distorted cells can appear in two different ways: The original * @ref GlossCoarseMesh "coarse mesh" can already contain such cells, - * or they can be created as the result of mesh refinement if the boundary - * description in use is sufficiently irregular. + * or they can be created as the result of moving or distorting a mesh by a + * relatively large amount. * * If the appropriate flag is given upon creation of a triangulation, * the function Triangulation::create_triangulation, which is called * by the various functions in GridGenerator and GridIn (but can also - * be called from user code, see step-14), will signal - * the creation of coarse meshes with distorted cells by throwing an + * be called from user code, see step-14 and the example at the end of step-49), + * will signal the creation of coarse meshes with distorted cells by throwing an * exception of type Triangulation::DistortedCellList. There are * legitimate cases for creating meshes with distorted cells (in * particular collapsed/pinched cells) if you don't intend to assemble @@ -820,60 +820,9 @@ * that you can ignore this condition, you can react by doing nothing * with the caught exception. * - * The second case in which distorted cells can appear is through mesh - * refinement when we have curved boundaries. Consider, for example, the - * following case where the dashed line shows the exact boundary that the - * lower edge of the cell is supposed to approximate (let's assume for - * simplicity that the left, top and right edges are interior edges and - * therefore will be considered as straight; in fact, for this particular case - * in 2d where only one side of a cell is at the boundary we have special code - * that avoids the situation depicted, but you will get the general idea of - * the problem that holds in 3d or if more than one side of the cell is at the - * boundary): - * - * @image html distorted_2d_refinement_01.png "One cell with an edge approximating a curved boundary" - * - * Now, if this cell is refined, we first split all edges and place - * new mid-points on them. For the left, top and right edge, this is - * trivial: because they are considered straight, we just take the - * point in the middle between the two vertices. For the lower edge, - * the Triangulation class asks the Boundary object associated with - * this boundary (and in particular the Boundary::new_point_on_line - * function) where the new point should lie. The four old vertices and - * the four new points are shown here: - * - * @image html distorted_2d_refinement_02.png "Cell after edge refinement" - * - * The last step is to compute the location of the new point in the interior - * of the cell. By default, it is chosen as the average location (arithmetic - * mean of the coordinates) of these 8 points (in 3d, the 26 surrounding - * points have different weights, but the idea is the same): - * - * @image html distorted_2d_refinement_03.png "Cell after edge refinement" - * - * The problem with that is, of course, that the bottom two child cells are - * twisted, whereas the top two children are well-shaped. While such - * meshes can happen with sufficiently irregular boundary descriptions - * (and if the @ref GlossCoarseMesh "coarse mesh" is entirely inadequate - * to resolve the complexity of the boundary), the Triangulation class does not - * know what to do in such situations unless one attaches an appropriate - * manifold object to the cells in question (see the - * @ref manifold "documentation module on manifolds"). Consequently, absent - * such a manifold description or if the manifold description does not - * provide a sufficient description of the geometry, the - * Triangulation::execute_coarsening_and_refinement function does - * create such meshes, but it keeps a list of cells whose children are - * distorted. If this list is non-empty at the end of a refinement - * step, it will throw an exception of type - * Triangulation::DistortedCellList that contains those cells that - * have distorted children. The caller of - * Triangulation::execute_coarsening_and_refinement can then decide - * what to do with this situation. - * - * One way to deal with this problem is to use the - * GridTools::fix_up_distorted_child_cells function that attempts to - * fix up exactly these cells if possible by moving around the node at - * the center of the cell. + * The function GridTools::fix_up_distorted_child_cells can, in some cases, + * fix distorted cells on refined meshes by moving around the vertices of a + * distorted child cell that has an undistorted parent. * * Note that the Triangulation class does not test for the presence of * distorted cells by default, since the determination whether a cell diff --git a/doc/doxygen/images/distorted_2d_refinement_01.png b/doc/doxygen/images/distorted_2d_refinement_01.png deleted file mode 100644 index 4acc8bceeffae13f26608dcf3ce9cc3380c7b5f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 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