1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
4 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 ###################################################################################
25 # This Python script is parsing a MED file using MED Memory from SALOME platform:
26 # It tests the setValue, setRow and setColum functions on MED fields
27 ###################################################################################
29 from libMEDMEM_Swig import *
33 #befor running this script, please be sure about the path the file fileName
35 filePath=os.environ["MED_ROOT_DIR"]
36 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
38 medFile = os.path.join(filePath, "carre_en_quad4_seg2.med")
39 #medFile = os.path.join(filePath, "cube_hexa8_quad4.med")
51 md = MEDFILEBROWSER(medFile)
53 nbMeshes = md.getNumberOfMeshes()
55 nbFields = md.getNumberOfFields()
57 print "The med file", medFile, "contains", nbMeshes, "mesh(es) and", nbFields, "field(s)"
60 print "Mesh(es) Name(s) is(are) "
62 for i in range(nbMeshes):
63 mesh_name = md.getMeshName(i)
67 print "Field(s) Name(s) is(are) "
69 for i in range(nbFields):
70 field_name = md.getFieldName(i)
71 print " - ",field_name
76 print "Mesh(es) Analysis "
77 for i in range(nbMeshes):
78 mesh_name = md.getMeshName(i)
79 mesh = MESH(MED_DRIVER,md.getFileName(),mesh_name)
80 spaceDim = mesh.getSpaceDimension()
81 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
82 nbFam = mesh.getNumberOfFamilies(entity)
83 if (entity == MED_NODE) & (nbFam > 0):
84 print "This mesh has",nbFam,"Node Family(ies)"
85 elif (entity == MED_CELL) & (nbFam > 0):
86 print "This mesh has",nbFam,"Cell Family(ies)"
87 elif (entity == MED_FACE) & (nbFam > 0):
88 print "This mesh has",nbFam,"Face Family(ies)"
89 elif (entity == MED_EDGE) & (nbFam > 0):
90 print "This mesh has",nbFam,"Edge Family(ies)"
93 for j in range(nbFam):
95 family = mesh.getFamily(entity,j+1)
96 familyName = family.getName()
97 familyDescription = family.getDescription()
98 familyEntity = family.getEntity()
99 familyBool = family.isOnAllElements()
100 print " -Name:",familyName
101 print " -Description:",familyDescription
102 print " -Entity:",familyEntity
103 familyIdentifier = family.getIdentifier()
104 nbOfAtt = family.getNumberOfAttributes()
105 print " -Identifier:",familyIdentifier
106 print " -Number Of Attributes:",nbOfAtt
107 attributesids = family.getAttributesIdentifiers()
108 attributesvals = family.getAttributesValues()
109 for k in range(nbOfAtt):
110 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
111 nbOfGrp = family.getNumberOfGroups()
112 print " -Number Of Groups:",nbOfGrp
113 for k in range(nbOfGrp):
114 print " * Group:",family.getGroupName(k+1)
115 print " -Entities list:"
117 print " -Is on all entities"
119 nbOfTypes = family.getNumberOfTypes()
120 types = family.getTypes()
121 print " -Number Of Types:",nbOfTypes
122 for k in range(nbOfTypes):
124 nbOfElmtsOfType = family.getNumberOfElements(type)
125 number = family.getNumber(type)
127 print " * Number",number[0:nbOfElmtsOfType]
129 numberFamily = family.getNumber(MED_ALL_ELEMENTS)
130 print " * Getting an Integer Field on the family ",familyName
131 fieldFamilyIntg = FIELDINT(family,spaceDim)
132 fieldFamilyIntg.setIterationNumber(0)
133 fieldFamilyIntg.setOrderNumber(0)
134 fieldFamilyIntg.setTime(0.0)
135 for kcomp in range(spaceDim):
137 fieldCompName = "comp1"
138 fieldCompDesc = "desc1"
139 fieldCompUnit = "unit1"
141 fieldCompName = "comp2"
142 fieldCompDesc = "desc2"
143 fieldCompUnit = "unit2"
145 fieldCompName = "comp2"
146 fieldCompDesc = "desc2"
147 fieldCompUnit = "unit2"
150 fieldFamilyIntg.setComponentName(kcomp1,fieldCompName)
151 fieldFamilyIntg.setComponentDescription(kcomp1,fieldCompDesc)
152 fieldFamilyIntg.setMEDComponentUnit(kcomp1,fieldCompUnit)
153 fieldFamilyName = "Integer Field on "+familyName
154 fieldFamilyIntg.setName(fieldFamilyName)
155 field_name = fieldFamilyIntg.getName()
156 type_field = fieldFamilyIntg.getValueType()
157 nbOfComp = fieldFamilyIntg.getNumberOfComponents()
158 print " The field",field_name,"is with the type",type_field
159 print " It has",nbOfComp,"Component(s)"
160 for kcomp in range(nbOfComp):
162 compName = fieldFamilyIntg.getComponentName(kcomp1)
163 compDesc = fieldFamilyIntg.getComponentDescription(kcomp1)
164 compUnit = fieldFamilyIntg.getMEDComponentUnit(kcomp1)
165 print " * Component:",kcomp1
166 print " Name:",compName
167 print " Description:",compDesc
168 print " Unit:",compUnit
170 nbOf = fieldFamilyIntg.getSupport().getNumberOfElements(MED_ALL_ELEMENTS)
171 print " Values:",nbOf
172 print " Randomly set (via setValue) and get (via getValue) to check with the same mode ..!"
174 for k in range(nbOf*nbOfComp):
175 value.append(randint(0,100))
176 print " the mode is full interlace"
177 mode = MED_FULL_INTERLACE
178 fieldFamilyIntg.setValue(value)
179 valueverif = fieldFamilyIntg.getValue()
180 for k in range(nbOf*nbOfComp):
181 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
184 for k in range(nbOf*nbOfComp):
185 value.append(randint(0,100))
186 print " the mode is no interlace"
187 mode = MED_NO_INTERLACE
188 fieldFamilyIntg.setValue(value)
189 valueverif = fieldFamilyIntg.getValue()
190 for k in range(nbOf*nbOfComp):
191 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
193 print " Randomly set (via setValue) and get (via getValue) to check with different mode ..!"
195 for k in range(nbOf*nbOfComp):
196 value.append(randint(0,100))
197 print " the mode for set is full interlace and no interlace for get"
198 mode_full = MED_FULL_INTERLACE
199 mode_no = MED_NO_INTERLACE
200 fieldFamilyIntg.setValue(value)
201 valueverif = fieldFamilyIntg.getValue()
202 for k in range(nbOf*nbOfComp):
203 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
206 for k in range(nbOf*nbOfComp):
207 value.append(randint(0,100))
208 print " the mode for set is no interlace and full interlace for get"
209 fieldFamilyIntg.setValue(value)
210 valueverif = fieldFamilyIntg.getValue()
211 for k in range(nbOf*nbOfComp):
212 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
214 print " Randomly set (via setRow/setColumn) and get (via getRow/getColumn) to check with the same mode ..!"
216 for k in range(nbOf*nbOfComp):
217 value.append(randint(0,100))
218 mode = MED_FULL_INTERLACE
219 print " the mode is full interlace ", mode
220 print " the field interlacing mode ",fieldFamilyIntg.getInterlacingType()
221 for k in range(nbOf):
222 valInd = numberFamily[k]
223 fieldFamilyIntg.setRow(valInd,value[k*nbOfComp:(k+1)*nbOfComp])
225 for k in range(nbOf):
226 valInd = numberFamily[k]
227 valueverif.extend(fieldFamilyIntg.getRow(valInd))
228 for k in range(nbOf*nbOfComp):
229 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
232 for k in range(nbOf*nbOfComp):
233 value.append(randint(0,100))
234 mode = MED_NO_INTERLACE
235 print " the mode is no interlace ", mode
236 print " the field interlacing mode ",fieldFamilyIntg.getInterlacingType()
237 for k in range(nbOf):
238 valInd = numberFamily[k]
239 fieldFamilyIntg.setRow(valInd,value[k*nbOfComp:(k+1)*nbOfComp])
240 fieldFamilyIntgOtherMode = createFieldIntConvertNoInterlace(fieldFamilyIntg)
242 for k in range(nbOfComp):
243 valueverif.extend(fieldFamilyIntgOtherMode.getColumn(k+1))
244 for k in range(nbOf*nbOfComp):
245 print " Set/Get Entry * ",value[k]," / ",valueverif[k]
247 print "END of the Pyhton script ..... Ctrl D to exit"