Update documentation

This commit is contained in:
vsr 2010-10-22 08:42:28 +00:00
parent ca1d1004c3
commit ccac421ca7
6 changed files with 122 additions and 95 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

View File

@ -3,6 +3,9 @@
\page double_nodes_page Duplicate Nodes \page double_nodes_page Duplicate Nodes
\n This operation allows to duplicate nodes of your mesh. \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> <em>To duplicate nodes:</em>
<ol> <ol>
@ -34,13 +37,13 @@ In this mode the dialog looks like:
\image html duplicate01.png \image html duplicate01.png
Parameters to be defined in this mode: 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 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 <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> will be associated with these elements.</li>
<li><b>Construct group with newly created nodes</b> option (<em>checked by default</em>): <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> if checked - the group with just created nodes will be built.</li>
</ol> </ul>
<br> <br>
\anchor mode_with_elem_anchor \anchor mode_with_elem_anchor
@ -51,15 +54,15 @@ In this mode the dialog looks like:
\image html duplicate02.png \image html duplicate02.png
Parameters to be defined in this mode: 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 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 <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> which will not be duplicated.</li>
<li><b>Group of elements to replace nodes with new ones</b> (<em>mandatory</em>): the duplicated nodes <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> will be associated with these elements.</li>
<li><b>Construct group with newly created elements</b> option (<em>checked by default</em>): <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> if checked - the group with just created elements will be built.</li>
</ol> </ul>
<br><b>See Also</b> a sample TUI Script of a \ref tui_duplicate_nodes "Duplicate nodes" operation. <br><b>See Also</b> a sample TUI Script of a \ref tui_duplicate_nodes "Duplicate nodes" operation.

View File

@ -2,18 +2,18 @@
\page make_2dmesh_from_3d_page Generate boundary elements \page make_2dmesh_from_3d_page Generate boundary elements
\n This functionality allows to generate mesh elements on borders of \n This functionality allows to generate mesh elements on the borders of
elements of higher dimension. elements of a higher dimension.
<em>To generate border elements:</em> <em>To generate border elements:</em>
<ol> <ol>
<li>From the Modification menu choose "Create boundary elements" <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: 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>
<li>Check in the dialog box one of three radio buttons corresponding to <li>Check in the dialog box one of three radio buttons corresponding to
the type of operation you would like to perform.</li> 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 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> <li><b>1D from 3D</b> creates mesh edges on all borders of free facets of volume elements</li>
</ul> </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. means an edge shared by only one mesh face.
In this dialog: In this dialog:
<ul> <ul>
<li>specify <b>Mesh, submesh or group</b> to analyze the boundary.</li> <li>specify the <b>Mesh, submesh or group</b>, the boundary which of
<li>specify <b>Target</b> mesh where boundary elements will will be analyzed.</li>
<li>specify the <b>Target</b> mesh, where the boundary elements will
be created. be created.
<ul> <ul>
<li><b>This mesh</b> adds elements in the selected mesh or the mesh <li><b>This mesh</b> adds elements in the selected mesh or the mesh
the selected submesh or group belongs to.</li> the selected submesh or group belongs to.</li>
<li><b>New mesh</b> add elements to a new mesh. The new mesh appears <li><b>New mesh</b> adds elements to a new mesh. The new mesh appears
in the Object Browser with the name specified in the adjacent box in the Object Browser with the name that you can change in the adjacent box. </li>
that you can change. </li>
</ul></li> </ul></li>
<li>activate <b>Copy source mesh</b> checkbox to copy 2D or 3D <li>activate <b>Copy source mesh</b> checkbox to copy 2D or 3D
elements (depending on operation type) belonging to the object elements (depending on the operation type), which belong to the analyzed
specified in <b>Mesh, submesh or group</b> field to the new <b>Mesh, submesh or group</b> field, to the new mesh.</li>
mesh.</li>
<li>deactivate <b>Copy missing elements only</b> checkbox to copy <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> new mesh.</li>
<li>activate <b>Create group</b> checkbox to create a group where <li>activate <b>Create group</b> checkbox to create a group to which the
missing boundary elements are added to. The new group appears missing boundary elements are added. The new group appears
in the Object Browser with the name specified in the adjacent box in the Object Browser with the name that you can change in the adjacent box. </li>
that you can change. </li>
</ul> </ul>
<br><b>See Also</b> a sample TUI Script of a \ref tui_make_2dmesh_from_3d "Create boundary elements" operation. <br><b>See Also</b> a sample TUI Script of a \ref tui_make_2dmesh_from_3d "Create boundary elements" operation.

View File

@ -99,92 +99,118 @@ From the \b Modification menu choose the <b>Pattern Mapping</b> item or click
The following dialog box will appear: The following dialog box will appear:
\n <b>2D pattern</b> \n For a <b>2D pattern</b>
\image html patternmapping1.png \image html patternmapping1.png
In this dialog you should specify: In this dialog you should specify:
<ul> <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 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 boundaries of the pattern must also be equal to the number of vertices
on internal boundaries of the face;</li> on internal boundaries of the face;</li>
<li> A vertex to which the first key-point should be mapped;</li> <li> \b 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 Alternatively, it is possible to select <b>Refine selected mesh elements</b>
a face is counterclockwise looking from the outside).</li> 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> </ul>
\n <b>3D pattern</b> \n For a <b>3D pattern</b>
\image html patternmapping2.png \image html patternmapping2.png
In this dialog you should specify: In this dialog you should specify:
<ul> <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> A 3D block (Solid) object;</li>
<li> Two vertices that specify the order of nodes in the resulting mesh.</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> </ul>
Then you either load a .smp pattern file previously created manually \n Automatic Generation
by clicking on the <em>"Load pattern"</em> button, or click on the \b
New button for automatic generation of the pattern.
For automatic generation you should specify a geometrical face (for a To generate a pattern automatically from an existing mesh or submesh,
2D pattern) or a solid (for a 3D pattern) with a mesh built on it. Mesh nodes lying on click \b New button.
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.
When creating a pattern from an existing mesh, there are two possible The following dialog box will appear:
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>
\image html a-patterntype1.png \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> <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 - The key-points are set counterclockwise in the order corresponding
walking along a pattern boundary so that elements are on the left. The to their location on the pattern boundary. The first key-point is preserved.
first key-point is preserved. - The geometrical vertices corresponding to the key-points are found
- Find geometrical vertices corresponding to key-points by vertices on face boundary. Here, "Reverse order of key-points" flag is set.
order in a face boundary; here, "Reverse order of key-points" flag is \image html image95.gif
taken into account. \image html image95.gif - The boundary nodes of the pattern are mapped onto the edges of the face: a
- Boundary nodes of a pattern are mapped onto edges of a face: a node located between two key-points on the pattern boundary is
node located between certain key-points on a pattern boundary is mapped on the geometrical edge limited by the corresponding geometrical
mapped on a geometrical edge limited by corresponding geometrical vertices. The node position on the edge depends on its distance from the
vertices. Node position on an edge reflects its distance from two key-points.
key-points. \image html image96.gif \image html image96.gif
- Coordinates of a non-boundary node in a parametric space of a face - The cordinates of a non-boundary node in the parametric space of the face
are defined as following. In a parametric space of a pattern, a node are defined in the following way. In the parametric space of the
lays at the intersection of two iso-lines, each of which intersects a pattern, the node lies at the intersection of two iso-lines. Both
pattern boundary at least at two points. Knowing mapped positions of of them intersect the pattern boundary at two
boundary nodes, we find where isoline-boundary intersection points are points at least. If the mapped positions of boundary nodes are known, it is
mapped to, and hence we can find mapped isolines direction and then, possible to find, where the points at the intersection of isolines
two node positions on two mapped isolines. The eventual mapped and boundaries are mapped. Then it is possible to find
position of a node is found as an average of positions on mapped the direction of mapped isolinesection and, filally, the poitions of
isolines. \image html image97.gif 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 <b>See Also</b> a sample TUI Script of a
\ref tui_pattern_mapping "Pattern Mapping" operation. \ref tui_pattern_mapping "Pattern Mapping" operation.

View File

@ -426,15 +426,15 @@ if salome.sg.hasDesktop():
<h3>Create boundary elements</h3> <h3>Create boundary elements</h3>
\code \code
# The goal of this feature is to enable the following use cases: # The objective of these samples is to illustrate 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) 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 it's done now by the algorithm). # 1.1) Add the 2D skin (missing 2D cells) to MESH1 (what is done now by the algorithm).
# 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.
# 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.
# 2) The mesh MESH1 with 3D cells has all its skin (2D 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 * from smesh import *
@ -451,7 +451,7 @@ init_nb_faces = MESH1.NbFaces()
init_nb_volumes = MESH1.NbVolumes() 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 # remove some faces
all_faces = MESH1.GetElementsByType(SMESH.FACE) all_faces = MESH1.GetElementsByType(SMESH.FACE)
@ -479,7 +479,7 @@ for v in volumes:
assert(init_nb_faces == MESH1.NbFaces()) assert(init_nb_faces == MESH1.NbFaces())
assert(init_nb_edges == MESH1.NbEdges()) 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 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup1")
volGroup1.Add( volumes[: init_nb_volumes/2]) volGroup1.Add( volumes[: init_nb_volumes/2])
volGroup2 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup2") volGroup2 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup2")
@ -490,8 +490,8 @@ MESH1.MakeBoundaryMesh(volGroup2)
assert(init_nb_faces == MESH1.NbFaces()) assert(init_nb_faces == MESH1.NbFaces())
assert(init_nb_edges == MESH1.NbEdges()) assert(init_nb_edges == MESH1.NbEdges())
# 1.1.4) to submesh. # 1.1.4) to a submesh.
# The submesh has no volumes, so check if it pass w/o a crash and does not create # The submesh has no volumes, so it is required to check if it passes without crash and does not create
# missing faces # missing faces
faceSubmesh = MESH1.GetSubMesh( boxFace, "boxFace" ) faceSubmesh = MESH1.GetSubMesh( boxFace, "boxFace" )
MESH1.RemoveElements(rm_faces) MESH1.RemoveElements(rm_faces)
@ -507,7 +507,7 @@ assert(group.GetName() == groupName)
assert(group.Size() == len(rm_faces)) 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) MESH1.RemoveElements(rm_faces)
meshName = "MESH2" meshName = "MESH2"
@ -526,7 +526,7 @@ assert(group.GetName() == groupName)
assert(group.Size() == len(rm_faces)) assert(group.Size() == len(rm_faces))
assert(group.GetMesh()._is_equivalent(MESH2.GetMesh())) 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) MESH1.RemoveElements(rm_faces)
meshName = "MESH3" 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) # 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) MESH1.MakeBoundaryMesh(MESH1)
MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyExistingBondary=True) MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyExistingBondary=True)