Salome HOME
Add examples to salome test. And add some checks to test the generated mesh
[plugins/ghs3dplugin.git] / doc / salome / examples / ghs3d_optimization.py
index 34d9e6d58295af16c22e47946b93cbae654310d1..baa6d7feac6d186ca09c4a4a8b55250b2ebe0e3e 100644 (file)
@@ -2,10 +2,11 @@ import salome
 salome.salome_init()
 
 from salome.geom import geomBuilder
-geompy = geomBuilder.New(salome.myStudy)
+geompy = geomBuilder.New()
 
+import SMESH
 from salome.smesh import smeshBuilder
-smesh =  smeshBuilder.New(salome.myStudy)
+smesh =  smeshBuilder.New()
 
 # create a disk
 disk = geompy.MakeDiskR(100., 1, theName="disk")
@@ -14,7 +15,9 @@ disk = geompy.MakeDiskR(100., 1, theName="disk")
 mesh = smesh.Mesh( disk )
 cadsurf = mesh.Triangle( smeshBuilder.MG_CADSurf )
 cadsurf.SetQuadAllowed( True )
-mesh.Compute()
+ok = mesh.Compute()
+if not ok:
+  raise Exception("Error when computing mesh")
 
 # extrude the 2D mesh into a prismatic mesh
 mesh.ExtrusionSweepObject( mesh, [0,0,10], 7 )
@@ -32,10 +35,19 @@ mg_opt.SetSmoothOffSlivers( True )
 mg_opt.SetOptimizationLevel( smeshBuilder.Strong_Optimization )
 
 # run optimization
-optMesh.Compute()
+ok = optMesh.Compute()
+if not ok:
+  raise Exception("Error when computing optimization mesh")
 
 print("Nb tetra before optimization", mesh.NbTetras())
 print("Nb tetra after  optimization", optMesh.NbTetras())
 
+# Check that aspect ratio 3D of optimized mesh is better than original mesh
+min_aspectratio_orig, max_aspectratio_orig = mesh.GetMinMax(SMESH.FT_AspectRatio3D)
+min_aspectratio_optim, max_aspectratio_optim = optMesh.GetMinMax(SMESH.FT_AspectRatio3D)
+
+assert (min_aspectratio_orig - min_aspectratio_optim)/min_aspectratio_orig < 0.5
+assert (max_aspectratio_orig - max_aspectratio_optim)/max_aspectratio_orig < 0.5
+
 # End of script