]> SALOME platform Git repositories - plugins/hybridplugin.git/blob - tests/mg_hybrid_pyramids.py
Salome HOME
Rename tests without test_ prefix
[plugins/hybridplugin.git] / tests / mg_hybrid_pyramids.py
1 # -*- coding: utf-8 -*-
2
3
4 import sys
5 import salome
6
7 salome.salome_init()
8 theStudy = salome.myStudy
9
10 ###
11 ### GEOM component
12 ###
13
14 import GEOM
15 from salome.geom import geomBuilder
16 import math
17 import SALOMEDS
18
19
20 geompy = geomBuilder.New(theStudy)
21
22 box_side = 200
23
24 O = geompy.MakeVertex(0, 0, 0)
25 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
26 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
27 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
28 Box_1 = geompy.MakeBoxDXDYDZ(box_side, box_side, box_side)
29 geompy.addToStudy( O, 'O' )
30 geompy.addToStudy( OX, 'OX' )
31 geompy.addToStudy( OY, 'OY' )
32 geompy.addToStudy( OZ, 'OZ' )
33 geompy.addToStudy( Box_1, 'Box_1' )
34
35 ###
36 ### SMESH component
37 ###
38
39 import  SMESH, SALOMEDS
40 from salome.smesh import smeshBuilder
41
42 smesh = smeshBuilder.New(theStudy)
43 Mesh_1 = smesh.Mesh(Box_1)
44 MG_CADSurf = Mesh_1.Triangle(algo=smeshBuilder.MG_CADSurf)
45 MG_CADSurf_Parameters_1 = MG_CADSurf.Parameters()
46 MG_CADSurf_Parameters_1.SetPhySize( 10 )
47 MG_CADSurf_Parameters_1.SetMinSize( 0.34641 )
48 MG_CADSurf_Parameters_1.SetMaxSize( 69.282 )
49
50 isDone = Mesh_1.Compute()
51
52 # Copy the skin mesh
53 Mesh_2 = smesh.CopyMesh( Mesh_1, 'Mesh_2', 0, 0)
54
55 # Add hybrid
56 HYBRID_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.HYBRID)
57 MG_Hybrid_Parameters_1 = HYBRID_3D.Parameters()
58 MG_Hybrid_Parameters_1.SetElementGeneration( 1 )
59 MG_Hybrid_Parameters_1.SetHeightFirstLayer( 1 )
60 MG_Hybrid_Parameters_1.SetNbOfBoundaryLayers( 3 )
61
62 # Compute mesh on CAD
63 # ===================
64 isDone = Mesh_1.Compute()
65
66 # Check volume
67 vol_mesh_1 = smesh.GetVolume(Mesh_1)
68 vol_box = box_side**3
69 assert abs(vol_mesh_1-vol_box)/vol_box < 1e-4
70
71 # Check number of pyramids
72 assert Mesh_1.NbPyramids() > 1000
73
74 # Add hybrid to skin mesh
75 HYBRID_3D_1 = Mesh_2.Tetrahedron(algo=smeshBuilder.HYBRID,geom=None)
76 status = Mesh_2.AddHypothesis(MG_Hybrid_Parameters_1,None)
77
78 # Compute mesh without CAD
79 # ========================
80 isDone = Mesh_2.Compute()
81
82 # Check volume
83 vol_mesh_2 = smesh.GetVolume(Mesh_2)
84 vol_box = box_side**3
85 assert abs(vol_mesh_2-vol_box)/vol_box < 1e-4
86
87 # Check number of pyramids
88 assert Mesh_2.NbPyramids() > 1000
89
90
91 if salome.sg.hasDesktop():
92   salome.sg.updateObjBrowser(True)