1 # Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG
2 # PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
8 # This library is distributed in the hope that it will be useful
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 ############################################################################
21 # this Python script is testing all operations between FIELD(DOUBLE,INT)
23 ############################################################################
25 from libMEDMEM_Swig import *
29 #befor running this script, please be sure about the path the file fileName
31 filePath=os.environ["MED_ROOT_DIR"]
32 filePath=filePath+"/share/salome/resources/med/"
34 medFile = filePath + "pointe.med"
51 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
54 mdDriver.readFileStruct()
57 nbMeshes = md.getNumberOfMeshes()
59 nbFields = md.getNumberOfFields()
61 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
64 print "Mesh(es) Name(s) is(are) "
66 for i in range(nbMeshes):
67 mesh_name = md.getMeshName(i)
71 print "Field(s) Name(s) is(are) "
73 for i in range(nbFields):
74 field_name = md.getFieldName(i)
75 print " - ",field_name
79 mesh_name = md.getMeshName(0)
80 mesh = md.getMesh(mesh_name)
82 spaceDim = mesh.getSpaceDimension()
83 meshDim = mesh.getMeshDimension()
84 nbNodes = mesh.getNumberOfNodes()
85 print "The mesh",mesh_name,"is a",spaceDim,"D mesh on a",meshDim,"D geometry and has",nbNodes,"Nodes"
88 print "Updating supports in the Med Object"
91 print "Field(s) Analysis "
92 for i in range(nbFields):
94 field_name = md.getFieldName(i)
95 nbOfIt = md.getFieldNumberOfIteration(field_name)
96 print "The",print_ord(i),"field is",field_name,"with",nbOfIt,"iteration(s)"
97 for j in range(nbOfIt):
99 dtitfield = md.getFieldIteration(field_name,j)
100 dt = dtitfield.getdt()
101 it = dtitfield.getit()
102 field = md.getField(field_name,dt,it)
103 type = field.getValueType()
104 print " * Iteration:",dt,"Order number:",it,"Type:",type
105 if type == MED_INT32:
106 fieldint = createFieldIntFromField(field)
108 fieldint.getSupport().update()
109 name = fieldint.getName()
110 desc = fieldint.getDescription()
111 nbOfComp = fieldint.getNumberOfComponents()
112 print " Field",name," : ",desc
113 print " Number Of Components:",nbOfComp
114 iterationNb = fieldint.getIterationNumber()
115 orderNb = fieldint.getOrderNumber()
116 time = fieldint.getTime()
117 print " Iteration Number",iterationNb
118 print " Order Number",orderNb
120 print "Norme 2 : ", fieldint.norm2()
121 print "Norme Max : ", fieldint.normMax()
123 if fielddouble.getSupport().getEntity()!=MED_NODE:
124 fieldint_vol=fieldint.getSupport().getMesh().getVolume(fieldint.getSupport())
125 print "Norme L1 : ", fieldint.normL1()
126 print "Norme L2 : ", fieldint.normL2()
127 print "Norme L2(vol) : ", fieldint.normL2(fieldint_vol)
129 for k in range(nbOfComp):
131 compName = fieldint.getComponentName(kp1)
132 compDesc = fieldint.getComponentDescription(kp1)
133 compUnit = fieldint.getMEDComponentUnit(kp1)
134 print " * Component:",kp1
135 print " Name:",compName
136 print " Description:",compDesc
137 print " Unit:",compUnit
138 if fielddouble.getSupport().getEntity()!=MED_NODE:
139 print " Norme L1 : ", fieldint.normL1(kp1)
140 print " Norme L2 : ", fieldint.normL2(kp1)
141 print " Norme L2(vol) : ", fieldint.normL2(kp1,fieldint_vol)
143 support = fieldint.getSupport()
144 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
145 print " Values:",nbOf
146 for k in range(nbOf):
147 valueI = fieldint.getRow(k+1)
148 print " *",valueI[:nbOfComp]
149 fieldint2 = FIELDINT(fieldint)
151 fieldintadd = fieldint + fieldint2
152 print "Test of the addition of two integer fields with creation a new one"
154 name = fieldintadd.getName()
155 desc = fieldintadd.getDescription()
156 nbOfComp = fieldintadd.getNumberOfComponents()
157 print " Field",name," : ",desc
158 print " Number Of Components:",nbOfComp
159 iterationNb = fieldintadd.getIterationNumber()
160 orderNb = fieldintadd.getOrderNumber()
161 time = fieldintadd.getTime()
162 print " Iteration Number",iterationNb
163 print " Order Number",orderNb
165 for k in range(nbOfComp):
167 compName = fieldintadd.getComponentName(kp1)
168 compDesc = fieldintadd.getComponentDescription(kp1)
169 compUnit = fieldintadd.getMEDComponentUnit(kp1)
170 print " * Component:",kp1
171 print " Name:",compName
172 print " Description:",compDesc
173 print " Unit:",compUnit
175 support = fieldintadd.getSupport()
176 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
177 print " Values:",nbOf
178 for k in range(nbOf):
179 valueI = fieldintadd.getRow(k+1)
180 print " *",valueI[:nbOfComp]
182 fieldintsub = fieldint - fieldint2
183 print "Test of the substraction of two integer fields with creation a new one"
185 name = fieldintsub.getName()
186 desc = fieldintsub.getDescription()
187 nbOfComp = fieldintsub.getNumberOfComponents()
188 print " Field",name," : ",desc
189 print " Number Of Components:",nbOfComp
190 iterationNb = fieldintsub.getIterationNumber()
191 orderNb = fieldintsub.getOrderNumber()
192 time = fieldintsub.getTime()
193 print " Iteration Number",iterationNb
194 print " Order Number",orderNb
196 for k in range(nbOfComp):
198 compName = fieldintsub.getComponentName(kp1)
199 compDesc = fieldintsub.getComponentDescription(kp1)
200 compUnit = fieldintsub.getMEDComponentUnit(kp1)
201 print " * Component:",kp1
202 print " Name:",compName
203 print " Description:",compDesc
204 print " Unit:",compUnit
206 support = fieldintsub.getSupport()
207 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
208 print " Values:",nbOf
209 for k in range(nbOf):
210 valueI = fieldintsub.getRow(k+1)
211 print " *",valueI[:nbOfComp]
213 fieldintmul = fieldint * fieldint2
214 print "Test of the multiplication of two integer fields with creation a new one"
216 name = fieldintmul.getName()
217 desc = fieldintmul.getDescription()
218 nbOfComp = fieldintmul.getNumberOfComponents()
219 print " Field",name," : ",desc
220 print " Number Of Components:",nbOfComp
221 iterationNb = fieldintmul.getIterationNumber()
222 orderNb = fieldintmul.getOrderNumber()
223 time = fieldintmul.getTime()
224 print " Iteration Number",iterationNb
225 print " Order Number",orderNb
227 for k in range(nbOfComp):
229 compName = fieldintmul.getComponentName(kp1)
230 compDesc = fieldintmul.getComponentDescription(kp1)
231 compUnit = fieldintmul.getMEDComponentUnit(kp1)
232 print " * Component:",kp1
233 print " Name:",compName
234 print " Description:",compDesc
235 print " Unit:",compUnit
237 support = fieldintmul.getSupport()
238 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
239 print " Values:",nbOf
240 for k in range(nbOf):
241 valueI = fieldintmul.getRow(k+1)
242 print " *",valueI[:nbOfComp]
245 fieldintdiv = fieldint / fieldint2
246 print "Test of the division of two integer fields with creation a new one"
248 name = fieldintdiv.getName()
249 desc = fieldintdiv.getDescription()
250 nbOfComp = fieldintdiv.getNumberOfComponents()
251 print " Field",name," : ",desc
252 print " Number Of Components:",nbOfComp
253 iterationNb = fieldintdiv.getIterationNumber()
254 orderNb = fieldintdiv.getOrderNumber()
255 time = fieldintdiv.getTime()
256 print " Iteration Number",iterationNb
257 print " Order Number",orderNb
259 for k in range(nbOfComp):
261 compName = fieldintdiv.getComponentName(kp1)
262 compDesc = fieldintdiv.getComponentDescription(kp1)
263 compUnit = fieldintdiv.getMEDComponentUnit(kp1)
264 print " * Component:",kp1
265 print " Name:",compName
266 print " Description:",compDesc
267 print " Unit:",compUnit
269 support = fieldintdiv.getSupport()
270 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
271 print " Values:",nbOf
272 for k in range(nbOf):
273 valueI = fieldintdiv.getRow(k+1)
274 print " *",valueI[:nbOfComp]
277 print "fieldintdiv = fieldint / fieldint2 catch/except error"
278 elif type == MED_REEL64:
279 fielddouble = createFieldDoubleFromField(field)
281 fielddouble.getSupport().update()
282 name = fielddouble.getName()
283 desc = fielddouble.getDescription()
284 nbOfComp = fielddouble.getNumberOfComponents()
285 print " Field",name," : ",desc
286 print " Number Of Components:",nbOfComp
287 iterationNb = fielddouble.getIterationNumber()
288 orderNb = fielddouble.getOrderNumber()
289 time = fielddouble.getTime()
290 print " Iteration Number",iterationNb
291 print " Order Number",orderNb
293 print "Norme 2 : ", fielddouble.norm2()
294 print "Norme Max : ", fielddouble.normMax()
295 print "try sobolev",fielddouble.getSupport().getEntity()
296 if fielddouble.getSupport().getEntity()!=MED_NODE:
298 fielddouble_vol=fielddouble.getSupport().getMesh().getVolume(fielddouble.getSupport())
299 elif (spaceDim == 2):
300 fielddouble_vol=fielddouble.getSupport().getMesh().getArea(fielddouble.getSupport())
301 print "Norme L1 : ", fielddouble.normL1()
302 print "Norme L2 : ", fielddouble.normL2()
303 print "Norme L2(vol) : ", fielddouble.normL2(fielddouble_vol)
305 for k in range(nbOfComp):
307 compName = fielddouble.getComponentName(kp1)
308 compDesc = fielddouble.getComponentDescription(kp1)
309 compUnit = fielddouble.getMEDComponentUnit(kp1)
310 print " * Component:",kp1
311 print " Name:",compName
312 print " Description:",compDesc
313 print " Unit:",compUnit
314 if fielddouble.getSupport().getEntity()!=MED_NODE:
315 print " Norme L1 : ", fielddouble.normL1(kp1)
316 print " Norme L2 : ", fielddouble.normL2(kp1)
317 print " Norme L2(vol) : ", fielddouble.normL2(kp1, fielddouble_vol)
319 support = fielddouble.getSupport()
320 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
321 print " Values:",nbOf
322 for k in range(nbOf):
323 valueI = fielddouble.getRow(k+1)
324 print " *",valueI[:nbOfComp]
325 fielddouble2 = FIELDDOUBLE(fielddouble)
327 fielddoubleadd = fielddouble + fielddouble2
328 print "Test of the addition of two double fields with creation a new one"
330 name = fielddoubleadd.getName()
331 desc = fielddoubleadd.getDescription()
332 nbOfComp = fielddoubleadd.getNumberOfComponents()
333 print " Field",name," : ",desc
334 print " Number Of Components:",nbOfComp
335 iterationNb = fielddoubleadd.getIterationNumber()
336 orderNb = fielddoubleadd.getOrderNumber()
337 time = fielddoubleadd.getTime()
338 print " Iteration Number",iterationNb
339 print " Order Number",orderNb
341 for k in range(nbOfComp):
343 compName = fielddoubleadd.getComponentName(kp1)
344 compDesc = fielddoubleadd.getComponentDescription(kp1)
345 compUnit = fielddoubleadd.getMEDComponentUnit(kp1)
346 print " * Component:",kp1
347 print " Name:",compName
348 print " Description:",compDesc
349 print " Unit:",compUnit
351 support = fielddoubleadd.getSupport()
352 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
353 print " Values:",nbOf
354 for k in range(nbOf):
355 valueI = fielddoubleadd.getRow(k+1)
356 print " *",valueI[:nbOfComp]
358 fielddoublesub = fielddouble - fielddouble2
359 print "Test of the substraction of two double fields with creation a new one"
361 name = fielddoublesub.getName()
362 desc = fielddoublesub.getDescription()
363 nbOfComp = fielddoublesub.getNumberOfComponents()
364 print " Field",name," : ",desc
365 print " Number Of Components:",nbOfComp
366 iterationNb = fielddoublesub.getIterationNumber()
367 orderNb = fielddoublesub.getOrderNumber()
368 time = fielddoublesub.getTime()
369 print " Iteration Number",iterationNb
370 print " Order Number",orderNb
372 for k in range(nbOfComp):
374 compName = fielddoublesub.getComponentName(kp1)
375 compDesc = fielddoublesub.getComponentDescription(kp1)
376 compUnit = fielddoublesub.getMEDComponentUnit(kp1)
377 print " * Component:",kp1
378 print " Name:",compName
379 print " Description:",compDesc
380 print " Unit:",compUnit
382 support = fielddoublesub.getSupport()
383 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
384 print " Values:",nbOf
385 for k in range(nbOf):
386 valueI = fielddoublesub.getRow(k+1)
387 print " *",valueI[:nbOfComp]
389 fielddoublemul = fielddouble * fielddouble2
390 print "Test of the multiplication of two double fields with creation a new one"
392 name = fielddoublemul.getName()
393 desc = fielddoublemul.getDescription()
394 nbOfComp = fielddoublemul.getNumberOfComponents()
395 print " Field",name," : ",desc
396 print " Number Of Components:",nbOfComp
397 iterationNb = fielddoublemul.getIterationNumber()
398 orderNb = fielddoublemul.getOrderNumber()
399 time = fielddoublemul.getTime()
400 print " Iteration Number",iterationNb
401 print " Order Number",orderNb
403 for k in range(nbOfComp):
405 compName = fielddoublemul.getComponentName(kp1)
406 compDesc = fielddoublemul.getComponentDescription(kp1)
407 compUnit = fielddoublemul.getMEDComponentUnit(kp1)
408 print " * Component:",kp1
409 print " Name:",compName
410 print " Description:",compDesc
411 print " Unit:",compUnit
413 support = fielddoublemul.getSupport()
414 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
415 print " Values:",nbOf
416 for k in range(nbOf):
417 valueI = fielddoublemul.getRow(k+1)
418 print " *",valueI[:nbOfComp]
421 fielddoublediv = fielddouble / fielddouble2
422 print "Test of the division of two double fields with creation a new one"
424 name = fielddoublediv.getName()
425 desc = fielddoublediv.getDescription()
426 nbOfComp = fielddoublediv.getNumberOfComponents()
427 print " Field",name," : ",desc
428 print " Number Of Components:",nbOfComp
429 iterationNb = fielddoublediv.getIterationNumber()
430 orderNb = fielddoublediv.getOrderNumber()
431 time = fielddoublediv.getTime()
432 print " Iteration Number",iterationNb
433 print " Order Number",orderNb
435 for k in range(nbOfComp):
437 compName = fielddoublediv.getComponentName(kp1)
438 compDesc = fielddoublediv.getComponentDescription(kp1)
439 compUnit = fielddoublediv.getMEDComponentUnit(kp1)
440 print " * Component:",kp1
441 print " Name:",compName
442 print " Description:",compDesc
443 print " Unit:",compUnit
445 support = fielddoublediv.getSupport()
446 nbOf = support.getNumberOfElements(MED_ALL_ELEMENTS)
447 print " Values:",nbOf
448 for k in range(nbOf):
449 valueI = fielddoublediv.getRow(k+1)
450 print " *",valueI[:nbOfComp]
452 print "fielddoublediv = fielddouble / fielddouble2 catch/except error"
454 print " !!!! Bad type of Field !!!!"
457 print "TESTS OPERATIONS SUR FIELDDOUBLE : "
460 fielddoublesub = fielddouble-fielddouble2
461 fielddoublemul = fielddouble*fielddouble2
464 fielddoublediv = fielddouble/fielddouble2
468 fielddoubleasso = fielddouble+fielddouble2*fielddouble2
469 fielddoubleSP=createFieldDoubleScalarProduct(fielddouble, fielddouble2)
472 print " f1 : ",fielddouble.getValue()
473 print " f2 : ",fielddouble2.getValue()
474 print "--------------------------------------------------------------------------------------------------------------"
475 print " + : ",fielddoubleadd.getValue()
476 print " - : ",fielddoublesub.getValue()
477 print " * : ",fielddoublemul.getValue()
480 print " / : ",fielddoublediv.getValue()
484 fielddouble+=fielddouble2;
485 print " += : ",fielddouble.getValue()
486 fielddouble-=fielddouble2;
487 print " -= : ",fielddouble.getValue()
488 fielddouble*=fielddouble2;
489 print " *= : ",fielddouble.getValue()
490 fielddouble/=fielddouble2;
491 print " /= : ",fielddouble.getValue()
492 print "f1+f2*f2: ",fielddoubleasso.getValue()
493 fielddouble.applyLin(4,1);
494 print " 4f1+1 : ",fielddouble.getValue()
495 print " f1.f2 : ",fielddoubleSP.getValue()
496 fielddouble2.applyPyFunc(add_one)
497 print " CB:f2+1: ",fielddouble2.getValue()
500 print "TESTS OPERATIONS SUR FIELDINT : "
503 fieldintadd = fieldint+fieldint2
504 fieldintsub = fieldint-fieldint2
505 fieldintmul = fieldint*fieldint2
508 fieldintdiv = fieldint/fieldint2
512 fieldintasso = fieldint+fieldint*fieldint
513 fieldintSP=createFieldIntScalarProduct(fieldint, fieldint2)
515 print " f1 : ",fieldint.getValue()
516 print " f2 : ",fieldint2.getValue()
517 print "--------------------------------------------------------------------------------------------------------------"
518 print " + : ",fieldintadd.getValue()
519 print " - : ",fieldintsub.getValue()
520 print " * : ",fieldintmul.getValue()
523 print " / : ",fieldintdiv.getValue()
528 print " += : ",fieldint.getValue()
530 print " -= : ",fieldint.getValue()
532 print " *= : ",fieldint.getValue()
534 print " /= : ",fieldint.getValue()
535 print "f1+f2*f2: ",fieldintasso.getValue()
536 fieldint.applyLin(4,1);
537 print " 4f1+1 : ",fieldint.getValue()
538 print " f1.f2 : ",fieldintSP.getValue()
539 fieldint2.applyPyFunc(add_one)
540 print " CB:f2+1: ",fieldint2.getValue()
542 fieldint.setName(myname)
543 name = fieldint.getName()
544 print "test de setName : ",name
545 print "END of the Pyhton script ..... Ctrl D to exit"