Salome HOME
Merge branch 'V9_9_BR'
[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 import platform
21
22 salome.salome_init_without_session()
23 theStudy = salome.myStudy
24 #
25 import iparameters
26 IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
27
28 # fill list AP_MODULES_LIST
29 IPAR.append("AP_MODULES_LIST", "Geometry")
30 IPAR.append("AP_MODULES_LIST", "Mesh")
31
32 ERROR = 0
33 MESSAGE = ""
34 #
35 while not ERROR :
36
37 ###
38 ### A. GEOM component
39 ###
40   import GEOM
41   from salome.geom import geomBuilder
42   geompy = geomBuilder.New()
43   O = geompy.MakeVertex(0, 0, 0, "0")
44   OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX")
45   OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY")
46   OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ")
47   BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX")
48
49 ###
50 ### B. SMESH component
51 ###
52
53   import  SMESH
54   from salome.smesh import smeshBuilder
55
56   smesh = smeshBuilder.New()
57
58 # B.1. NETGEN
59   TEXTE = "NETGEN_1D2D3D"
60   MESH_1 = smesh.Mesh(BOX)
61   smesh.SetName(MESH_1.GetMesh(), "M_"+TEXTE)
62   try :
63     NETGEN_2D3D = MESH_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D)
64   except :
65     MESSAGE += "\nImpossible d'utiliser "+TEXTE
66     ERROR += 1
67   else :
68     if ComputeMeshes :
69       smesh.SetName(NETGEN_2D3D.GetAlgorithm(), TEXTE)
70       OK_COMPUTE = MESH_1.Compute()
71       if not OK_COMPUTE :
72         MESSAGE += "\nErreur avec "+TEXTE
73         ERROR += 1
74       else :
75         print(TEXTE+": OK")
76
77 # B.2. Gmsh
78   # GMSH for windows not yet implemented BOS #18709
79   if platform.system() != "Windows" :
80     TEXTE = "Gmsh"
81     MESH_2 = smesh.Mesh(BOX)
82     smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE)
83     try :
84       GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH)
85     except :
86       MESSAGE += "\nImpossible d'utiliser "+TEXTE
87       ERROR += 1
88     else :
89       if ComputeMeshes :
90         smesh.SetName(GMSH.GetAlgorithm(), TEXTE)
91         OK_COMPUTE = MESH_2.Compute()
92         if not OK_COMPUTE :
93           MESSAGE += "\nErreur avec "+TEXTE
94           ERROR += 1
95         else :
96           print(TEXTE+": OK")
97   else :
98     print("Skipping B.2 on windows")
99
100 # B.3. MG_CADSurf
101   TEXTE = "MG_CADSurf"
102   MESH_3 = smesh.Mesh(BOX)
103   smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE)
104   try :
105     MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf)
106   except :
107     MESSAGE += "\nImpossible d'utiliser "+TEXTE
108     ERROR += 1
109 #   On arrete tout en cas de problème car les suivants en dépendent
110     break
111   else :
112     if ComputeMeshes :
113       smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE)
114       OK_COMPUTE = MESH_3.Compute()
115       if not OK_COMPUTE :
116         MESSAGE += "\nErreur avec "+TEXTE
117         ERROR += 1
118       else :
119         print(TEXTE+": OK")
120
121 # B.4. MG_Tetra
122   TEXTE = "MG_Tetra"
123   MESH_4 = smesh.Mesh(BOX)
124   smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE)
125   MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf)
126   try :
127     MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra)
128   except :
129     MESSAGE += "\nImpossible d'utiliser "+TEXTE
130     ERROR += 1
131   else :
132     if ComputeMeshes :
133       smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE)
134       OK_COMPUTE = MESH_4.Compute()
135       if not OK_COMPUTE :
136         MESSAGE += "\nErreur avec "+TEXTE
137         ERROR += 1
138       else :
139         print(TEXTE+": OK")
140
141 # B.5. MG_Hexa
142   TEXTE = "MG_Hexa"
143   MESH_5 = smesh.Mesh(BOX)
144   smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE)
145   MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf)
146   try :
147     MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa)
148   except :
149     MESSAGE += "\nImpossible d'utiliser "+TEXTE
150     ERROR += 1
151   else :
152     if ComputeMeshes :
153       smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE)
154       OK_COMPUTE = MESH_5.Compute()
155       if not OK_COMPUTE :
156         MESSAGE += "\nErreur avec "+TEXTE
157         ERROR += 1
158       else :
159         print(TEXTE+": OK")
160
161 # B.6. MG_Hybrid
162   TEXTE = "MG_Hybrid"
163   MESH_6 = smesh.Mesh(BOX)
164   smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE)
165   MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf)
166   try :
167     MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID)
168   except :
169     MESSAGE += "\nImpossible d'utiliser "+TEXTE
170     ERROR += 1
171   else :
172     if ComputeMeshes :
173       smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE)
174       OK_COMPUTE = MESH_6.Compute()
175       if not OK_COMPUTE :
176         MESSAGE += "\nErreur avec "+TEXTE
177         ERROR += 1
178       else :
179         print(TEXTE+": OK")
180
181   break
182
183 ###
184 ### C. End
185 ###
186 if ERROR :
187   raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
188 else :
189   print("\nAucun problème\n")
190