Salome HOME
Precise doc on sub-mesh priority
[modules/smesh.git] / doc / salome / examples / test_smeshplugins.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 """
4 Test000
5 Checks the availability of the external plugins :
6  1 NETGENPLUGIN
7  2 GMSHPLUGIN
8  3 MG-CADSURF           (BLSURFPLUGIN)
9  4 MG-TETRA             (GHS3DPLUGIN)
10  5 MG-HEXA              (HEXOTICPLUGIN)
11  6 MG-HYBRID            (HYBRIDPLUGIN)
12 Copyright EDF R&D 2017
13 """
14 __revision__ = "V1.0"
15 #
16 # Computation of the meshes: T/F
17 ComputeMeshes = True
18
19 import salome
20
21 salome.salome_init()
22 theStudy = salome.myStudy
23 #
24 import iparameters
25 IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
26
27 # fill list AP_MODULES_LIST
28 IPAR.append("AP_MODULES_LIST", "Geometry")
29 IPAR.append("AP_MODULES_LIST", "Mesh")
30
31 ERROR = 0
32 MESSAGE = ""
33 #
34 while not ERROR :
35
36 ###
37 ### A. GEOM component
38 ###
39   import GEOM
40   from salome.geom import geomBuilder
41   geompy = geomBuilder.New()
42   O = geompy.MakeVertex(0, 0, 0, "0")
43   OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX")
44   OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY")
45   OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ")
46   BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX")
47
48 ###
49 ### B. SMESH component
50 ###
51
52   import  SMESH
53   from salome.smesh import smeshBuilder
54
55   smesh = smeshBuilder.New()
56
57 # B.1. NETGEN
58   TEXTE = "NETGEN_1D2D3D"
59   MESH_1 = smesh.Mesh(BOX)
60   smesh.SetName(MESH_1.GetMesh(), "M_"+TEXTE)
61   try :
62     NETGEN_2D3D = MESH_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
63   except :
64     MESSAGE += "\nImpossible d'utiliser "+TEXTE
65     ERROR += 1
66   else :
67     if ComputeMeshes :
68       smesh.SetName(NETGEN_2D3D.GetAlgorithm(), TEXTE)
69       OK_COMPUTE = MESH_1.Compute()
70       if not OK_COMPUTE :
71         MESSAGE += "\nErreur avec "+TEXTE
72         ERROR += 1
73       else :
74         print(TEXTE+": OK")
75
76 # B.2. Gmsh
77   TEXTE = "Gmsh"
78   MESH_2 = smesh.Mesh(BOX)
79   smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE)
80   try :
81     GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH)
82   except :
83     MESSAGE += "\nImpossible d'utiliser "+TEXTE
84     ERROR += 1
85   else :
86     if ComputeMeshes :
87       smesh.SetName(GMSH.GetAlgorithm(), TEXTE)
88       OK_COMPUTE = MESH_2.Compute()
89       if not OK_COMPUTE :
90         MESSAGE += "\nErreur avec "+TEXTE
91         ERROR += 1
92       else :
93         print(TEXTE+": OK")
94
95 # B.3. MG_CADSurf
96   TEXTE = "MG_CADSurf"
97   MESH_3 = smesh.Mesh(BOX)
98   smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE)
99   try :
100     MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf)
101   except :
102     MESSAGE += "\nImpossible d'utiliser "+TEXTE
103     ERROR += 1
104 #   On arrete tout en cas de problème car les suivants en dépendent
105     break
106   else :
107     if ComputeMeshes :
108       smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE)
109       OK_COMPUTE = MESH_3.Compute()
110       if not OK_COMPUTE :
111         MESSAGE += "\nErreur avec "+TEXTE
112         ERROR += 1
113       else :
114         print(TEXTE+": OK")
115
116 # B.4. MG_Tetra
117   TEXTE = "MG_Tetra"
118   MESH_4 = smesh.Mesh(BOX)
119   smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE)
120   MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf)
121   try :
122     MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra)
123   except :
124     MESSAGE += "\nImpossible d'utiliser "+TEXTE
125     ERROR += 1
126   else :
127     if ComputeMeshes :
128       smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE)
129       OK_COMPUTE = MESH_4.Compute()
130       if not OK_COMPUTE :
131         MESSAGE += "\nErreur avec "+TEXTE
132         ERROR += 1
133       else :
134         print(TEXTE+": OK")
135
136 # B.5. MG_Hexa
137   TEXTE = "MG_Hexa"
138   MESH_5 = smesh.Mesh(BOX)
139   smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE)
140   MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf)
141   try :
142     MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa)
143   except :
144     MESSAGE += "\nImpossible d'utiliser "+TEXTE
145     ERROR += 1
146   else :
147     if ComputeMeshes :
148       smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE)
149       OK_COMPUTE = MESH_5.Compute()
150       if not OK_COMPUTE :
151         MESSAGE += "\nErreur avec "+TEXTE
152         ERROR += 1
153       else :
154         print(TEXTE+": OK")
155
156 # B.6. MG_Hybrid
157   TEXTE = "MG_Hybrid"
158   MESH_6 = smesh.Mesh(BOX)
159   smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE)
160   MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf)
161   try :
162     MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID)
163   except :
164     MESSAGE += "\nImpossible d'utiliser "+TEXTE
165     ERROR += 1
166   else :
167     if ComputeMeshes :
168       smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE)
169       OK_COMPUTE = MESH_6.Compute()
170       if not OK_COMPUTE :
171         MESSAGE += "\nErreur avec "+TEXTE
172         ERROR += 1
173       else :
174         print(TEXTE+": OK")
175
176   break
177
178 ###
179 ### C. End
180 ###
181 if ERROR :
182   raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
183 else :
184   print("\nAucun problème\n")
185