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