]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Fix a few minor textual issues.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 7 Nov 2014 18:31:28 +0000 (12:31 -0600)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 7 Nov 2014 18:31:28 +0000 (12:31 -0600)
examples/step-54/doc/intro.dox

index 63bbfdcd3b5e329b7b0e1c959969edca569a1cd0..86307a4d6d921049c0940c445c4c3e6dd06321c2 100644 (file)
@@ -3,39 +3,41 @@
 <i>This program was contributed by Andrea Mola and Luca Heltai.</i>
 
 @note This program elaborates on concepts of industrial geometry, using 
-tools that interface with OpenCASCADE (http://www.opencascade.org) that 
-allow the specification of arbitrary IGES files as boundaries for your
+tools that interface with the OpenCASCADE library (http://www.opencascade.org) that 
+allow the specification of arbitrary IGES files to describe the boundaries for your
 geometries.
 
 <a name="Intro"></a>
 <h1>Introduction</h1>
 
 
-In some of the previous tutorial programs (step-1, step-3, step-5 and step-6 among others)
-we have learned how to use the mesh refinement methods provided in deal.II. The tutorials
+In some of the previous tutorial programs (step-1, step-3, step-5, step-6 and step-49 among others)
+we have learned how to use the mesh refinement methods provided in deal.II. These tutorials
 have shown how to employ such tools to produce a fine grid for a single simulation, as done
 in step-3; or to start from a coarse grid and carry out a series of simulations on adaptively
 refined grids, as is the case of step-6. Regardless of which approach is taken, the mesh refinement
 requires a suitable geometrical description of the computational domain boundary in order to
 place, at each refinement, the new mesh nodes onto the boundary surface. For instance, step-5
 shows how to assign a circular shape to the boundary of the computational domain, so that
-the faces lying on the boundary are refined onto the circle.
-So far, only elementary boundary shapes such as circles, spheres and boxes were available in the
-library. In this tutorial, we will show how to use a new set of classes developed to import
+the faces lying on the boundary are refined onto the circle. step-53 shows how to do this
+with a boundary defined by experimentally obtained data.
+But, at least as far as elementary boundary shapes are concerned, deal.II really only provides
+circles, spheres, boxes and various combinations. In this tutorial, we will show how to use
+a set of classes developed to import
 arbitrary CAD geometries, assign them to the desired boundary of the computational domain,
 and refine a computational grid on such complex shapes.
 
 
 <h3> CAD surfaces </h3>
 
-In the most common industrial practice, the geometrical models of arbitrary shaped objects
+In the most common industrial practice, the geometrical models of arbitrarily shaped objects
 are realized by means of Computer Aided Design (CAD) tools. The use of CAD modelers has
 spread in the last decades, as they allow for the generation of a full virtual model of
 each designed object, which through a computer can be visualized, inspected, and analyzed
 in its finest details well before it is physically crafted. 
-By a mathematical perspective, the engine lying under the hood of CAD modelers is represented
+From a mathematical perspective, the engine lying under the hood of CAD modelers is represented
 by analytical geometry, and in particular by parametric curves and surfaces such as B-splines
-and NURBS. 
+and NURBS that are rich enough that they can represent most surfaces of practical interest
 Once a virtual model is ready, all the geometrical features of the desired object
 are stored in files which materially contain the coefficients of the parametric surfaces and
 curves composing the object. Depending on the specific CAD tool used to define the geometrical model,
@@ -50,8 +52,8 @@ To import and interrogate CAD models, the deal.II library contains a series of
 wrapper functions for the OpenCASCADE open source library for CAD modeling. These functions allow to import 
 IGES files into OpenCASCADE native objects, and wrap them inside a series of Manifold classes. 
 
-Once imported from an IGES file, the model is stored in a TopoDS_Shape, which is the generic topological entity
-defined into the OpenCASCADE framework. From a TopoDS_Shape, it is then possible to access to all the
+Once imported from an IGES file, the model is stored in a <code>TopoDS_Shape</code>, which is the generic topological entity
+defined in the OpenCASCADE framework. From a <code>TopoDS_Shape</code>, it is then possible to access all the
 sub-shapes (such as vertices, edges and faces) composing it, along with their geometrical description.
 In the deal.II framework, the topological entities composing a shape are used to create objects
 of the Manifold or Boundary classes. In Step-6 we saw how to build a HyperBallBoundary and assign 
@@ -61,30 +63,30 @@ The functions of the CAD modeling interface have been designed to retain the sam
 projector object using the imported CAD shapes, maintaining  the
 very same procedure we use with HyperBallBoundary, i.e., assigning such projector object to cells,
 faces or edges of a coarse mesh. At each refinement cycle, the new mesh nodes will be then automatically generated
-on the specified geometry. 
+by projecting a midpoint of an existing object onto the specified geometry. 
 
 Differently from a spherical or circular boundary, a boundary with a complex geometry
 poses proplems as to where it is best to place the new nodes created upon refinement on the prescribed shape.
-HyperBallBoundary first creates the new nodes on the cell to be refined by averaging the
-surrounding points in the same way as FlatManifold does. Successively, it goes on to project such nodes on the circle or
+HyperBallBoundary first creates the new nodes on the face or edge to be refined by averaging the
+surrounding points in the same way as FlatManifold does. Then, it goes on to project such nodes on the circle or
 sphere along the radial direction. On such a geometry, the radial direction ensures that the newly generated nodes remain evenly
 spaced when remaining on a given refinement level.  
 
 In the case of an arbitrary and complex shape though, the best direction of the projection cannot be identified that easily.
-The library provides several projector classes that employ different projection strategies. A first
-projector, the ArclengthProjectionLineManifold, is to be used only for edge refinement. It is built assigning it a topological shape 
-of dimension one, either a TopoDS_Edge or a TopoDS_Wire (which is a compound shape, made of several connected TopoDS_Edges)
+The OpenCASCADE wrappers in deal.II provide several projector classes that employ different projection strategies. A first
+projector, implemented in the OpenCASCADE::ArclengthProjectionLineManifold class, is to be used only for edge refinement. It is built assigning it a topological shape 
+of dimension one, either a <code>TopoDS_Edge</code> or a <code>TopoDS_Wire</code> (which is a compound shape, made of several connected <code>TopoDS_Edge</code>s)
 and refines a mesh edge finding the new vertex as the point splitting in two even parts the curvilinear length of the CAD curve
 portion that lies between the vertices of the original edge.
 
 <img src="http://www.dealii.org/images/steps/developer/step-54.CurveSplit.png" alt="" width="500">
 
 
-A different projection stategy has been implemented in the NormalProjectionBoundary. The TopoDS_Shape assigned at construction time can be arbitrary
+A different projection stategy has been implemented in the OpenCASCADE::NormalProjectionBoundary class. The <code>TopoDS_Shape</code> assigned at construction time can be arbitrary
 (a collection of shapes, faces, edges or a single face or edge will all work). The new cell nodes are first computed by averaging the
-surrounding points in the same way as FlatManifold does. In a second moment all the new nodes will be projected onto the TopoDS_Shape
-along the direction normal to the shape. If no normal projection is available, the point which is closest to the shape ---typically lying on the shape boundary---
-is selected. If the shape is composed by several sub-shapes, the projection is carried out onto every single
+surrounding points in the same way as FlatManifold does. In a second step, all the new nodes will be projected onto the <code>TopoDS_Shape</code>
+along the direction normal to the shape. If no normal projection is available, the point which is closest to the shape---typically lying on the shape boundary---is selected. 
+If the shape is composed of several sub-shapes, the projection is carried out onto every single
 sub-shape, and the closest projection point point is selected. 
 
 <img src="http://www.dealii.org/images/steps/developer/step-54.NormalProjectionEdge.png" alt="" width="500">
@@ -92,8 +94,8 @@ sub-shape, and the closest projection point point is selected.
 
 As we are about to experience, for some shapes, setting the projection direction as that normal to the CAD surface will not
 lead to surface mesh elements of suitable quality. This is because the direction normal to the CAD surface has in principle nothing to do with the
-direction along which the mesh needs the new nodes to be located. The DirectionalProjectionBoundary, in this case, can help. This class 
-is constructed assigning a TopoDS_Shape (containing at least a face) and a direction along which all the projections will be carried out. New points will be 
+direction along which the mesh needs the new nodes to be located. The OpenCASCADE::DirectionalProjectionBoundary class, in this case, can help. This class 
+is constructed assigning a <code>TopoDS_Shape</code> (containing at least a face) and a direction along which all the projections will be carried out. New points will be 
 computed by first averaging the surrounding points (as in the FlatManifold case), and then taking the closest intersection between the topological shape
 and the line passing throught the resulting point, along the direction used at construction time. 
 In this way, the user will have a higher control on the projection direction to be enforced to ensure good mesh quality.
@@ -101,17 +103,17 @@ In this way, the user will have a higher control on the projection direction to
 <img src="http://www.dealii.org/images/steps/developer/step-54.DirectionalProjection.png" alt="" width="500">
 
 
-Of course the latter approach results effective only when the orientation of the surface is rather uniform, so that a single projection
+Of course the latter approach is effective only when the orientation of the surface is rather uniform, so that a single projection
 direction can be identified. In cases in which the surface direction is approaching the projection direction, it is even possible that the
-directional projection is not found. To overcome these problems, the NormalToMeshProjectionBoundary class implements a third
-projection algorithm. The NormalToMeshProjectionBoundary is built assigning a TopoDS_Shape (containing at least one face) to the contructor,
-and works exactly like a DirectionalProjection. But, as the name of the class suggests, NormalToMeshProjectionBoundary tries to come up
+directional projection is not found. To overcome these problems, the OpenCASCADE::NormalToMeshProjectionBoundary class implements a third
+projection algorithm. The OpenCASCADE::NormalToMeshProjectionBoundary class is built assigning a <code>TopoDS_Shape</code> (containing at least one face) to the contructor,
+and works exactly like a OpenCASCADE::DirectionalProjection. But, as the name of the class suggests, OpenCASCADE::NormalToMeshProjectionBoundary tries to come up
 with a suitable estimate of the direction normal to the mesh elements to be refined, and uses it for the projection of the new nodes
 onto the CAD surface. If we consider a mesh edge in a 2D space, the direction of its axis is a direction along which to split it in order to
 give rise to two new cells of the same length. We here extended this concept in 3D, and project all new nodes in a direction that approximates
 the cell normal.
 
-In the next figure, which is inpired to the geometry considered in this tutorial, we make an attempt to compare the behavior of the
+In the next figure, which is inpired by the geometry considered in this tutorial, we make an attempt to compare the behavior of the
 three projectors considered. As can be seen on the left, given the original cell (in blue), the new point found with the normal projection is 
 in a position which does not allow for the generation of evenly spaced new elements (in red). The situation will get worse in further refinement steps.
 Since the geometry we considered is somehow perpendicular to the horizontal direction, the directional projection (central image) defined
@@ -119,7 +121,7 @@ with horizontal direction as the projection direction, does a rather good job in
 at the bottom of the picture, we can expect problems in those regions when further refinement steps are carried out. Finally,
 the picture on the right shows that a node located on the cell axis will result in two new cells having the same length. Of course the situation
 in 3D gets a little more complicated than that described in this simple 2D case. Nevertheless, the results of this test confirm that the normal to the
-mesh direction is the best approach among the three tested, when arbitrarily shaped surfaces are considered. 
+mesh direction is the best approach among the three tested, when arbitrarily shaped surfaces are considered, and unless you have a geometry for which a more specific approach is known to be appropriate
 
 
 <img src="http://www.dealii.org/images/steps/developer/step-54.ProjectionComparisons.png" alt="" width="700">

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.