]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM_SWIG/med_opfield_test.py
Salome HOME
MEDMEM suppression
[modules/med.git] / src / MEDMEM_SWIG / med_opfield_test.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
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.
11 #
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.
16 #
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
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 ############################################################################
25 # this Python script is testing all operations between FIELD(DOUBLE,INT)
26 ############################################################################
27 #
28 from libMEDMEM_Swig import *
29 from random import *
30 import os
31 #
32 #befor running this script, please be sure about the path the file fileName
33 #
34 filePath=os.environ["MED_ROOT_DIR"]
35 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
36
37 medFile = os.path.join( filePath, "pointe.med" )
38
39 def add_one(i):
40     return i+1
41
42 def print_ord(i):
43     if i == 0:
44         return 'first'
45     elif i == 1:
46         return 'second'
47     elif i == 2:
48         return 'third'
49     else:
50         return `i`+'th'
51
52 md = MEDFILEBROWSER(medFile)
53 nbMeshes = md.getNumberOfMeshes()
54 nbFields = md.getNumberOfFields()
55
56 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
57
58 if (nbMeshes>0):
59     print "Mesh(es) Name(s) is(are) "
60
61     for i in range(nbMeshes):
62         mesh_name = md.getMeshName(i)
63         print "   - ",mesh_name
64
65 if (nbFields>0):
66     print "Field(s) Name(s) is(are) "
67
68     for i in range(nbFields):
69         field_name = md.getFieldName(i)
70         print "   - ",field_name
71
72 print ""
73
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"
80
81 if (nbFields>0):
82     print ""
83     print "Field(s) Analysis "
84     for i in range(nbFields):
85         print ""
86         field_name = md.getFieldName(i)
87         dtits = md.getFieldIteration(field_name)
88         nbOfIt = len(dtits)
89         print "The",print_ord(i),"field is",field_name,"with",nbOfIt,"iteration(s)"
90         for dtitfield in dtits:
91             print ""
92             dt = dtitfield.getdt()
93             it = dtitfield.getit()
94             type = md.getFieldType(field_name)
95             print "     * Iteration:",dt,"Order number:",it,"Type:",type
96             if type == MED_INT32:
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
108                 print "     Time",time
109                 print "Norme  2  : ", fieldint.norm2()
110                 print "Norme Max : ", fieldint.normMax()
111
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)
117
118                 for k in range(nbOfComp):
119                     kp1 = k+1
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)
131
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)
139                 print ""
140                 fieldintadd = fieldint + fieldint2
141                 print "Test of the addition of two integer fields with creation a new one"
142                 print ""
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
153                 print "     Time",time
154                 for k in range(nbOfComp):
155                     kp1 = k+1
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
163
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]
170                 print ""
171                 fieldintsub = fieldint - fieldint2
172                 print "Test of the substraction of two integer fields with creation a new one"
173                 print ""
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
184                 print "     Time",time
185                 for k in range(nbOfComp):
186                     kp1 = k+1
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
194
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]
201                 print ""
202                 fieldintmul = fieldint * fieldint2
203                 print "Test of the multiplication of two integer fields with creation a new one"
204                 print ""
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
215                 print "     Time",time
216                 for k in range(nbOfComp):
217                     kp1 = k+1
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
225
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]
232                 print ""
233                 try:
234                     fieldintdiv = fieldint / fieldint2
235                     print "Test of the division of two integer fields with creation a new one"
236                     print ""
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
247                     print "     Time",time
248                     for k in range(nbOfComp):
249                         kp1 = k+1
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
257
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]
264
265                 except:
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
279                 print "     Time",time
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:
284                     if (spaceDim == 3) :
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)
291                     
292                 for k in range(nbOfComp):
293                     kp1 = k+1
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)
305
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)
313                 print ""
314                 fielddoubleadd = fielddouble + fielddouble2
315                 print "Test of the addition of two double fields with creation a new one"
316                 print ""
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
327                 print "     Time",time
328                 for k in range(nbOfComp):
329                     kp1 = k+1
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
337
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]
344                 print ""
345                 fielddoublesub = fielddouble - fielddouble2
346                 print "Test of the substraction of two double fields with creation a new one"
347                 print ""
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
358                 print "     Time",time
359                 for k in range(nbOfComp):
360                     kp1 = k+1
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
368
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]
375                 print ""
376                 fielddoublemul = fielddouble * fielddouble2
377                 print "Test of the multiplication of two double fields with creation a new one"
378                 print ""
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
389                 print "     Time",time
390                 for k in range(nbOfComp):
391                     kp1 = k+1
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
399
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]
406                 print ""
407                 try:
408                     fielddoublediv = fielddouble / fielddouble2
409                     print "Test of the division of two double fields with creation a new one"
410                     print ""
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
421                     print "     Time",time
422                     for k in range(nbOfComp):
423                         kp1 = k+1
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
431
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]
438                 except:
439                     print "fielddoublediv = fielddouble / fielddouble2 catch/except error"
440             else:
441                 print "  !!!! Bad type of Field !!!!"
442
443 print ""
444 print "TESTS OPERATIONS SUR FIELDDOUBLE : "
445
446
447 fielddoublesub = fielddouble-fielddouble2
448 fielddoublemul = fielddouble*fielddouble2
449
450 try:
451     fielddoublediv = fielddouble/fielddouble2
452 except:
453     pass
454
455 fielddoubleasso = fielddouble+fielddouble2*fielddouble2
456 fielddoubleSP=createFieldDoubleScalarProduct(fielddouble, fielddouble2)
457
458
459 print " f1     : ",fielddouble.getValue()
460 print " f2     : ",fielddouble2.getValue()
461 print "--------------------------------------------------------------------------------------------------------------"
462 print "  +     : ",fielddoubleadd.getValue()
463 print "  -     : ",fielddoublesub.getValue()
464 print "  *     : ",fielddoublemul.getValue()
465
466 try:
467     print "  /     : ",fielddoublediv.getValue()
468 except:
469     pass
470
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()
485
486 print ""
487 print "TESTS OPERATIONS SUR FIELDINT : "
488
489
490 fieldintadd = fieldint+fieldint2
491 fieldintsub = fieldint-fieldint2
492 fieldintmul = fieldint*fieldint2
493
494 try:
495     fieldintdiv = fieldint/fieldint2
496 except:
497     pass
498
499 fieldintasso = fieldint+fieldint*fieldint
500 fieldintSP=createFieldIntScalarProduct(fieldint, fieldint2)
501
502 print " f1     : ",fieldint.getValue()
503 print " f2     : ",fieldint2.getValue()
504 print "--------------------------------------------------------------------------------------------------------------"
505 print "  +     : ",fieldintadd.getValue()
506 print "  -     : ",fieldintsub.getValue()
507 print "  *     : ",fieldintmul.getValue()
508
509 try:
510     print "  /     : ",fieldintdiv.getValue()
511 except:
512     pass
513
514 fieldint+=fieldint2;
515 print "  +=    : ",fieldint.getValue()
516 fieldint-=fieldint2;
517 print "  -=    : ",fieldint.getValue()
518 fieldint*=fieldint2;
519 print "  *=    : ",fieldint.getValue()
520 fieldint/=fieldint2;
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()
528 myname="toto"
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"