From cf145e36af4ce4f324899571eab10748a114fb4d Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 20 Oct 2010 14:20:45 +0000 Subject: [PATCH] 0020749: EDF 1291 SMESH : Create 2D Mesh from 3D improvement update doc --- .../gui/SMESH/images/2d_from_3d_menu.png | Bin 20123 -> 24838 bytes .../gui/SMESH/input/make_2dmesh_from_3d.doc | 60 +++++-- .../gui/SMESH/input/modifying_meshes.doc | 2 +- .../SMESH/input/tui_transforming_meshes.doc | 163 ++++++++++++++++++ 4 files changed, 213 insertions(+), 12 deletions(-) diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_menu.png b/doc/salome/gui/SMESH/images/2d_from_3d_menu.png index ec5117214dacaa84c2c4ef4bfba338d141a7f344..acb7b349e3fb1c24bcbbf4fb695ed8bfebbb23fe 100644 GIT binary patch literal 24838 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 diff --git a/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.doc b/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.doc index ada914ec1..9d334340f 100644 --- a/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.doc +++ b/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.doc @@ -1,22 +1,60 @@ /*! -\page make_2dmesh_from_3d_page Create 2D mesh from 3D +\page make_2dmesh_from_3d_page Generate boundary elements -\n This functionality allows to generate 2D mesh elements as a skin -on the existing 3D mesh elements. +\n This functionality allows to generate mesh elements on borders of +elements of higher dimension. -To generate 2D mesh: + +To generate border elements:

    -
  1. From the Modification menu choose "Create 2D mesh from 3D" +
  2. From the Modification menu choose "Create boundary elements" item, or choose from the popup menu. \image html 2d_from_3d_menu.png - -The algorithm detects boundary volume faces without connections to -other volumes and creates 2D mesh elements on face nodes. If the mesh -already contains 2D elements on the detected nodes, new elements are not -created. The the resulting dialog shows mesh information statistics -about the newly created 2D mesh elements. +The following dialog box will appear: +\image html 2d_from_3d_dlg.png +
  3. +
  4. Check in the dialog box one of three radio buttons corresponding to +the type of operation you would like to perform.
  5. +
  6. Fill the other fields available in the dialog box.
  7. +
  8. Click the \b Apply or Apply and Close button to perform the operation.
+\n "Create boundary elements" dialog allows creation of boundary elements +of three types. +
    +
  • 2D from 3D creates mesh faces on free facets of volume elements
  • +
  • 1D from 2D creates mesh edges on free edges of mesh faces
  • +
  • 1D from 3D creates mesh edges on all borders of free facets of volume elements
  • +
+Here free facet means a facet shared by only one volume, free edge +means an edge shared by only one mesh face. + +In this dialog: +
    +
  • specify Mesh, submesh or group to analyze the boundary.
  • +
  • specify Target mesh where boundary elements will + be created. +
      +
    • This mesh adds elements in the selected mesh or the mesh + the selected submesh or group belongs to.
    • +
    • New mesh 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.
    • +
  • +
  • activate Copy source mesh checkbox to copy 2D or 3D + elements (depending on operation type) belonging to the object + specified in Mesh, submesh or group field to the new + mesh.
  • +
  • deactivate Copy missing elements only checkbox to copy + boundary elements already present in the mesh being checked to the + new mesh.
  • +
  • activate Create group 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.
  • +
+
See Also a sample TUI Script of a \ref tui_make_2dmesh_from_3d "Create boundary elements" operation. + */ diff --git a/doc/salome/gui/SMESH/input/modifying_meshes.doc b/doc/salome/gui/SMESH/input/modifying_meshes.doc index 0eb82ceb6..45e746da4 100644 --- a/doc/salome/gui/SMESH/input/modifying_meshes.doc +++ b/doc/salome/gui/SMESH/input/modifying_meshes.doc @@ -47,7 +47,7 @@ of the selected node or edge.
  • Apply \subpage pattern_mapping_page "pattern mapping".
  • \subpage convert_to_from_quadratic_mesh_page "Convert regular mesh to quadratic", or vice versa.
  • -
  • \subpage make_2dmesh_from_3d_page "Create 2D mesh from 3D".
  • +
  • \subpage make_2dmesh_from_3d_page "Generate boundary elements".
  • diff --git a/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc b/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc index e50fcda36..87d75b672 100644 --- a/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_transforming_meshes.doc @@ -421,4 +421,167 @@ if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(0) \endcode +
    +\anchor tui_make_2dmesh_from_3d +

    Create boundary elements

    + +\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. +# 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. +# +# In all cases an option to create a group containing these 2D skin cells should be available. + +from smesh import * + +box = geompy.MakeBoxDXDYDZ(1,1,1) +geompy.addToStudy(box,"box") +boxFace = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])[0] +geompy.addToStudyInFather(box,boxFace,"boxFace") + +MESH1 = Mesh(box,"MESH1") +MESH1.AutomaticHexahedralization() + +init_nb_edges = MESH1.NbEdges() +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) +# ========================================================================================= +# remove some faces +all_faces = MESH1.GetElementsByType(SMESH.FACE) +rm_faces = all_faces[:init_nb_faces/5] + all_faces[4*init_nb_faces/5:] +MESH1.RemoveElements(rm_faces) +assert(MESH1.NbFaces() == init_nb_faces-len(rm_faces)) + +# 1.1) Add the 2D skin (missing 2D cells) to MESH1 +# ------------------------------------------------- +# add missing faces +# 1.1.1) to the whole mesh +m,g = MESH1.MakeBoundaryMesh(MESH1) +assert(init_nb_faces == MESH1.NbFaces()) +assert(init_nb_edges == MESH1.NbEdges()) +assert(m) +assert(not g) + +# 1.1.2) to some elements +MESH1.RemoveElements(rm_faces) +MESH1.MakeBoundaryMesh([]) +assert(init_nb_faces != MESH1.NbFaces()) +volumes = MESH1.GetElementsByType(SMESH.VOLUME) +for v in volumes: + MESH1.MakeBoundaryMesh([v]) +assert(init_nb_faces == MESH1.NbFaces()) +assert(init_nb_edges == MESH1.NbEdges()) + +# 1.1.3) to group of elements +volGroup1 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup1") +volGroup1.Add( volumes[: init_nb_volumes/2]) +volGroup2 = MESH1.CreateEmptyGroup(SMESH.VOLUME, "volGroup2") +volGroup1.Add( volumes[init_nb_volumes/2:]) +MESH1.RemoveElements(rm_faces) +MESH1.MakeBoundaryMesh(volGroup1) +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 +# missing faces +faceSubmesh = MESH1.GetSubMesh( boxFace, "boxFace" ) +MESH1.RemoveElements(rm_faces) +MESH1.MakeBoundaryMesh(faceSubmesh) +assert(init_nb_faces != MESH1.NbFaces()) + +# check group creation +MESH1.RemoveElements(rm_faces) +groupName = "added to mesh" +m,group = MESH1.MakeBoundaryMesh(MESH1,groupName=groupName) +assert(group) +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. +# ------------------------------------------------------------------------------ +MESH1.RemoveElements(rm_faces) +meshName = "MESH2" +MESH2,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyElements=True) +assert(MESH2) +assert(MESH2.GetName() == meshName) +assert(MESH2.NbVolumes() == MESH1.NbVolumes()) +assert(MESH2.NbFaces() == len(rm_faces)) + +# check group creation +MESH1.RemoveElements(rm_faces) +MESH2,group = MESH1.MakeBoundaryMesh(MESH1,meshName="MESH2_0", + groupName=groupName,toCopyElements=True) +assert(group) +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. +# ----------------------------------------------------------------------- +MESH1.RemoveElements(rm_faces) +meshName = "MESH3" +MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyExistingBondary=True) +assert(MESH3) +assert(not group) +assert(MESH3.GetName() == meshName) +assert(MESH3.NbVolumes() == 0) +assert(MESH3.NbFaces() == init_nb_faces) + +# check group creation +MESH1.RemoveElements(rm_faces) +MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName, + groupName=groupName, toCopyExistingBondary=True) +assert(group) +assert(group.GetName() == groupName) +assert(group.Size() == len(rm_faces)) +assert(group.GetMesh()._is_equivalent(MESH3.GetMesh())) +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. +# ================================================================== +MESH1.MakeBoundaryMesh(MESH1) +MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName,toCopyExistingBondary=True) +assert(MESH3) +assert(not group) +assert(MESH3.NbVolumes() == 0) +assert(MESH3.NbFaces() == init_nb_faces) + +# check group creation +MESH3,group = MESH1.MakeBoundaryMesh(MESH1,meshName=meshName, + groupName=groupName, toCopyExistingBondary=True) +assert(group) +assert(group.GetName() == groupName) +assert(group.Size() == 0) +assert(group.GetMesh()._is_equivalent(MESH3.GetMesh())) +assert(MESH3.NbFaces() == init_nb_faces) + +# ================ +# Make 1D from 2D +# ================ + +MESH1.Clear() +MESH1.Compute() +MESH1.RemoveElements( MESH1.GetElementsByType(SMESH.EDGE)) + +rm_faces = faceSubmesh.GetIDs()[:2] # to remove few adjacent faces +nb_missing_edges = 2 + 2*len(rm_faces) + +MESH1.RemoveElements(rm_faces) +mesh,group = MESH1.MakeBoundaryMesh(MESH1, BND_1DFROM2D) +assert( MESH1.NbEdges() == nb_missing_edges ) + + +\endcode */ -- 2.39.2