Salome HOME
Building a version which will be tagged PreV2_0_0 working with KERNEL V1_4_0.
[modules/med.git] / src / MEDMEM_SWIG / med_test3.py
1 ###################################################################################
2 #
3 # This Python script is parsing a MED file using MED Memory from SALOME platform:
4 # It tests the setValue(I) function on MED fields
5 #
6 ###################################################################################
7
8 from libMEDMEM_Swig import *
9 from random import *
10 import os
11 #
12 #befor running this script, please be sure about the path the file fileName
13 #
14 filePath=os.environ["MED_ROOT_DIR"]
15 filePath=filePath+"/share/salome/resources/"
16
17 medFile = filePath + "carre_en_quad4_seg2.med"
18 #medFile = filePath + "cube_hexa8_quad4.med"
19
20 def print_ord(i):
21     if i == 0:
22         return 'first'
23     elif i == 1:
24         return 'second'
25     elif i == 2:
26         return 'third'
27     else:
28         return `i`+'th'
29
30 md = MED()
31
32 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
33
34 mdDriver.open()
35 mdDriver.readFileStruct()
36 mdDriver.close()
37
38 nbMeshes = md.getNumberOfMeshes()
39
40 nbFields = md.getNumberOfFields()
41
42 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
43
44 if (nbMeshes>0):
45     print "Mesh(es) Name(s) is(are) "
46
47     for i in range(nbMeshes):
48         mesh_name = md.getMeshName(i)
49         print "   - ",mesh_name
50
51 if (nbFields>0):
52     print "Field(s) Name(s) is(are) "
53
54     for i in range(nbFields):
55         field_name = md.getFieldName(i)
56         print "   - ",field_name
57
58 print ""
59
60 if (nbMeshes>0):
61     print "Mesh(es) Analysis "
62     for i in range(nbMeshes):
63         mesh_name = md.getMeshName(i)
64         mesh = md.getMesh(mesh_name)
65         mesh.read()
66         spaceDim = mesh.getSpaceDimension()
67         for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
68             nbFam = mesh.getNumberOfFamilies(entity)
69             if (entity == MED_NODE) & (nbFam > 0):
70                 print "This mesh has",nbFam,"Node Family(ies)"
71             elif (entity == MED_CELL) & (nbFam > 0):
72                 print "This mesh has",nbFam,"Cell Family(ies)"
73             elif (entity == MED_FACE) & (nbFam > 0):
74                 print "This mesh has",nbFam,"Face Family(ies)"
75             elif (entity == MED_EDGE) & (nbFam > 0):
76                 print "This mesh has",nbFam,"Edge Family(ies)"
77
78             if nbFam > 0:
79                 for j in range(nbFam):
80                     print ""
81                     family = mesh.getFamily(entity,j+1)
82                     familyName = family.getName()
83                     familyDescription = family.getDescription()
84                     familyEntity = family.getEntity()
85                     familyBool = family.isOnAllElements()
86                     print "  -Name:",familyName
87                     print "  -Description:",familyDescription
88                     print "  -Entity:",familyEntity
89                     familyIdentifier = family.getIdentifier()
90                     nbOfAtt = family.getNumberOfAttributes()
91                     print "  -Identifier:",familyIdentifier
92                     print "  -Number Of Attributes:",nbOfAtt
93                     attributesids = family.getAttributesIdentifiers()
94                     attributesvals = family.getAttributesValues()
95                     for k in range(nbOfAtt):
96                         print "    * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
97                     nbOfGrp = family.getNumberOfGroups()
98                     print "  -Number Of Groups:",nbOfGrp
99                     for k in range(nbOfGrp):
100                         print "    * Group:",family.getGroupName(k+1)
101                     print "  -Entities list:"
102                     if (familyBool):
103                         print "  -Is on all entities"
104                     else:
105                         nbOfTypes = family.getNumberOfTypes()
106                         types = family.getTypes()
107                         print "  -Number Of Types:",nbOfTypes
108                         for k in range(nbOfTypes):
109                             type = types[k]
110                             nbOfElmtsOfType = family.getNumberOfElements(type)
111                             number = family.getNumber(type)
112                             print "    * Type",type
113                             print "    * Number",number[0:nbOfElmtsOfType]
114                         print ""
115                         print "    * Getting an Integer Field on the family ",familyName
116                         fieldFamilyIntg = FIELDINT(family,spaceDim)
117                         fieldFamilyIntg.setIterationNumber(0)
118                         fieldFamilyIntg.setOrderNumber(0)
119                         fieldFamilyIntg.setTime(0.0)
120                         for kcomp in range(spaceDim):
121                             if kcomp == 0:
122                                 fieldCompName = "comp1"
123                                 fieldCompDesc = "desc1"
124                                 fieldCompUnit = "unit1"
125                             if kcomp == 1:
126                                 fieldCompName = "comp2"
127                                 fieldCompDesc = "desc2"
128                                 fieldCompUnit = "unit2"
129                             if kcomp == 2:
130                                 fieldCompName = "comp2"
131                                 fieldCompDesc = "desc2"
132                                 fieldCompUnit = "unit2"
133
134                             kcomp1 = kcomp+1
135                             fieldFamilyIntg.setComponentName(kcomp1,fieldCompName)
136                             fieldFamilyIntg.setComponentDescription(kcomp1,fieldCompDesc)
137                             fieldFamilyIntg.setMEDComponentUnit(kcomp1,fieldCompUnit)
138                         fieldFamilyName = "Integer Field on "+familyName
139                         fieldFamilyIntg.setName(fieldFamilyName)
140                         field_name = fieldFamilyIntg.getName()
141                         type_field = fieldFamilyIntg.getValueType()
142                         nbOfComp = fieldFamilyIntg.getNumberOfComponents()
143                         print "      The field",field_name,"is with the type",type_field
144                         print "      It has",nbOfComp,"Component(s)"
145                         for kcomp in range(nbOfComp):
146                             kcomp1 = kcomp+1
147                             compName = fieldFamilyIntg.getComponentName(kcomp1)
148                             compDesc = fieldFamilyIntg.getComponentDescription(kcomp1)
149                             compUnit = fieldFamilyIntg.getMEDComponentUnit(kcomp1)
150                             print "      * Component:",kcomp1
151                             print "          Name:",compName
152                             print "          Description:",compDesc
153                             print "          Unit:",compUnit
154
155                         nbOf = fieldFamilyIntg.getSupport().getNumberOfElements(MED_ALL_ELEMENTS)
156                         print "      Values:",nbOf
157                         print "      Randomly set (via setValue) and get (via getValue) to check with the same mode ..!"
158                         value = []
159                         for k in range(nbOf*nbOfComp):
160                             value.append(randint(0,100))
161                         print "      the mode is full interlace"
162                         mode = MED_FULL_INTERLACE
163                         fieldFamilyIntg.setValue(mode,value)
164                         valueverif = fieldFamilyIntg.getValue(mode)
165                         for k in range(nbOf*nbOfComp):
166                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
167                         print ""
168                         value = []
169                         for k in range(nbOf*nbOfComp):
170                             value.append(randint(0,100))
171                         print "      the mode is no interlace"
172                         mode = MED_NO_INTERLACE
173                         fieldFamilyIntg.setValue(mode,value)
174                         valueverif = fieldFamilyIntg.getValue(mode)
175                         for k in range(nbOf*nbOfComp):
176                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
177                         print ""
178                         print "      Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
179                         value = []
180                         for k in range(nbOf*nbOfComp):
181                             value.append(randint(0,100))
182                         print "      the mode for set is full interlace and no interlace for get"
183                         mode_full = MED_FULL_INTERLACE
184                         mode_no = MED_NO_INTERLACE
185                         fieldFamilyIntg.setValue(mode_full,value)
186                         valueverif = fieldFamilyIntg.getValue(mode_no)
187                         for k in range(nbOf*nbOfComp):
188                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
189                         print ""
190                         value = []
191                         for k in range(nbOf*nbOfComp):
192                             value.append(randint(0,100))
193                         print "      the mode for set is no interlace and full interlace for get"
194                         fieldFamilyIntg.setValue(mode_no,value)
195                         valueverif = fieldFamilyIntg.getValue(mode_full)
196                         for k in range(nbOf*nbOfComp):
197                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
198                         print ""
199                         print "      Randomly set (via setValueI) and get (via getValueI) to check with the same mode ..!"
200                         value = []
201                         for k in range(nbOf*nbOfComp):
202                             value.append(randint(0,100))
203                         print "      the mode is full interlace"
204                         mode = MED_FULL_INTERLACE
205                         for k in range(nbOf):
206                             fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
207                         valueverif = []
208                         for k in range(nbOf):
209                             valueverif.extend(fieldFamilyIntg.getValueI(mode,(k+1)))
210                         for k in range(nbOf*nbOfComp):
211                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
212                         print ""
213                         value = []
214                         for k in range(nbOf*nbOfComp):
215                             value.append(randint(0,100))
216                         print "      the mode is no interlace"
217                         mode = MED_NO_INTERLACE
218                         for k in range(nbOfComp):
219                             fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOf:(k+1)*nbOf])
220                         valueverif = []
221                         for k in range(nbOfComp):
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                         print "      Randomly set (via setValueI) and get (via getValueI) to check with different mode ..!"
227                         value = []
228                         for k in range(nbOf*nbOfComp):
229                             value.append(randint(0,100))
230                         print "      the mode for set is full interlace and no interlace for get"
231                         mode_full = MED_FULL_INTERLACE
232                         mode_no = MED_NO_INTERLACE
233                         for k in range(nbOf):
234                             fieldFamilyIntg.setValueI(mode_full,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
235                         valueverif = []
236                         for k in range(nbOfComp):
237                             valueverif.extend(fieldFamilyIntg.getValueI(mode_no,(k+1)))
238                         for k in range(nbOf*nbOfComp):
239                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
240                         print ""
241                         value = []
242                         for k in range(nbOf*nbOfComp):
243                             value.append(randint(0,100))
244                         print "      the mode for set is no interlace and full interlace for get"
245                         for k in range(nbOfComp):
246                             fieldFamilyIntg.setValueI(mode_no,(k+1),value[k*nbOf:(k+1)*nbOf])
247                         valueverif = []
248                         for k in range(nbOf):
249                             valueverif.extend(fieldFamilyIntg.getValueI(mode_full,(k+1)))
250                         for k in range(nbOf*nbOfComp):
251                             print "      Set/Get Entry * ",value[k]," / ",valueverif[k]
252                         print ""