2008-03-07 12:47:05 +05:00
|
|
|
/*!
|
|
|
|
|
|
|
|
\page constructing_meshes_page Constructing meshes
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\n Construction of a mesh on some geometry consists of:
|
2008-03-07 12:47:05 +05:00
|
|
|
<ul>
|
2012-08-09 16:03:55 +06:00
|
|
|
<li> \ref create_mesh_anchor "Creating of a mesh object"</li>
|
|
|
|
<li> \ref evaluate_anchor "Evaluating mesh size"</li>
|
|
|
|
<li> \ref preview_anchor "Previewing the mesh"</li>
|
|
|
|
<li> \ref submesh_order_anchor "Changing submesh priority"</li>
|
|
|
|
<li> \ref compute_anchor "Computing the mesh"</li>
|
2008-03-07 12:47:05 +05:00
|
|
|
</ul>
|
2012-08-09 16:03:55 +06:00
|
|
|
Mesh can be \ref use_existing_anchor "computed using your own meshing algorithms"
|
|
|
|
written in Python.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
|
|
|
|
\anchor create_mesh_anchor
|
|
|
|
<h2>Creation of a mesh object</h2>
|
2008-03-07 12:47:05 +05:00
|
|
|
<em>To construct a mesh:</em>
|
|
|
|
<ol>
|
2012-08-09 16:03:55 +06:00
|
|
|
<li>Select a geometrical object for meshing.</li>
|
|
|
|
<li>In the \b Mesh menu select <b>Create Mesh</b> or click <em>"Create
|
|
|
|
Mesh"</em> button in the toolbar.
|
|
|
|
|
|
|
|
\image html image32.png
|
|
|
|
<em>"Create Mesh" button</em>
|
|
|
|
|
|
|
|
The following dialog box will appear:
|
|
|
|
|
|
|
|
\image html createmesh-inv.png
|
|
|
|
<br>
|
|
|
|
</li>
|
|
|
|
<li>Apply \subpage basic_meshing_algos_page "meshing algorithms" and
|
|
|
|
\subpage about_hypo_page "hypotheses" which will be used at computation of
|
|
|
|
this mesh.
|
|
|
|
|
2012-10-08 17:56:59 +06:00
|
|
|
"Create mesh" dialog box contains several tab pages titled \b 3D,
|
|
|
|
\b 2D, \b 1D and \b 0D. The title of each page reflects the
|
|
|
|
dimension of the CAD model (geometry) the algorithms listed on
|
2012-12-13 17:41:29 +06:00
|
|
|
this page affect. For example, \b 3D page lists the algorithms
|
2012-10-08 17:56:59 +06:00
|
|
|
that affect 3D geometrical objects (solids).
|
|
|
|
|
|
|
|
\note
|
2012-12-13 17:41:29 +06:00
|
|
|
- Some page(s) can be disabled if the source geometrical
|
2012-10-08 17:56:59 +06:00
|
|
|
object does not include shapes (sub-shapes) of the corresponding
|
2012-12-13 17:41:29 +06:00
|
|
|
dimension(s). For example, if the input object is a geometrical face,
|
2012-10-08 17:56:59 +06:00
|
|
|
\b 3D page is disabled.
|
2012-12-13 17:41:29 +06:00
|
|
|
- Some algorithms affect the geometry of several dimensions,
|
|
|
|
i.e. "1D-2D" or "1D-2D-3D". If such an algorithm is selected by the
|
|
|
|
user, the dialog box pages related to the corresponding lower level
|
2012-10-08 17:56:59 +06:00
|
|
|
dimensions are disabled.
|
|
|
|
- \b 0D page does not refer to the 0D elements, but to 0D
|
|
|
|
geometry (vertices). Mesh module does not provide algorithms that
|
|
|
|
produce 0D elements. Currently \b 0D page provides only one
|
2012-12-13 17:41:29 +06:00
|
|
|
algorithm "Segments around vertex" that allows specyfying the required
|
|
|
|
size of mesh edges about the selected vertex (or vertices).
|
2012-10-08 17:56:59 +06:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
For example, you need to mesh a 3D object.
|
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
First, type the name of your mesh in the \b Name box, by default,
|
2012-08-09 16:03:55 +06:00
|
|
|
it is "Mesh_1". Then select the geometrical object you wish to
|
|
|
|
mesh in the Object Browser and click "Select" button near \b Geometry
|
2012-12-13 17:41:29 +06:00
|
|
|
field (if the name of the object has not yet appeared in \b Geometry field).
|
2012-08-09 16:03:55 +06:00
|
|
|
|
|
|
|
\image html image120.png
|
|
|
|
<em>"Select" button</em>
|
|
|
|
|
|
|
|
Now you can define 3D Algorithm and 3D Hypotheses, which will be
|
2012-12-13 17:41:29 +06:00
|
|
|
applied to the solids of your geometrical object. Click the <em>"Add
|
2012-08-09 16:03:55 +06:00
|
|
|
Hypothesis"</em> button to add a hypothesis.
|
|
|
|
|
|
|
|
\image html image121.png
|
|
|
|
<em>"Add Hypothesis" button</em>
|
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
Click the <em>"Edit Hypothesis"</em> button to change the values for the
|
2012-08-09 16:03:55 +06:00
|
|
|
current hypothesis.
|
|
|
|
|
|
|
|
\image html image122.png
|
|
|
|
<em>"Edit Hypothesis" button</em>
|
|
|
|
|
|
|
|
Most standard 2D and 3D algorithms can work without hypotheses
|
|
|
|
using some default parameters. The use of additional hypotheses
|
|
|
|
is optional (i.e. you may leave "None" in this box).
|
|
|
|
|
|
|
|
Proceed in the same way with 2D and 1D Algorithms and Hypotheses that
|
|
|
|
will be used to mesh faces and edges of your geometry. (Note
|
|
|
|
that any object has edges, even if their existence is not
|
|
|
|
apparent, for example, a sphere has 4 edges). Note that the
|
2012-12-13 17:41:29 +06:00
|
|
|
choice of hypotheses and lower dimension algorithms depends on
|
|
|
|
the higher dimension algorithm.
|
2012-08-09 16:03:55 +06:00
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
Some algorithms generate mesh of several dimensions, while others
|
|
|
|
produce mesh of only one dimension. In the latter case there must be one Algorithm and zero or several
|
2012-08-09 16:03:55 +06:00
|
|
|
Hypotheses for each dimension of your object, otherwise you will
|
|
|
|
not get any mesh at all. Of course, if you wish to mesh a face,
|
2012-12-13 17:41:29 +06:00
|
|
|
which is a 2D object, you do not need to define a 3D Algorithm and
|
2012-08-09 16:03:55 +06:00
|
|
|
Hypotheses.
|
|
|
|
|
|
|
|
In the <b>Object Browser</b> the structure of the new mesh will be
|
|
|
|
displayed as follows:
|
|
|
|
|
|
|
|
\image html image88.jpg
|
|
|
|
|
|
|
|
It contains:
|
|
|
|
<ul>
|
|
|
|
<li>a reference to the geometrical object on the basis of
|
|
|
|
which the mesh has been constructed;</li>
|
|
|
|
<li><b>Applied hypotheses</b> folder containing the references
|
|
|
|
to the hypotheses applied at the construction of the mesh;</li>
|
|
|
|
<li><b>Applied algorithms</b> folder containing the references
|
|
|
|
to the algorithms applied at the construction of the mesh.</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
There is an alternative way to assign Algorithms and Hypotheses by
|
|
|
|
clicking <b>Assign a set of hypotheses</b> button and selecting among
|
|
|
|
pre-defined sets of hypotheses. In addition to the standard
|
|
|
|
sets of hypotheses, it is possible to create custom sets by editing
|
|
|
|
CustomMeshers.xml file located in the home directory. CustomMeshers.xml
|
|
|
|
file must describe sets of hypotheses in the
|
|
|
|
same way as ${SMESH_ROOT_DIR}/share/salome/resources/smesh/StdMeshers.xml
|
|
|
|
file does (sets of hypotheses are enclosed between <hypotheses-set-group>
|
|
|
|
tags).
|
|
|
|
|
|
|
|
\image html hypo_sets.png
|
2012-12-13 17:41:29 +06:00
|
|
|
List of sets of hypotheses. Tag <em>[custom]</em> is
|
2012-08-09 16:03:55 +06:00
|
|
|
automatically added to the sets defined by the user
|
|
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
Consider trying a sample script for construction of a mesh from our
|
|
|
|
\ref tui_creating_meshes_page "TUI Scripts" section.
|
|
|
|
|
|
|
|
\anchor evaluate_anchor
|
|
|
|
<h2>Evaluating mesh size</h2>
|
|
|
|
|
|
|
|
After the mesh object is created and all hypotheses are assigned and
|
|
|
|
before \ref compute_anchor "Compute" operation, it is possible to
|
|
|
|
calculate the eventual mesh size. For this, select the mesh in
|
|
|
|
the <b>Object Browser</b> and from the \b Mesh menu select \b
|
|
|
|
Evaluate. The result of evaluation will be displayed in the following
|
|
|
|
information box:
|
|
|
|
|
|
|
|
\image html mesh_evaluation_succeed.png
|
|
|
|
|
|
|
|
\anchor preview_anchor
|
|
|
|
<h2>Previewing the mesh</h2>
|
|
|
|
|
|
|
|
Before \ref compute_anchor "the mesh computation", it is also possible
|
|
|
|
to see the mesh preview.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
For this, select the mesh in the Object Browser. From the \b Mesh menu
|
|
|
|
select \b Preview or click "Preview" button in the toolbar or activate
|
|
|
|
"Preview" item from the pop-up menu.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\image html mesh_precompute.png
|
|
|
|
<em>"Preview" button</em>
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
Select <b>1D mesh</b> or <b>2D mesh</b> preview mode in the Preview dialog.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\image html preview_mesh_1D.png "1D mesh preview shows nodes computed on geometry edges"
|
|
|
|
<br>
|
|
|
|
\image html preview_mesh_2D.png "2D mesh preview shows edge mesh elements, computed on geometry faces"
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
<b>Compute</b> button computes the whole mesh.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
When the Preview dialog is closed, the question about the storage of temporarily
|
2012-12-13 17:41:29 +06:00
|
|
|
created mesh elements appears:
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\image html preview_tmp_data.png
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
These elements can be kept in the mesh.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\anchor submesh_order_anchor
|
|
|
|
<h2>Changing submesh priority</h2>
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
If the mesh contains concurrent \ref constructing_submeshes_page "submeshes",
|
|
|
|
it is possible to change the priority of their computation, i.e. to
|
|
|
|
change the priority of applying algorithms to the shared sub-shapes of
|
|
|
|
the Mesh shape.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
<em>To change submesh priority:</em>
|
|
|
|
|
|
|
|
Choose "Change submesh priority" from the Mesh menu or a pop-up
|
|
|
|
menu. The opened dialog shows a list of submeshes in the order of
|
|
|
|
their priority.
|
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
There is an example of submesh order modifications taking a Mesh created on a Box
|
2012-08-09 16:03:55 +06:00
|
|
|
shape. The main Mesh object:
|
|
|
|
<ul>
|
|
|
|
<li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=20</li>
|
|
|
|
<li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis<b>Max Element Area</b>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
The first submesh object <b>Submesh_1</b> created on <b>Face_1</b> is:
|
|
|
|
<ul>
|
|
|
|
<li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=4</li>
|
2012-12-13 17:41:29 +06:00
|
|
|
<li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
|
2012-08-09 16:03:55 +06:00
|
|
|
</ul>
|
|
|
|
The second submesh object <b>Submesh_2</b> created on <b>Face_2</b> is:
|
|
|
|
<ul>
|
|
|
|
<li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=8</li>
|
2012-12-13 17:41:29 +06:00
|
|
|
<li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
|
2012-08-09 16:03:55 +06:00
|
|
|
</ul>
|
|
|
|
|
|
|
|
And the last submesh object <b>Submesh_3</b> created on <b>Face_3</b> is:
|
2008-03-07 12:47:05 +05:00
|
|
|
<ul>
|
2012-08-09 16:03:55 +06:00
|
|
|
<li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=12</li>
|
2012-12-13 17:41:29 +06:00
|
|
|
<li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
|
2008-03-07 12:47:05 +05:00
|
|
|
</ul>
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
The sub-meshes become concurrent if they share sub-shapes that can be
|
2012-12-13 17:41:29 +06:00
|
|
|
meshed with different algorithms (or different hypotheses). In the
|
2012-08-09 16:03:55 +06:00
|
|
|
example, we have three submeshes with concurrent algorithms, because
|
|
|
|
they have different hypotheses.
|
|
|
|
|
|
|
|
The first mesh computation is made with:
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_123.png
|
|
|
|
<em>"Mesh order SubMesh_1, SubMesh_2, SubMesh_3"</em></center>
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_123_res.png
|
|
|
|
<em>"Result mesh with order SubMesh_1, SubMesh_2, SubMesh_3 "</em></center>
|
|
|
|
|
|
|
|
The next mesh computation is made with:
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_213.png
|
|
|
|
<em>"Mesh order SubMesh_2, SubMesh_1, SubMesh_3"</em></center>
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_213_res.png
|
|
|
|
<em>"Result mesh with order SubMesh_2, SubMesh_1, SubMesh_3 "</em></center>
|
|
|
|
|
|
|
|
And the last mesh computation is made with:
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_321.png
|
|
|
|
<em>"Mesh order SubMesh_3, SubMesh_2, SubMesh_1"</em></center>
|
|
|
|
<center>\image html mesh_order_321_res.png
|
|
|
|
<em>"Result mesh with order SubMesh_3, SubMesh_2, SubMesh_1 "</em></center>
|
|
|
|
|
|
|
|
As we can see, each mesh computation has a different number of result
|
|
|
|
elements and a different mesh discretisation on the shared edges (the edges
|
|
|
|
that are shared between <b>Face_1</b>, <b>Face_2</b> and <b>Face_3</b>)
|
|
|
|
|
|
|
|
Additionally, submesh priority (the order of applied algorithms) can
|
|
|
|
be modified not only in a separate dialog box, but also in
|
|
|
|
the <b>Preview</b>. This helps to preview different mesh results,
|
|
|
|
modifying the order of submeshes.
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_preview.png
|
|
|
|
<em>"Preview with submesh priority list box"</em></center>
|
|
|
|
|
|
|
|
If there are no concurrent submeshes under the Mesh object, the user
|
|
|
|
will see the following information.
|
|
|
|
<center>
|
|
|
|
\image html mesh_order_no_concurrent.png
|
|
|
|
<em>"No concurrent submeshes detected"</em></center>
|
|
|
|
|
|
|
|
|
|
|
|
\anchor compute_anchor
|
|
|
|
<h2>Computing the mesh</h2>
|
|
|
|
|
|
|
|
It is equally possible to skip \ref evaluate_anchor "the Evaluation"
|
|
|
|
and \ref preview_anchor "the Preview" and to \b Compute the mesh after
|
|
|
|
the hypotheses are assigned. For this, select your mesh in
|
|
|
|
the <b>Object Browser</b>. From the \b Mesh menu select \b Compute or
|
|
|
|
click "Compute" button of the toolbar.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2009-02-17 10:27:49 +05:00
|
|
|
\image html image28.png
|
2012-08-09 16:03:55 +06:00
|
|
|
<em>"Compute" button</em>
|
2008-03-07 12:47:05 +05:00
|
|
|
|
|
|
|
The Mesh Computation information box appears.
|
|
|
|
|
|
|
|
\image html meshcomputationsucceed.png
|
|
|
|
|
|
|
|
If the mesh computation failed, the information about the cause of the
|
|
|
|
failure is provided.
|
|
|
|
|
|
|
|
\image html meshcomputationfail.png
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
After you select the error, <b>Show Sub-shape</b> button allows
|
|
|
|
visualizing in magenta the geometrical entity that causes it.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\image html failed_computation.png
|
|
|
|
<em>3D algorithm failed to compute mesh on a box shown using <b>Show
|
|
|
|
Sub-shape</b> button</em>
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
|
|
|
|
\note Mesh Computation Information box does not appear if you set
|
2009-02-17 10:27:49 +05:00
|
|
|
"Mesh computation/Show a computation result notification" preference
|
|
|
|
to the "Never" value. This option gives the possibility to control mesh
|
|
|
|
computation reporting. There are the following possibilities: always
|
2012-12-13 17:41:29 +06:00
|
|
|
show the information box, show only if an error occurs or never.
|
2009-02-17 10:27:49 +05:00
|
|
|
By default, the information box is always shown after mesh computation operation.
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
<b>Publish Sub-shape</b> button publishes the sub-shape, whose meshing
|
2012-12-13 17:41:29 +06:00
|
|
|
has failed, in GEOM component as a child of the mesh geometry, which
|
2009-02-17 10:27:49 +05:00
|
|
|
allows analyzing the problem geometry and creating a submesh on it in
|
2012-12-13 17:41:29 +06:00
|
|
|
order to locally tune the hypotheses.
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
If the failure is caused by an invalid input mesh and the algorithm has
|
|
|
|
found which mesh entities are bad, <b>Show bad Mesh</b>
|
|
|
|
button appears in the dialog. Clicked, it shows the bad mesh entities in
|
2012-08-09 16:03:55 +06:00
|
|
|
the Viewer in magenta. Sometimes the shown mesh entities are too small
|
2012-12-13 17:41:29 +06:00
|
|
|
or/and hidden by other mesh elements. They can be seen after
|
|
|
|
switching the mesh to Wireframe visualization mode or switching off
|
|
|
|
the visualization of faces and volumes (if any).
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-10-08 17:56:59 +06:00
|
|
|
\image html show_bad_mesh.png
|
|
|
|
<em>Too close nodes causing meshing failure are shown in magenta using <b>Show
|
|
|
|
bad Mesh</b> button</em>
|
|
|
|
<br><br>
|
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
\anchor use_existing_anchor
|
|
|
|
<h2>"Use existing edges" and "Use existing faces" algorithms</h2>
|
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
It is possible to create a 1D or a 2D mesh in a python script
|
2012-08-09 16:03:55 +06:00
|
|
|
(using <em>AddNode, AddEdge</em> and <em>AddFace</em> commands) and
|
|
|
|
then use such sub-meshes in the construction of a 2D or a 3D mesh. For
|
|
|
|
this, there exist two algorithms: <b>Use existing edges</b> and <b>Use
|
2012-12-13 17:41:29 +06:00
|
|
|
existing faces</b>.
|
|
|
|
For example, you want to use standard algorithms to generate 1D and 3D
|
2012-08-09 16:03:55 +06:00
|
|
|
meshes and to create 2D mesh by your python code. Then you
|
|
|
|
<ul>
|
2012-12-13 17:41:29 +06:00
|
|
|
<li> create a mesh object, assign a 1D algorithm,</li>
|
|
|
|
<li> invoke \b Compute command, which computes a 1D mesh,</li>
|
2012-08-09 16:03:55 +06:00
|
|
|
<li> assign <b>Use existing faces</b> and a 3D algorithm,</li>
|
|
|
|
<li> run your python code, which creates a 2D mesh,</li>
|
|
|
|
<li> invoke \b Compute command, which computes a 3D mesh.</li>
|
|
|
|
</ul>
|
|
|
|
|
2012-12-13 17:41:29 +06:00
|
|
|
Consider trying a sample script demonstrating the usage of
|
2012-08-09 16:03:55 +06:00
|
|
|
\ref tui_use_existing_faces "Use existing faces" algorithm for
|
|
|
|
construction of a 2D mesh using Python commands.
|
|
|
|
|
|
|
|
\image html use_existing_face_sample_mesh.png
|
|
|
|
<em> Mesh computed by \ref tui_use_existing_faces "the sample script"
|
|
|
|
shown in a Shrink mode.</em>
|
2008-03-07 12:47:05 +05:00
|
|
|
|
2012-08-09 16:03:55 +06:00
|
|
|
*/
|