mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
Update documentation
This commit is contained in:
parent
ca1d1004c3
commit
ccac421ca7
BIN
doc/salome/gui/SMESH/images/2d_from_3d_dlg.png
Normal file
BIN
doc/salome/gui/SMESH/images/2d_from_3d_dlg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
BIN
doc/salome/gui/SMESH/images/2d_from_3d_ico.png
Normal file
BIN
doc/salome/gui/SMESH/images/2d_from_3d_ico.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 406 B |
@ -3,6 +3,9 @@
|
||||
\page double_nodes_page Duplicate Nodes
|
||||
|
||||
\n This operation allows to duplicate nodes of your mesh.
|
||||
Duplication consists in replacement of an existing mesh element by another one.
|
||||
Lower level elements of the duplicated ones are cloned
|
||||
automatically.
|
||||
|
||||
<em>To duplicate nodes:</em>
|
||||
<ol>
|
||||
@ -34,13 +37,13 @@ In this mode the dialog looks like:
|
||||
\image html duplicate01.png
|
||||
|
||||
Parameters to be defined in this mode:
|
||||
<ol>
|
||||
<ul>
|
||||
<li><b>Group of nodes to duplicate</b> (<em>mandatory</em>): these nodes will be duplicated.</li>
|
||||
<li><b>Group of elements to replace nodes with new ones</b> (<em>optional</em>): the duplicated nodes
|
||||
will be associated with these elements.</li>
|
||||
<li><b>Construct group with newly created nodes</b> option (<em>checked by default</em>):
|
||||
if checked - the group with just created nodes will be built.</li>
|
||||
</ol>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
\anchor mode_with_elem_anchor
|
||||
@ -51,15 +54,15 @@ In this mode the dialog looks like:
|
||||
\image html duplicate02.png
|
||||
|
||||
Parameters to be defined in this mode:
|
||||
<ol>
|
||||
<ul>
|
||||
<li><b>Group of elements to duplicate</b> (<em>mandatory</em>): these elements will be duplicated.</li>
|
||||
<li><b>Group of nodes at not to duplicate</b> (<em>optional</em>): group of nodes at crack bottom
|
||||
which will not be duplicated.</li>
|
||||
<li><b>Group of elements to replace nodes with new ones</b> (<em>mandatory</em>): the duplicated nodes
|
||||
will be associated with these elements.</li>
|
||||
<li><b>Construct group with newly created elements</b> option (<em>checked by default</em>):
|
||||
if checked - the group with just created elements will be builded.</li>
|
||||
</ol>
|
||||
if checked - the group with just created elements will be built.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<br><b>See Also</b> a sample TUI Script of a \ref tui_duplicate_nodes "Duplicate nodes" operation.
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
\page make_2dmesh_from_3d_page Generate boundary elements
|
||||
|
||||
\n This functionality allows to generate mesh elements on borders of
|
||||
elements of higher dimension.
|
||||
|
||||
\n This functionality allows to generate mesh elements on the borders of
|
||||
elements of a higher dimension.
|
||||
|
||||
<em>To generate border elements:</em>
|
||||
<ol>
|
||||
<li>From the Modification menu choose "Create boundary elements"
|
||||
item, or choose from the popup menu.
|
||||
item, or click "Create boundary elements" button in the toolbar
|
||||
|
||||
\image html 2d_from_3d_ico.png "Create boundary elements icon"
|
||||
|
||||
\image html 2d_from_3d_menu.png
|
||||
The following dialog box will appear:
|
||||
\image html 2d_from_3d_dlg.png
|
||||
\image html 2d_from_3d_dlg.png "Create boundary elements dialog box".
|
||||
</li>
|
||||
<li>Check in the dialog box one of three radio buttons corresponding to
|
||||
the type of operation you would like to perform.</li>
|
||||
@ -28,32 +28,30 @@ of three types.
|
||||
<li><b>1D from 2D</b> creates mesh edges on free edges of mesh faces</li>
|
||||
<li><b>1D from 3D</b> creates mesh edges on all borders of free facets of volume elements</li>
|
||||
</ul>
|
||||
Here <em>free facet</em> means a facet shared by only one volume, <em>free edge</em>
|
||||
Here a <em>free facet</em> means a facet shared by only one volume, a <em>free edge</em>
|
||||
means an edge shared by only one mesh face.
|
||||
|
||||
In this dialog:
|
||||
<ul>
|
||||
<li>specify <b>Mesh, submesh or group</b> to analyze the boundary.</li>
|
||||
<li>specify <b>Target</b> mesh where boundary elements will
|
||||
<li>specify the <b>Mesh, submesh or group</b>, the boundary which of
|
||||
will be analyzed.</li>
|
||||
<li>specify the <b>Target</b> mesh, where the boundary elements will
|
||||
be created.
|
||||
<ul>
|
||||
<li><b>This mesh</b> adds elements in the selected mesh or the mesh
|
||||
the selected submesh or group belongs to.</li>
|
||||
<li><b>New mesh</b> add elements to a new mesh. The new mesh appears
|
||||
in the Object Browser with the name specified in the adjacent box
|
||||
that you can change. </li>
|
||||
<li><b>New mesh</b> adds elements to a new mesh. The new mesh appears
|
||||
in the Object Browser with the name that you can change in the adjacent box. </li>
|
||||
</ul></li>
|
||||
<li>activate <b>Copy source mesh</b> checkbox to copy 2D or 3D
|
||||
elements (depending on operation type) belonging to the object
|
||||
specified in <b>Mesh, submesh or group</b> field to the new
|
||||
mesh.</li>
|
||||
elements (depending on the operation type), which belong to the analyzed
|
||||
<b>Mesh, submesh or group</b> field, to the new mesh.</li>
|
||||
<li>deactivate <b>Copy missing elements only</b> checkbox to copy
|
||||
boundary elements already present in the mesh being checked to the
|
||||
boundary elements already present in the analyzed mesh to the
|
||||
new mesh.</li>
|
||||
<li>activate <b>Create group</b> checkbox to create a group where
|
||||
missing boundary elements are added to. The new group appears
|
||||
in the Object Browser with the name specified in the adjacent box
|
||||
that you can change. </li>
|
||||
<li>activate <b>Create group</b> checkbox to create a group to which the
|
||||
missing boundary elements are added. The new group appears
|
||||
in the Object Browser with the name that you can change in the adjacent box. </li>
|
||||
</ul>
|
||||
<br><b>See Also</b> a sample TUI Script of a \ref tui_make_2dmesh_from_3d "Create boundary elements" operation.
|
||||
|
||||
|
@ -99,92 +99,118 @@ From the \b Modification menu choose the <b>Pattern Mapping</b> item or click
|
||||
|
||||
The following dialog box will appear:
|
||||
|
||||
\n <b>2D pattern</b>
|
||||
\n For a <b>2D pattern</b>
|
||||
|
||||
\image html patternmapping1.png
|
||||
|
||||
In this dialog you should specify:
|
||||
|
||||
<ul>
|
||||
<li> A face with the number of vertices equal to the number of
|
||||
<li> \b Pattern, which can be loaded from .smp pattern file previously
|
||||
created manually or generated automatically from an existing mesh or submesh.</li>
|
||||
<li> \b Face with the number of vertices equal to the number of
|
||||
key-points in the pattern; the number of key-points on internal
|
||||
boundaries of the pattern must also be equal to the number of vertices
|
||||
on internal boundaries of the face;</li>
|
||||
<li> A vertex to which the first key-point should be mapped;</li>
|
||||
<li> If the order of key-points is reversed or not. (The order of vertices of
|
||||
a face is counterclockwise looking from the outside).</li>
|
||||
<li> \b Vertex to which the first key-point should be mapped;</li>
|
||||
Alternatively, it is possible to select <b>Refine selected mesh elements</b>
|
||||
checkbox and apply the pattern to
|
||||
<li> <b>Mesh Face</b> instead of a geometric Face</li>
|
||||
<li> and select \b Node instead of vertex.</li>
|
||||
|
||||
Additionally it is possible to:
|
||||
<li> <b>Reverse the order of key-points</b> By default, the vertices of
|
||||
a face are ordered counterclockwise.<li>
|
||||
<li> Enable to <b> Create polygons near boundary</b> </li>
|
||||
<li> and <b>Create polyhedrons near boundary</b><li>
|
||||
</ul>
|
||||
|
||||
\n <b>3D pattern</b>
|
||||
\n For a <b>3D pattern</b>
|
||||
|
||||
\image html patternmapping2.png
|
||||
|
||||
In this dialog you should specify:
|
||||
<ul>
|
||||
<li> \b Pattern, which can be loaded from .smp pattern file previously
|
||||
created manually or generated automatically from an existing mesh or submesh.</li>
|
||||
<li> A 3D block (Solid) object;</li>
|
||||
<li> Two vertices that specify the order of nodes in the resulting mesh.</li>
|
||||
Alternatively, it is possible to select <b>Refine selected mesh elements</b>
|
||||
checkbox and apply the pattern to
|
||||
<li> One or several <b>Mesh volumes</b> instead of a geometric 3D
|
||||
object</li>
|
||||
<li> and select two /b Nodes instead of vertices.</li>
|
||||
Additionally it is possible to:
|
||||
<li> Enable to <b> Create polygons near boundary</b> </li>
|
||||
<li> and <b>Create polyhedrons near boundary</b><li>
|
||||
</ul>
|
||||
|
||||
Then you either load a .smp pattern file previously created manually
|
||||
by clicking on the <em>"Load pattern"</em> button, or click on the \b
|
||||
New button for automatic generation of the pattern.
|
||||
\n Automatic Generation
|
||||
|
||||
For automatic generation you should specify a geometrical face (for a
|
||||
2D pattern) or a solid (for a 3D pattern) with a mesh built on it. Mesh nodes lying on
|
||||
face vertices become key-points of the pattern. Additionally, for a 2D
|
||||
pattern you may choose the way of getting nodes coordinates by
|
||||
<b>projecting nodes on the face</b> instead of using
|
||||
"positions on face" generated by mesher (if there is any). Faces
|
||||
having a seam edge can't be used for automatic pattern creation.
|
||||
To generate a pattern automatically from an existing mesh or submesh,
|
||||
click \b New button.
|
||||
|
||||
When creating a pattern from an existing mesh, there are two possible
|
||||
cases:
|
||||
|
||||
- A sub-mesh on face/solid is selected. A pattern is created from the 2d/3d
|
||||
elements bound to a face/solid by mesher. For 2D pattern, node coordinates are either
|
||||
"positions on face" computed by mesher, or coordinates got by node
|
||||
projection on a geometrical surface, according to the user choice. For
|
||||
3D pattern, nodes coordinates correspond to the nodes computed by mesher.
|
||||
- A mesh where the main shape is a face/solid, is selected. A pattern is
|
||||
created from all the 2d/3d elements in a mesh. In addition, for 2D
|
||||
pattern, if all mesh elements are build by mesher, the user can select
|
||||
the way of getting nodes coordinates, else all nodes are projected on
|
||||
a face surface.
|
||||
|
||||
\image html a-patterntype.png
|
||||
|
||||
<center><b> 2D Pattern Creation dialog box</b></center>
|
||||
The following dialog box will appear:
|
||||
|
||||
\image html a-patterntype1.png
|
||||
|
||||
<center><b> 3D Pattern Creation dialog box</b></center>
|
||||
In this dialog you should specify:
|
||||
|
||||
<ul>
|
||||
<li> <b>Mesh or Submesh</b>, which is a meshed geometrical face (for a
|
||||
2D pattern) or a meshed solid (for a 3D pattern). Mesh nodes lying on
|
||||
the face vertices become key-points of the pattern. </li>
|
||||
<li> A custom <b>Pattern Name </b> </li>
|
||||
<li>Additionally, for a 2D pattern you may choose to
|
||||
<b>Project nodes on the face</b> to get node coordinates instead of using
|
||||
"positions on face" generated by the mesher (if there is any). The faces
|
||||
having a seam edge cannot be used for automatic pattern creation.</li>
|
||||
</ul>
|
||||
|
||||
When a pattern is created from an existing mesh, two cases are possible:
|
||||
|
||||
- A sub-mesh on a face/solid is selected. The pattern is created from the 2d/3d
|
||||
elements bound to the face/solid by the mesher. For a 2D pattern, the node coordinates are either
|
||||
"positions on face" computed by the mesher, or coordinates got by node
|
||||
projection on a geometrical surface, according to the user choice. For
|
||||
a 3D pattern, the node coordinates correspond to the nodes computed by
|
||||
the mesher.
|
||||
- A mesh, where the main shape is a face/solid, is selected. The pattern is
|
||||
created from all 2d/3d elements in a mesh. In addition, if all mesh
|
||||
elements of a 2D pattern are built by the mesher, the user can select
|
||||
how to get node coordinates, otherwise all nodes are projected on
|
||||
a face surface.
|
||||
|
||||
|
||||
<br><h2>Mapping algorithm</h2>
|
||||
|
||||
The mapping algorithm for 2D case is as follows:
|
||||
The mapping algorithm for a 2D case is as follows:
|
||||
|
||||
- Key-points are set in the order that they are encountered when
|
||||
walking along a pattern boundary so that elements are on the left. The
|
||||
first key-point is preserved.
|
||||
- Find geometrical vertices corresponding to key-points by vertices
|
||||
order in a face boundary; here, "Reverse order of key-points" flag is
|
||||
taken into account. \image html image95.gif
|
||||
- Boundary nodes of a pattern are mapped onto edges of a face: a
|
||||
node located between certain key-points on a pattern boundary is
|
||||
mapped on a geometrical edge limited by corresponding geometrical
|
||||
vertices. Node position on an edge reflects its distance from two
|
||||
key-points. \image html image96.gif
|
||||
- Coordinates of a non-boundary node in a parametric space of a face
|
||||
are defined as following. In a parametric space of a pattern, a node
|
||||
lays at the intersection of two iso-lines, each of which intersects a
|
||||
pattern boundary at least at two points. Knowing mapped positions of
|
||||
boundary nodes, we find where isoline-boundary intersection points are
|
||||
mapped to, and hence we can find mapped isolines direction and then,
|
||||
two node positions on two mapped isolines. The eventual mapped
|
||||
position of a node is found as an average of positions on mapped
|
||||
isolines. \image html image97.gif
|
||||
- The key-points are set counterclockwise in the order corresponding
|
||||
to their location on the pattern boundary. The first key-point is preserved.
|
||||
- The geometrical vertices corresponding to the key-points are found
|
||||
on face boundary. Here, "Reverse order of key-points" flag is set.
|
||||
\image html image95.gif
|
||||
- The boundary nodes of the pattern are mapped onto the edges of the face: a
|
||||
node located between two key-points on the pattern boundary is
|
||||
mapped on the geometrical edge limited by the corresponding geometrical
|
||||
vertices. The node position on the edge depends on its distance from the
|
||||
key-points.
|
||||
\image html image96.gif
|
||||
- The cordinates of a non-boundary node in the parametric space of the face
|
||||
are defined in the following way. In the parametric space of the
|
||||
pattern, the node lies at the intersection of two iso-lines. Both
|
||||
of them intersect the pattern boundary at two
|
||||
points at least. If the mapped positions of boundary nodes are known, it is
|
||||
possible to find, where the points at the intersection of isolines
|
||||
and boundaries are mapped. Then it is possible to find
|
||||
the direction of mapped isolinesection and, filally, the poitions of
|
||||
two nodes on two mapped isolines. The eventual mapped
|
||||
position of the node is found as an average of the positions on mapped
|
||||
isolines.
|
||||
\image html image97.gif
|
||||
|
||||
For 3D case the algorithm is similar.
|
||||
The 3D algorithm is similar.
|
||||
|
||||
<b>See Also</b> a sample TUI Script of a
|
||||
\ref tui_pattern_mapping "Pattern Mapping" operation.
|
||||
|
@ -426,15 +426,15 @@ if salome.sg.hasDesktop():
|
||||
<h3>Create boundary elements</h3>
|
||||
|
||||
\code
|
||||
# The goal of this feature is to enable the following use cases:
|
||||
# 1) The mesh MESH1 with 3D cells does not have or have only a part of its skin (2D cells):
|
||||
# 1.1) Add the 2D skin (missing 2D cells) to MESH1 (what it's done now by the algorithm).
|
||||
# 1.2) Create new 3D Mesh MESH2 that consists of MESH1 and added 2D skin cells.
|
||||
# 1.3) Create new 2D Mesh MESH3 that consists of only the 2D skin cells.
|
||||
# The objective of these samples is to illustrate the following use cases:
|
||||
# 1) The mesh MESH1 with 3D cells has no or only a part of its skin (2D cells):
|
||||
# 1.1) Add the 2D skin (missing 2D cells) to MESH1 (what is done now by the algorithm).
|
||||
# 1.2) Create a new 3D Mesh MESH2 that consists of MESH1 and added 2D skin cells.
|
||||
# 1.3) Create a new 2D Mesh MESH3 that consists only of 2D skin cells.
|
||||
# 2) The mesh MESH1 with 3D cells has all its skin (2D cells):
|
||||
# Create new 2D Mesh MESH3 that consists of only the 2D skin cells.
|
||||
# Create a new 2D Mesh MESH3 that consists only of 2D skin cells.
|
||||
#
|
||||
# In all cases an option to create a group containing these 2D skin cells should be available.
|
||||
# In all cases an option to create a group containing these 2D skin cells is available.
|
||||
|
||||
from smesh import *
|
||||
|
||||
@ -451,7 +451,7 @@ init_nb_faces = MESH1.NbFaces()
|
||||
init_nb_volumes = MESH1.NbVolumes()
|
||||
|
||||
# =========================================================================================
|
||||
# 1) The mesh MESH1 with 3D cells does not have or have only a part of its skin (2D cells)
|
||||
# 1) The mesh MESH1 with 3D cells has no or only a part of its skin (2D cells)
|
||||
# =========================================================================================
|
||||
# remove some faces
|
||||
all_faces = MESH1.GetElementsByType(SMESH.FACE)
|
||||
@ -479,7 +479,7 @@ for v in volumes:
|
||||
assert(init_nb_faces == MESH1.NbFaces())
|
||||
assert(init_nb_edges == MESH1.NbEdges())
|
||||
|
||||
# 1.1.3) to group of elements
|
||||
# 1.1.3) to a group of elements
|
||||
volGroup1 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup1")
|
||||
volGroup1.Add( volumes[: init_nb_volumes/2])
|
||||
volGroup2 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup2")
|
||||
@ -490,8 +490,8 @@ MESH1.MakeBoundaryMesh(volGroup2)
|
||||
assert(init_nb_faces == MESH1.NbFaces())
|
||||
assert(init_nb_edges == MESH1.NbEdges())
|
||||
|
||||
# 1.1.4) to submesh.
|
||||
# The submesh has no volumes, so check if it pass w/o a crash and does not create
|
||||
# 1.1.4) to a submesh.
|
||||
# The submesh has no volumes, so it is required to check if it passes without crash and does not create
|
||||
# missing faces
|
||||
faceSubmesh = MESH1.GetSubMesh( boxFace, "boxFace" )
|
||||
MESH1.RemoveElements(rm_faces)
|
||||
@ -507,7 +507,7 @@ assert(group.GetName() == groupName)
|
||||
assert(group.Size() == len(rm_faces))
|
||||
|
||||
|
||||
# 1.2) Create new 3D Mesh MESH2 that consists of MESH1 and added 2D skin cells.
|
||||
# 1.2) Create a new 3D Mesh MESH2 that consists of MESH1 and added 2D skin cells.
|
||||
# ------------------------------------------------------------------------------
|
||||
MESH1.RemoveElements(rm_faces)
|
||||
meshName = "MESH2"
|
||||
@ -526,7 +526,7 @@ assert(group.GetName() == groupName)
|
||||
assert(group.Size() == len(rm_faces))
|
||||
assert(group.GetMesh()._is_equivalent(MESH2.GetMesh()))
|
||||
|
||||
# 1.3) Create new 2D Mesh MESH3 that consists of only the 2D skin cells.
|
||||
# 1.3) Create a new 2D Mesh MESH3 that consists only of 2D skin cells.
|
||||
# -----------------------------------------------------------------------
|
||||
MESH1.RemoveElements(rm_faces)
|
||||
meshName = "MESH3"
|
||||
@ -549,7 +549,7 @@ assert(MESH3.NbFaces() == init_nb_faces)
|
||||
|
||||
# ==================================================================
|
||||
# 2) The mesh MESH1 with 3D cells has all its skin (2D cells)
|
||||
# Create new 2D Mesh MESH3 that consists of only the 2D skin cells.
|
||||
# Create a new 2D Mesh MESH3 that consists only of 2D skin cells.
|
||||
# ==================================================================
|
||||
MESH1.MakeBoundaryMesh(MESH1)
|
||||
MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyExistingBondary=True)
|
||||
|
Loading…
Reference in New Issue
Block a user