Salome HOME
ddb17b6a63743a3135c26a340234943394105776
[modules/smesh.git] / doc / salome / examples / test_smeshplugins.py
1 #!/usr/bin/env python
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  7 MG-TETRA-PARALLELE   (GHS3DPRLPLUGIN)
13 Copyright EDF R&D 2017
14 """
15 __revision__ = "V1.0"
16 #
17 # Computation of the meshes: T/F
18 ComputeMeshes = True
19
20 import salome
21
22 salome.salome_init()
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   TEXTE = "Gmsh"
79   MESH_2 = smesh.Mesh(BOX)
80   smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE)
81   try :
82     GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH)
83   except :
84     MESSAGE += "\nImpossible d'utiliser "+TEXTE
85     ERROR += 1
86   else :
87     if ComputeMeshes :
88       smesh.SetName(GMSH.GetAlgorithm(), TEXTE)
89       OK_COMPUTE = MESH_2.Compute()
90       if not OK_COMPUTE :
91         MESSAGE += "\nErreur avec "+TEXTE
92         ERROR += 1
93       else :
94         print(TEXTE+": OK")
95
96 # B.3. MG_CADSurf
97   TEXTE = "MG_CADSurf"
98   MESH_3 = smesh.Mesh(BOX)
99   smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE)
100   try :
101     MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf)
102   except :
103     MESSAGE += "\nImpossible d'utiliser "+TEXTE
104     ERROR += 1
105 #   On arrete tout en cas de problème car les suivants en dépendent
106     break
107   else :
108     if ComputeMeshes :
109       smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE)
110       OK_COMPUTE = MESH_3.Compute()
111       if not OK_COMPUTE :
112         MESSAGE += "\nErreur avec "+TEXTE
113         ERROR += 1
114       else :
115         print(TEXTE+": OK")
116
117 # B.4. MG_Tetra
118   TEXTE = "MG_Tetra"
119   MESH_4 = smesh.Mesh(BOX)
120   smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE)
121   MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf)
122   try :
123     MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra)
124   except :
125     MESSAGE += "\nImpossible d'utiliser "+TEXTE
126     ERROR += 1
127   else :
128     if ComputeMeshes :
129       smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE)
130       OK_COMPUTE = MESH_4.Compute()
131       if not OK_COMPUTE :
132         MESSAGE += "\nErreur avec "+TEXTE
133         ERROR += 1
134       else :
135         print(TEXTE+": OK")
136
137 # B.5. MG_Hexa
138   TEXTE = "MG_Hexa"
139   MESH_5 = smesh.Mesh(BOX)
140   smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE)
141   MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf)
142   try :
143     MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa)
144   except :
145     MESSAGE += "\nImpossible d'utiliser "+TEXTE
146     ERROR += 1
147   else :
148     if ComputeMeshes :
149       smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE)
150       OK_COMPUTE = MESH_5.Compute()
151       if not OK_COMPUTE :
152         MESSAGE += "\nErreur avec "+TEXTE
153         ERROR += 1
154       else :
155         print(TEXTE+": OK")
156
157 # B.6. MG_Hybrid
158   TEXTE = "MG_Hybrid"
159   MESH_6 = smesh.Mesh(BOX)
160   smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE)
161   MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf)
162   try :
163     MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID)
164   except :
165     MESSAGE += "\nImpossible d'utiliser "+TEXTE
166     ERROR += 1
167   else :
168     if ComputeMeshes :
169       smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE)
170       OK_COMPUTE = MESH_6.Compute()
171       if not OK_COMPUTE :
172         MESSAGE += "\nErreur avec "+TEXTE
173         ERROR += 1
174       else :
175         print(TEXTE+": OK")
176
177 # B.7. MG_Tetra_Parallel
178   TEXTE = "MG_Tetra_Parallel"
179   MESH_7 = smesh.Mesh(BOX)
180   smesh.SetName(MESH_7.GetMesh(), "M_"+TEXTE)
181   MG_CADSurf_Tp = MESH_7.Triangle(algo=smeshBuilder.MG_CADSurf)
182   try :
183     MG_Tetra_Parallel = MESH_7.Tetrahedron(algo=smeshBuilder.MG_Tetra_Parallel)
184   except :
185     MESSAGE += "\nImpossible d'utiliser "+TEXTE
186     ERROR += 1
187   else :
188     if ComputeMeshes :
189       smesh.SetName(MG_Tetra_Parallel.GetAlgorithm(), TEXTE)
190       OK_COMPUTE = MESH_7.Compute()
191       if not OK_COMPUTE :
192         MESSAGE += "\nErreur avec "+TEXTE
193         ERROR += 1
194       else :
195         print(TEXTE+": OK")
196
197   break
198
199 ###
200 ### C. End
201 ###
202 if ERROR :
203   raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
204 else :
205   print("\nAucun problème\n")
206