Salome HOME
NRI : Merge from V1_2.
[modules/med.git] / src / MEDMEM_SWIG / med_test3.py
1 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
2 #
3 #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5
6 #  This library is free software; you can redistribute it and/or 
7 #  modify it under the terms of the GNU Lesser General Public 
8 #  License as published by the Free Software Foundation; either 
9 #  version 2.1 of the License. 
10
11 #  This library is distributed in the hope that it will be useful, 
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 #  Lesser General Public License for more details. 
15
16 #  You should have received a copy of the GNU Lesser General Public 
17 #  License along with this library; if not, write to the Free Software 
18 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19
20 #  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 #
22 #
23 #
24 #  File   : med_test3.py
25 #  Module : MED
26
27 from libMEDMEM_Swig import *
28 from random import *
29
30 medFile = "carre_en_quad4_seg2.med"
31 #medFile = "cube_hexa8_quad4.med"
32
33 def print_ord(i):
34     if i == 0:
35         return 'first'
36     elif i == 1:
37         return 'second'
38     elif i == 2:
39         return 'third'
40     else:
41         return `i`+'th'
42
43 md = MED()
44
45 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
46
47 mdDriver.open()
48 mdDriver.readFileStruct()
49 mdDriver.close()
50
51 nbMeshes = md.getNumberOfMeshes()
52
53 nbFields = md.getNumberOfFields()
54
55 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
56
57 if (nbMeshes>0):
58     print "Mesh(es) Name(s) is(are) "
59
60     for i in range(nbMeshes):
61         mesh_name = md.getMeshName(i)
62         print "   - ",mesh_name
63
64 if (nbFields>0):
65     print "Field(s) Name(s) is(are) "
66
67     for i in range(nbFields):
68         field_name = md.getFieldName(i)
69         print "   - ",field_name
70
71 print ""
72
73 if (nbMeshes>0):
74     print "Mesh(es) Analysis "
75     for i in range(nbMeshes):
76         mesh_name = md.getMeshName(i)
77         mesh = md.getMesh(mesh_name)
78         mesh.read()
79         spaceDim = mesh.getSpaceDimension()
80         for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
81             nbFam = mesh.getNumberOfFamilies(entity)
82             if (entity == MED_NODE) & (nbFam > 0):
83                 print "This mesh has",nbFam,"Node Family(ies)"
84             elif (entity == MED_CELL) & (nbFam > 0):
85                 print "This mesh has",nbFam,"Cell Family(ies)"
86             elif (entity == MED_FACE) & (nbFam > 0):
87                 print "This mesh has",nbFam,"Face Family(ies)"
88             elif (entity == MED_EDGE) & (nbFam > 0):
89                 print "This mesh has",nbFam,"Edge Family(ies)"
90
91             if nbFam > 0:
92                 for j in range(nbFam):
93                     print ""
94                     family = mesh.getFamily(entity,j+1)
95                     familyName = family.getName()
96                     familyDescription = family.getDescription()
97                     familyEntity = family.getEntity()
98                     familyBool = family.isOnAllElements()
99                     print "  -Name:",familyName
100                     print "  -Description:",familyDescription
101                     print "  -Entity:",familyEntity
102                     familyIdentifier = family.getIdentifier()
103                     nbOfAtt = family.getNumberOfAttributes()
104                     print "  -Identifier:",familyIdentifier
105                     print "  -Number Of Attributes:",nbOfAtt
106                     attributesids = family.getAttributesIdentifiers()
107                     attributesvals = family.getAttributesValues()
108                     for k in range(nbOfAtt):
109                         print "    * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
110                     nbOfGrp = family.getNumberOfGroups()
111                     print "  -Number Of Groups:",nbOfGrp
112                     for k in range(nbOfGrp):
113                         print "    * Group:",family.getGroupName(k+1)
114                     print "  -Entities list:"
115                     if (familyBool):
116                         print "  -Is on all entities"
117                     else:
118                         nbOfTypes = family.getNumberOfTypes()
119                         types = family.getTypes()
120                         print "  -Number Of Types:",nbOfTypes
121                         for k in range(nbOfTypes):
122                             type = types[k]
123                             nbOfElmtsOfType = family.getNumberOfElements(type)
124                             number = family.getNumber(type)
125                             print "    * Type",type
126                             print "    * Number",number[0:nbOfElmtsOfType]
127                         print ""
128                         print "    * Getting an Integer Field on the family ",familyName
129                         fieldFamilyIntg = FIELDINT(family,spaceDim)
130                         fieldFamilyIntg.setIterationNumber(0)
131                         fieldFamilyIntg.setOrderNumber(0)
132                         fieldFamilyIntg.setTime(0.0)
133                         for kcomp in range(spaceDim):
134                             if kcomp == 0:
135                                 fieldCompName = "comp1"
136                                 fieldCompDesc = "desc1"
137                                 fieldCompUnit = "unit1"
138                             if kcomp == 1:
139                                 fieldCompName = "comp2"
140                                 fieldCompDesc = "desc2"
141                                 fieldCompUnit = "unit2"
142                             if kcomp == 2:
143                                 fieldCompName = "comp2"
144                                 fieldCompDesc = "desc2"
145                                 fieldCompUnit = "unit2"
146
147                             kcomp1 = kcomp+1
148                             fieldFamilyIntg.setComponentName(kcomp1,fieldCompName)
149                             fieldFamilyIntg.setComponentDescription(kcomp1,fieldCompDesc)
150                             fieldFamilyIntg.setMEDComponentUnit(kcomp1,fieldCompUnit)
151                         fieldFamilyName = "Integer Field on "+familyName
152                         fieldFamilyIntg.setName(fieldFamilyName)
153                         field_name = fieldFamilyIntg.getName()
154                         type_field = fieldFamilyIntg.getValueType()
155                         nbOfComp = fieldFamilyIntg.getNumberOfComponents()
156                         print "      The field",field_name,"is with the type",type_field
157                         print "      It has",nbOfComp,"Component(s)"
158                         for kcomp in range(nbOfComp):
159                             kcomp1 = kcomp+1
160                             compName = fieldFamilyIntg.getComponentName(kcomp1)
161                             compDesc = fieldFamilyIntg.getComponentDescription(kcomp1)
162                             compUnit = fieldFamilyIntg.getMEDComponentUnit(kcomp1)
163                             print "      * Component:",kcomp1
164                             print "          Name:",compName
165                             print "          Description:",compDesc
166                             print "          Unit:",compUnit
167
168                         nbOf = fieldFamilyIntg.getSupport().getNumberOfElements(MED_ALL_ELEMENTS)
169                         print "      Values:",nbOf
170                         print "      Randomly set (via setValue) and get (via getValue) to check with the same mode ..!"
171                         value = []
172                         for k in range(nbOf*nbOfComp):
173                             value.append(randint(0,100))
174                         print "      the mode is full interlace"
175                         mode = MED_FULL_INTERLACE
176                         fieldFamilyIntg.setValue(mode,value)
177                         valueverif = fieldFamilyIntg.getValue(mode)
178                         for k in range(nbOf*nbOfComp):
179                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
180                         print ""
181                         value = []
182                         for k in range(nbOf*nbOfComp):
183                             value.append(randint(0,100))
184                         print "      the mode is no interlace"
185                         mode = MED_NO_INTERLACE
186                         fieldFamilyIntg.setValue(mode,value)
187                         valueverif = fieldFamilyIntg.getValue(mode)
188                         for k in range(nbOf*nbOfComp):
189                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
190                         print ""
191                         print "      Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
192                         value = []
193                         for k in range(nbOf*nbOfComp):
194                             value.append(randint(0,100))
195                         print "      the mode for set is full interlace and no interlace for get"
196                         mode_full = MED_FULL_INTERLACE
197                         mode_no = MED_NO_INTERLACE
198                         fieldFamilyIntg.setValue(mode_full,value)
199                         valueverif = fieldFamilyIntg.getValue(mode_no)
200                         for k in range(nbOf*nbOfComp):
201                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
202                         print ""
203                         value = []
204                         for k in range(nbOf*nbOfComp):
205                             value.append(randint(0,100))
206                         print "      the mode for set is no interlace and full interlace for get"
207                         fieldFamilyIntg.setValue(mode_no,value)
208                         valueverif = fieldFamilyIntg.getValue(mode_full)
209                         for k in range(nbOf*nbOfComp):
210                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
211                         print ""
212                         print "      Randomly set (via setValueI) and get (via getValueI) to check with the same mode ..!"
213                         value = []
214                         for k in range(nbOf*nbOfComp):
215                             value.append(randint(0,100))
216                         print "      the mode is full interlace"
217                         mode = MED_FULL_INTERLACE
218                         for k in range(nbOf):
219                             fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
220                         valueverif = []
221                         for k in range(nbOf):
222                             valueverif.extend(fieldFamilyIntg.getValueI(mode,(k+1)))
223                         for k in range(nbOf*nbOfComp):
224                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
225                         print ""
226                         value = []
227                         for k in range(nbOf*nbOfComp):
228                             value.append(randint(0,100))
229                         print "      the mode is no interlace"
230                         mode = MED_NO_INTERLACE
231                         for k in range(nbOfComp):
232                             fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOf:(k+1)*nbOf])
233                         valueverif = []
234                         for k in range(nbOfComp):
235                             valueverif.extend(fieldFamilyIntg.getValueI(mode,(k+1)))
236                         for k in range(nbOf*nbOfComp):
237                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
238                         print ""
239                         print "      Randomly set (via setValueI) and get (via getValueI) to check with different mode ..!"
240                         value = []
241                         for k in range(nbOf*nbOfComp):
242                             value.append(randint(0,100))
243                         print "      the mode for set is full interlace and no interlace for get"
244                         mode_full = MED_FULL_INTERLACE
245                         mode_no = MED_NO_INTERLACE
246                         for k in range(nbOf):
247                             fieldFamilyIntg.setValueI(mode_full,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
248                         valueverif = []
249                         for k in range(nbOfComp):
250                             valueverif.extend(fieldFamilyIntg.getValueI(mode_no,(k+1)))
251                         for k in range(nbOf*nbOfComp):
252                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
253                         print ""
254                         value = []
255                         for k in range(nbOf*nbOfComp):
256                             value.append(randint(0,100))
257                         print "      the mode for set is no interlace and full interlace for get"
258                         for k in range(nbOfComp):
259                             fieldFamilyIntg.setValueI(mode_no,(k+1),value[k*nbOf:(k+1)*nbOf])
260                         valueverif = []
261                         for k in range(nbOf):
262                             valueverif.extend(fieldFamilyIntg.getValueI(mode_full,(k+1)))
263                         for k in range(nbOf*nbOfComp):
264                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
265                         print ""