mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-14 09:38:33 +05:00
91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
import math
|
||
|
import sys
|
||
|
import salome
|
||
|
|
||
|
# Parameters
|
||
|
|
||
|
r = 6
|
||
|
h = 20
|
||
|
|
||
|
###
|
||
|
### SHAPER component
|
||
|
###
|
||
|
|
||
|
from salome.shaper import model
|
||
|
|
||
|
model.begin()
|
||
|
partSet = model.moduleDocument()
|
||
|
|
||
|
### Create Part
|
||
|
Part_1 = model.addPart(partSet)
|
||
|
Part_1_doc = Part_1.document()
|
||
|
|
||
|
### Create Cylinder
|
||
|
Cylinder_1 = model.addCylinder(Part_1_doc, model.selection("VERTEX", "PartSet/Origin"), model.selection("EDGE", "PartSet/OZ"), r, h)
|
||
|
|
||
|
### Create Group
|
||
|
Group_1 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_3")])
|
||
|
Group_1.setName("Inlet")
|
||
|
Group_1.result().setName("Inlet")
|
||
|
|
||
|
### Create Group
|
||
|
Group_2 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_2")])
|
||
|
Group_2.setName("Outlet")
|
||
|
Group_2.result().setName("Outlet")
|
||
|
|
||
|
### Create Group
|
||
|
Group_3 = model.addGroup(Part_1_doc, "Faces", [model.selection("FACE", "Cylinder_1_1/Face_1")])
|
||
|
Group_3.setName("Wall")
|
||
|
Group_3.result().setName("Wall")
|
||
|
|
||
|
model.end()
|
||
|
|
||
|
###
|
||
|
### SHAPERSTUDY component
|
||
|
###
|
||
|
|
||
|
model.publishToShaperStudy()
|
||
|
import SHAPERSTUDY
|
||
|
Cylinder_1_1, Inlet, Outlet, Wall, = SHAPERSTUDY.shape(model.featureStringId(Cylinder_1))
|
||
|
###
|
||
|
### SMESH component
|
||
|
###
|
||
|
|
||
|
import SMESH, SALOMEDS
|
||
|
from salome.smesh import smeshBuilder
|
||
|
|
||
|
smesh = smeshBuilder.New()
|
||
|
|
||
|
Mesh_1 = smesh.Mesh(Cylinder_1_1,'Mesh_1')
|
||
|
Cartesian_3D = Mesh_1.BodyFitted()
|
||
|
Body_Fitting_Parameters_1 = Cartesian_3D.SetGrid([ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],[ [ '1' ], [ 0, 1 ]],10000,1)
|
||
|
Body_Fitting_Parameters_1.SetToCreateFaces( 1 )
|
||
|
|
||
|
width_layer = 1
|
||
|
Viscous_Layers_1 = Cartesian_3D.ViscousLayers(width_layer,3,1.2,[ Inlet, Outlet ],1,smeshBuilder.SURF_OFFSET_SMOOTH,'Viscous_Layers')
|
||
|
|
||
|
isDone = Mesh_1.Compute()
|
||
|
|
||
|
if not isDone:
|
||
|
raise Exception("Mesh_1 not computed")
|
||
|
|
||
|
# Check volume of mesh
|
||
|
volume_mesh = Mesh_1.GetVolume()
|
||
|
volume_geom = math.pi*r**2*h
|
||
|
|
||
|
assert abs(volume_mesh-volume_geom)/volume_geom < 1e-2
|
||
|
|
||
|
# Check volume of Viscous layer
|
||
|
gr_Viscous_Layers = Mesh_1.GetGroupByName("Viscous_Layers")[0]
|
||
|
|
||
|
volume_mesh_VL = smesh.GetVolume(gr_Viscous_Layers)
|
||
|
volume_geom_VL = volume_geom - math.pi*(r-width_layer)**2*h
|
||
|
|
||
|
assert abs(volume_mesh_VL-volume_geom_VL)/volume_geom_VL < 1e-2
|
||
|
|
||
|
|
||
|
if salome.sg.hasDesktop():
|
||
|
salome.sg.updateObjBrowser()
|