1 # MED MEDMEM_SWIG : binding of C++ implementation and Python
3 # Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Lesser General Public
8 # License as published by the Free Software Foundation; either
9 # version 2.1 of the License.
11 # This library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Lesser General Public License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this library; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 # See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
27 from libMEDMEM_Swig import *
30 medFile = "carre_en_quad4_seg2.med"
31 #medFile = "cube_hexa8_quad4.med"
45 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
48 mdDriver.readFileStruct()
51 nbMeshes = md.getNumberOfMeshes()
53 nbFields = md.getNumberOfFields()
55 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
58 print "Mesh(es) Name(s) is(are) "
60 for i in range(nbMeshes):
61 mesh_name = md.getMeshName(i)
65 print "Field(s) Name(s) is(are) "
67 for i in range(nbFields):
68 field_name = md.getFieldName(i)
69 print " - ",field_name
74 print "Mesh(es) Analysis "
75 for i in range(nbMeshes):
76 mesh_name = md.getMeshName(i)
77 mesh = md.getMesh(mesh_name)
79 spaceDim = mesh.getSpaceDimension()
80 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
81 nbFam = mesh.getNumberOfFamilies(entity)
82 if (entity == MED_NODE) & (nbFam > 0):
83 print "This mesh has",nbFam,"Node Family(ies)"
84 elif (entity == MED_CELL) & (nbFam > 0):
85 print "This mesh has",nbFam,"Cell Family(ies)"
86 elif (entity == MED_FACE) & (nbFam > 0):
87 print "This mesh has",nbFam,"Face Family(ies)"
88 elif (entity == MED_EDGE) & (nbFam > 0):
89 print "This mesh has",nbFam,"Edge Family(ies)"
92 for j in range(nbFam):
94 family = mesh.getFamily(entity,j+1)
95 familyName = family.getName()
96 familyDescription = family.getDescription()
97 familyEntity = family.getEntity()
98 familyBool = family.isOnAllElements()
99 print " -Name:",familyName
100 print " -Description:",familyDescription
101 print " -Entity:",familyEntity
102 familyIdentifier = family.getIdentifier()
103 nbOfAtt = family.getNumberOfAttributes()
104 print " -Identifier:",familyIdentifier
105 print " -Number Of Attributes:",nbOfAtt
106 attributesids = family.getAttributesIdentifiers()
107 attributesvals = family.getAttributesValues()
108 for k in range(nbOfAtt):
109 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
110 nbOfGrp = family.getNumberOfGroups()
111 print " -Number Of Groups:",nbOfGrp
112 for k in range(nbOfGrp):
113 print " * Group:",family.getGroupName(k+1)
114 print " -Entities list:"
116 print " -Is on all entities"
118 nbOfTypes = family.getNumberOfTypes()
119 types = family.getTypes()
120 print " -Number Of Types:",nbOfTypes
121 for k in range(nbOfTypes):
123 nbOfElmtsOfType = family.getNumberOfElements(type)
124 number = family.getNumber(type)
126 print " * Number",number[0:nbOfElmtsOfType]
128 print " * Getting an Integer Field on the family ",familyName
129 fieldFamilyIntg = FIELDINT(family,spaceDim)
130 fieldFamilyIntg.setIterationNumber(0)
131 fieldFamilyIntg.setOrderNumber(0)
132 fieldFamilyIntg.setTime(0.0)
133 for kcomp in range(spaceDim):
135 fieldCompName = "comp1"
136 fieldCompDesc = "desc1"
137 fieldCompUnit = "unit1"
139 fieldCompName = "comp2"
140 fieldCompDesc = "desc2"
141 fieldCompUnit = "unit2"
143 fieldCompName = "comp2"
144 fieldCompDesc = "desc2"
145 fieldCompUnit = "unit2"
148 fieldFamilyIntg.setComponentName(kcomp1,fieldCompName)
149 fieldFamilyIntg.setComponentDescription(kcomp1,fieldCompDesc)
150 fieldFamilyIntg.setMEDComponentUnit(kcomp1,fieldCompUnit)
151 fieldFamilyName = "Integer Field on "+familyName
152 fieldFamilyIntg.setName(fieldFamilyName)
153 field_name = fieldFamilyIntg.getName()
154 type_field = fieldFamilyIntg.getValueType()
155 nbOfComp = fieldFamilyIntg.getNumberOfComponents()
156 print " The field",field_name,"is with the type",type_field
157 print " It has",nbOfComp,"Component(s)"
158 for kcomp in range(nbOfComp):
160 compName = fieldFamilyIntg.getComponentName(kcomp1)
161 compDesc = fieldFamilyIntg.getComponentDescription(kcomp1)
162 compUnit = fieldFamilyIntg.getMEDComponentUnit(kcomp1)
163 print " * Component:",kcomp1
164 print " Name:",compName
165 print " Description:",compDesc
166 print " Unit:",compUnit
168 nbOf = fieldFamilyIntg.getSupport().getNumberOfElements(MED_ALL_ELEMENTS)
169 print " Values:",nbOf
170 print " Randomly set (via setValue) and get (via getValue) to check with the same mode ..!"
172 for k in range(nbOf*nbOfComp):
173 value.append(randint(0,100))
174 print " the mode is full interlace"
175 mode = MED_FULL_INTERLACE
176 fieldFamilyIntg.setValue(mode,value)
177 valueverif = fieldFamilyIntg.getValue(mode)
178 for k in range(nbOf*nbOfComp):
179 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
182 for k in range(nbOf*nbOfComp):
183 value.append(randint(0,100))
184 print " the mode is no interlace"
185 mode = MED_NO_INTERLACE
186 fieldFamilyIntg.setValue(mode,value)
187 valueverif = fieldFamilyIntg.getValue(mode)
188 for k in range(nbOf*nbOfComp):
189 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
191 print " Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
193 for k in range(nbOf*nbOfComp):
194 value.append(randint(0,100))
195 print " the mode for set is full interlace and no interlace for get"
196 mode_full = MED_FULL_INTERLACE
197 mode_no = MED_NO_INTERLACE
198 fieldFamilyIntg.setValue(mode_full,value)
199 valueverif = fieldFamilyIntg.getValue(mode_no)
200 for k in range(nbOf*nbOfComp):
201 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
204 for k in range(nbOf*nbOfComp):
205 value.append(randint(0,100))
206 print " the mode for set is no interlace and full interlace for get"
207 fieldFamilyIntg.setValue(mode_no,value)
208 valueverif = fieldFamilyIntg.getValue(mode_full)
209 for k in range(nbOf*nbOfComp):
210 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
212 print " Randomly set (via setValueI) and get (via getValueI) to check with the same mode ..!"
214 for k in range(nbOf*nbOfComp):
215 value.append(randint(0,100))
216 print " the mode is full interlace"
217 mode = MED_FULL_INTERLACE
218 for k in range(nbOf):
219 fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
221 for k in range(nbOf):
222 valueverif.extend(fieldFamilyIntg.getValueI(mode,(k+1)))
223 for k in range(nbOf*nbOfComp):
224 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
227 for k in range(nbOf*nbOfComp):
228 value.append(randint(0,100))
229 print " the mode is no interlace"
230 mode = MED_NO_INTERLACE
231 for k in range(nbOfComp):
232 fieldFamilyIntg.setValueI(mode,(k+1),value[k*nbOf:(k+1)*nbOf])
234 for k in range(nbOfComp):
235 valueverif.extend(fieldFamilyIntg.getValueI(mode,(k+1)))
236 for k in range(nbOf*nbOfComp):
237 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
239 print " Randomly set (via setValueI) and get (via getValueI) to check with different mode ..!"
241 for k in range(nbOf*nbOfComp):
242 value.append(randint(0,100))
243 print " the mode for set is full interlace and no interlace for get"
244 mode_full = MED_FULL_INTERLACE
245 mode_no = MED_NO_INTERLACE
246 for k in range(nbOf):
247 fieldFamilyIntg.setValueI(mode_full,(k+1),value[k*nbOfComp:(k+1)*nbOfComp])
249 for k in range(nbOfComp):
250 valueverif.extend(fieldFamilyIntg.getValueI(mode_no,(k+1)))
251 for k in range(nbOf*nbOfComp):
252 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
255 for k in range(nbOf*nbOfComp):
256 value.append(randint(0,100))
257 print " the mode for set is no interlace and full interlace for get"
258 for k in range(nbOfComp):
259 fieldFamilyIntg.setValueI(mode_no,(k+1),value[k*nbOf:(k+1)*nbOf])
261 for k in range(nbOf):
262 valueverif.extend(fieldFamilyIntg.getValueI(mode_full,(k+1)))
263 for k in range(nbOf*nbOfComp):
264 print " Set/Get Entry * ",value[k]," / ",valueverif[k]