1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 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.
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
24 ############################################################################
25 # this Python script is testing all operations between FIELD(DOUBLE,INT)
26 ############################################################################
28 from libMEDMEM_Swig import *
32 #befor running this script, please be sure about the path the file fileName
34 filePath=os.environ["MED_ROOT_DIR"]
35 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
37 medFile = os.path.join( filePath, "pointe.med" )
52 md = MEDFILEBROWSER(medFile)
53 nbMeshes = md.getNumberOfMeshes()
54 nbFields = md.getNumberOfFields()
56 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
59 print "Mesh(es) Name(s) is(are) "
61 for i in range(nbMeshes):
62 mesh_name = md.getMeshName(i)
66 print "Field(s) Name(s) is(are) "
68 for i in range(nbFields):
69 field_name = md.getFieldName(i)
70 print " - ",field_name
74 mesh_name = md.getMeshName(0)
75 mesh = MESH(MED_DRIVER,md.getFileName(),mesh_name)
76 spaceDim = mesh.getSpaceDimension()
77 meshDim = mesh.getMeshDimension()
78 nbNodes = mesh.getNumberOfNodes()
79 print "The mesh",mesh_name,"is a",spaceDim,"D mesh on a",meshDim,"D geometry and has",nbNodes,"Nodes"
83 print "Field(s) Analysis "
84 for i in range(nbFields):
86 field_name = md.getFieldName(i)
87 dtits = md.getFieldIteration(field_name)
89 print "The",print_ord(i),"field is",field_name,"with",nbOfIt,"iteration(s)"
90 for dtitfield in dtits:
92 dt = dtitfield.getdt()
93 it = dtitfield.getit()
94 type = md.getFieldType(field_name)
95 print " * Iteration:",dt,"Order number:",it,"Type:",type
97 fieldint = FIELDINT(MED_DRIVER,md.getFileName(),field_name,dt,it,mesh)
98 name = fieldint.getName()
99 desc = fieldint.getDescription()
100 nbOfComp = fieldint.getNumberOfComponents()
101 print " Field",name," : ",desc
102 print " Number Of Components:",nbOfComp
103 iterationNb = fieldint.getIterationNumber()
104 orderNb = fieldint.getOrderNumber()
105 time = fieldint.getTime()
106 print " Iteration Number",iterationNb
107 print " Order Number",orderNb
109 print "Norme 2 : ", fieldint.norm2()
110 print "Norme Max : ", fieldint.normMax()
112 if fielddouble.getSupport().getEntity()!=MED_NODE:
113 fieldint_vol=fieldint.getSupport().getMesh().getVolume(fieldint.getSupport())
114 print "Norme L1 : ", fieldint.normL1()
115 print "Norme L2 : ", fieldint.normL2()
116 print "Norme L2(vol) : ", fieldint.normL2(fieldint_vol)
118 for k in range(nbOfComp):
120 compName = fieldint.getComponentName(kp1)
121 compDesc = fieldint.getComponentDescription(kp1)
122 compUnit = fieldint.getMEDComponentUnit(kp1)
123 print " * Component:",kp1
124 print " Name:",compName
125 print " Description:",compDesc
126 print " Unit:",compUnit
127 if fielddouble.getSupport().getEntity()!=MED_NODE:
128 print " Norme L1 : ", fieldint.normL1(kp1)
129 print " Norme L2 : ", fieldint.normL2(kp1)
130 print " Norme L2(vol) : ", fieldint.normL2(kp1,fieldint_vol)
132 support = fieldint.getSupport()
133 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
134 print " Values:",nbOf
135 for k in range(nbOf):
136 valueI = fieldint.getRow(k+1)
137 print " *",valueI[:nbOfComp]
138 fieldint2 = FIELDINT(fieldint)
140 fieldintadd = fieldint + fieldint2
141 print "Test of the addition of two integer fields with creation a new one"
143 name = fieldintadd.getName()
144 desc = fieldintadd.getDescription()
145 nbOfComp = fieldintadd.getNumberOfComponents()
146 print " Field",name," : ",desc
147 print " Number Of Components:",nbOfComp
148 iterationNb = fieldintadd.getIterationNumber()
149 orderNb = fieldintadd.getOrderNumber()
150 time = fieldintadd.getTime()
151 print " Iteration Number",iterationNb
152 print " Order Number",orderNb
154 for k in range(nbOfComp):
156 compName = fieldintadd.getComponentName(kp1)
157 compDesc = fieldintadd.getComponentDescription(kp1)
158 compUnit = fieldintadd.getMEDComponentUnit(kp1)
159 print " * Component:",kp1
160 print " Name:",compName
161 print " Description:",compDesc
162 print " Unit:",compUnit
164 support = fieldintadd.getSupport()
165 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
166 print " Values:",nbOf
167 for k in range(nbOf):
168 valueI = fieldintadd.getRow(k+1)
169 print " *",valueI[:nbOfComp]
171 fieldintsub = fieldint - fieldint2
172 print "Test of the substraction of two integer fields with creation a new one"
174 name = fieldintsub.getName()
175 desc = fieldintsub.getDescription()
176 nbOfComp = fieldintsub.getNumberOfComponents()
177 print " Field",name," : ",desc
178 print " Number Of Components:",nbOfComp
179 iterationNb = fieldintsub.getIterationNumber()
180 orderNb = fieldintsub.getOrderNumber()
181 time = fieldintsub.getTime()
182 print " Iteration Number",iterationNb
183 print " Order Number",orderNb
185 for k in range(nbOfComp):
187 compName = fieldintsub.getComponentName(kp1)
188 compDesc = fieldintsub.getComponentDescription(kp1)
189 compUnit = fieldintsub.getMEDComponentUnit(kp1)
190 print " * Component:",kp1
191 print " Name:",compName
192 print " Description:",compDesc
193 print " Unit:",compUnit
195 support = fieldintsub.getSupport()
196 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
197 print " Values:",nbOf
198 for k in range(nbOf):
199 valueI = fieldintsub.getRow(k+1)
200 print " *",valueI[:nbOfComp]
202 fieldintmul = fieldint * fieldint2
203 print "Test of the multiplication of two integer fields with creation a new one"
205 name = fieldintmul.getName()
206 desc = fieldintmul.getDescription()
207 nbOfComp = fieldintmul.getNumberOfComponents()
208 print " Field",name," : ",desc
209 print " Number Of Components:",nbOfComp
210 iterationNb = fieldintmul.getIterationNumber()
211 orderNb = fieldintmul.getOrderNumber()
212 time = fieldintmul.getTime()
213 print " Iteration Number",iterationNb
214 print " Order Number",orderNb
216 for k in range(nbOfComp):
218 compName = fieldintmul.getComponentName(kp1)
219 compDesc = fieldintmul.getComponentDescription(kp1)
220 compUnit = fieldintmul.getMEDComponentUnit(kp1)
221 print " * Component:",kp1
222 print " Name:",compName
223 print " Description:",compDesc
224 print " Unit:",compUnit
226 support = fieldintmul.getSupport()
227 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
228 print " Values:",nbOf
229 for k in range(nbOf):
230 valueI = fieldintmul.getRow(k+1)
231 print " *",valueI[:nbOfComp]
234 fieldintdiv = fieldint / fieldint2
235 print "Test of the division of two integer fields with creation a new one"
237 name = fieldintdiv.getName()
238 desc = fieldintdiv.getDescription()
239 nbOfComp = fieldintdiv.getNumberOfComponents()
240 print " Field",name," : ",desc
241 print " Number Of Components:",nbOfComp
242 iterationNb = fieldintdiv.getIterationNumber()
243 orderNb = fieldintdiv.getOrderNumber()
244 time = fieldintdiv.getTime()
245 print " Iteration Number",iterationNb
246 print " Order Number",orderNb
248 for k in range(nbOfComp):
250 compName = fieldintdiv.getComponentName(kp1)
251 compDesc = fieldintdiv.getComponentDescription(kp1)
252 compUnit = fieldintdiv.getMEDComponentUnit(kp1)
253 print " * Component:",kp1
254 print " Name:",compName
255 print " Description:",compDesc
256 print " Unit:",compUnit
258 support = fieldintdiv.getSupport()
259 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
260 print " Values:",nbOf
261 for k in range(nbOf):
262 valueI = fieldintdiv.getRow(k+1)
263 print " *",valueI[:nbOfComp]
266 print "fieldintdiv = fieldint / fieldint2 catch/except error"
267 elif type == MED_REEL64:
268 fielddouble = FIELDDOUBLE(MED_DRIVER,md.getFileName(),field_name,dt,it,mesh)
269 name = fielddouble.getName()
270 desc = fielddouble.getDescription()
271 nbOfComp = fielddouble.getNumberOfComponents()
272 print " Field",name," : ",desc
273 print " Number Of Components:",nbOfComp
274 iterationNb = fielddouble.getIterationNumber()
275 orderNb = fielddouble.getOrderNumber()
276 time = fielddouble.getTime()
277 print " Iteration Number",iterationNb
278 print " Order Number",orderNb
280 print "Norme 2 : ", fielddouble.norm2()
281 print "Norme Max : ", fielddouble.normMax()
282 print "try sobolev",fielddouble.getSupport().getEntity()
283 if fielddouble.getSupport().getEntity()!=MED_NODE:
285 fielddouble_vol=fielddouble.getSupport().getMesh().getVolume(fielddouble.getSupport())
286 elif (spaceDim == 2):
287 fielddouble_vol=fielddouble.getSupport().getMesh().getArea(fielddouble.getSupport())
288 print "Norme L1 : ", fielddouble.normL1()
289 print "Norme L2 : ", fielddouble.normL2()
290 print "Norme L2(vol) : ", fielddouble.normL2(fielddouble_vol)
292 for k in range(nbOfComp):
294 compName = fielddouble.getComponentName(kp1)
295 compDesc = fielddouble.getComponentDescription(kp1)
296 compUnit = fielddouble.getMEDComponentUnit(kp1)
297 print " * Component:",kp1
298 print " Name:",compName
299 print " Description:",compDesc
300 print " Unit:",compUnit
301 if fielddouble.getSupport().getEntity()!=MED_NODE:
302 print " Norme L1 : ", fielddouble.normL1(kp1)
303 print " Norme L2 : ", fielddouble.normL2(kp1)
304 print " Norme L2(vol) : ", fielddouble.normL2(kp1, fielddouble_vol)
306 support = fielddouble.getSupport()
307 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
308 print " Values:",nbOf
309 for k in range(nbOf):
310 valueI = fielddouble.getRow(k+1)
311 print " *",valueI[:nbOfComp]
312 fielddouble2 = FIELDDOUBLE(fielddouble)
314 fielddoubleadd = fielddouble + fielddouble2
315 print "Test of the addition of two double fields with creation a new one"
317 name = fielddoubleadd.getName()
318 desc = fielddoubleadd.getDescription()
319 nbOfComp = fielddoubleadd.getNumberOfComponents()
320 print " Field",name," : ",desc
321 print " Number Of Components:",nbOfComp
322 iterationNb = fielddoubleadd.getIterationNumber()
323 orderNb = fielddoubleadd.getOrderNumber()
324 time = fielddoubleadd.getTime()
325 print " Iteration Number",iterationNb
326 print " Order Number",orderNb
328 for k in range(nbOfComp):
330 compName = fielddoubleadd.getComponentName(kp1)
331 compDesc = fielddoubleadd.getComponentDescription(kp1)
332 compUnit = fielddoubleadd.getMEDComponentUnit(kp1)
333 print " * Component:",kp1
334 print " Name:",compName
335 print " Description:",compDesc
336 print " Unit:",compUnit
338 support = fielddoubleadd.getSupport()
339 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
340 print " Values:",nbOf
341 for k in range(nbOf):
342 valueI = fielddoubleadd.getRow(k+1)
343 print " *",valueI[:nbOfComp]
345 fielddoublesub = fielddouble - fielddouble2
346 print "Test of the substraction of two double fields with creation a new one"
348 name = fielddoublesub.getName()
349 desc = fielddoublesub.getDescription()
350 nbOfComp = fielddoublesub.getNumberOfComponents()
351 print " Field",name," : ",desc
352 print " Number Of Components:",nbOfComp
353 iterationNb = fielddoublesub.getIterationNumber()
354 orderNb = fielddoublesub.getOrderNumber()
355 time = fielddoublesub.getTime()
356 print " Iteration Number",iterationNb
357 print " Order Number",orderNb
359 for k in range(nbOfComp):
361 compName = fielddoublesub.getComponentName(kp1)
362 compDesc = fielddoublesub.getComponentDescription(kp1)
363 compUnit = fielddoublesub.getMEDComponentUnit(kp1)
364 print " * Component:",kp1
365 print " Name:",compName
366 print " Description:",compDesc
367 print " Unit:",compUnit
369 support = fielddoublesub.getSupport()
370 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
371 print " Values:",nbOf
372 for k in range(nbOf):
373 valueI = fielddoublesub.getRow(k+1)
374 print " *",valueI[:nbOfComp]
376 fielddoublemul = fielddouble * fielddouble2
377 print "Test of the multiplication of two double fields with creation a new one"
379 name = fielddoublemul.getName()
380 desc = fielddoublemul.getDescription()
381 nbOfComp = fielddoublemul.getNumberOfComponents()
382 print " Field",name," : ",desc
383 print " Number Of Components:",nbOfComp
384 iterationNb = fielddoublemul.getIterationNumber()
385 orderNb = fielddoublemul.getOrderNumber()
386 time = fielddoublemul.getTime()
387 print " Iteration Number",iterationNb
388 print " Order Number",orderNb
390 for k in range(nbOfComp):
392 compName = fielddoublemul.getComponentName(kp1)
393 compDesc = fielddoublemul.getComponentDescription(kp1)
394 compUnit = fielddoublemul.getMEDComponentUnit(kp1)
395 print " * Component:",kp1
396 print " Name:",compName
397 print " Description:",compDesc
398 print " Unit:",compUnit
400 support = fielddoublemul.getSupport()
401 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
402 print " Values:",nbOf
403 for k in range(nbOf):
404 valueI = fielddoublemul.getRow(k+1)
405 print " *",valueI[:nbOfComp]
408 fielddoublediv = fielddouble / fielddouble2
409 print "Test of the division of two double fields with creation a new one"
411 name = fielddoublediv.getName()
412 desc = fielddoublediv.getDescription()
413 nbOfComp = fielddoublediv.getNumberOfComponents()
414 print " Field",name," : ",desc
415 print " Number Of Components:",nbOfComp
416 iterationNb = fielddoublediv.getIterationNumber()
417 orderNb = fielddoublediv.getOrderNumber()
418 time = fielddoublediv.getTime()
419 print " Iteration Number",iterationNb
420 print " Order Number",orderNb
422 for k in range(nbOfComp):
424 compName = fielddoublediv.getComponentName(kp1)
425 compDesc = fielddoublediv.getComponentDescription(kp1)
426 compUnit = fielddoublediv.getMEDComponentUnit(kp1)
427 print " * Component:",kp1
428 print " Name:",compName
429 print " Description:",compDesc
430 print " Unit:",compUnit
432 support = fielddoublediv.getSupport()
433 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
434 print " Values:",nbOf
435 for k in range(nbOf):
436 valueI = fielddoublediv.getRow(k+1)
437 print " *",valueI[:nbOfComp]
439 print "fielddoublediv = fielddouble / fielddouble2 catch/except error"
441 print " !!!! Bad type of Field !!!!"
444 print "TESTS OPERATIONS SUR FIELDDOUBLE : "
447 fielddoublesub = fielddouble-fielddouble2
448 fielddoublemul = fielddouble*fielddouble2
451 fielddoublediv = fielddouble/fielddouble2
455 fielddoubleasso = fielddouble+fielddouble2*fielddouble2
456 fielddoubleSP=createFieldDoubleScalarProduct(fielddouble, fielddouble2)
459 print " f1 : ",fielddouble.getValue()
460 print " f2 : ",fielddouble2.getValue()
461 print "--------------------------------------------------------------------------------------------------------------"
462 print " + : ",fielddoubleadd.getValue()
463 print " - : ",fielddoublesub.getValue()
464 print " * : ",fielddoublemul.getValue()
467 print " / : ",fielddoublediv.getValue()
471 fielddouble+=fielddouble2;
472 print " += : ",fielddouble.getValue()
473 fielddouble-=fielddouble2;
474 print " -= : ",fielddouble.getValue()
475 fielddouble*=fielddouble2;
476 print " *= : ",fielddouble.getValue()
477 fielddouble/=fielddouble2;
478 print " /= : ",fielddouble.getValue()
479 print "f1+f2*f2: ",fielddoubleasso.getValue()
480 fielddouble.applyLin(4,1);
481 print " 4f1+1 : ",fielddouble.getValue()
482 print " f1.f2 : ",fielddoubleSP.getValue()
483 fielddouble2.applyPyFunc(add_one)
484 print " CB:f2+1: ",fielddouble2.getValue()
487 print "TESTS OPERATIONS SUR FIELDINT : "
490 fieldintadd = fieldint+fieldint2
491 fieldintsub = fieldint-fieldint2
492 fieldintmul = fieldint*fieldint2
495 fieldintdiv = fieldint/fieldint2
499 fieldintasso = fieldint+fieldint*fieldint
500 fieldintSP=createFieldIntScalarProduct(fieldint, fieldint2)
502 print " f1 : ",fieldint.getValue()
503 print " f2 : ",fieldint2.getValue()
504 print "--------------------------------------------------------------------------------------------------------------"
505 print " + : ",fieldintadd.getValue()
506 print " - : ",fieldintsub.getValue()
507 print " * : ",fieldintmul.getValue()
510 print " / : ",fieldintdiv.getValue()
515 print " += : ",fieldint.getValue()
517 print " -= : ",fieldint.getValue()
519 print " *= : ",fieldint.getValue()
521 print " /= : ",fieldint.getValue()
522 print "f1+f2*f2: ",fieldintasso.getValue()
523 fieldint.applyLin(4,1);
524 print " 4f1+1 : ",fieldint.getValue()
525 print " f1.f2 : ",fieldintSP.getValue()
526 fieldint2.applyPyFunc(add_one)
527 print " CB:f2+1: ",fieldint2.getValue()
529 fieldint.setName(myname)
530 name = fieldint.getName()
531 print "test de setName : ",name
532 print "END of the Pyhton script ..... Ctrl D to exit"