]> SALOME platform Git repositories - modules/smesh.git/blobdiff - doc/examples/defining_hypotheses_vlapi_ex17.py
Salome HOME
[bos #35147] [EDF] (2023-T1) Decompose Viscous Layer API.
[modules/smesh.git] / doc / examples / defining_hypotheses_vlapi_ex17.py
diff --git a/doc/examples/defining_hypotheses_vlapi_ex17.py b/doc/examples/defining_hypotheses_vlapi_ex17.py
new file mode 100644 (file)
index 0000000..3f4ed36
--- /dev/null
@@ -0,0 +1,84 @@
+# Viscous layers construction
+
+import salome
+salome.salome_init_without_session()
+
+import SMESH
+from salome.geom import geomBuilder
+from salome.smesh import smeshBuilder
+
+geom_builder = geomBuilder.New()
+smesh_builder = smeshBuilder.New()
+
+X = geom_builder.MakeVectorDXDYDZ( 1,0,0 )
+O = geom_builder.MakeVertex( 100,50,50 )
+plane = geom_builder.MakePlane( O, X, 200 ) # plane YZ
+
+box = geom_builder.MakeBoxDXDYDZ(200,100,100)
+
+shape = geom_builder.MakeHalfPartition( box, plane )
+
+faces = geom_builder.SubShapeAllSorted(shape, geom_builder.ShapeType["FACE"])
+face1 = faces[1]
+# 4 left, 34 middle, 50 right
+# Have to pass the middle face id, otherwise it is going to create two disjoint boxes
+# because the common face is not going to be ignored and both boxes are going to shrink
+# in this direction too
+ignoreFaces = [4,34,50]
+
+geom_builder.addToStudy( shape, "shape" )
+geom_builder.addToStudyInFather( shape, face1, "face1")
+
+# 3D Viscous layers
+mesh = smesh_builder.Mesh(shape, "CFD")
+
+ViscousBuilder = mesh.ViscousLayerBuilder()
+thickness = 20 
+numberOfLayers = 10
+stretchFactor = 1.5
+groupName = "Boundary layers"
+ViscousBuilder.setBuilderParameters( thickness, numberOfLayers, stretchFactor, 
+                                                ignoreFaces,                # optional
+                                                groupName = groupName )     # optional
+
+Shrinkshape = ViscousBuilder.GetShrinkGeometry()
+
+shrinkMesh = smesh_builder.Mesh(Shrinkshape, "Shrink")
+shrinkMesh.Segment().NumberOfSegments( 4 )
+faces = geom_builder.SubShapeAllSorted(Shrinkshape, geom_builder.ShapeType["FACE"])
+shrinkFace1 = faces[1]
+
+shrinkMesh.Triangle()
+shrinkMesh.Quadrangle(shrinkFace1)
+algo3D = shrinkMesh.Tetrahedron()
+
+if not shrinkMesh.Compute(): raise Exception("Error when computing Mesh")
+
+#Add viscous layer
+FinalMesh = ViscousBuilder.AddLayers( shrinkMesh )
+
+mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA)
+mesh.MakeGroup("Pyras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PYRAMID)
+mesh.MakeGroup("Prims",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PENTA)
+
+# 2D Viscous layers
+
+# 3 edges of the 4 edges of face1
+edgeIds = geom_builder.SubShapeAllIDs( face1, geom_builder.ShapeType["EDGE"])[:-1]
+
+mesh = smesh_builder.Mesh(face1,"Face1")
+ViscousBuilder = mesh.ViscousLayerBuilder()
+ViscousBuilder.setBuilderParameters( 2, 3, 1.5, 
+                                    edgeIds, True, # optional
+                                    groupName = groupName )     # optional
+
+#For 2D, edges are not selectable (to be developed in occt) the entire face is shrink
+shrinkFace = ViscousBuilder.GetShrinkGeometry()
+shrinkMesh = smesh_builder.Mesh(shrinkFace, "VicsousLayers2D")
+
+shrinkMesh.Segment().NumberOfSegments( 5 )
+algo2D = shrinkMesh.Triangle()
+
+if not shrinkMesh.Compute(): raise Exception("Error when computing Mesh of shrink face")
+
+FinalMeshFace = ViscousBuilder.AddLayers( shrinkMesh )
\ No newline at end of file