1 # Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 # Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 ###################################################################################
23 ###################################################################################
25 from libMEDMEM_Swig import *
30 #befor running this script, please be sure about the path the file fileName
32 filePath=os.environ["MED_ROOT_DIR"]
33 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
34 gibiFile = "elle_2D_QT_2x2.sauve"
35 mesh1Name = string.split(gibiFile,".")[0]+"_fromGibiDriver"
37 gibiFile = os.path.join(filePath, gibiFile)
38 medFile = string.split(gibiFile,".")[0]+"_fromGibiDriver.med"
39 vtkFile = string.split(gibiFile,".")[0]+"_fromGibiDriver.vtk"
43 meshDriver = GIBI_MESH_RDONLY_DRIVER(gibiFile,mesh)
51 meshName = mesh.getName()
52 spaceDim = mesh.getSpaceDimension()
53 meshDim = mesh.getMeshDimension()
54 print "The mesh ",meshName," is a ",spaceDim,"D mesh on a ",meshDim,"D geometry"
55 print "and is mounted via the GIBI driver"
56 nbNodes = mesh.getNumberOfNodes()
57 print "The mesh ",meshName," has",nbNodes,"Nodes"
58 coordSyst = mesh.getCoordinatesSystem()
59 print "The coordinates system is",coordSyst
60 print "The Coordinates :"
63 for isd in range(spaceDim):
64 coordNames.append(mesh.getCoordinateName(isd))
65 coordUnits.append(mesh.getCoordinateUnit(isd))
67 print "names:", coordNames
68 print "units", coordUnits
70 coordinates = mesh.getCoordinates(MED_FULL_INTERLACE)
71 for k in range(nbNodes):
74 for isd in range(spaceDim):
76 coords.append(mesh.getCoordinate(kp1,isdp1))
78 print coords," ---- ", coordinates[k*spaceDim:((k+1)*spaceDim)]
81 print "Show the Nodal Connectivity:"
82 nbTypesCell = mesh.getNumberOfTypes(MED_CELL)
85 print "The Mesh has",nbTypesCell,"Type(s) of Cell"
86 types = mesh.getTypes(MED_CELL)
87 for k in range(nbTypesCell):
89 nbElemType = mesh.getNumberOfElements(MED_CELL,type)
90 print "For the type:",type,"there is(are)",nbElemType,"elemnt(s)"
91 connectivity = mesh.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,type)
92 nbNodesPerCell = type%100
93 for j in range(nbElemType):
94 print "Element",(j+1)," ",connectivity[j*nbNodesPerCell:(j+1)*nbNodesPerCell]
97 print "Show the Reverse Nodal Connectivity:"
98 ReverseConnectivity = mesh.getReverseConnectivity(MED_NODAL)
99 ReverseConnectivityIndex = mesh.getReverseConnectivityIndex(MED_NODAL)
101 for j in range(nbNodes):
102 begin = ReverseConnectivityIndex[j]-1
103 end = ReverseConnectivityIndex[j+1]-1
104 print "Node",(j+1),"-->",ReverseConnectivity[begin:end]
107 print "Show the Descending Connectivity:"
108 mesh.calculateConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL)
109 nbElemts = mesh.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
110 Connectivity = mesh.getConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
111 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
113 for j in range(nbElemts):
114 begin = ConnectivityIndex[j]-1
115 end = ConnectivityIndex[j+1]-1
116 print "Element",(j+1),"-->",Connectivity[begin:end]
119 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
120 nbFam = mesh.getNumberOfFamilies(entity)
121 nbGrp = mesh.getNumberOfGroups(entity)
122 if (entity == MED_NODE) :
123 if (nbFam > 0) : print "This mesh has",nbFam,"Node Family(ies)"
124 if (nbGrp > 0) : print "This mesh has",nbGrp,"Node Group(s)"
125 elif (entity == MED_CELL) :
126 if (nbFam > 0) : print "This mesh has",nbFam,"Cell Family(ies)"
127 if (nbGrp > 0) : print "This mesh has",nbGrp,"Cell Group(s)"
128 elif (entity == MED_FACE) :
129 if (nbFam > 0) : print "This mesh has",nbFam,"Face Family(ies)"
130 if (nbGrp > 0) : print "This mesh has",nbGrp,"Face Group(s)"
131 elif (entity == MED_EDGE) :
132 if (nbFam > 0) : print "This mesh has",nbFam,"Edge Family(ies)"
133 if (nbGrp > 0) : print "This mesh has",nbGrp,"Edge Group(s)"
135 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
136 nbFam = mesh.getNumberOfFamilies(entity)
137 nbGrp = mesh.getNumberOfGroups(entity)
139 for j in range(nbFam):
141 family = mesh.getFamily(entity,j+1)
142 familyName = family.getName()
143 familyDescription = family.getDescription()
144 familyEntity = family.getEntity()
145 familyBool = family.isOnAllElements()
146 print " -Name:",familyName
147 print " -Description:",familyDescription
148 print " -Entity:",familyEntity
149 familyIdentifier = family.getIdentifier()
150 nbOfAtt = family.getNumberOfAttributes()
151 print " -Identifier:",familyIdentifier
152 print " -Number Of Attributes:",nbOfAtt
153 attributesids = family.getAttributesIdentifiers()
154 attributesvals = family.getAttributesValues()
155 for k in range(nbOfAtt):
156 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
157 nbOfGrp = family.getNumberOfGroups()
158 print " -Number Of Groups:",nbOfGrp
159 for k in range(nbOfGrp):
160 print " * Group:",family.getGroupName(k+1)
161 print " -Entities list:"
163 print " -Is on all entities"
165 nbOfTypes = family.getNumberOfTypes()
166 types = family.getTypes()
167 print " -Number Of Types:",nbOfTypes
168 for k in range(nbOfTypes):
170 nbOfElmtsOfType = family.getNumberOfElements(type)
171 number = family.getNumber(type)
173 print " * Number",number[0:nbOfElmtsOfType]
178 for j in range(nbGrp):
180 group = mesh.getGroup(entity,j+1)
181 groupName = group.getName()
182 groupDescription = group.getDescription()
183 groupEntity = group.getEntity()
184 groupBool = group.isOnAllElements()
185 print " -Name:",groupName
186 print " -Description:",groupDescription
187 print " -Entity:",groupEntity
188 nbOfFam = group.getNumberOfFamilies()
189 print " -Number Of Families:",nbOfFam
190 for k in range(nbOfFam):
191 print " * Family:",group.getFamily(k+1).getName()
192 print " -Entities list:"
194 print " -Is on all entities"
196 nbOfTypes = group.getNumberOfTypes()
197 types = group.getTypes()
198 print " -Number Of Types:",nbOfTypes
199 for k in range(nbOfTypes):
201 nbOfElmtsOfType = group.getNumberOfElements(type)
202 number = group.getNumber(type)
204 print " * Number",number[0:nbOfElmtsOfType]
208 print "Printing of this mesh in med and vtk format with the name ", mesh.getName()
210 idMed = mesh.addDriver(MED_DRIVER,medFile,mesh1Name)
213 idVtk = mesh.addDriver(VTK_DRIVER,vtkFile,mesh2Name)
216 print "Mounting this mesh using the MED driver"
220 mesh1Driver = MED_MESH_RDONLY_DRIVER(medFile,mesh1)
222 mesh1Driver.setMeshName(mesh1Name)
230 mesh_name = mesh1Driver.getMeshName()
231 meshName = mesh1.getName()
232 spaceDim = mesh1.getSpaceDimension()
233 meshDim = mesh1.getMeshDimension()
234 print "The mesh ",meshName," is a ",spaceDim,"D mesh on a ",meshDim,"D geometry"
235 nbNodes = mesh1.getNumberOfNodes()
236 print "The mesh has",nbNodes,"Nodes"
237 coordSyst = mesh1.getCoordinatesSystem()
238 print "The coordinates system is",coordSyst
239 print "The Coordinates :"
242 for isd in range(spaceDim):
243 coordNames.append(mesh1.getCoordinateName(isd))
244 coordUnits.append(mesh1.getCoordinateUnit(isd))
246 print "names:", coordNames
247 print "units", coordUnits
249 coordinates = mesh1.getCoordinates(MED_FULL_INTERLACE)
250 for k in range(nbNodes):
253 for isd in range(spaceDim):
255 coords.append(mesh1.getCoordinate(kp1,isdp1))
257 print coords," ---- ", coordinates[k*spaceDim:((k+1)*spaceDim)]
260 print "Show the Nodal Connectivity:"
261 nbTypesCell = mesh1.getNumberOfTypes(MED_CELL)
264 print "The Mesh has",nbTypesCell,"Type(s) of Cell"
265 types = mesh1.getTypes(MED_CELL)
266 for k in range(nbTypesCell):
268 nbElemType = mesh1.getNumberOfElements(MED_CELL,type)
269 print "For the type:",type,"there is(are)",nbElemType,"elemnt(s)"
270 connectivity = mesh1.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,type)
271 nbNodesPerCell = type%100
272 for j in range(nbElemType):
273 print "Element",(j+1)," ",connectivity[j*nbNodesPerCell:(j+1)*nbNodesPerCell]
276 print "Show the Reverse Nodal Connectivity:"
277 ReverseConnectivity = mesh1.getReverseConnectivity(MED_NODAL)
278 ReverseConnectivityIndex = mesh1.getReverseConnectivityIndex(MED_NODAL)
280 for j in range(nbNodes):
281 begin = ReverseConnectivityIndex[j]-1
282 end = ReverseConnectivityIndex[j+1]-1
283 print "Node",(j+1),"-->",ReverseConnectivity[begin:end]
286 print "Show the Descending Connectivity:"
287 mesh1.calculateConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL)
288 nbElemts = mesh1.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
289 Connectivity = mesh1.getConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
290 ConnectivityIndex = mesh1.getConnectivityIndex(MED_DESCENDING,MED_CELL)
292 for j in range(nbElemts):
293 begin = ConnectivityIndex[j]-1
294 end = ConnectivityIndex[j+1]-1
295 print "Element",(j+1),"-->",Connectivity[begin:end]
298 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
299 nbFam = mesh1.getNumberOfFamilies(entity)
300 nbGrp = mesh1.getNumberOfGroups(entity)
301 if (entity == MED_NODE) :
302 if (nbFam > 0) : print "This mesh has",nbFam,"Node Family(ies)"
303 if (nbGrp > 0) : print "This mesh has",nbGrp,"Node Group(s)"
304 elif (entity == MED_CELL) :
305 if (nbFam > 0) : print "This mesh has",nbFam,"Cell Family(ies)"
306 if (nbGrp > 0) : print "This mesh has",nbGrp,"Cell Group(s)"
307 elif (entity == MED_FACE) :
308 if (nbFam > 0) : print "This mesh has",nbFam,"Face Family(ies)"
309 if (nbGrp > 0) : print "This mesh has",nbGrp,"Face Group(s)"
310 elif (entity == MED_EDGE) :
311 if (nbFam > 0) : print "This mesh has",nbFam,"Edge Family(ies)"
312 if (nbGrp > 0) : print "This mesh has",nbGrp,"Edge Group(s)"
314 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
315 nbFam = mesh1.getNumberOfFamilies(entity)
316 nbGrp = mesh1.getNumberOfGroups(entity)
318 for j in range(nbFam):
320 family = mesh1.getFamily(entity,j+1)
321 familyName = family.getName()
322 familyDescription = family.getDescription()
323 familyEntity = family.getEntity()
324 familyBool = family.isOnAllElements()
325 print " -Name:",familyName
326 print " -Description:",familyDescription
327 print " -Entity:",familyEntity
328 familyIdentifier = family.getIdentifier()
329 nbOfAtt = family.getNumberOfAttributes()
330 print " -Identifier:",familyIdentifier
331 print " -Number Of Attributes:",nbOfAtt
332 attributesids = family.getAttributesIdentifiers()
333 attributesvals = family.getAttributesValues()
334 for k in range(nbOfAtt):
335 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
336 nbOfGrp = family.getNumberOfGroups()
337 print " -Number Of Groups:",nbOfGrp
338 for k in range(nbOfGrp):
339 print " * Group:",family.getGroupName(k+1)
340 print " -Entities list:"
342 print " -Is on all entities"
344 nbOfTypes = family.getNumberOfTypes()
345 types = family.getTypes()
346 print " -Number Of Types:",nbOfTypes
347 for k in range(nbOfTypes):
349 nbOfElmtsOfType = family.getNumberOfElements(type)
350 number = family.getNumber(type)
352 print " * Number",number[0:nbOfElmtsOfType]
357 for j in range(nbGrp):
359 group = mesh1.getGroup(entity,j+1)
360 groupName = group.getName()
361 groupDescription = group.getDescription()
362 groupEntity = group.getEntity()
363 groupBool = group.isOnAllElements()
364 print " -Name:",groupName
365 print " -Description:",groupDescription
366 print " -Entity:",groupEntity
367 nbOfFam = group.getNumberOfFamilies()
368 print " -Number Of Families:",nbOfFam
369 for k in range(nbOfFam):
370 print " * Family:",group.getFamily(k+1).getName()
371 print " -Entities list:"
373 print " -Is on all entities"
375 nbOfTypes = group.getNumberOfTypes()
376 types = group.getTypes()
377 print " -Number Of Types:",nbOfTypes
378 for k in range(nbOfTypes):
380 nbOfElmtsOfType = group.getNumberOfElements(type)
381 number = group.getNumber(type)
383 print " * Number",number[0:nbOfElmtsOfType]
387 print "END of the Pyhton script ..... Ctrl D to exit"