1 # Python script for testing T5.10 task
2 # ###########################################
4 #% Test structured mesh (GRID) reading from file test19.med
5 #% test19.med can be obtained by running test19_c.out executable
7 from libMEDMEM_Swig import *
10 print "Read file", medFile
14 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
17 mdDriver.readFileStruct()
20 nbMeshes = md.getNumberOfMeshes()
21 print "Nb meshes:", nbMeshes
23 raise RuntimeError, "Can't read med file"
25 ##############################
27 ##############################
29 mesh_name = md.getMeshName(0)
30 mesh = md.getMesh(mesh_name)
31 print "Read", mesh_name
34 if mesh.getIsAGrid() == 0:
35 raise RuntimeError, "Mesh 0 is not a grid"
37 grid = createGridFromMesh(mesh)
39 I = grid.getArrayLength(1)
40 print "_iArrayLength", I
42 raise RuntimeError, "Error in grid.getArrayLength(1)"
44 J = grid.getArrayLength(2)
45 print "_jArrayLength", J
47 raise RuntimeError, "Error in grid.getArrayLength(2)"
49 K = grid.getArrayLength(3)
50 print "_kArrayLength", K
52 raise RuntimeError, "Error in grid.getArrayLength(3)"
54 grid_type = grid.getGridType()
55 print "grid_type =", grid_type
56 if grid_type != MED_CARTESIAN:
57 raise RuntimeError, "Wrong grid type"
59 spaceDim = grid.getSpaceDimension()
60 print "spaceDim =", spaceDim
62 raise RuntimeError, "Wrong space dimention"
64 meshDim = grid.getMeshDimension()
65 print "meshDim =", meshDim
66 if spaceDim != meshDim:
67 raise RuntimeError, "Wrong mesh dimention"
69 nbNodes = grid.getNumberOfNodes()
70 print "nbNodes =", nbNodes
72 raise RuntimeError, "Wrong nb of nodes"
74 coordSyst = grid.getCoordinatesSystem()
75 print "coordSyst =", coordSyst
76 if coordSyst != "CARTESIAN":
77 raise RuntimeError, "Wrong coordinates system"
79 coordinates = grid.getCoordinates(MED_FULL_INTERLACE)
80 print "coordinates =", coordinates
81 xy = [ grid.getArrayValue(1, I-1 ) , grid.getArrayValue(2, J-1 ) ]
82 xy2 = coordinates[(nbNodes-1)*spaceDim:(nbNodes*spaceDim)]
84 raise RuntimeError, "Error in grid.getCoordinates(MED_FULL_INTERLACE)"
86 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
87 print "nbTypesCell =", nbTypesCell
89 raise RuntimeError, "Wrong nbTypesCell"
91 types = grid.getTypes(MED_CELL)
92 print "Cell types =", types
94 raise RuntimeError, "Wrong Cell types"
96 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
97 print "Nb cells =", nbElemType
99 raise RuntimeError, "Wrong Nb cells"
101 print "getEntityPosition : convert node number to i,j,k"
103 n1 = grid.getEntityPosition(MED_NODE,10)
104 n2 = grid.getEntityPosition(MED_NODE,16)
106 if n1 == [1,2]: o1 = "Ok"
108 if n2 == [3,3]: o2 = "Ok"
111 print "Node 10 -> i,j = ", n1, " : ", o1
112 print "Node 16 -> i,j = ", n2, " : ", o2
114 print "getEntityPosition : convert cell number to i,j,k"
116 n1 = grid.getEntityPosition(MED_CELL,3)
117 n2 = grid.getEntityPosition(MED_CELL,4)
119 if n1 == [2,0]: o1 = "Ok"
121 if n2 == [0,1]: o2 = "Ok"
124 print "Cell 3 -> i,j = ", n1, " : ", o1
125 print "Cell 4 -> i,j = ", n2, " : ", o2
127 print "getEntityPosition : convert face number to i,j,k"
129 n1 = grid.getEntityPosition(MED_FACE,6)
130 n2 = grid.getEntityPosition(MED_FACE,8)
132 if n1 == [1,2,1]: o1 = "Ok"
134 if n2 == [1,1,2]: o2 = "Ok"
137 print "Face 6 -> i,j = ", n1, " : ", o1
138 print "Face 8 -> i,j = ", n2, " : ", o2
140 print "getNodeNumber : convert i,j,k to node number"
142 n1 = grid.getNodeNumber(2,1,0)
143 n2 = grid.getNodeNumber(1,2,0)
145 if n1 == 7: o1 = "Ok"
147 if n2 == 10: o2 = "Ok"
150 print "getNodeNumber 2,1,0 = ", n1, " : ", o1
151 print "getNodeNumber 1,2,0 = ", n2, " : ", o2
153 print "getCellNumber : convert i,j,k to cell number"
155 n1 = grid.getCellNumber(1,0,0)
156 n2 = grid.getCellNumber(2,1,0)
158 if n1 == 2: o1 = "Ok"
160 if n2 == 6: o2 = "Ok"
163 print "getCellNumber 1,0,0 = ", n1, " : ", o1
164 print "getCellNumber 2,1,0 = ", n2, " : ", o2
166 print "getFaceNumber : convert i,j,k to face number"
168 n1 = grid.getFaceNumber(0,0,2,0)
169 n2 = grid.getFaceNumber(0,1,1,0)
171 if n1 == 7: o1 = "Ok"
173 if n2 == 5: o2 = "Ok"
176 print "getFaceNumber 1,0,2,0 = ", n1, " : ", o1
177 print "getFaceNumber 1,1,1,0 = ", n2, " : ", o2
180 n1 = grid.getNodeNumber(0,0,0)
181 n2 = grid.getNodeNumber(1,0,0)
182 n3 = grid.getNodeNumber(1,1,0)
183 n4 = grid.getNodeNumber(0,1,0)
185 conn1 = [n1,n2,n3,n4]
187 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
188 print "connectivity =", Connectivity
190 print "Cell 1 nodes:", conn1, Connectivity[0:4]
191 if conn1 != Connectivity[0:4]:
192 raise RuntimeError, "Wrong nodal connectivity"
195 ReverseConnectivity = grid.getReverseConnectivity(MED_NODAL)
196 ReverseConnectivityIndex = grid.getReverseConnectivityIndex(MED_NODAL)
198 beg = ReverseConnectivityIndex[n-1]-1
199 end = ReverseConnectivityIndex[n]-1
200 print "Node",n,"rev connectivity =",ReverseConnectivity[beg:end]
202 raise RuntimeError, "Wrong reverse connectivity"
203 if ReverseConnectivity[beg] != 1:
204 raise RuntimeError, "Wrong reverse connectivity"
207 grid.calculateConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL)
208 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
209 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
211 beg = ConnectivityIndex[n-1]-1
212 end = ConnectivityIndex[n]-1
213 print "Element",n,"descending connectivity -->",Connectivity[beg:end]
214 if Connectivity[beg:end] != [1, 4, 13, 14]:
215 raise RuntimeError, "Wrong descending connectivity"
217 print "getReverseConnectivity(MED_DESCENDING)", grid.getReverseConnectivity(MED_DESCENDING)
218 print "grid.getReverseConnectivityIndex(MED_DESCENDING)",grid.getReverseConnectivityIndex(MED_DESCENDING)
220 ##############################
222 ##############################
224 mesh_name = md.getMeshName(1)
225 mesh = md.getMesh(mesh_name)
226 print "Read", mesh_name
229 if mesh.getIsAGrid() == 0:
230 raise RuntimeError, "Mesh 1 is not a grid"
232 grid = createGridFromMesh(mesh)
234 I = grid.getArrayLength(1)
235 print "_iArrayLength", I
237 raise RuntimeError, "Error in grid.getArrayLength(1)"
239 J = grid.getArrayLength(2)
240 print "_jArrayLength", J
242 raise RuntimeError, "Error in grid.getArrayLength(2)"
244 K = grid.getArrayLength(3)
245 print "_kArrayLength", K
247 raise RuntimeError, "Error in grid.getArrayLength(3)"
249 grid_type = grid.getGridType()
250 print "grid_type =", grid_type
251 if grid_type != MED_BODY_FITTED:
252 raise RuntimeError, "Wrong grid type"
254 spaceDim = grid.getSpaceDimension()
255 print "spaceDim =", spaceDim
257 raise RuntimeError, "Wrong space dimention"
259 meshDim = grid.getMeshDimension()
260 print "meshDim =", meshDim
261 if spaceDim != meshDim:
262 raise RuntimeError, "Wrong mesh dimention"
264 nbNodes = grid.getNumberOfNodes()
265 print "nbNodes =", nbNodes
267 raise RuntimeError, "Wrong nb of nodes"
269 coordSyst = grid.getCoordinatesSystem()
270 print "coordSyst =", coordSyst
271 if coordSyst != "CARTESIAN":
272 raise RuntimeError, "Wrong coordinates system"
274 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
275 print "nbTypesCell =", nbTypesCell
277 raise RuntimeError, "Wrong nbTypesCell"
279 types = grid.getTypes(MED_CELL)
280 print "Cell types =", types
282 raise RuntimeError, "Wrong Cell types"
284 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
285 print "Nb cells =", nbElemType
287 raise RuntimeError, "Wrong Nb cells"
289 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
290 print "connectivity =", Connectivity
291 n1 = grid.getNodeNumber(0,0,0)
292 n2 = grid.getNodeNumber(1,0,0)
293 n3 = grid.getNodeNumber(1,1,0)
294 n4 = grid.getNodeNumber(0,1,0)
295 conn1 = [n1,n2,n3,n4]
296 print "Cell 1 nodes:", conn1, Connectivity[0:4]
297 if conn1 != Connectivity[0:4]:
298 raise RuntimeError, "Wrong nodal connectivity"
300 ##############################################
301 # test "maa1" which in fact is not a pure GRID
302 ##############################################
304 mesh_name = md.getMeshName(2)
305 mesh = md.getMesh(mesh_name)
306 print "Read", mesh_name
309 if mesh.getIsAGrid() == 0:
310 print "Mesh ",mesh_name," is not a grid"
312 print "END of the Pyhton script ..... Ctrl D to exit"