mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-12 00:29:17 +05:00
8301b1e71a
(fix StdMeshers_CompositeHexa_3D.cxx, StdMeshers_Hexa_3D.cxx) + Doc update + Optimize dump of NumberOfSegments
368 lines
15 KiB
Plaintext
368 lines
15 KiB
Plaintext
/*!
|
|
|
|
\page a1d_meshing_hypo_page 1D Meshing Hypotheses
|
|
|
|
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>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>
|
|
|
|
<b>Arithmetic 1D</b> hypothesis allows to split edges into segments with a
|
|
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 "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 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 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 "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>Local Length hypothesis</h2>
|
|
|
|
<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 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 "Local Length hypothesis - all 1D mesh segments are equal"
|
|
|
|
<b>See Also</b> a sample TUI Script of a
|
|
\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 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.
|
|
|
|
\ref reversed_edges_helper_anchor "Helper" group assists you in
|
|
defining <b>Reversed Edges</b> parameter.
|
|
|
|
You can set the type of node distribution for this hypothesis in the
|
|
<b>Hypothesis Construction</b> dialog bog :
|
|
|
|
\image html a-nbsegments1.png
|
|
|
|
<br><b>Equidistant Distribution</b> - all segments will have the same
|
|
length, you define only the <b>Number of Segments</b>.
|
|
|
|
<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>.
|
|
|
|
|
|
\image html a-nbsegments2.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
|
|
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 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 "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"
|
|
hypothesis operation.
|
|
|
|
<br>
|
|
\anchor automatic_length_anchor
|
|
<h2>Automatic Length</h2>
|
|
|
|
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
|
|
|
|
Compare one and the same object (sphere) meshed with
|
|
minimum and maximum value of this parameter.
|
|
|
|
\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 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.
|
|
|
|
*/
|