1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
4 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License, or (at your option) any later version.
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
25 print("Perform quick test of the application by loading of the GEOM, SMESH, MED, PARAVIS")
26 print("components and doing some operation within the components.")
34 import SALOME_ModuleCatalog
38 print("======================================================================")
39 print(" %d. Initialize study " % step); step+=1
40 print("======================================================================")
45 builder = salome.myStudy.NewBuilder()
50 print("======================================================================")
51 print(" %d. Retrieve module catalog " % step); step+=1
52 print("======================================================================")
54 obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
55 catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
57 raise RuntimeError("Can't accesss module catalog")
62 print("======================================================================")
63 print(" %d. Check modules availability in the module catalog " % step); step+=1
64 print("======================================================================")
66 for module in [ "GEOM", "SMESH", "MEDFactory", "PVSERVER"]:
68 print("--- Check %s ..." % module)
69 comp = catalog.GetComponent(module)
71 raise RuntimeError("Component %s is not found in Module Catalog." % module)
77 print("======================================================================")
78 print(" %d. Test Data Server " % step); step+=1
79 print("======================================================================")
82 print("--- Create new component ...")
83 comp = builder.NewComponent("TEST")
85 raise RuntimeError("Can't create new component")
89 print("--- Create AttributeName ...")
90 A = builder.FindOrCreateAttribute(comp, "AttributeName")
92 raise RuntimeError("Can't create AttributeName attribute")
94 if A.Value() != "TEST":
95 raise RuntimeError("Error : wrong value of AttributeName")
99 print("--- Create AttributeReal ...")
100 A = builder.FindOrCreateAttribute(comp, "AttributeReal")
102 raise RuntimeError("Can't create AttributeReal attribute")
104 if A.Value() != 0.0001:
105 raise RuntimeError("Error : wrong value of AttributeReal")
110 print("======================================================================")
111 print(" %d. Test Geometry " % step); step+=1
112 print("======================================================================")
114 from salome.geom import geomBuilder
115 geompy = geomBuilder.New(salome.myStudy)
117 ShapeTypeCompSolid = 1
126 print("--- Create a box ...")
127 box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
128 idbox = geompy.addToStudy(box, "box")
129 box_obj = salome.myStudy.FindObjectByPath("/Geometry/box")
131 raise RuntimeError("Error : wrong value of AttributeReal")
134 # ---- add shell from box in study
136 print("--- Extract shell ...")
137 subShellList = geompy.SubShapeAll(box, ShapeTypeShell)
138 shell = subShellList[0]
139 name = geompy.SubShapeName(shell, box)
140 idshell = geompy.addToStudyInFather(box, shell, name)
144 # ---- add first face of box in study
146 print("--- Extract face ...")
147 subShapeList = geompy.SubShapeAll(box, ShapeTypeFace)
148 face = subShapeList[0]
149 name = geompy.SubShapeName(face, box)
150 idface = geompy.addToStudyInFather(box, face, name)
154 # ---- add first edge of face in study
156 print("--- Extract edge ...")
157 edgeList = geompy.SubShapeAll(face, ShapeTypeEdge)
159 name = geompy.SubShapeName(edge, face)
160 idedge = geompy.addToStudyInFather(face, edge, name)
164 # ---- update object browser
165 if salome.hasDesktop():
166 salome.sg.updateObjBrowser(True);
170 print("======================================================================")
171 print(" %d. Test Mesh " % step); step+=1
172 print("======================================================================")
174 from salome.StdMeshers import StdMeshersBuilder
176 from salome.smesh import smeshBuilder
178 smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
179 if salome.hasDesktop():
180 smeshgui = salome.ImportComponentGUI("SMESH")
181 smeshgui.Init(salome.myStudyId);
183 smesh = smeshBuilder.New(salome.myStudy)
185 # ---- create hypotheses
187 stdMeshersEngine = "StdMeshersEngine"
190 print("--- Create hypotheses ...")
193 print("------ LocalLength ...")
194 hypLen1 = smesh.CreateHypothesis( "LocalLength", stdMeshersEngine )
195 hypLen1.SetLength(100)
196 print(hypLen1.GetName())
197 print(hypLen1.GetId())
198 print(hypLen1.GetLength())
199 if salome.hasDesktop():
200 smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100")
204 print("------ NumberOfSegments ...")
205 hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", stdMeshersEngine )
206 hypNbSeg1.SetNumberOfSegments(7)
207 print(hypNbSeg1.GetName())
208 print(hypNbSeg1.GetId())
209 print(hypNbSeg1.GetNumberOfSegments())
210 if salome.hasDesktop():
211 smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7")
215 print("------ MaxElementArea [1] ...")
216 hypArea1 = smesh.CreateHypothesis( "MaxElementArea", stdMeshersEngine )
217 hypArea1.SetMaxElementArea(2500)
218 print(hypArea1.GetName())
219 print(hypArea1.GetId())
220 print(hypArea1.GetMaxElementArea())
221 if salome.hasDesktop():
222 smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500")
226 print("------ MaxElementArea [2] ...")
227 hypArea2 = smesh.CreateHypothesis( "MaxElementArea", stdMeshersEngine )
228 hypArea2.SetMaxElementArea(500)
229 print(hypArea2.GetName())
230 print(hypArea2.GetId())
231 print(hypArea2.GetMaxElementArea())
232 if salome.hasDesktop():
233 smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500")
236 # ---- create algorithms
239 print("--- Create algorithms ...")
242 print("------ Regular_1D ...")
243 algoReg = smesh.CreateHypothesis( "Regular_1D", stdMeshersEngine )
244 listHyp = algoReg.GetCompatibleHypothesis()
247 print(algoReg.GetName())
248 print(algoReg.GetId())
249 if salome.hasDesktop():
250 smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" )
254 print("------ MEFISTO_2D ...")
255 algoMef = smesh.CreateHypothesis( "MEFISTO_2D", stdMeshersEngine )
256 listHyp=algoMef.GetCompatibleHypothesis()
259 print(algoMef.GetName())
260 print(algoMef.GetId())
261 if salome.hasDesktop():
262 smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" )
265 # ---- create mesh on the box, apply hypotheses / algorithms
268 print("--- Create mesh on the box ...")
269 mesh = smesh.CreateMesh(box)
270 if salome.hasDesktop():
271 smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" );
272 ret = mesh.AddHypothesis(box, algoReg)
273 ret = mesh.AddHypothesis(box, algoMef)
274 ret = mesh.AddHypothesis(box, hypNbSeg1)
275 ret = mesh.AddHypothesis(box, hypArea1)
278 # ---- create submesh on the edge, add hypothesis
281 print("--- Add 1D sub-mesh on the edge ...")
282 submesh = mesh.GetSubMesh(edge, "SubMeshEdge")
283 ret = mesh.AddHypothesis(edge, algoReg)
284 ret = mesh.AddHypothesis(edge, hypLen1)
287 # ---- create submesh on the edge, add hypothesis
290 print("--- Add 2D sub-mesh on the face ...")
291 submesh = mesh.GetSubMesh(face, "SubMeshFace")
292 ret = mesh.AddHypothesis(face, hypArea2)
297 print("--- Compute mesh ...")
298 smesh.Compute(mesh, box)
301 # ---- update object browser
302 if salome.hasDesktop():
303 salome.sg.updateObjBrowser(True);
307 print("======================================================================")
308 print(" %d. Test Med " % step); step+=1
309 print("======================================================================")
312 #from medcalc import properties
313 from medcalc.fieldproxy import FieldProxy
315 medcalc.medconsole.setConsoleGlobals(globals())
317 med_root=os.environ["MED_ROOT_DIR"]
318 except KeyError as e:
319 raise RuntimeError("MED_ROOT_DIR should be defined to load the test data")
321 filepath = os.path.join(med_root,"share","salome","resources","med","medcalc_testfiles","smallmesh_varfield.med")
322 medcalc.medio.LoadDataSource(filepath)
323 fieldHandlerList = medcalc.medevents.dataManager.getFieldHandlerList()
325 fieldHandler0 = fieldHandlerList[0]
326 print("---Field Handler 0:\n%s" % fieldHandler0)
327 fieldHandler1 = fieldHandlerList[1]
328 print("---Field Handler 1:\n%s" % fieldHandler1)
330 print("--- The addition of two fields can be done using field handler directly.")
331 addFieldHandler = medcalc.fieldproxy.calculator.add(fieldHandler0,fieldHandler1)
332 print("--- Result handler:\n%s" % addFieldHandler)
334 print("--- Or with a field proxy that easy the writing of operations.")
335 fieldProxy0 = FieldProxy(fieldHandler0)
336 fieldProxy1 = FieldProxy(fieldHandler1)
338 resHandler = fieldProxy0 + fieldProxy1
339 if resHandler is None:
340 print("Error: result handler is None!")
342 print("--- Result handler:\n%s" % resHandler)
348 print("======================================================================")
349 print(" %d. Test Paravis " % step); step+=1
350 print("======================================================================")
352 if salome.hasDesktop(): # in gui mode
354 print("**** Importing pvserver... It can take some time.")
355 from presentations import *
359 my_paravis = pvserver.myPVServerService
361 #====================Stage1: Importing MED file====================
363 print("**** Stage1: Importing MED file")
365 print('Import "ResOK_0000.med"...............', end=' ')
366 medFileName = "ResOK_0000.med"
367 medFile = os.path.join(os.getenv('DATA_DIR'), 'MedFiles', medFileName)
368 pvsimple.MEDReader( FileName=medFile )
369 med_reader = pvsimple.GetActiveSource()
371 if med_reader is None:
376 cell_entity = EntityType.CELL
377 node_entity = EntityType.NODE
379 #====================Stage2: Displaying vector field===============
381 print("**** Stage3: Displaying vector field")
383 print('Get view...................', end=' ')
384 view = pvsimple.GetRenderView()
391 print("Creating Scalar Map.......", end=' ')
392 scalarmap = ScalarMapOnField(med_reader, node_entity, 'vitesse', 2)
393 if scalarmap is None:
397 bar.Orientation = 'Horizontal'
398 bar.Position = [0.1, 0.1]
399 bar.Position2 = [0.1, 0.25]
402 display_only(scalarmap, view)
407 print("Creating Vectors..........", end=' ')
408 vectors = VectorsOnField(med_reader, node_entity, 'vitesse', 2)
412 display_only(vectors, view)
415 print("Creating Iso Surfaces.....", end=' ')
416 isosurfaces = IsoSurfacesOnField(med_reader, node_entity, 'vitesse', 2)
417 if isosurfaces is None:
420 display_only(isosurfaces, view)
423 print("Creating Cut Planes.......", end=' ')
424 cutplanes = CutPlanesOnField(med_reader, node_entity, 'vitesse', 2,
425 nb_planes=30, orientation=Orientation.YZ)
426 if cutplanes is None:
429 display_only(cutplanes, view)
432 print("Creating Scalar Map On Deformed Shape.......", end=' ')
433 scalarmapondefshape = DeformedShapeAndScalarMapOnField(med_reader,
439 if scalarmapondefshape is None:
442 display_only(scalarmapondefshape, view)
445 else: # not in gui mode, Paravis can not be tested
448 print("PARAVIS module requires SALOME to be running in GUI mode.")
450 print("Skipping test for PARAVIS...")
453 # ---- update object browser
454 if salome.hasDesktop():
455 salome.sg.updateObjBrowser(True);