1 ###################################################################################
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
6 ###################################################################################
8 from libMEDMEM_Swig import *
12 #befor running this script, please be sure about the path the file fileName
14 filePath=os.environ["MED_ROOT_DIR"]
15 filePath=filePath+"/share/salome/resources/"
17 medFile = filePath + "carre_en_quad4_seg2.med"
18 #medFile = filePath + "cube_hexa8_quad4.med"
32 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
35 mdDriver.readFileStruct()
38 nbMeshes = md.getNumberOfMeshes()
40 nbFields = md.getNumberOfFields()
42 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
45 print "Mesh(es) Name(s) is(are) "
47 for i in range(nbMeshes):
48 mesh_name = md.getMeshName(i)
52 print "Field(s) Name(s) is(are) "
54 for i in range(nbFields):
55 field_name = md.getFieldName(i)
56 print " - ",field_name
61 print "Mesh(es) Analysis "
62 for i in range(nbMeshes):
63 mesh_name = md.getMeshName(i)
64 mesh = md.getMesh(mesh_name)
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)"
79 for j in range(nbFam):
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:"
103 print " -Is on all entities"
105 nbOfTypes = family.getNumberOfTypes()
106 types = family.getTypes()
107 print " -Number Of Types:",nbOfTypes
108 for k in range(nbOfTypes):
110 nbOfElmtsOfType = family.getNumberOfElements(type)
111 number = family.getNumber(type)
113 print " * Number",number[0:nbOfElmtsOfType]
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):
122 fieldCompName = "comp1"
123 fieldCompDesc = "desc1"
124 fieldCompUnit = "unit1"
126 fieldCompName = "comp2"
127 fieldCompDesc = "desc2"
128 fieldCompUnit = "unit2"
130 fieldCompName = "comp2"
131 fieldCompDesc = "desc2"
132 fieldCompUnit = "unit2"
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):
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
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 ..!"
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]
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]
178 print " Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
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]
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]
199 print " Randomly set (via setValueI) and get (via getValueI) to check with the same mode ..!"
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])
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]
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])
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]
226 print " Randomly set (via setValueI) and get (via getValueI) to check with different mode ..!"
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])
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]
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])
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]