1 ###################################################################################
3 # This Python script is parsing a MED file using MED Memory from SALOME platform:
4 # It tests the setValue, setRow and setColum functions 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 numberFamily = family.getNumber(MED_ALL_ELEMENTS)
116 print " * Getting an Integer Field on the family ",familyName
117 fieldFamilyIntg = FIELDINT(family,spaceDim)
118 fieldFamilyIntg.setIterationNumber(0)
119 fieldFamilyIntg.setOrderNumber(0)
120 fieldFamilyIntg.setTime(0.0)
121 for kcomp in range(spaceDim):
123 fieldCompName = "comp1"
124 fieldCompDesc = "desc1"
125 fieldCompUnit = "unit1"
127 fieldCompName = "comp2"
128 fieldCompDesc = "desc2"
129 fieldCompUnit = "unit2"
131 fieldCompName = "comp2"
132 fieldCompDesc = "desc2"
133 fieldCompUnit = "unit2"
136 fieldFamilyIntg.setComponentName(kcomp1,fieldCompName)
137 fieldFamilyIntg.setComponentDescription(kcomp1,fieldCompDesc)
138 fieldFamilyIntg.setMEDComponentUnit(kcomp1,fieldCompUnit)
139 fieldFamilyName = "Integer Field on "+familyName
140 fieldFamilyIntg.setName(fieldFamilyName)
141 field_name = fieldFamilyIntg.getName()
142 type_field = fieldFamilyIntg.getValueType()
143 nbOfComp = fieldFamilyIntg.getNumberOfComponents()
144 print " The field",field_name,"is with the type",type_field
145 print " It has",nbOfComp,"Component(s)"
146 for kcomp in range(nbOfComp):
148 compName = fieldFamilyIntg.getComponentName(kcomp1)
149 compDesc = fieldFamilyIntg.getComponentDescription(kcomp1)
150 compUnit = fieldFamilyIntg.getMEDComponentUnit(kcomp1)
151 print " * Component:",kcomp1
152 print " Name:",compName
153 print " Description:",compDesc
154 print " Unit:",compUnit
156 nbOf = fieldFamilyIntg.getSupport().getNumberOfElements(MED_ALL_ELEMENTS)
157 print " Values:",nbOf
158 print " Randomly set (via setValue) and get (via getValue) to check with the same mode ..!"
160 for k in range(nbOf*nbOfComp):
161 value.append(randint(0,100))
162 print " the mode is full interlace"
163 mode = MED_FULL_INTERLACE
164 fieldFamilyIntg.setValue(value)
165 valueverif = fieldFamilyIntg.getValue()
166 for k in range(nbOf*nbOfComp):
167 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
170 for k in range(nbOf*nbOfComp):
171 value.append(randint(0,100))
172 print " the mode is no interlace"
173 mode = MED_NO_INTERLACE
174 fieldFamilyIntg.setValue(value)
175 valueverif = fieldFamilyIntg.getValue()
176 for k in range(nbOf*nbOfComp):
177 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
179 print " Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
181 for k in range(nbOf*nbOfComp):
182 value.append(randint(0,100))
183 print " the mode for set is full interlace and no interlace for get"
184 mode_full = MED_FULL_INTERLACE
185 mode_no = MED_NO_INTERLACE
186 fieldFamilyIntg.setValue(value)
187 valueverif = fieldFamilyIntg.getValue()
188 for k in range(nbOf*nbOfComp):
189 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
192 for k in range(nbOf*nbOfComp):
193 value.append(randint(0,100))
194 print " the mode for set is no interlace and full interlace for get"
195 fieldFamilyIntg.setValue(value)
196 valueverif = fieldFamilyIntg.getValue()
197 for k in range(nbOf*nbOfComp):
198 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
200 print " Randomly set (via setRow/setColumn) and get (via getRow/getColumn) to check with the same mode ..!"
202 for k in range(nbOf*nbOfComp):
203 value.append(randint(0,100))
204 mode = MED_FULL_INTERLACE
205 print " the mode is full interlace ", mode
206 print " the field interlacing mode ",fieldFamilyIntg.getInterlacingType()
207 for k in range(nbOf):
208 valInd = numberFamily[k]
209 fieldFamilyIntg.setRow(valInd,value[k*nbOfComp:(k+1)*nbOfComp])
211 for k in range(nbOf):
212 valInd = numberFamily[k]
213 valueverif.extend(fieldFamilyIntg.getRow(valInd))
214 for k in range(nbOf*nbOfComp):
215 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
218 for k in range(nbOf*nbOfComp):
219 value.append(randint(0,100))
220 mode = MED_NO_INTERLACE
221 print " the mode is no interlace ", mode
222 print " the field interlacing mode ",fieldFamilyIntg.getInterlacingType()
223 for k in range(nbOf):
224 valInd = numberFamily[k]
225 fieldFamilyIntg.setRow(valInd,value[k*nbOfComp:(k+1)*nbOfComp])
226 fieldFamilyIntgOtherMode = createFieldIntConvertNoInterlace(fieldFamilyIntg)
228 for k in range(nbOfComp):
229 valueverif.extend(fieldFamilyIntgOtherMode.getColumn(k+1))
230 for k in range(nbOf*nbOfComp):
231 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
233 print "END of the Pyhton script ..... Ctrl D to exit"