]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Document direction flags better.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Dec 2010 01:40:25 +0000 (01:40 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 9 Dec 2010 01:40:25 +0000 (01:40 +0000)
git-svn-id: https://svn.dealii.org/trunk@22946 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/doxygen/headers/glossary.h
deal.II/doc/doxygen/images/direction_flag.fig [new file with mode: 0644]
deal.II/doc/doxygen/images/direction_flag.png [new file with mode: 0644]
deal.II/doc/doxygen/images/direction_flag_normals.fig [new file with mode: 0644]
deal.II/doc/doxygen/images/direction_flag_normals.png [new file with mode: 0644]
deal.II/doc/doxygen/tutorial/steps.cmapx
deal.II/doc/doxygen/tutorial/steps.png
deal.II/include/deal.II/grid/tria_accessor.h

index 962881fce733da6e7db33f5b2d72d558c7818ee8..209bf1f2f41e387a08757e14dc85940012a49577 100644 (file)
  * </dd>
  *
  *
+ * <dt class="glossary">@anchor GlossDirectionFlag <b>Direction flags</b></dt>
+ *
+ * <dd>The <i>direction flag</i> is used in triangulations embedded in a
+ * higher dimensional space to denote the orientation of cells and make the
+ * manifold oriented. It is accessed using CellAccessor::direction_flag()
+ * and set by the Triangulation class upon creation of a triangulation.
+ *
+ * The flag is necessary to make cases like this work: assume we have a
+ * one-dimensional mesh embedded in a two-dimensional space,
+ *
+ *   @image html direction_flag.png "One dimensional mesh in two dimensions"
+ *
+ * In one dimensional meshes in one dimensional space, we can always make sure
+ * that the location of the left vertex of a cell has a smaller value than the
+ * location of the right vertex. However, if we embed a mesh in a higher
+ * dimensional space, we can no longer do this. For example, the cells in the
+ * mesh above may be described by the following vertex sets: <code>(0,1),
+ * (1,2), (3,2), (4,3), (4,5)</code>. (As a side remark, note that here we
+ * have vertices -- e.g. vertex 2 -- that are the right end points of more
+ * than one cell.) If we define the normal to each cell as that unit vector
+ * that is right perpendicular to the vector that connects the first to the
+ * second vertex of the line, then we would end up with the following picture:
+ *
+ *   @image html direction_flag_normals.png "Normal vectors"
+ *
+ * In other words, this one-dimensional manifold is not oriented. We could in
+ * principle revert the order of vertices when creating such a mesh (though
+ * there are good reasons not to do so, for example because this mesh may have
+ * resulted from extracting the surface mesh of a two dimensional mesh, and we
+ * want to preserve the order of vertices of each line segment because they
+ * currently match the order of vertices of the faces of the 2d cells). An
+ * alternative strategy, chosen in deal.II, is to simply associate with each
+ * cell whether the normal should be the left or right normal to the
+ * cell. (The default is right normals.) In the example above, the flags for
+ * the five cells would be <code>true, true, false, false,
+ * true</code>. Multiplying the right normal with plus or minus one, depending
+ * on the value of the flag on each cell, yields a set of normal vectors that
+ * orient the manifold.
+ *
+ * Similar issues happen with two-dimensional meshes in three space
+ * dimensions. We note that it would not be possible to find consistent
+ * direction flags if the two-dimensional manifold is not orientable; such
+ * manifolds are not currently supported by deal.II, however, and there would
+ * appear to be little cause for anyone to solve partial differential equations
+ * on such manifolds in the first place. 
+ * </dd>
+ *
+ *
  * <dt class="glossary">@anchor GlossDistorted <b>Distorted cells</b></dt>
  *
  * <dd>A <i>distorted cell</i> is a cell for which the mapping from
diff --git a/deal.II/doc/doxygen/images/direction_flag.fig b/deal.II/doc/doxygen/images/direction_flag.fig
new file mode 100644 (file)
index 0000000..ee0f36a
--- /dev/null
@@ -0,0 +1,16 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+2 3 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 6
+        1665 3375 2520 4545 4050 4005 4590 2520 2610 2025 1665 3375
+4 0 0 50 -1 19 20 0.0000 4 225 180 2475 4860 0\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 4185 4185 1\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 4680 2520 2\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 2520 1845 3\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 1395 3375 4\001
diff --git a/deal.II/doc/doxygen/images/direction_flag.png b/deal.II/doc/doxygen/images/direction_flag.png
new file mode 100644 (file)
index 0000000..42e6852
Binary files /dev/null and b/deal.II/doc/doxygen/images/direction_flag.png differ
diff --git a/deal.II/doc/doxygen/images/direction_flag_normals.fig b/deal.II/doc/doxygen/images/direction_flag_normals.fig
new file mode 100644 (file)
index 0000000..7b433bc
--- /dev/null
@@ -0,0 +1,31 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+2 3 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 6
+        1665 3375 2520 4545 4050 4005 4590 2520 2610 2025 1665 3375
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       3 1 2.00 60.00 120.00
+        3330 4275 3600 5040
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       3 1 2.00 60.00 120.00
+        4320 3240 5040 3465
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       3 1 2.00 60.00 120.00
+        3510 2250 3330 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       3 1 2.00 60.00 120.00
+        2160 2700 2745 3105
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       3 1 2.00 60.00 120.00
+        2070 3915 1530 4365
+4 0 0 50 -1 19 20 0.0000 4 225 180 2475 4860 0\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 4185 4185 1\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 4680 2520 2\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 2520 1845 3\001
+4 0 0 50 -1 19 20 0.0000 4 225 180 1395 3375 4\001
diff --git a/deal.II/doc/doxygen/images/direction_flag_normals.png b/deal.II/doc/doxygen/images/direction_flag_normals.png
new file mode 100644 (file)
index 0000000..7fc6a2e
Binary files /dev/null and b/deal.II/doc/doxygen/images/direction_flag_normals.png differ
index 56f83e58d01542d16e1a41b1b5eac1e697e5168b..c8e88019f8769a2de614b3c7c64c24fe4cb00814 100644 (file)
@@ -1,40 +1,39 @@
 <map id="StepsMap" name="StepsMap">
-<area shape="poly" id="node1" href="../deal.II/step_1.html" title="Creating a grid. Refining it. Writing it to a file" alt="" coords="655,60 655,28 632,5 600,5 577,28 577,60 600,83 632,83"/>
-<area shape="poly" id="node2" href="../deal.II/step_2.html" title="Assigning degrees of freedom to a grid." alt="" coords="655,185 655,153 632,131 600,131 577,153 577,185 600,208 632,208"/>
-<area shape="poly" id="node3" href="../deal.II/step_3.html" title="Solving Poisson&#39;s equation." alt="" coords="655,311 655,279 632,256 600,256 577,279 577,311 600,333 632,333"/>
-<area shape="poly" id="node4" href="../deal.II/step_4.html" title="Dimension independent programming. Boundary conditions." alt="" coords="655,436 655,404 632,381 600,381 577,404 577,436 600,459 632,459"/>
-<area shape="poly" id="node5" href="../deal.II/step_5.html" title="Reading a grid from disk. Computations on successively refined grids." alt="" coords="441,561 441,529 419,507 387,507 364,529 364,561 387,584 419,584"/>
-<area shape="rect" id="node10" href="../deal.II/step_10.html" title="Higher order mappings." alt="" coords="540,529,575,562"/>
-<area shape="rect" id="node15" href="../deal.II/step_15.html" title="1d problems. A nonlinear problem." alt="" coords="599,529,633,562"/>
-<area shape="rect" id="node20" href="../deal.II/step_20.html" title="Mixed finite elements for the mixed Laplacian. Block solvers." alt="" coords="256,531,291,559"/>
-<area shape="rect" id="node23" href="../deal.II/step_23.html" title="Time dependent problems. The wave equation." alt="" coords="657,531,692,559"/>
-<area shape="rect" id="node28" href="../deal.II/step_29.html" title="A complex&#45;valued Helmholtz equation. Sparse direct solvers." alt="" coords="716,529,751,562"/>
-<area shape="rect" id="node33" href="../deal.II/step_34.html" title="Boundary element methods for potential flow." alt="" coords="775,531,809,559"/>
-<area shape="rect" id="node35" href="../deal.II/step_36.html" title="Finding eigenvalues of the Schr&ouml;dinger equation." alt="" coords="833,529,868,562"/>
-<area shape="rect" id="node38" href="../deal.II/step_45.html" title="Periodic boundary conditions" alt="" coords="623,758,657,791"/>
-<area shape="poly" id="node6" href="../deal.II/step_6.html" title="Adaptive local refinement. Higher order elements" alt="" coords="419,687 419,655 396,632 364,632 341,655 341,687 364,709 396,709"/>
-<area shape="rect" id="node7" href="../deal.II/step_7.html" title="Helmholtz equation. Computing errors. Boundary integrals." alt="" coords="516,758,548,791"/>
-<area shape="rect" id="node8" href="../deal.II/step_8.html" title="Systems of PDE. Elasticity." alt="" coords="169,758,201,791"/>
-<area shape="rect" id="node9" href="../deal.II/step_9.html" title="Advection equation. Multithreading. Refinement criteria." alt="" coords="225,758,257,791"/>
-<area shape="rect" id="node13" href="../deal.II/step_13.html" title="Modularity. Software design." alt="" coords="457,758,492,791"/>
-<area shape="rect" id="node16" href="../deal.II/step_16.html" title="Multigrid on adaptive meshes." alt="" coords="281,758,316,791"/>
-<area shape="rect" id="node22" href="../deal.II/step_22.html" title="The Stokes equation on adaptive meshes." alt="" coords="60,761,95,789"/>
-<area shape="rect" id="node26" href="../deal.II/step_27.html" title="hp&#45;adaptive finite element methods." alt="" coords="340,758,375,791"/>
-<area shape="rect" id="node27" href="../deal.II/step_28.html" title="Handling multiple meshes at the same time. Neutron transport." alt="" coords="399,758,433,791"/>
-<area shape="rect" id="node36" href="../deal.II/step_39.html" title="Interior Penalty for the Laplace equation. Adaptive refinement. Multigrid." alt="" coords="568,923,603,957"/>
-<area shape="rect" id="node37" href="../deal.II/step_40.html" title="Solving the Laplace equation on adaptive meshes on thousands of processors." alt="" coords="116,923,151,957"/>
-<area shape="rect" id="node12" href="../deal.II/step_12.html" title="Discontinuous Galerkin for linear advection." alt="" coords="513,841,548,874"/>
-<area shape="rect" id="node17" href="../deal.II/step_17.html" title="Parallel computing using MPI. Using PETSc." alt="" coords="169,843,204,871"/>
-<area shape="rect" id="node11" href="../deal.II/step_11.html" title="Higher order mappings. Dealing with constraints." alt="" coords="540,654,575,687"/>
-<area shape="rect" id="node29" href="../deal.II/step_30.html" title="Anisotropic refinement for DG methods." alt="" coords="451,923,485,957"/>
-<area shape="rect" id="node32" href="../deal.II/step_33.html" title="Hyperbolic conservation laws: the Euler equations of gas dynamics." alt="" coords="509,926,544,954"/>
-<area shape="rect" id="node14" href="../deal.II/step_14.html" title="Duality based error estimates. Adaptivity." alt="" coords="455,841,489,874"/>
-<area shape="rect" id="node18" href="../deal.II/step_18.html" title="Quasistatic elasticity. More parallel computing." alt="" coords="227,926,261,954"/>
-<area shape="rect" id="node31" href="../deal.II/step_32.html" title="A parallel Boussinesq flow for thermal convection." alt="" coords="116,1006,151,1034"/>
-<area shape="rect" id="node19" href="../deal.II/step_19.html" title="Handling input parameter files. Converting output formats." alt="" coords="228,841,263,874"/>
-<area shape="rect" id="node21" href="../deal.II/step_21.html" title="Two&#45;phase flow in porous media." alt="" coords="183,657,217,685"/>
-<area shape="rect" id="node30" href="../deal.II/step_31.html" title="Boussinesq flow for thermal convection." alt="" coords="57,926,92,954"/>
-<area shape="rect" id="node34" href="../deal.II/step_35.html" title="A projection solver for the Navier&#45;Stokes equations." alt="" coords="5,843,40,871"/>
-<area shape="rect" id="node24" href="../deal.II/step_24.html" title="The wave equation with absorbing boundary conditions. Extracting point values." alt="" coords="669,657,704,685"/>
-<area shape="rect" id="node25" href="../deal.II/step_25.html" title="The nonlinear sine&#45;Gordon soliton equation" alt="" coords="681,761,716,789"/>
+<area shape="poly" href="../deal.II/step_1.html" title="Creating a grid. Refining it. Writing it to a file" alt="" coords="860,60 860,28 837,5 805,5 783,28 783,60 805,83 837,83"/>
+<area shape="poly" href="../deal.II/step_2.html" title="Assigning degrees of freedom to a grid." alt="" coords="860,185 860,153 837,131 805,131 783,153 783,185 805,208 837,208"/>
+<area shape="poly" href="../deal.II/step_3.html" title="Solving Poisson&#39;s equation." alt="" coords="860,311 860,279 837,256 805,256 783,279 783,311 805,333 837,333"/>
+<area shape="poly" href="../deal.II/step_4.html" title="Dimension independent programming. Boundary conditions." alt="" coords="860,436 860,404 837,381 805,381 783,404 783,436 805,459 837,459"/>
+<area shape="poly" href="../deal.II/step_5.html" title="Reading a grid from disk. Computations on successively refined grids." alt="" coords="535,561 535,529 512,507 480,507 457,529 457,561 480,584 512,584"/>
+<area shape="rect" href="../deal.II/step_10.html" title="Higher order mappings." alt="" coords="745,529,780,561"/>
+<area shape="rect" href="../deal.II/step_15.html" title="1d problems. A nonlinear problem." alt="" coords="804,529,839,561"/>
+<area shape="rect" href="../deal.II/step_20.html" title="Mixed finite elements for the mixed Laplacian. Block solvers." alt="" coords="636,532,671,559"/>
+<area shape="rect" href="../deal.II/step_23.html" title="Time dependent problems. The wave equation." alt="" coords="863,532,897,559"/>
+<area shape="rect" href="../deal.II/step_29.html" title="A complex&#45;valued Helmholtz equation. Sparse direct solvers." alt="" coords="921,529,956,561"/>
+<area shape="rect" href="../deal.II/step_34.html" title="Boundary element methods for potential flow." alt="" coords="980,532,1015,559"/>
+<area shape="rect" href="../deal.II/step_36.html" title="Finding eigenvalues of the Schr&ouml;dinger equation." alt="" coords="1039,529,1073,561"/>
+<area shape="rect" href="../deal.II/step_45.html" title="Periodic boundary conditions" alt="" coords="695,759,729,791"/>
+<area shape="poly" href="../deal.II/step_6.html" title="Adaptive local refinement. Higher order elements" alt="" coords="487,687 487,655 464,632 432,632 409,655 409,687 432,709 464,709"/>
+<area shape="rect" href="../deal.II/step_7.html" title="Helmholtz equation. Computing errors. Boundary integrals." alt="" coords="69,759,101,791"/>
+<area shape="rect" href="../deal.II/step_8.html" title="Systems of PDE. Elasticity." alt="" coords="237,759,269,791"/>
+<area shape="rect" href="../deal.II/step_9.html" title="Advection equation. Multithreading. Refinement criteria." alt="" coords="345,759,377,791"/>
+<area shape="rect" href="../deal.II/step_13.html" title="Modularity. Software design." alt="" coords="401,759,436,791"/>
+<area shape="rect" href="../deal.II/step_16.html" title="Multigrid on adaptive meshes." alt="" coords="460,759,495,791"/>
+<area shape="rect" href="../deal.II/step_22.html" title="The Stokes equation on adaptive meshes." alt="" coords="636,761,671,788"/>
+<area shape="rect" href="../deal.II/step_27.html" title="hp&#45;adaptive finite element methods." alt="" coords="519,759,553,791"/>
+<area shape="rect" href="../deal.II/step_28.html" title="Handling multiple meshes at the same time. Neutron transport." alt="" coords="577,759,612,791"/>
+<area shape="rect" href="../deal.II/step_39.html" title="Interior Penalty for the Laplace equation. Adaptive refinement. Multigrid." alt="" coords="123,924,157,956"/>
+<area shape="rect" href="../deal.II/step_40.html" title="Solving the Laplace equation on adaptive meshes on thousands of processors." alt="" coords="277,924,312,956"/>
+<area shape="rect" href="../deal.II/step_12.html" title="Discontinuous Galerkin for linear advection." alt="" coords="68,841,103,873"/>
+<area shape="rect" href="../deal.II/step_17.html" title="Parallel computing using MPI. Using PETSc." alt="" coords="236,844,271,871"/>
+<area shape="rect" href="../deal.II/step_11.html" title="Higher order mappings. Dealing with constraints." alt="" coords="745,655,780,687"/>
+<area shape="rect" href="../deal.II/step_30.html" title="Anisotropic refinement for DG methods." alt="" coords="64,924,99,956"/>
+<area shape="rect" href="../deal.II/step_33.html" title="Hyperbolic conservation laws: the Euler equations of gas dynamics." alt="" coords="5,927,40,953"/>
+<area shape="rect" href="../deal.II/step_14.html" title="Duality based error estimates. Adaptivity." alt="" coords="401,841,436,873"/>
+<area shape="rect" href="../deal.II/step_18.html" title="Quasistatic elasticity. More parallel computing." alt="" coords="207,927,241,953"/>
+<area shape="rect" href="../deal.II/step_19.html" title="Handling input parameter files. Converting output formats." alt="" coords="177,841,212,873"/>
+<area shape="rect" href="../deal.II/step_21.html" title="Two&#45;phase flow in porous media." alt="" coords="636,657,671,684"/>
+<area shape="rect" href="../deal.II/step_31.html" title="Boussinesq flow for thermal convection." alt="" coords="607,844,641,871"/>
+<area shape="rect" href="../deal.II/step_35.html" title="A projection solver for the Navier&#45;Stokes equations." alt="" coords="665,844,700,871"/>
+<area shape="rect" href="../deal.II/step_24.html" title="The wave equation with absorbing boundary conditions. Extracting point values." alt="" coords="863,657,897,684"/>
+<area shape="rect" href="../deal.II/step_25.html" title="The nonlinear sine&#45;Gordon soliton equation" alt="" coords="863,761,897,788"/>
 </map>
index 44435ded1ad7d0e0d7414beb72d25d229abaec38..f8919d8dbf3745838a33a659a3d87e5bbc3212b5 100644 (file)
Binary files a/deal.II/doc/doxygen/tutorial/steps.png and b/deal.II/doc/doxygen/tutorial/steps.png differ
index 94dbceda5c9d2a2660d7361f253b877b59572973..9eade028cd0fe8945baa8a1cfcc6e4466a20375b 100644 (file)
@@ -2625,6 +2625,8 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                      * Return the orientation of
                                      * this cell.
                                      *
+                                     * For the meaning of this flag, see
+                                     * @ref GlossDirectionFlag .
                                      */
     bool direction_flag () const;
 
@@ -2813,6 +2815,8 @@ class CellAccessor :  public TriaAccessor<dim,dim,spacedim>
                                      * Set the orientation of this
                                      * cell.
                                      *
+                                     * For the meaning of this flag, see
+                                     * @ref GlossDirectionFlag .
                                      */
     void set_direction_flag (const bool new_direction_flag) const;
                                     /**

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.