X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=doc%2Fexamples%2Fdefining_hypotheses_ex17.py;fp=doc%2Fexamples%2Fdefining_hypotheses_ex17.py;h=917ddd4877cb49c5819ffb9504756925e5ba83b6;hp=0000000000000000000000000000000000000000;hb=4cf07a14111e98e8889620ee7e6371574c31a50c;hpb=d9f4b53e489dd5857db264ede6acded7b076c9f1 diff --git a/doc/examples/defining_hypotheses_ex17.py b/doc/examples/defining_hypotheses_ex17.py new file mode 100644 index 000000000..917ddd487 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex17.py @@ -0,0 +1,77 @@ +# 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] +ignoreFaces = [ faces[0], faces[-1]] + +geom_builder.addToStudy( shape, "shape" ) +geom_builder.addToStudyInFather( shape, face1, "face1") + +# 3D Viscous layers + +mesh = smesh_builder.Mesh(shape, "CFD") + +mesh.Segment().NumberOfSegments( 4 ) + +mesh.Triangle() +mesh.Quadrangle(face1) +algo3D = mesh.Tetrahedron() + +thickness = 20 +numberOfLayers = 10 +stretchFactor = 1.5 +groupName = "Boundary layers" +layersHyp = algo3D.ViscousLayers(thickness,numberOfLayers,stretchFactor, + ignoreFaces, # optional + groupName = groupName) # optional + +mesh.Compute() + +# retrieve boundary prisms created by mesh.Compute() +boundaryGroup = mesh.GetGroupByName( layersHyp.GetGroupName() )[0] +print( "Nb boundary prisms", boundaryGroup.Size() ) + +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,"VicsousLayers2D") +mesh.Segment().NumberOfSegments( 5 ) + +# viscous layers will be created on 1 edge, as we set 3 edges to ignore +vlHyp = mesh.Triangle().ViscousLayers2D( 2, 3, 1.5, + edgeIds, isEdgesToIgnore=True, # optional + groupName=groupName) # optional +mesh.Compute() + +# retrieve boundary elements created by mesh.Compute() +quadrangles = mesh.GetGroupByName( vlHyp.GetGroupName() )[0] +print( "Nb boundary quadrangles", quadrangles.Size() ) + +# viscous layers will be created on 3 edges, as we pass isEdgesToIgnore=False +vlHyp.SetEdges( edgeIds, False ) + +mesh.Compute()