1 # Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG
2 # PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
8 # This library is distributed in the hope that it will be useful
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 # Python script for testing T5.10 task
20 # ###########################################
22 #% Test structured mesh (GRID) reading from file test19.med
23 #% test19.med can be obtained by running test19_c.out executable
24 # or locally in MEDMEM directory create_grid
26 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=filePath+"/share/salome/resources/med/"
35 medFile = filePath + "test19.med"
36 print "Read file", medFile
40 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
43 mdDriver.readFileStruct()
46 nbMeshes = md.getNumberOfMeshes()
47 print "Nb meshes:", nbMeshes
49 raise RuntimeError, "Can't read med file"
51 ##############################
53 ##############################
55 mesh_name = md.getMeshName(0)
56 mesh = md.getMesh(mesh_name)
57 print "Read", mesh_name
60 if mesh.getIsAGrid() == 0:
61 raise RuntimeError, "Mesh 0 is not a grid"
63 grid = createGridFromMesh(mesh)
65 I = grid.getArrayLength(1)
66 print "_iArrayLength", I
68 raise RuntimeError, "Error in grid.getArrayLength(1)"
70 J = grid.getArrayLength(2)
71 print "_jArrayLength", J
73 raise RuntimeError, "Error in grid.getArrayLength(2)"
75 K = grid.getArrayLength(3)
76 print "_kArrayLength", K
78 raise RuntimeError, "Error in grid.getArrayLength(3)"
80 grid_type = grid.getGridType()
81 print "grid_type =", grid_type
82 if grid_type != MED_CARTESIAN:
83 raise RuntimeError, "Wrong grid type"
85 spaceDim = grid.getSpaceDimension()
86 print "spaceDim =", spaceDim
88 raise RuntimeError, "Wrong space dimention"
90 meshDim = grid.getMeshDimension()
91 print "meshDim =", meshDim
92 if spaceDim != meshDim:
93 raise RuntimeError, "Wrong mesh dimention"
95 nbNodes = grid.getNumberOfNodes()
96 print "nbNodes =", nbNodes
98 raise RuntimeError, "Wrong nb of nodes"
100 coordSyst = grid.getCoordinatesSystem()
101 print "coordSyst =", coordSyst
102 if coordSyst != "CARTESIAN":
103 raise RuntimeError, "Wrong coordinates system"
105 coordinates = grid.getCoordinates(MED_FULL_INTERLACE)
106 print "coordinates =", coordinates
107 xy = [ grid.getArrayValue(1, I-1 ) , grid.getArrayValue(2, J-1 ) ]
108 xy2 = coordinates[(nbNodes-1)*spaceDim:(nbNodes*spaceDim)]
110 raise RuntimeError, "Error in grid.getCoordinates(MED_FULL_INTERLACE)"
112 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
113 print "nbTypesCell =", nbTypesCell
115 raise RuntimeError, "Wrong nbTypesCell"
117 types = grid.getTypes(MED_CELL)
118 print "Cell types =", types
120 raise RuntimeError, "Wrong Cell types"
122 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
123 print "Nb cells =", nbElemType
125 raise RuntimeError, "Wrong Nb cells"
127 print "getEntityPosition : convert node number to i,j,k"
129 n1 = grid.getEntityPosition(MED_NODE,10)
130 n2 = grid.getEntityPosition(MED_NODE,16)
132 if n1 == [1,2]: o1 = "Ok"
134 if n2 == [3,3]: o2 = "Ok"
137 print "Node 10 -> i,j = ", n1, " : ", o1
138 print "Node 16 -> i,j = ", n2, " : ", o2
140 print "getEntityPosition : convert cell number to i,j,k"
142 n1 = grid.getEntityPosition(MED_CELL,3)
143 n2 = grid.getEntityPosition(MED_CELL,4)
145 if n1 == [2,0]: o1 = "Ok"
147 if n2 == [0,1]: o2 = "Ok"
150 print "Cell 3 -> i,j = ", n1, " : ", o1
151 print "Cell 4 -> i,j = ", n2, " : ", o2
153 print "getEntityPosition : convert face number to i,j,k"
155 n1 = grid.getEntityPosition(MED_FACE,6)
156 n2 = grid.getEntityPosition(MED_FACE,8)
158 if n1 == [1,2,1]: o1 = "Ok"
160 if n2 == [1,1,2]: o2 = "Ok"
163 print "Face 6 -> i,j = ", n1, " : ", o1
164 print "Face 8 -> i,j = ", n2, " : ", o2
166 print "getNodeNumber : convert i,j,k to node number"
168 n1 = grid.getNodeNumber(2,1,0)
169 n2 = grid.getNodeNumber(1,2,0)
171 if n1 == 7: o1 = "Ok"
173 if n2 == 10: o2 = "Ok"
176 print "getNodeNumber 2,1,0 = ", n1, " : ", o1
177 print "getNodeNumber 1,2,0 = ", n2, " : ", o2
179 print "getCellNumber : convert i,j,k to cell number"
181 n1 = grid.getCellNumber(1,0,0)
182 n2 = grid.getCellNumber(2,1,0)
184 if n1 == 2: o1 = "Ok"
186 if n2 == 6: o2 = "Ok"
189 print "getCellNumber 1,0,0 = ", n1, " : ", o1
190 print "getCellNumber 2,1,0 = ", n2, " : ", o2
192 print "getFaceNumber : convert i,j,k to face number"
194 n1 = grid.getFaceNumber(0,0,2,0)
195 n2 = grid.getFaceNumber(0,1,1,0)
197 if n1 == 7: o1 = "Ok"
199 if n2 == 5: o2 = "Ok"
202 print "getFaceNumber 1,0,2,0 = ", n1, " : ", o1
203 print "getFaceNumber 1,1,1,0 = ", n2, " : ", o2
206 n1 = grid.getNodeNumber(0,0,0)
207 n2 = grid.getNodeNumber(1,0,0)
208 n3 = grid.getNodeNumber(1,1,0)
209 n4 = grid.getNodeNumber(0,1,0)
211 conn1 = [n1,n2,n3,n4]
213 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
214 print "connectivity =", Connectivity
216 print "Cell 1 nodes:", conn1, Connectivity[0:4]
217 if conn1 != Connectivity[0:4]:
218 raise RuntimeError, "Wrong nodal connectivity"
221 ReverseConnectivity = grid.getReverseConnectivity(MED_NODAL)
222 ReverseConnectivityIndex = grid.getReverseConnectivityIndex(MED_NODAL)
224 beg = ReverseConnectivityIndex[n-1]-1
225 end = ReverseConnectivityIndex[n]-1
226 print "Node",n,"rev connectivity =",ReverseConnectivity[beg:end]
228 raise RuntimeError, "Wrong reverse connectivity"
229 if ReverseConnectivity[beg] != 1:
230 raise RuntimeError, "Wrong reverse connectivity"
233 grid.calculateConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL)
234 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
235 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
237 beg = ConnectivityIndex[n-1]-1
238 end = ConnectivityIndex[n]-1
239 print "Element",n,"descending connectivity -->",Connectivity[beg:end]
240 if Connectivity[beg:end] != [1, 4, 13, 14]:
241 raise RuntimeError, "Wrong descending connectivity"
243 print "getReverseConnectivity(MED_DESCENDING)", grid.getReverseConnectivity(MED_DESCENDING)
244 print "grid.getReverseConnectivityIndex(MED_DESCENDING)",grid.getReverseConnectivityIndex(MED_DESCENDING)
246 ##############################
248 ##############################
250 mesh_name = md.getMeshName(1)
251 mesh = md.getMesh(mesh_name)
252 print "Read", mesh_name
255 if mesh.getIsAGrid() == 0:
256 raise RuntimeError, "Mesh 1 is not a grid"
258 grid = createGridFromMesh(mesh)
260 I = grid.getArrayLength(1)
261 print "_iArrayLength", I
263 raise RuntimeError, "Error in grid.getArrayLength(1)"
265 J = grid.getArrayLength(2)
266 print "_jArrayLength", J
268 raise RuntimeError, "Error in grid.getArrayLength(2)"
270 K = grid.getArrayLength(3)
271 print "_kArrayLength", K
273 raise RuntimeError, "Error in grid.getArrayLength(3)"
275 grid_type = grid.getGridType()
276 print "grid_type =", grid_type
277 if grid_type != MED_BODY_FITTED:
278 raise RuntimeError, "Wrong grid type"
280 spaceDim = grid.getSpaceDimension()
281 print "spaceDim =", spaceDim
283 raise RuntimeError, "Wrong space dimention"
285 meshDim = grid.getMeshDimension()
286 print "meshDim =", meshDim
287 if spaceDim != meshDim:
288 raise RuntimeError, "Wrong mesh dimention"
290 nbNodes = grid.getNumberOfNodes()
291 print "nbNodes =", nbNodes
293 raise RuntimeError, "Wrong nb of nodes"
295 coordSyst = grid.getCoordinatesSystem()
296 print "coordSyst =", coordSyst
297 if coordSyst != "CARTESIAN":
298 raise RuntimeError, "Wrong coordinates system"
300 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
301 print "nbTypesCell =", nbTypesCell
303 raise RuntimeError, "Wrong nbTypesCell"
305 types = grid.getTypes(MED_CELL)
306 print "Cell types =", types
308 raise RuntimeError, "Wrong Cell types"
310 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
311 print "Nb cells =", nbElemType
313 raise RuntimeError, "Wrong Nb cells"
315 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
316 print "connectivity =", Connectivity
317 n1 = grid.getNodeNumber(0,0,0)
318 n2 = grid.getNodeNumber(1,0,0)
319 n3 = grid.getNodeNumber(1,1,0)
320 n4 = grid.getNodeNumber(0,1,0)
321 conn1 = [n1,n2,n3,n4]
322 print "Cell 1 nodes:", conn1, Connectivity[0:4]
323 if conn1 != Connectivity[0:4]:
324 raise RuntimeError, "Wrong nodal connectivity"
326 ##############################################
327 # test "maa1" which in fact is not a pure GRID
328 ##############################################
330 mesh_name = md.getMeshName(2)
331 mesh = md.getMesh(mesh_name)
332 print "Read", mesh_name
335 if mesh.getIsAGrid() == 0:
336 print "Mesh ",mesh_name," is not a grid"
338 print "END of the Pyhton script ..... Ctrl D to exit"