]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM_SWIG/med_test_grid.py
Salome HOME
MEDMEM suppression
[modules/med.git] / src / MEDMEM_SWIG / med_test_grid.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 #    Python script for testing T5.10 task
25 # ###########################################
26 #% Test structured mesh (GRID) reading from file test19.med
27 #% test19.med can be obtained by running test19_c.out executable
28 # or locally in MEDMEM directory create_grid
29 #
30 from libMEDMEM_Swig import *
31
32 import os
33 #
34 #befor running this script, please be sure about the path the file fileName
35 #
36 filePath=os.environ["MED_ROOT_DIR"]
37 filePath=os.path.join(filePath, "share", "salome", "resources", "med")
38
39 medFile = os.path.join(filePath, "test19.med")
40 print "Read file", medFile
41
42 md = MEDFILEBROWSER(medFile)
43
44 nbMeshes = md.getNumberOfMeshes()
45 print "Nb meshes:", nbMeshes
46 if nbMeshes == 0:
47   raise  RuntimeError, "Can't read med file"
48
49 ##############################
50 # test "CartGrid"
51 ##############################
52
53 mesh_name = md.getMeshName(0)
54 print "Read", mesh_name
55 grid = GRID(MED_DRIVER,medFile,mesh_name)
56
57 if grid.getIsAGrid() == 0:
58   raise  RuntimeError, "Mesh 0 is not a grid"
59
60 I = grid.getArrayLength(1)
61 print "_iArrayLength", I
62 if I != 4:
63   raise  RuntimeError, "Error in grid.getArrayLength(1)"
64
65 J = grid.getArrayLength(2)
66 print "_jArrayLength", J
67 if J != 4:
68   raise  RuntimeError, "Error in grid.getArrayLength(2)"
69
70 K = grid.getArrayLength(3)
71 print "_kArrayLength", K
72 if K != 0:
73   raise  RuntimeError, "Error in grid.getArrayLength(3)"
74
75 grid_type = grid.getGridType()
76 print "grid_type =", grid_type
77 if grid_type != MED_CARTESIAN:
78   raise  RuntimeError, "Wrong grid type"
79
80 spaceDim = grid.getSpaceDimension()
81 print "spaceDim =", spaceDim
82 if spaceDim != 2:
83   raise  RuntimeError, "Wrong space dimention"
84
85 meshDim = grid.getMeshDimension()
86 print "meshDim =", meshDim
87 if spaceDim != meshDim:
88   raise  RuntimeError, "Wrong mesh dimention"
89
90 nbNodes = grid.getNumberOfNodes()
91 print "nbNodes =", nbNodes
92 if nbNodes != 16:
93   raise  RuntimeError, "Wrong nb of nodes"
94
95 coordSyst = grid.getCoordinatesSystem()
96 print "coordSyst =", coordSyst
97 if coordSyst != "CARTESIAN":
98   raise  RuntimeError, "Wrong coordinates system"
99
100 mesh = grid.convertInMESH()
101 coordinates = mesh.getCoordinates(MED_FULL_INTERLACE)
102 print "coordinates =", coordinates
103 xy = [ grid.getArrayValue(1, I-1 ) , grid.getArrayValue(2, J-1 ) ]
104 xy2 = coordinates[(nbNodes-1)*spaceDim:(nbNodes*spaceDim)]
105 print list(xy)
106 print xy2
107 if not list(xy) == list(xy2):
108   raise  RuntimeError, "Error in grid.getCoordinates(MED_FULL_INTERLACE)"
109
110 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
111 print "nbTypesCell =", nbTypesCell
112 if nbTypesCell != 1:
113   raise  RuntimeError, "Wrong nbTypesCell"
114
115 types = grid.getTypes(MED_CELL)
116 print "Cell types =", types
117 if types != [204]:
118   raise  RuntimeError, "Wrong Cell types"
119                 
120 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
121 print "Nb cells =", nbElemType
122 if nbElemType != 9:
123   raise  RuntimeError, "Wrong Nb cells"
124
125 print "getEntityPosition : convert node number to i,j,k"
126
127 n1 = grid.getEntityPosition(MED_NODE,10)
128 n2 = grid.getEntityPosition(MED_NODE,16)
129
130 if n1 == [1,2]: o1 = "Ok"
131 else:           o1 = "KO"
132 if n2 == [3,3]: o2 = "Ok"
133 else:           o2 = "KO"
134
135 print "Node 10 -> i,j = ", n1, " : ", o1
136 print "Node 16 -> i,j = ", n2, " : ", o2
137
138 print "getEntityPosition : convert cell number to i,j,k"
139
140 n1 = grid.getEntityPosition(MED_CELL,3)
141 n2 = grid.getEntityPosition(MED_CELL,4)
142
143 if n1 == [2,0]: o1 = "Ok"
144 else:           o1 = "KO"
145 if n2 == [0,1]: o2 = "Ok"
146 else:           o2 = "KO"
147
148 print "Cell 3 -> i,j = ", n1, " : ", o1
149 print "Cell 4 -> i,j = ", n2, " : ", o2
150
151 print "getEntityPosition : convert face number to i,j,k"
152
153 n1 = grid.getEntityPosition(MED_FACE,6)
154 n2 = grid.getEntityPosition(MED_FACE,8)
155
156 if n1 == [1,2,1]: o1 = "Ok"
157 else:             o1 = "KO"
158 if n2 == [1,1,2]: o2 = "Ok"
159 else:             o2 = "KO"
160
161 print "Face 6 -> i,j = ", n1, " : ", o1
162 print "Face 8 -> i,j = ", n2, " : ", o2
163
164 print "getNodeNumber : convert i,j,k to node number"
165
166 n1 = grid.getNodeNumber(2,1,0)
167 n2 = grid.getNodeNumber(1,2,0)
168
169 if n1 == 7:  o1 = "Ok"
170 else:        o1 = "KO"
171 if n2 == 10: o2 = "Ok"
172 else:        o2 = "KO"
173
174 print "getNodeNumber 2,1,0 = ", n1, " : ", o1
175 print "getNodeNumber 1,2,0 = ", n2, " : ", o2
176
177 print "getCellNumber : convert i,j,k to cell number"
178
179 n1 = grid.getCellNumber(1,0,0)
180 n2 = grid.getCellNumber(2,1,0)
181
182 if n1 == 2: o1 = "Ok"
183 else:       o1 = "KO"
184 if n2 == 6: o2 = "Ok"
185 else:       o2 = "KO"
186
187 print "getCellNumber 1,0,0 = ", n1, " : ", o1
188 print "getCellNumber 2,1,0 = ", n2, " : ", o2
189
190 print "getFaceNumber : convert i,j,k to face number"
191
192 n1 = grid.getFaceNumber(0,0,2,0)
193 n2 = grid.getFaceNumber(0,1,1,0)
194
195 if n1 == 7: o1 = "Ok"
196 else:       o1 = "KO"
197 if n2 == 5: o2 = "Ok"
198 else:       o2 = "KO"
199
200 print "getFaceNumber 1,0,2,0 = ", n1, " : ", o1
201 print "getFaceNumber 1,1,1,0 = ", n2, " : ", o2
202
203 print "Connectivity"
204 n1 = grid.getNodeNumber(0,0,0)
205 n2 = grid.getNodeNumber(0,1,0)
206 n3 = grid.getNodeNumber(1,1,0)
207 n4 = grid.getNodeNumber(1,0,0)
208
209 conn1 = [n1,n2,n3,n4]
210
211 Connectivity = mesh.getConnectivity(MED_NODAL,MED_CELL,types[0])
212 print "connectivity =", Connectivity
213
214 print "Cell 1 nodes:", conn1, Connectivity[0:4]
215 if list(conn1) != list(Connectivity[0:4]):
216   raise  RuntimeError, "Wrong nodal connectivity"
217
218
219 ReverseConnectivity = mesh.getReverseConnectivity(MED_NODAL)
220 ReverseConnectivityIndex = mesh.getReverseConnectivityIndex(MED_NODAL)
221 n = 6
222 beg = ReverseConnectivityIndex[n-1]-1
223 end = ReverseConnectivityIndex[n]-1
224 print "Node",n,"rev connectivity =",ReverseConnectivity[beg:end]
225 if end-beg != 4:
226   raise  RuntimeError, "Wrong reverse connectivity"
227 if ReverseConnectivity[beg] != 1:
228   raise  RuntimeError, "Wrong reverse connectivity"
229
230 edgfecon = mesh.getConnectivity(MED_NODAL,MED_EDGE,MED_ALL_ELEMENTS)
231 print edgfecon
232 print len(edgfecon)
233
234 mesh.calculateConnectivity(MED_DESCENDING,MED_CELL)
235 Connectivity = mesh.getConnectivity(MED_DESCENDING,MED_CELL,MED_ALL_ELEMENTS)
236 ConnectivityIndex = mesh.getConnectivityIndex(MED_DESCENDING,MED_CELL)
237 n = 1
238 beg = ConnectivityIndex[n-1]-1
239 end = ConnectivityIndex[n]-1
240 print "Element",n,"descending connectivity -->",Connectivity[beg:end]
241 if list(Connectivity[beg:end]) != [13, 4, 14, 1]:
242   raise  RuntimeError, "Wrong descending  connectivity"
243
244 print "getReverseConnectivity(MED_DESCENDING)", mesh.getReverseConnectivity(MED_DESCENDING)
245 print "grid.getReverseConnectivityIndex(MED_DESCENDING)",mesh.getReverseConnectivityIndex(MED_DESCENDING)
246
247 ##############################
248 # test "bodyfitted"
249 ##############################
250
251 mesh_name = md.getMeshName(1)
252 print "Read", mesh_name
253 grid = GRID(MED_DRIVER,medFile,mesh_name)
254
255 if grid.getIsAGrid() == 0:
256   raise  RuntimeError, "Mesh 1 is not a grid"
257
258 mesh = grid.convertInMESH()
259
260 I = grid.getArrayLength(1)
261 print "_iArrayLength", I
262 if I != 2:
263   raise  RuntimeError, "Error in grid.getArrayLength(1)"
264
265 J = grid.getArrayLength(2)
266 print "_jArrayLength", J
267 if J != 2:
268   raise  RuntimeError, "Error in grid.getArrayLength(2)"
269
270 K = grid.getArrayLength(3)
271 print "_kArrayLength", K
272 if K != 0:
273   raise  RuntimeError, "Error in grid.getArrayLength(3)"
274
275 grid_type = grid.getGridType()
276 print "grid_type =", grid_type
277 if grid_type != MED_BODY_FITTED:
278   raise  RuntimeError, "Wrong grid type"
279
280 spaceDim = grid.getSpaceDimension()
281 print "spaceDim =", spaceDim
282 if spaceDim != 2:
283   raise  RuntimeError, "Wrong space dimention"
284
285 meshDim = grid.getMeshDimension()
286 print "meshDim =", meshDim
287 if spaceDim != meshDim:
288   raise  RuntimeError, "Wrong mesh dimention"
289
290 nbNodes = grid.getNumberOfNodes()
291 print "nbNodes =", nbNodes
292 if nbNodes != 4:
293   raise  RuntimeError, "Wrong nb of nodes"
294
295 coordSyst = grid.getCoordinatesSystem()
296 print "coordSyst =", coordSyst
297 if coordSyst != "CARTESIAN":
298   raise  RuntimeError, "Wrong coordinates system"
299
300 nbTypesCell = grid.getNumberOfTypes(MED_CELL)
301 print "nbTypesCell =", nbTypesCell
302 if nbTypesCell != 1:
303   raise  RuntimeError, "Wrong nbTypesCell"
304
305 types = grid.getTypes(MED_CELL)
306 print "Cell types =", types
307 if types != [204]:
308   raise  RuntimeError, "Wrong Cell types"
309                 
310 nbElemType = grid.getNumberOfElements(MED_CELL,types[0])
311 print "Nb cells =", nbElemType
312 if nbElemType != 1:
313   raise  RuntimeError, "Wrong Nb cells"
314
315 Connectivity = mesh.getConnectivity(MED_NODAL,MED_CELL,types[0])
316 print "connectivity =", Connectivity
317 n1 = grid.getNodeNumber(0,0,0)
318 n2 = grid.getNodeNumber(0,1,0)
319 n3 = grid.getNodeNumber(1,1,0)
320 n4 = grid.getNodeNumber(1,0,0)
321 conn1 = [n1,n2,n3,n4]
322 print "Cell 1 nodes:", conn1, Connectivity[0:4]
323 if conn1 != list(Connectivity[0:4]):
324   raise  RuntimeError, "Wrong nodal connectivity"
325
326 ##############################################
327 # test "maa1" which in fact is not a pure GRID
328 ##############################################
329
330 mesh_name = md.getMeshName(2)
331
332 print "Read", mesh_name
333 mesh = MESH(MED_DRIVER,md.getFileName(),mesh_name)
334
335 if mesh.getIsAGrid() == 0:
336   print "Mesh ",mesh_name," is not a grid"
337
338 print "END of the Pyhton script ..... Ctrl D to exit"