Salome HOME
Merge branch 'V8_3_BR' into V8_4_BR
[modules/smesh.git] / doc / salome / gui / SMESH / input / prism_3d_algo.doc
1 /*!
2
3 \page prism_3d_algo_page Extrusion 3D meshing algorithm
4
5 Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes
6 defined by two opposing faces having the same number of vertices and
7 edges. These two faces should be connected by quadrangle "side" faces.
8
9 \image html prism_mesh.png "Clipping view of a mesh of a prism with non-planar base and top faces"
10
11 The prism is allowed to have sides composed of several faces. (A prism
12 side is a row of faces (or one face) connecting the corresponding edges of
13 the top and base faces). However, a prism 
14 side can be split only vertically as indicated in the
15 picture below. 
16
17 \image html prism_ok_ko.png "A suitable and an unsuitable prism"
18 In this picture, the left prism is suitable for meshing with 3D
19 extrusion algorithm: it has six sides, two of which are split
20 vertically. The right prism cannot be meshed with this
21 algorithm because one of the prism sides is split horizontally (the
22 splitting edge is highlighted).
23
24 The algorithm can propagate 2D mesh not only between horizontal
25 (i.e. base and top) faces of one prism but also between faces of prisms
26 organized in a stack and between stacks sharing prism sides.
27
28 \image html prism_stack.png "Prism stacks"
29 This picture shows four neighboring prism stacks, each comprising two prisms.
30 The shown sub-mesh is used by the algorithm to mesh
31 all eight prisms in the stacks.
32
33 To use <em>Extrusion 3D</em> algorithm you need to assign algorithms
34 and hypotheses of lower dimensions as follows.
35 (A sample picture below shows algorithms and hypotheses used to
36 mesh a cylinder with prismatic volumes).
37
38 \image html prism_needs_hyps.png 
39
40 The \b Global algorithms and hypotheses to be chosen at 
41 \ref create_mesh_anchor "Creation of a mesh object" are:
42 <ul>
43 <li> 1D algorithm and hypothesis that will be applied for meshing
44   (logically) vertical edges of the prism (which connect the top and the
45   base faces of the prism). In the sample picture above these are
46   "Regular_1D" algorithm and "Number of Segments" hypothesis named "Vertical
47   Nb. Segments".</li>
48 </ul>
49
50 The \b Local algorithms and hypotheses to be chosen at 
51 \ref constructing_submeshes_page "Construction of sub-meshes" are:
52 <ul>
53   <li> 1D and 2D algorithms and hypotheses that will be applied for
54     meshing the top and the base prism
55     \ref submesh_shape_section "faces". These faces can be meshed
56     with any type of 2D elements: quadrangles, triangles, polygons or
57     their mix. It is enough to define a sub-mesh on either the top or
58     the base face. In the sample picture above, "NETGEN_1D2D"
59     algorithm meshes "bottom disk" face with triangles. (1D algorithm
60     is not assigned as "NETGEN_1D2D" does not require divided edges to
61     create a 2D mesh.)
62   </li>
63   <li> Optionally you can define a 1D sub-mesh on some vertical
64     \ref submesh_shape_section "edges" of stacked prisms, which will
65     override the global 1D hypothesis mentioned above. In the <b>Prism
66     stacks</b> picture, the vertical division is not equidistant on
67     the whole length because a "Number Of Segments" hypothesis with
68     Scale Factor=3 is assigned to the highlighted edge.
69 </li></ul>
70
71 If <em>Extrusion 3D</em> algorithm is assigned to a sub-mesh in a mesh
72 with multiple sub-meshes, the described above approach may not work as
73 expected. For example the bottom face may be meshed by other algorithm
74 before <em>Extrusion 3D</em> have a chance to project a mesh from the
75 base face. This thing can happen with vertical edges as well. All
76 these can lead to either a meshing failure or to an incorrect meshing.
77
78 In such a case, it's necessary to explicitly define algorithms
79 that <em>Extrusion 3D</em> implicitly applies in a simple case:
80 - assign \ref projection_1D2D algorithm to the top face and
81 - assign a 1D algorithm to a group of all vertical edges.
82
83 \image html image157.gif "Prism with Extrusion 3D meshing. Vertical division is different on neighbor edges because several local 1D hypotheses are assigned."
84
85 \sa a sample TUI Script of
86 \ref tui_prism_3d_algo "Use Extrusion 3D meshing algorithm".
87
88 */