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 ###################################################################################
27 from libMEDMEM_Swig import *
32 #befor running this script, please be sure about the path the file fileName
34 filePath=os.environ["MED_ROOT_DIR"]
35 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
36 gibiFile = "elle_2D_QT_2x2.sauve"
37 mesh1Name = string.split(gibiFile,".")[0]+"_fromGibiDriver"
39 gibiFile = os.path.join(filePath, gibiFile)
40 medFile = string.split(gibiFile,".")[0]+"_fromGibiDriver.med"
41 vtkFile = string.split(gibiFile,".")[0]+"_fromGibiDriver.vtk"
45 meshDriver = GIBI_MESH_RDONLY_DRIVER(gibiFile,mesh)
53 meshName = mesh.getName()
54 spaceDim = mesh.getSpaceDimension()
55 meshDim = mesh.getMeshDimension()
56 print "The mesh ",meshName," is a ",spaceDim,"D mesh on a ",meshDim,"D geometry"
57 print "and is mounted via the GIBI driver"
58 nbNodes = mesh.getNumberOfNodes()
59 print "The mesh ",meshName," has",nbNodes,"Nodes"
60 coordSyst = mesh.getCoordinatesSystem()
61 print "The coordinates system is",coordSyst
62 print "The Coordinates :"
65 for isd in range(spaceDim):
66 coordNames.append(mesh.getCoordinateName(isd))
67 coordUnits.append(mesh.getCoordinateUnit(isd))
69 print "names:", coordNames
70 print "units", coordUnits
72 coordinates = mesh.getCoordinates(MED_FULL_INTERLACE)
73 for k in range(nbNodes):
76 for isd in range(spaceDim):
78 coords.append(mesh.getCoordinate(kp1,isdp1))
80 print coords," ---- ", coordinates[k*spaceDim:((k+1)*spaceDim)]
83 print "Show the Nodal Connectivity:"
84 nbTypesCell = mesh.getNumberOfTypes(MED_CELL)
87 print "The Mesh has",nbTypesCell,"Type(s) of Cell"
88 types = mesh.getTypes(MED_CELL)
89 for k in range(nbTypesCell):
91 nbElemType = mesh.getNumberOfElements(MED_CELL,type)
92 print "For the type:",type,"there is(are)",nbElemType,"elemnt(s)"
93 connectivity = mesh.getConnectivity(MED_NODAL,MED_CELL,type)
94 nbNodesPerCell = type%100
95 for j in range(nbElemType):
96 print "Element",(j+1)," ",connectivity[j*nbNodesPerCell:(j+1)*nbNodesPerCell]
99 print "Show the Reverse Nodal Connectivity:"
100 ReverseConnectivity = mesh.getReverseConnectivity(MED_NODAL)
101 ReverseConnectivityIndex = mesh.getReverseConnectivityIndex(MED_NODAL)
103 for j in range(nbNodes):
104 begin = ReverseConnectivityIndex[j]-1
105 end = ReverseConnectivityIndex[j+1]-1
106 print "Node",(j+1),"-->",ReverseConnectivity[begin:end]
109 print "Show the Descending Connectivity:"
110 mesh.calculateConnectivity(MED_DESCENDING,MED_CELL)
111 nbElemts = mesh.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
112 Connectivity = mesh.getConnectivity(MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
113 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
115 for j in range(nbElemts):
116 begin = ConnectivityIndex[j]-1
117 end = ConnectivityIndex[j+1]-1
118 print "Element",(j+1),"-->",Connectivity[begin:end]
121 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
122 nbFam = mesh.getNumberOfFamilies(entity)
123 nbGrp = mesh.getNumberOfGroups(entity)
124 if (entity == MED_NODE) :
125 if (nbFam > 0) : print "This mesh has",nbFam,"Node Family(ies)"
126 if (nbGrp > 0) : print "This mesh has",nbGrp,"Node Group(s)"
127 elif (entity == MED_CELL) :
128 if (nbFam > 0) : print "This mesh has",nbFam,"Cell Family(ies)"
129 if (nbGrp > 0) : print "This mesh has",nbGrp,"Cell Group(s)"
130 elif (entity == MED_FACE) :
131 if (nbFam > 0) : print "This mesh has",nbFam,"Face Family(ies)"
132 if (nbGrp > 0) : print "This mesh has",nbGrp,"Face Group(s)"
133 elif (entity == MED_EDGE) :
134 if (nbFam > 0) : print "This mesh has",nbFam,"Edge Family(ies)"
135 if (nbGrp > 0) : print "This mesh has",nbGrp,"Edge Group(s)"
137 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
138 nbFam = mesh.getNumberOfFamilies(entity)
139 nbGrp = mesh.getNumberOfGroups(entity)
141 for j in range(nbFam):
143 family = mesh.getFamily(entity,j+1)
144 familyName = family.getName()
145 familyDescription = family.getDescription()
146 familyEntity = family.getEntity()
147 familyBool = family.isOnAllElements()
148 print " -Name:",familyName
149 print " -Description:",familyDescription
150 print " -Entity:",familyEntity
151 familyIdentifier = family.getIdentifier()
152 nbOfAtt = family.getNumberOfAttributes()
153 print " -Identifier:",familyIdentifier
154 print " -Number Of Attributes:",nbOfAtt
155 attributesids = family.getAttributesIdentifiers()
156 attributesvals = family.getAttributesValues()
157 for k in range(nbOfAtt):
158 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
159 nbOfGrp = family.getNumberOfGroups()
160 print " -Number Of Groups:",nbOfGrp
161 for k in range(nbOfGrp):
162 print " * Group:",family.getGroupName(k+1)
163 print " -Entities list:"
165 print " -Is on all entities"
167 nbOfTypes = family.getNumberOfTypes()
168 types = family.getTypes()
169 print " -Number Of Types:",nbOfTypes
170 for k in range(nbOfTypes):
172 nbOfElmtsOfType = family.getNumberOfElements(type)
173 number = family.getNumber(type)
175 print " * Number",number[0:nbOfElmtsOfType]
180 for j in range(nbGrp):
182 group = mesh.getGroup(entity,j+1)
183 groupName = group.getName()
184 groupDescription = group.getDescription()
185 groupEntity = group.getEntity()
186 groupBool = group.isOnAllElements()
187 print " -Name:",groupName
188 print " -Description:",groupDescription
189 print " -Entity:",groupEntity
190 nbOfFam = group.getNumberOfFamilies()
191 print " -Number Of Families:",nbOfFam
192 for k in range(nbOfFam):
193 print " * Family:",group.getFamily(k+1).getName()
194 print " -Entities list:"
196 print " -Is on all entities"
198 nbOfTypes = group.getNumberOfTypes()
199 types = group.getTypes()
200 print " -Number Of Types:",nbOfTypes
201 for k in range(nbOfTypes):
203 nbOfElmtsOfType = group.getNumberOfElements(type)
204 number = group.getNumber(type)
206 print " * Number",number[0:nbOfElmtsOfType]
210 print "Printing of this mesh in med and vtk format with the name ", mesh.getName()
212 idMed = mesh.addDriver(MED_DRIVER,medFile,mesh1Name)
215 idVtk = mesh.addDriver(VTK_DRIVER,vtkFile,mesh2Name)
218 print "Mounting this mesh using the MED driver"
222 mesh1Driver = MED_MESH_RDONLY_DRIVER(medFile,mesh1)
224 mesh1Driver.setMeshName(mesh1Name)
232 mesh_name = mesh1Driver.getMeshName()
233 meshName = mesh1.getName()
234 spaceDim = mesh1.getSpaceDimension()
235 meshDim = mesh1.getMeshDimension()
236 print "The mesh ",meshName," is a ",spaceDim,"D mesh on a ",meshDim,"D geometry"
237 nbNodes = mesh1.getNumberOfNodes()
238 print "The mesh has",nbNodes,"Nodes"
239 coordSyst = mesh1.getCoordinatesSystem()
240 print "The coordinates system is",coordSyst
241 print "The Coordinates :"
244 for isd in range(spaceDim):
245 coordNames.append(mesh1.getCoordinateName(isd))
246 coordUnits.append(mesh1.getCoordinateUnit(isd))
248 print "names:", coordNames
249 print "units", coordUnits
251 coordinates = mesh1.getCoordinates(MED_FULL_INTERLACE)
252 for k in range(nbNodes):
255 for isd in range(spaceDim):
257 coords.append(mesh1.getCoordinate(kp1,isdp1))
259 print coords," ---- ", coordinates[k*spaceDim:((k+1)*spaceDim)]
262 print "Show the Nodal Connectivity:"
263 nbTypesCell = mesh1.getNumberOfTypes(MED_CELL)
266 print "The Mesh has",nbTypesCell,"Type(s) of Cell"
267 types = mesh1.getTypes(MED_CELL)
268 for k in range(nbTypesCell):
270 nbElemType = mesh1.getNumberOfElements(MED_CELL,type)
271 print "For the type:",type,"there is(are)",nbElemType,"elemnt(s)"
272 connectivity = mesh1.getConnectivity(MED_NODAL,MED_CELL,type)
273 nbNodesPerCell = type%100
274 for j in range(nbElemType):
275 print "Element",(j+1)," ",connectivity[j*nbNodesPerCell:(j+1)*nbNodesPerCell]
278 print "Show the Reverse Nodal Connectivity:"
279 ReverseConnectivity = mesh1.getReverseConnectivity(MED_NODAL)
280 ReverseConnectivityIndex = mesh1.getReverseConnectivityIndex(MED_NODAL)
282 for j in range(nbNodes):
283 begin = ReverseConnectivityIndex[j]-1
284 end = ReverseConnectivityIndex[j+1]-1
285 print "Node",(j+1),"-->",ReverseConnectivity[begin:end]
288 print "Show the Descending Connectivity:"
289 mesh1.calculateConnectivity(MED_DESCENDING,MED_CELL)
290 nbElemts = mesh1.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
291 Connectivity = mesh1.getConnectivity(MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
292 ConnectivityIndex = mesh1.getConnectivityIndex(MED_DESCENDING,MED_CELL)
294 for j in range(nbElemts):
295 begin = ConnectivityIndex[j]-1
296 end = ConnectivityIndex[j+1]-1
297 print "Element",(j+1),"-->",Connectivity[begin:end]
300 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
301 nbFam = mesh1.getNumberOfFamilies(entity)
302 nbGrp = mesh1.getNumberOfGroups(entity)
303 if (entity == MED_NODE) :
304 if (nbFam > 0) : print "This mesh has",nbFam,"Node Family(ies)"
305 if (nbGrp > 0) : print "This mesh has",nbGrp,"Node Group(s)"
306 elif (entity == MED_CELL) :
307 if (nbFam > 0) : print "This mesh has",nbFam,"Cell Family(ies)"
308 if (nbGrp > 0) : print "This mesh has",nbGrp,"Cell Group(s)"
309 elif (entity == MED_FACE) :
310 if (nbFam > 0) : print "This mesh has",nbFam,"Face Family(ies)"
311 if (nbGrp > 0) : print "This mesh has",nbGrp,"Face Group(s)"
312 elif (entity == MED_EDGE) :
313 if (nbFam > 0) : print "This mesh has",nbFam,"Edge Family(ies)"
314 if (nbGrp > 0) : print "This mesh has",nbGrp,"Edge Group(s)"
316 for entity in [MED_NODE,MED_CELL,MED_FACE,MED_EDGE]:
317 nbFam = mesh1.getNumberOfFamilies(entity)
318 nbGrp = mesh1.getNumberOfGroups(entity)
320 for j in range(nbFam):
322 family = mesh1.getFamily(entity,j+1)
323 familyName = family.getName()
324 familyDescription = family.getDescription()
325 familyEntity = family.getEntity()
326 familyBool = family.isOnAllElements()
327 print " -Name:",familyName
328 print " -Description:",familyDescription
329 print " -Entity:",familyEntity
330 familyIdentifier = family.getIdentifier()
331 nbOfAtt = family.getNumberOfAttributes()
332 print " -Identifier:",familyIdentifier
333 print " -Number Of Attributes:",nbOfAtt
334 attributesids = family.getAttributesIdentifiers()
335 attributesvals = family.getAttributesValues()
336 for k in range(nbOfAtt):
337 print " * Attributes:",attributesids[k],":",attributesvals[k],",",family.getAttributeDescription(k+1)
338 nbOfGrp = family.getNumberOfGroups()
339 print " -Number Of Groups:",nbOfGrp
340 for k in range(nbOfGrp):
341 print " * Group:",family.getGroupName(k+1)
342 print " -Entities list:"
344 print " -Is on all entities"
346 nbOfTypes = family.getNumberOfTypes()
347 types = family.getTypes()
348 print " -Number Of Types:",nbOfTypes
349 for k in range(nbOfTypes):
351 nbOfElmtsOfType = family.getNumberOfElements(type)
352 number = family.getNumber(type)
354 print " * Number",number[0:nbOfElmtsOfType]
359 for j in range(nbGrp):
361 group = mesh1.getGroup(entity,j+1)
362 groupName = group.getName()
363 groupDescription = group.getDescription()
364 groupEntity = group.getEntity()
365 groupBool = group.isOnAllElements()
366 print " -Name:",groupName
367 print " -Description:",groupDescription
368 print " -Entity:",groupEntity
369 nbOfFam = group.getNumberOfFamilies()
370 print " -Number Of Families:",nbOfFam
371 for k in range(nbOfFam):
372 print " * Family:",group.getFamily(k+1).getName()
373 print " -Entities list:"
375 print " -Is on all entities"
377 nbOfTypes = group.getNumberOfTypes()
378 types = group.getTypes()
379 print " -Number Of Types:",nbOfTypes
380 for k in range(nbOfTypes):
382 nbOfElmtsOfType = group.getNumberOfElements(type)
383 number = group.getNumber(type)
385 print " * Number",number[0:nbOfElmtsOfType]
389 print "END of the Pyhton script ..... Ctrl D to exit"