Salome HOME
23189: EDF 11603 - Dyssymetry in meshing
[modules/smesh.git] / doc / salome / gui / SMESH / input / 1d_meshing_hypo.doc
index 716ddd90d56c5c81849fa6192afe2fef6f6d83d0..0995673b393d94a7a7b94b08a1b279c9457b160c 100644 (file)
@@ -2,16 +2,62 @@
 
 \page a1d_meshing_hypo_page 1D Meshing Hypotheses
 
-<br>
+Basic 1D hypothesis specifies:
+<ul>
+<li>how \ref a1d_algos_anchor "Wire Discretization" should divide the edge;</li>
+<li>how \ref a1d_algos_anchor "Composite Side Discretization" should divide the group of C1-continuous edges.</li>
+</ul>
+
+1D hypotheses can be categorized by type of nodes distribution as follows:
 <ul>
-<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
-<li>\ref average_length_anchor "Average Length"</li>
-<li>\ref deflection_1d_anchor "Deflection 1D"</li>
-<li>\ref number_of_segments_anchor "Number of segments"</li>
-<li>\ref start_and_end_length_anchor "Start and end length"</li>
-<li>\ref automatic_length_anchor "Automatic Length"</li>
+<li>Uniform distribution:
+  <ul>
+    <li>\ref average_length_anchor "Local Length"</li>
+    <li>\ref max_length_anchor "Max Size"</li>
+    <li>\ref number_of_segments_anchor "Number of segments" with Equidistant distribution</li>
+    <li>\ref automatic_length_anchor "Automatic Length"</li>
+</ul></li>
+<li>Constantly increasing or decreasing length of segments:
+  <ul>
+    <li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+    <li>\ref geometric_1d_anchor "Geometric Progression"</li>
+    <li>\ref start_and_end_length_anchor "Start and end length"</li>
+    <li>\ref number_of_segments_anchor "Number of segments" with Scale distribution</li>
+</ul></li>
+<li>Distribution depending on curvature:
+  <ul>
+    <li>\ref adaptive_1d_anchor "Adaptive"</li>
+    <li>\ref deflection_1d_anchor "Deflection 1D"</li>
+</ul></li>
+<li>Arbitrary distribution:
+  <ul>
+    <li>\ref fixed_points_1d_anchor "Fixed points 1D"</li>
+    <li>\ref number_of_segments_anchor "Number of segments" with
+    \ref analyticdensity_anchor "Analytic Density Distribution" or Table Density Distribution</li>
+</ul></li>
 </ul>
 
+<br>
+\anchor adaptive_1d_anchor
+<h2>Adaptive hypothesis</h2>
+
+<b>Adaptive</b> hypothesis allows to split edges into segments with a
+length that depends on the curvature of edges and faces and is limited by <b>Min. Size</b>
+and <b>Max Size</b>. The length of a segment also depends on the lengths
+of adjacent segments (that can't differ more than twice) and on the 
+distance to close geometrical entities (edges and faces) to avoid
+creation of narrow 2D elements.
+
+\image html adaptive1d.png
+
+- <b>Min size</b> parameter limits the minimal segment size. 
+- <b>Max size</b> parameter defines the length of segments on straight edges. 
+- \b Deflection parameter gives maximal distance of a segment from a curved edge.
+
+\image html adaptive1d_sample_mesh.png "Adaptive hypothesis and Netgen 2D algorithm - the size of mesh segments reflects the size of geometrical features"
+
+<b>See Also</b> a \ref tui_1d_adaptive "sample TUI Script" that uses Adaptive hypothesis.
+
 <br>
 \anchor arithmetic_1d_anchor
 <h2>Arithmetic 1D hypothesis</h2>
 length that changes in arithmetic progression (Lk = Lk-1 + d)
 beginning from a given starting length and up to a given end length.
 
+The splitting direction is defined by the orientation of the
+underlying geometrical edge.
+<b>Reverse Edges</b> list box allows specifying the edges, for which
+the splitting should be made in the direction opposite to their
+orientation. This list box is usable only if a geometry object is
+selected for meshing. In this case it is possible to select edges to
+be reversed either directly picking them in the 3D viewer or by
+selecting the edges or groups of edges in the Object Browser. Use \b
+Add button to add the selected edges to the list.
+
+\ref reversed_edges_helper_anchor "Helper" group assists you in
+defining <b>Reversed Edges</b> parameter.
+
+
 \image html a-arithmetic1d.png
 
-\image html b-ithmetic1d.png
+\image html b-ithmetic1d.png "Arithmetic 1D hypothesis - the size of mesh elements gradually increases"
+
+<b>See Also</b> a sample TUI Script of a 
+\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.  
+
+<br>
+\anchor geometric_1d_anchor
+<h2>Geometric Progression hypothesis</h2>
+
+<b>Geometric Progression</b> hypothesis allows splitting edges into
+segments with a length that changes in geometric progression (Lk =
+Lk-1 * d) starting from a given <b>Start Length</b> and with a given
+<b>Common Ratio</b>.
+
+The splitting direction is defined by the orientation of the
+underlying geometrical edge.
+<b>Reverse Edges</b> list box allows specifying the edges, for which
+the splitting should be made in the direction opposite to their
+orientation. This list box is usable only if a geometry object is
+selected for meshing. In this case it is possible to select edges to
+be reversed either directly picking them in the 3D viewer or by
+selecting the edges or groups of edges in the Object Browser. Use \b
+Add button to add the selected edges to the list.
+
+\ref reversed_edges_helper_anchor "Helper" group assists you in
+defining <b>Reversed Edges</b> parameter.
+
+\image html a-geometric1d.png
 
 <b>See Also</b> a sample TUI Script of a 
-\ref tui_1d_arithmetic "Defining Arithmetic 1D hypothesis" operation.  
+\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.  
 
 <br>
 \anchor deflection_1d_anchor
 <h2>Deflection 1D hypothesis</h2>
 
 <b>Deflection 1D</b> hypothesis can be applied for meshing curvilinear edges
-composing your geometrical object. It uses only one parameter: the
-value of deflection.  
-\n A geometrical edge is divided into equal segments. The maximum
-distance between a point on the edge within a segment and the line
-connecting the ends of the segment should not exceed the specified
-value of deflection . Then mesh nodes are constructed at end segment
-locations and 1D mesh elements are constructed on segments.
+composing your geometrical object. It defines only one parameter: the
+value of deflection (or chord error).
+
+A geometrical edge is divided into segments of length depending on
+edge curvature. The more curved the edge, the shorter the
+segment. Nodes on the edge are placed so that the maximum distance
+between the edge and a segment approximating a part of edge between
+two nodes should not exceed the value of deflection.
 
 \image html a-deflection1d.png
 
-\image html b-flection1d.png
+\image html b-flection1d.png "Deflection 1D hypothesis - useful for meshing curvilinear edges"
 
 <b>See Also</b> a sample TUI Script of a 
 \ref tui_deflection_1d "Defining Deflection 1D hypothesis" operation.
 
 <br>
 \anchor average_length_anchor
-<h2>Average Length hypothesis</h2>
+<h2>Local Length hypothesis</h2>
 
-<b>Average Length</b> hypothesis can be applied for meshing of edges
+<b>Local Length</b> hypothesis can be applied for meshing of edges
 composing your geometrical object. Definition of this hypothesis
-consists of setting the \b length of segments, which will split these
-edges, and the \b precision of rounding. The points on the edges
-generated by these segments will represent nodes of your mesh.
-Later these nodes will be used for meshing of the faces abutting to
-these edges.
-
-The \b precision parameter is used to allow rounding a number of
-segments, calculated from the edge length and average length of
-segment, to the lower integer, if this value outstands from it in
-bounds of the precision. Otherwise, the number of segments is rounded
-to the higher integer. Use value 0.5 to provide rounding to the
-nearest integer, 1.0 for the lower integer, 0.0 for the higher
-integer. Default value is 1e-07.
+consists of setting the \b length of segments, which will approximate these
+edges, and the \b precision of rounding.
+
+The \b precision parameter is used to round a <em>number of segments</em>,
+calculated by dividing the <em>edge length</em> by the specified \b length of
+segment, to the higher integer if the \a remainder exceeds the \b precision
+and to the lower integer otherwise. <br>
+Use value 0.5 to provide rounding to the nearest integer, 1.0 for the lower integer, 0.0 for the higher integer. Default value is 1e-07.
+
+For example: if <em>edge length</em> is 10.0 and the segment \b length
+is 3.0 then their division gives 10./3. = 3.33(3) and the \a remainder is 0.33(3).
+If \b precision is less than 0.33(3) then the edge is divided into 3 segments.
+If \b precision is more than 0.33(3) then the edge is divided into 4 segments.
+
 
 \image html image41.gif
 
 \image html a-averagelength.png
 
-\image html b-erage_length.png
+\image html b-erage_length.png "Local Length hypothesis - all 1D mesh segments are equal"
 
 <b>See Also</b> a sample TUI Script of a 
-\ref tui_average_length "Defining Average Length" hypothesis
+\ref tui_average_length "Defining Local Length" hypothesis
 operation.
 
+<br>\anchor max_length_anchor
+<h2>Max Size</h2>
+<b>Max Size</b> hypothesis allows splitting geometrical edges into
+segments not longer than the given length. Definition of this hypothesis
+consists of setting the maximal allowed \b length of segments.
+<b>Use preestimated length</b> check box lets you use \b length
+automatically calculated basing on size of your geometrical object,
+namely as diagonal of bounding box divided by ten. The divider can be
+changed via "Ratio Bounding Box Diagonal / Max Size"
+preference parameter.
+<b>Use preestimated length</b> check box is enabled only if the
+geometrical object has been selected before hypothesis definition.
+
+\image html a-maxsize1d.png
+
 <br>
 \anchor number_of_segments_anchor
 <h2>Number of segments hypothesis</h2>
 
-<b>Number of segments</b> hypothesis can be applied for meshing of edges
-composing your geometrical object. Definition of this hypothesis
-consists of setting the number of segments, which will split these
-edges. In other words your edges will be split into a definite number
-of segments with approximately the same length. The points on the
-edges generated by these segments will represent nodes of your
-mesh. Later these nodes will be used for meshing of the faces abutting
-to these edges.
+<b>Number of segments</b> hypothesis can be applied for approximating
+edges by a definite number of mesh segments with length depending on
+the selected type of distribution of nodes.
+
+The direction of the splitting is defined by the orientation of the
+underlying geometrical edge. <b>Reverse Edges</b> list box allows to
+specify the edges for which the splitting should be made in the
+direction opposing to their orientation. This list box is enabled only
+if the geometry object is selected for the meshing. In this case it is 
+possible to select edges to be reversed either by directly picking them
+in the 3D viewer or by selecting the edges or groups of edges in the
+Object Browser.
 
-\image html image46.gif
+\ref reversed_edges_helper_anchor "Helper" group assists you in
+defining <b>Reversed Edges</b> parameter.
 
-You can set the type of distribution for this hypothesis in the
+You can set the type of node distribution for this hypothesis in the
 <b>Hypothesis Construction</b> dialog bog :
 
 \image html a-nbsegments1.png
@@ -100,46 +209,74 @@ You can set the type of distribution for this hypothesis in the
 <br><b>Equidistant Distribution</b> - all segments will have the same
 length, you define only the <b>Number of Segments</b>.
 
-\image html b-mberofsegments.png
+<br><b>Scale Distribution</b> - length of segments gradually changes
+depending on the <b>Scale Factor</b>, which is a ratio of the first
+segment length to the last segment length.<br>
+Length of segments changes in geometric progression with the common
+ratio (A) depending on the <b>Scale Factor</b> (S) and <b>Number of
+Segments</b> (N) as follows: <code> A = S**(1/(N-1))</code>. For an
+edge of length L, length of the first segment is 
+<code>L * (1 - A)/(1 - A**N)</code>.
 
-<br><b>Scale Distribution</b> - each next segment differs from the
-previous according to the formula: <b>A</b>i+1 = <b>A</b>i * k, where \b k is a
-<b>Scale Factor</b>.
 
 \image html a-nbsegments2.png
 
-<br><b>Distribution with Table Density</b> - you input a number of
-pairs <b>t - F(t)</b>, where \b t ranges from 0 to 1,  and the module computes the
-formula, which will rule the change of length of segments and shows
-the curve in the plot. You can select the <b>Conversion mode</b> from
-\b Exponent and <b>Cut negative</b>.
-
-\image html distributionwithtabledensity.png
-
 <br><b>Distribution with Analytic Density</b> - you input the formula,
 which will rule the change of length of segments and the module shows
-the curve in the plot.
+in the plot the density function curve in red and the node
+distribution as blue crosses.
 
 \image html distributionwithanalyticdensity.png
 
+<br>
+\anchor analyticdensity_anchor
+The node distribution is computed so that to have the density function
+integral on the range between two nodes equal for all segments.
+\image html analyticdensity.png
+
+<br><b>Distribution with Table Density</b> - you input a number of
+pairs <b>t - F(t)</b>, where \b t ranges from 0 to 1, and the module computes the
+formula, which will rule the change of length of segments and shows
+in the plot the density function curve in red and the node
+distribution as blue crosses. The node distribution is computed in the
+same way as for 
+\ref analyticdensity_anchor "Distribution with Analytic Density". You
+can select the <b>Conversion mode</b> from \b Exponent and <b>Cut
+negative</b>.
+
+\image html distributionwithtabledensity.png
+
 <b>See Also</b> a sample TUI Script of a 
 \ref tui_deflection_1d "Defining Number of Segments" hypothesis
 operation.
 
+\note The plot functionality is available only if GUI module is builded with Plot 2D Viewer (set option SALOME_USE_PLOT2DVIEWER to ON when building GUI module).
+
 <br>
 \anchor start_and_end_length_anchor
 <h2>Start and End Length hypothesis</h2>
 
 <b>Start and End Length</b> hypothesis allows to divide a geometrical edge
 into segments so that the first and the last segments have a specified
-length. The length of each but the first segment differs from length
-of the previous one by a constant factor. Then mesh nodes are
-constructed at segment ends location and 1D mesh elements are
-constructed on them.
+length. The length of medium segments changes with automatically chosen
+geometric progression.
+
+The direction of the splitting is defined by the orientation of the
+underlying geometrical edge. <b>Reverse Edges</b> list box allows to
+specify the edges, for which the splitting should be made in the
+direction opposing to their orientation. This list box is enabled only
+if the geometry object is selected for the meshing. In this case it is 
+possible to select edges to be reversed either by directly picking them
+in the 3D viewer or by selecting the edges or groups of edges in the
+Object Browser.
+
+\ref reversed_edges_helper_anchor "Helper" group assists you in
+defining <b>Reversed Edges</b> parameter.
+
 
 \image html a-startendlength.png
 
-\image html b-art_end_length.png
+\image html b-art_end_length.png "The lengths of the first and the last segment are strictly defined"
 
 <b>See Also</b> a sample TUI Script of a 
 \ref tui_start_and_end_length "Defining Start and End Length"
@@ -149,19 +286,82 @@ hypothesis operation.
 \anchor automatic_length_anchor
 <h2>Automatic Length</h2>
 
-This hypothesis is automatically applied when you select <b>Assign a
-set of hypotheses</b> option in Create Mesh menu.
+The dialog box prompts you to define the quality of the future mesh by
+only one parameter, which is \b Fineness, ranging from 0 (coarse mesh,
+low number of segments) to 1 (extremely fine mesh, great number of
+segments). 
 
 \image html automaticlength.png
 
-The dialog box prompts you to define the quality of the future mesh by
-only one parameter, which is \b Fineness, ranging from 0 (coarse mesh,
-low number of elements) to 1 (extremely fine mesh, great number of
-elements). Compare one and the same object (sphere) meshed with
+Compare one and the same object (sphere) meshed with
 minimum and maximum value of this parameter.
 
-\image html image147.gif
+\image html image147.gif "Example of a rough mesh at Automatic Length Fineness of 0."
+
+\image html image148.gif "Example of a fine mesh at Automatic Length Fineness of 1."
+
+<br>
+\anchor fixed_points_1d_anchor
+<h2>Fixed points 1D hypothesis</h2>
+
+<b>Fixed points 1D</b> hypothesis allows splitting edges through a
+set of points parametrized on the edge (from 1 to 0) and a number of
+segments for each interval limited by the points.
 
-\image html image148.gif
+\image html hypo_fixedpnt_dlg.png
+
+It is possible to check in <b>Same Nb. Segments for all intervals</b> 
+option and to define one value for all intervals.
+
+The splitting direction is defined by the orientation of the
+underlying geometrical edge. <b>Reverse Edges</b> list box allows to
+specify the edges for which the splitting should be made in the
+direction opposite to their orientation. This list box is enabled only
+if the geometrical object is selected for meshing. In this case it is
+possible to select the edges to be reversed either directly picking them in
+the 3D viewer or selecting the edges or groups of edges in the
+Object Browser.
+
+\ref reversed_edges_helper_anchor "Helper" group assists in
+defining <b>Reversed Edges</b> parameter.
+
+
+\image html mesh_fixedpnt.png "Example of a sub-mesh on the edge built using Fixed points 1D hypothesis"
+
+<b>See Also</b> a sample TUI Script of a 
+\ref tui_fixed_points "Defining Fixed Points" hypothesis operation.
+
+\anchor reversed_edges_helper_anchor
+<h2>Reversed Edges Helper</h2>
+
+\image html rev_edges_helper_dlg.png
+
+\b Helper group assists in defining <b>Reversed Edges</b>
+parameter of the hypotheses depending on edge direction.
+
+<b>Show whole geometry</b> check-box allows seeing the whole
+geometrical model in the 3D Viewer, which can help to understand the
+location of a set of edges within the model.
+
+<b>Propagation chains</b> group allows defining <b>Reversed Edges</b>
+for splitting opposite edges of quadrilateral faces in a logically
+uniform direction. When this group is activated, the list is filled
+with propagation chains found within the shape on which a hypothesis
+is assigned. When a chain is selected in the list its edges are shown
+in the Viewer with arrows, which enables choosing a common direction
+for all chain edges. \b Reverse button inverts the common direction of
+chain edges. \b Add button is active if some edges of a chain have a
+different direction, so you can click \b Add button to add them
+to <b>Reversed Edges</b> list.
+
+\image html propagation_chain.png "The whole geometry and a propagation chain"
+
+\note Alternatively, uniform direction of edges of one propagation
+chain can be achieved by 
+\ref constructing_submeshes_page "definition of a sub-mesh" on one
+edge of the chain and assigning a 
+\ref propagation_anchor "Propagation" additional hypothesis.
+Orientation of this edge (and hence of all the rest edges of the chain) can be
+controlled by using <b>Reversed Edges</b> field.
 
 */