2 # This script does not work at the moment !!!
6 ###################################################################################
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
11 ###################################################################################
13 from libMEDMEM_Swig import *
17 #befor running this script, please be sure about the path the file fileName
19 filePath=os.environ["MED_ROOT_DIR"]
20 filePath=filePath+"/share/salome/resources/"
22 medFile = filePath + "carre_en_quad4_seg2.med"
23 #medFile = filePath + "cube_hexa8_quad4.med"
37 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
40 mdDriver.readFileStruct()
43 nbMeshes = md.getNumberOfMeshes()
45 nbFields = md.getNumberOfFields()
47 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
50 print "Mesh(es) Name(s) is(are) "
52 for i in range(nbMeshes):
53 mesh_name = md.getMeshName(i)
57 print "Field(s) Name(s) is(are) "
59 for i in range(nbFields):
60 field_name = md.getFieldName(i)
61 print " - ",field_name
66 print "Mesh(es) Analysis "
67 for i in range(nbMeshes):
68 mesh_name = md.getMeshName(i)
69 mesh = md.getMesh(mesh_name)
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)"
84 for j in range(nbFam):
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:"
108 print " -Is on all entities"
110 nbOfTypes = family.getNumberOfTypes()
111 types = family.getTypes()
112 print " -Number Of Types:",nbOfTypes
113 for k in range(nbOfTypes):
115 nbOfElmtsOfType = family.getNumberOfElements(type)
116 number = family.getNumber(type)
118 print " * Number",number[0:nbOfElmtsOfType]
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):
128 fieldCompName = "comp1"
129 fieldCompDesc = "desc1"
130 fieldCompUnit = "unit1"
132 fieldCompName = "comp2"
133 fieldCompDesc = "desc2"
134 fieldCompUnit = "unit2"
136 fieldCompName = "comp2"
137 fieldCompDesc = "desc2"
138 fieldCompUnit = "unit2"
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):
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
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 ..!"
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]
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]
184 print " Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
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]
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]
205 print " Randomly set (via setValueI) and get (via getValueI) to check with the same mode ..!"
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])
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]
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])
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]
232 print " Randomly set (via setValueI) and get (via getValueI) to check with different mode ..!"
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])
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]
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])
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]