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