]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM_SWIG/med_test_grid.py
Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[modules/med.git] / src / MEDMEM_SWIG / med_test_grid.py
1 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
2 #
3 #  Copyright (C) 2003  CEA/DEN, EDF R&D
4 #
5 #
6 #
7 #  File   : med_test_grid.py
8 #  Module : MED
9
10 #% Test structured mesh (GRID) reading from file test19.med
11 #% test19.med can be obtained by running test19_c.out executable
12
13 from libMEDMEM_Swig import *
14
15 medFile = "test19.med"
16 print "Read file", medFile
17
18 md = MED()
19
20 mdDriver = MED_MED_RDONLY_DRIVER(medFile,md)
21
22 mdDriver.open()
23 mdDriver.readFileStruct()
24 mdDriver.close()
25
26 nbMeshes = md.getNumberOfMeshes()
27 print "Nb meshes:", nbMeshes
28 if nbMeshes == 0:
29   raise  RuntimeError, "Can't read med file"
30
31 ##############################
32 # test "CartGrid"
33 ##############################
34
35 mesh_name = md.getMeshName(0)
36 mesh = md.getMesh(mesh_name)
37 print "Read", mesh_name
38 mesh.read()
39
40 if mesh.getIsAGrid() == 0:
41   raise  RuntimeError, "Mesh 0 is not a grid"
42
43 grid = createGridFromMesh(mesh)
44
45 I = grid.getArrayLength(1)
46 print "_iArrayLength", I
47 if I != 4:
48   raise  RuntimeError, "Error in grid.getArrayLength(1)"
49
50 J = grid.getArrayLength(2)
51 print "_jArrayLength", J
52 if J != 4:
53   raise  RuntimeError, "Error in grid.getArrayLength(2)"
54
55 K = grid.getArrayLength(3)
56 print "_kArrayLength", K
57 if K != 0:
58   raise  RuntimeError, "Error in grid.getArrayLength(3)"
59
60 grid_type = grid.getGridType()
61 print "grid_type =", grid_type
62 if grid_type != MED_CARTESIAN:
63   raise  RuntimeError, "Wrong grid type"
64
65 spaceDim = grid.getSpaceDimension()
66 print "spaceDim =", spaceDim
67 if spaceDim != 2:
68   raise  RuntimeError, "Wrong space dimention"
69
70 meshDim = grid.getMeshDimension()
71 print "meshDim =", meshDim
72 if spaceDim != meshDim:
73   raise  RuntimeError, "Wrong mesh dimention"
74
75 nbNodes = grid.getNumberOfNodes()
76 print "nbNodes =", nbNodes
77 if nbNodes != 16:
78   raise  RuntimeError, "Wrong nb of nodes"
79
80 coordSyst = grid.getCoordinatesSystem()
81 print "coordSyst =", coordSyst
82 if coordSyst != "CARTESIAN":
83   raise  RuntimeError, "Wrong coordinates system"
84
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)]
89 if xy != xy2:
90   raise  RuntimeError, "Error in grid.getCoordinates(MED_FULL_INTERLACE)"
91
92 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
93 print "nbTypesCell =", nbTypesCell
94 if nbTypesCell != 1:
95   raise  RuntimeError, "Wrong nbTypesCell"
96
97 types = grid.getTypes(MED_CELL)
98 print "Cell types =", types
99 if types != [204]:
100   raise  RuntimeError, "Wrong Cell types"
101                 
102 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
103 print "Nb cells =", nbElemType
104 if nbElemType != 9:
105   raise  RuntimeError, "Wrong Nb cells"
106
107 print "getEntityPosition : convert node number to i,j,k"
108
109 n1 = grid.getEntityPosition(MED_NODE,10)
110 n2 = grid.getEntityPosition(MED_NODE,16)
111
112 if n1 == [1,2]: o1 = "Ok"
113 else:           o1 = "KO"
114 if n2 == [3,3]: o2 = "Ok"
115 else:           o2 = "KO"
116
117 print "Node 10 -> i,j = ", n1, " : ", o1
118 print "Node 16 -> i,j = ", n2, " : ", o2
119
120 print "getEntityPosition : convert cell number to i,j,k"
121
122 n1 = grid.getEntityPosition(MED_CELL,3)
123 n2 = grid.getEntityPosition(MED_CELL,4)
124
125 if n1 == [2,0]: o1 = "Ok"
126 else:           o1 = "KO"
127 if n2 == [0,1]: o2 = "Ok"
128 else:           o2 = "KO"
129
130 print "Cell 3 -> i,j = ", n1, " : ", o1
131 print "Cell 4 -> i,j = ", n2, " : ", o2
132
133 print "getEntityPosition : convert face number to i,j,k"
134
135 n1 = grid.getEntityPosition(MED_FACE,6)
136 n2 = grid.getEntityPosition(MED_FACE,8)
137
138 if n1 == [1,2,1]: o1 = "Ok"
139 else:             o1 = "KO"
140 if n2 == [1,1,2]: o2 = "Ok"
141 else:             o2 = "KO"
142
143 print "Face 6 -> i,j = ", n1, " : ", o1
144 print "Face 8 -> i,j = ", n2, " : ", o2
145
146 print "getNodeNumber : convert i,j,k to node number"
147
148 n1 = grid.getNodeNumber(2,1,0)
149 n2 = grid.getNodeNumber(1,2,0)
150
151 if n1 == 7:  o1 = "Ok"
152 else:        o1 = "KO"
153 if n2 == 10: o2 = "Ok"
154 else:        o2 = "KO"
155
156 print "getNodeNumber 2,1,0 = ", n1, " : ", o1
157 print "getNodeNumber 1,2,0 = ", n2, " : ", o2
158
159 print "getCellNumber : convert i,j,k to cell number"
160
161 n1 = grid.getCellNumber(1,0,0)
162 n2 = grid.getCellNumber(2,1,0)
163
164 if n1 == 2: o1 = "Ok"
165 else:       o1 = "KO"
166 if n2 == 6: o2 = "Ok"
167 else:       o2 = "KO"
168
169 print "getCellNumber 1,0,0 = ", n1, " : ", o1
170 print "getCellNumber 2,1,0 = ", n2, " : ", o2
171
172 print "getFaceNumber : convert i,j,k to face number"
173
174 n1 = grid.getFaceNumber(0,0,2,0)
175 n2 = grid.getFaceNumber(0,1,1,0)
176
177 if n1 == 7: o1 = "Ok"
178 else:       o1 = "KO"
179 if n2 == 5: o2 = "Ok"
180 else:       o2 = "KO"
181
182 print "getFaceNumber 1,0,2,0 = ", n1, " : ", o1
183 print "getFaceNumber 1,1,1,0 = ", n2, " : ", o2
184
185 print "Connectivity"
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)
190
191 conn1 = [n1,n2,n3,n4]
192
193 Connectivity = grid.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,types[0])
194 print "connectivity =", Connectivity
195
196 print "Cell 1 nodes:", conn1, Connectivity[0:4]
197 if conn1 != Connectivity[0:4]:
198   raise  RuntimeError, "Wrong nodal connectivity"
199
200
201 ReverseConnectivity = grid.getReverseConnectivity(MED_NODAL)
202 ReverseConnectivityIndex = grid.getReverseConnectivityIndex(MED_NODAL)
203 n = 6
204 beg = ReverseConnectivityIndex[n-1]-1
205 end = ReverseConnectivityIndex[n]-1
206 print "Node",n,"rev connectivity =",ReverseConnectivity[beg:end]
207 if end-beg != 4:
208   raise  RuntimeError, "Wrong reverse connectivity"
209 if ReverseConnectivity[beg] != 1:
210   raise  RuntimeError, "Wrong reverse connectivity"
211
212
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)
216 n = 1
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"
222
223 print "getReverseConnectivity(MED_DESCENDING)", grid.getReverseConnectivity(MED_DESCENDING)
224 print "grid.getReverseConnectivityIndex(MED_DESCENDING)",grid.getReverseConnectivityIndex(MED_DESCENDING)
225
226 ##############################
227 # test "bodyfitted"
228 ##############################
229
230 mesh_name = md.getMeshName(1)
231 mesh = md.getMesh(mesh_name)
232 print "Read", mesh_name
233 mesh.read()
234
235 if mesh.getIsAGrid() == 0:
236   raise  RuntimeError, "Mesh 1 is not a grid"
237
238 grid = createGridFromMesh(mesh)
239
240 I = grid.getArrayLength(1)
241 print "_iArrayLength", I
242 if I != 2:
243   raise  RuntimeError, "Error in grid.getArrayLength(1)"
244
245 J = grid.getArrayLength(2)
246 print "_jArrayLength", J
247 if J != 2:
248   raise  RuntimeError, "Error in grid.getArrayLength(2)"
249
250 K = grid.getArrayLength(3)
251 print "_kArrayLength", K
252 if K != 0:
253   raise  RuntimeError, "Error in grid.getArrayLength(3)"
254
255 grid_type = grid.getGridType()
256 print "grid_type =", grid_type
257 if grid_type != MED_BODY_FITTED:
258   raise  RuntimeError, "Wrong grid type"
259
260 spaceDim = grid.getSpaceDimension()
261 print "spaceDim =", spaceDim
262 if spaceDim != 2:
263   raise  RuntimeError, "Wrong space dimention"
264
265 meshDim = grid.getMeshDimension()
266 print "meshDim =", meshDim
267 if spaceDim != meshDim:
268   raise  RuntimeError, "Wrong mesh dimention"
269
270 nbNodes = grid.getNumberOfNodes()
271 print "nbNodes =", nbNodes
272 if nbNodes != 4:
273   raise  RuntimeError, "Wrong nb of nodes"
274
275 coordSyst = grid.getCoordinatesSystem()
276 print "coordSyst =", coordSyst
277 if coordSyst != "CARTESIAN":
278   raise  RuntimeError, "Wrong coordinates system"
279
280 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
281 print "nbTypesCell =", nbTypesCell
282 if nbTypesCell != 1:
283   raise  RuntimeError, "Wrong nbTypesCell"
284
285 types = grid.getTypes(MED_CELL)
286 print "Cell types =", types
287 if types != [204]:
288   raise  RuntimeError, "Wrong Cell types"
289                 
290 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
291 print "Nb cells =", nbElemType
292 if nbElemType != 1:
293   raise  RuntimeError, "Wrong Nb cells"
294
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"
305
306 ##############################################
307 # test "maa1" which in fact is not a pure GRID
308 ##############################################
309
310 mesh_name = md.getMeshName(2)
311 mesh = md.getMesh(mesh_name)
312 print "Read", mesh_name
313 mesh.read()
314
315 if mesh.getIsAGrid() == 0:
316   print "Mesh ",mesh_name," is not a grid"
317
318 print "END of the Pyhton script ..... Ctrl D to exit"