1 # MED MEDMEM_SWIG : binding of C++ implementation and Python
3 # Copyright (C) 2003 CEA/DEN, EDF R&D
7 # File : med_test_grid.py
10 #% Test structured mesh (GRID) reading from file test19.med
11 #% test19.med can be obtained by running test19_c.out executable
13 from libMEDMEM_Swig import *
15 medFile = "test19.med"
16 print "Read file", medFile
20 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
23 mdDriver.readFileStruct()
26 nbMeshes = md.getNumberOfMeshes()
27 print "Nb meshes:", nbMeshes
29 raise RuntimeError, "Can't read med file"
31 ##############################
33 ##############################
35 mesh_name = md.getMeshName(0)
36 mesh = md.getMesh(mesh_name)
37 print "Read", mesh_name
40 if mesh.getIsAGrid() == 0:
41 raise RuntimeError, "Mesh 0 is not a grid"
43 grid = createGridFromMesh(mesh)
45 I = grid.getArrayLength(1)
46 print "_iArrayLength", I
48 raise RuntimeError, "Error in grid.getArrayLength(1)"
50 J = grid.getArrayLength(2)
51 print "_jArrayLength", J
53 raise RuntimeError, "Error in grid.getArrayLength(2)"
55 K = grid.getArrayLength(3)
56 print "_kArrayLength", K
58 raise RuntimeError, "Error in grid.getArrayLength(3)"
60 grid_type = grid.getGridType()
61 print "grid_type =", grid_type
62 if grid_type != MED_CARTESIAN:
63 raise RuntimeError, "Wrong grid type"
65 spaceDim = grid.getSpaceDimension()
66 print "spaceDim =", spaceDim
68 raise RuntimeError, "Wrong space dimention"
70 meshDim = grid.getMeshDimension()
71 print "meshDim =", meshDim
72 if spaceDim != meshDim:
73 raise RuntimeError, "Wrong mesh dimention"
75 nbNodes = grid.getNumberOfNodes()
76 print "nbNodes =", nbNodes
78 raise RuntimeError, "Wrong nb of nodes"
80 coordSyst = grid.getCoordinatesSystem()
81 print "coordSyst =", coordSyst
82 if coordSyst != "CARTESIAN":
83 raise RuntimeError, "Wrong coordinates system"
85 coordinates = grid.getCoordinates(MED_FULL_INTERLACE)
86 print "coordinates =", coordinates
87 xy = [ grid.getArrayValue(1, I-1 ) , grid.getArrayValue(2, J-1 ) ]
88 xy2 = coordinates[(nbNodes-1)*spaceDim:(nbNodes*spaceDim)]
90 raise RuntimeError, "Error in grid.getCoordinates(MED_FULL_INTERLACE)"
92 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
93 print "nbTypesCell =", nbTypesCell
95 raise RuntimeError, "Wrong nbTypesCell"
97 types = grid.getTypes(MED_CELL)
98 print "Cell types =", types
100 raise RuntimeError, "Wrong Cell types"
102 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
103 print "Nb cells =", nbElemType
105 raise RuntimeError, "Wrong Nb cells"
107 print "getEntityPosition : convert node number to i,j,k"
109 n1 = grid.getEntityPosition(MED_NODE,10)
110 n2 = grid.getEntityPosition(MED_NODE,16)
112 if n1 == [1,2]: o1 = "Ok"
114 if n2 == [3,3]: o2 = "Ok"
117 print "Node 10 -> i,j = ", n1, " : ", o1
118 print "Node 16 -> i,j = ", n2, " : ", o2
120 print "getEntityPosition : convert cell number to i,j,k"
122 n1 = grid.getEntityPosition(MED_CELL,3)
123 n2 = grid.getEntityPosition(MED_CELL,4)
125 if n1 == [2,0]: o1 = "Ok"
127 if n2 == [0,1]: o2 = "Ok"
130 print "Cell 3 -> i,j = ", n1, " : ", o1
131 print "Cell 4 -> i,j = ", n2, " : ", o2
133 print "getEntityPosition : convert face number to i,j,k"
135 n1 = grid.getEntityPosition(MED_FACE,6)
136 n2 = grid.getEntityPosition(MED_FACE,8)
138 if n1 == [1,2,1]: o1 = "Ok"
140 if n2 == [1,1,2]: o2 = "Ok"
143 print "Face 6 -> i,j = ", n1, " : ", o1
144 print "Face 8 -> i,j = ", n2, " : ", o2
146 print "getNodeNumber : convert i,j,k to node number"
148 n1 = grid.getNodeNumber(2,1,0)
149 n2 = grid.getNodeNumber(1,2,0)
151 if n1 == 7: o1 = "Ok"
153 if n2 == 10: o2 = "Ok"
156 print "getNodeNumber 2,1,0 = ", n1, " : ", o1
157 print "getNodeNumber 1,2,0 = ", n2, " : ", o2
159 print "getCellNumber : convert i,j,k to cell number"
161 n1 = grid.getCellNumber(1,0,0)
162 n2 = grid.getCellNumber(2,1,0)
164 if n1 == 2: o1 = "Ok"
166 if n2 == 6: o2 = "Ok"
169 print "getCellNumber 1,0,0 = ", n1, " : ", o1
170 print "getCellNumber 2,1,0 = ", n2, " : ", o2
172 print "getFaceNumber : convert i,j,k to face number"
174 n1 = grid.getFaceNumber(0,0,2,0)
175 n2 = grid.getFaceNumber(0,1,1,0)
177 if n1 == 7: o1 = "Ok"
179 if n2 == 5: o2 = "Ok"
182 print "getFaceNumber 1,0,2,0 = ", n1, " : ", o1
183 print "getFaceNumber 1,1,1,0 = ", n2, " : ", o2
186 n1 = grid.getNodeNumber(0,0,0)
187 n2 = grid.getNodeNumber(1,0,0)
188 n3 = grid.getNodeNumber(1,1,0)
189 n4 = grid.getNodeNumber(0,1,0)
191 conn1 = [n1,n2,n3,n4]
193 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
194 print "connectivity =", Connectivity
196 print "Cell 1 nodes:", conn1, Connectivity[0:4]
197 if conn1 != Connectivity[0:4]:
198 raise RuntimeError, "Wrong nodal connectivity"
201 ReverseConnectivity = grid.getReverseConnectivity(MED_NODAL)
202 ReverseConnectivityIndex = grid.getReverseConnectivityIndex(MED_NODAL)
204 beg = ReverseConnectivityIndex[n-1]-1
205 end = ReverseConnectivityIndex[n]-1
206 print "Node",n,"rev connectivity =",ReverseConnectivity[beg:end]
208 raise RuntimeError, "Wrong reverse connectivity"
209 if ReverseConnectivity[beg] != 1:
210 raise RuntimeError, "Wrong reverse connectivity"
213 grid.calculateConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL)
214 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
215 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
217 beg = ConnectivityIndex[n-1]-1
218 end = ConnectivityIndex[n]-1
219 print "Element",n,"descending connectivity -->",Connectivity[beg:end]
220 if Connectivity[beg:end] != [1, 4, 13, 14]:
221 raise RuntimeError, "Wrong descending connectivity"
223 print "getReverseConnectivity(MED_DESCENDING)", grid.getReverseConnectivity(MED_DESCENDING)
224 print "grid.getReverseConnectivityIndex(MED_DESCENDING)",grid.getReverseConnectivityIndex(MED_DESCENDING)
226 ##############################
228 ##############################
230 mesh_name = md.getMeshName(1)
231 mesh = md.getMesh(mesh_name)
232 print "Read", mesh_name
235 if mesh.getIsAGrid() == 0:
236 raise RuntimeError, "Mesh 1 is not a grid"
238 grid = createGridFromMesh(mesh)
240 I = grid.getArrayLength(1)
241 print "_iArrayLength", I
243 raise RuntimeError, "Error in grid.getArrayLength(1)"
245 J = grid.getArrayLength(2)
246 print "_jArrayLength", J
248 raise RuntimeError, "Error in grid.getArrayLength(2)"
250 K = grid.getArrayLength(3)
251 print "_kArrayLength", K
253 raise RuntimeError, "Error in grid.getArrayLength(3)"
255 grid_type = grid.getGridType()
256 print "grid_type =", grid_type
257 if grid_type != MED_BODY_FITTED:
258 raise RuntimeError, "Wrong grid type"
260 spaceDim = grid.getSpaceDimension()
261 print "spaceDim =", spaceDim
263 raise RuntimeError, "Wrong space dimention"
265 meshDim = grid.getMeshDimension()
266 print "meshDim =", meshDim
267 if spaceDim != meshDim:
268 raise RuntimeError, "Wrong mesh dimention"
270 nbNodes = grid.getNumberOfNodes()
271 print "nbNodes =", nbNodes
273 raise RuntimeError, "Wrong nb of nodes"
275 coordSyst = grid.getCoordinatesSystem()
276 print "coordSyst =", coordSyst
277 if coordSyst != "CARTESIAN":
278 raise RuntimeError, "Wrong coordinates system"
280 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
281 print "nbTypesCell =", nbTypesCell
283 raise RuntimeError, "Wrong nbTypesCell"
285 types = grid.getTypes(MED_CELL)
286 print "Cell types =", types
288 raise RuntimeError, "Wrong Cell types"
290 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
291 print "Nb cells =", nbElemType
293 raise RuntimeError, "Wrong Nb cells"
295 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
296 print "connectivity =", Connectivity
297 n1 = grid.getNodeNumber(0,0,0)
298 n2 = grid.getNodeNumber(1,0,0)
299 n3 = grid.getNodeNumber(1,1,0)
300 n4 = grid.getNodeNumber(0,1,0)
301 conn1 = [n1,n2,n3,n4]
302 print "Cell 1 nodes:", conn1, Connectivity[0:4]
303 if conn1 != Connectivity[0:4]:
304 raise RuntimeError, "Wrong nodal connectivity"
306 ##############################################
307 # test "maa1" which in fact is not a pure GRID
308 ##############################################
310 mesh_name = md.getMeshName(2)
311 mesh = md.getMesh(mesh_name)
312 print "Read", mesh_name
315 if mesh.getIsAGrid() == 0:
316 print "Mesh ",mesh_name," is not a grid"
318 print "END of the Pyhton script ..... Ctrl D to exit"