Salome HOME
[bos #40505][CEA] Allow assign of 3D Tetra paramam on imported 2D mesh.
[modules/smesh.git] / test / body_fitting_viscous_layer_cylinder.py
1 #!/usr/bin/env python
2
3 import math
4 import sys
5 import salome
6
7 # Parameters
8
9 r = 6
10 h = 20
11
12 ###
13 ### SHAPER component
14 ###
15
16 from salome.shaper import model
17
18 model.begin()
19 partSet = model.moduleDocument()
20
21 ### Create Part
22 Part_1 = model.addPart(partSet)
23 Part_1_doc = Part_1.document()
24
25 ### Create Cylinder
26 Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), r, h)
27
28 ### Create Group
29 Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_3")])
30 Group_1.setName("Inlet")
31 Group_1.result().setName("Inlet")
32
33 ### Create Group
34 Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_2")])
35 Group_2.setName("Outlet")
36 Group_2.result().setName("Outlet")
37
38 ### Create Group
39 Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_1")])
40 Group_3.setName("Wall")
41 Group_3.result().setName("Wall")
42
43 model.end()
44
45 ###
46 ### SHAPERSTUDY component
47 ###
48
49 model.publishToShaperStudy()
50 import SHAPERSTUDY
51 Cylinder_1_1, Inlet, Outlet, Wall, = SHAPERSTUDY.shape(model.featureStringId(Cylinder_1))
52 ###
53 ### SMESH component
54 ###
55
56 import  SMESH, SALOMEDS
57 from salome.smesh import smeshBuilder
58
59 smesh = smeshBuilder.New()
60
61 Mesh_1 = smesh.Mesh(Cylinder_1_1,'Mesh_1')
62 Cartesian_3D = Mesh_1.BodyFitted()
63 Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],10000,1)
64 Body_Fitting_Parameters_1.SetToCreateFaces( 1 )
65
66 width_layer = 1
67 Viscous_Layers_1 = Cartesian_3D.ViscousLayers(width_layer,3,1.2,[ Inlet, Outlet ],1,smeshBuilder.SURF_OFFSET_SMOOTH,'Viscous_Layers')
68
69 isDone = Mesh_1.Compute()
70
71 if not isDone:
72   raise Exception("Mesh_1 not computed")
73
74 # Check volume of mesh
75 volume_mesh = Mesh_1.GetVolume()
76 volume_geom = math.pi*r**2*h
77
78 assert abs(volume_mesh-volume_geom)/volume_geom < 1e-2
79
80 # Check volume of Viscous layer
81 gr_Viscous_Layers = Mesh_1.GetGroupByName("Viscous_Layers")[0]
82
83 volume_mesh_VL = smesh.GetVolume(gr_Viscous_Layers)
84 volume_geom_VL = volume_geom - math.pi*(r-width_layer)**2*h
85
86 assert abs(volume_mesh_VL-volume_geom_VL)/volume_geom_VL < 1e-2
87
88
89 if salome.sg.hasDesktop():
90   salome.sg.updateObjBrowser()