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