Salome HOME
typo-fix by Kunda
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingBasicsTest3.py
1 #  -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2016  CEA/DEN, EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 from MEDCoupling import *
22 import unittest
23 from math import pi,e,sqrt,cos,sin
24 from datetime import datetime
25 from MEDCouplingDataForTest import MEDCouplingDataForTest
26 import rlcompleter,readline # this line has to be here, to ensure a usability of MEDCoupling/MEDLoader. B4 removing it please notify to anthony.geay@edf.fr
27
28 class MEDCouplingBasicsTest3(unittest.TestCase):
29     def testSwigGetItem1(self):
30         da=DataArrayInt.New()
31         da.alloc(16,3)
32         da.rearrange(1)
33         da.iota(7)
34         da.rearrange(3)
35         da.setInfoOnComponent(0,"X [m]")
36         da.setInfoOnComponent(1,"Y [m]")
37         da.setInfoOnComponent(2,"Z [km]")
38         da2=da[5:-1]
39         self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51],da2.getValues())
40         da2=da[4]
41         self.assertEqual([19, 20, 21],da2.getValues())
42         try:
43             da2=da[4:17]
44         except InterpKernelException as e:
45             self.assertTrue(True)
46         else:
47             self.assertTrue(False)
48             pass
49         da2=da[5:-2,2]
50         self.assertEqual([24, 27, 30, 33, 36, 39, 42, 45, 48],da2.getValues())
51         da2=da[5:8,:]
52         self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30],da2.getValues())
53         da2=da[:]
54         self.assertTrue(da2.isEqual(da))
55         da2=da[:,:]
56         self.assertTrue(da2.isEqual(da))
57         try:
58             da2=da[:,:,:]
59         except InterpKernelException as e:
60             self.assertTrue(True)
61         else:
62             self.assertTrue(False)
63             pass
64         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayInt([23,26,29])))
65         da2=da[5:8,:-2]
66         self.assertEqual([22, 25, 28],da2.getValues())
67         try:
68             da2=da[5:-18,2]
69         except InterpKernelException as e:
70             self.assertTrue(True)
71         else:
72             self.assertTrue(False)
73             pass
74         da2=da[5:5,2]
75         self.assertEqual([],da2.getValues())
76         pass
77
78     def testSwigGetItem2(self):
79         da=DataArrayDouble.New()
80         da.alloc(16,3)
81         da.rearrange(1)
82         da.iota(7)
83         da.rearrange(3)
84         da.setInfoOnComponent(0,"X [m]")
85         da.setInfoOnComponent(1,"Y [m]")
86         da.setInfoOnComponent(2,"Z [km]")
87         da2=da[5:-1]
88         self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51.],da2.getValues())
89         da2=da[4]
90         self.assertEqual([19., 20., 21],da2.getValues())
91         try:
92             da2=da[4:17]
93         except InterpKernelException as e:
94             self.assertTrue(True)
95         else:
96             self.assertTrue(False)
97             pass
98         da2=da[5:-2,2]
99         self.assertEqual([24., 27., 30., 33., 36., 39., 42., 45., 48.],da2.getValues())
100         da2=da[5:8,:]
101         self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30.],da2.getValues())
102         da2=da[:]
103         self.assertTrue(da2.isEqual(da,1e-12))
104         da2=da[:,:]
105         self.assertTrue(da2.isEqual(da,1e-12))
106         try:
107             da2=da[:,:,:]
108         except InterpKernelException as e:
109             self.assertTrue(True)
110         else:
111             self.assertTrue(False)
112             pass
113         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayDouble([23.,26.,29.]),1e-12))
114         da2=da[5:8,:-2]
115         self.assertEqual([22., 25., 28.],da2.getValues())
116         try:
117             da2=da[5:-18,2]
118         except InterpKernelException as e:
119             self.assertTrue(True)
120         else:
121             self.assertTrue(False)
122             pass
123         da2=da[5:5,2]
124         self.assertEqual([],da2.getValues())
125         pass
126
127     def testSwigSetItem1(self):
128         da=DataArrayInt.New()
129         da.alloc(20,1)
130         da.iota(7)
131         da.rearrange(5)
132         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
133         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
134         da[:,2]=3
135         self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues())
136         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
137         da[2]=3
138         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3, 3, 3, 3, 3, 22, 23, 24, 25, 26],da.getValues())
139         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
140         da[[0,3]]=-1
141         self.assertEqual([-1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1],da.getValues())
142         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
143         da[:,[1,3,4]]=-3
144         self.assertEqual([7, -3, 9, -3, -3, 12, -3, 14, -3, -3, 17, -3, 19, -3, -3, 22, -3, 24, -3, -3],da.getValues())
145         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
146         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
147         da[da2]=-7
148         self.assertEqual([-7, -7, -7, -7, -7, 12, 13, 14, 15, 16, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7],da.getValues())
149         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
150         da[da2,-2:]=-7
151         self.assertEqual([7, 8, 9, -7, -7, 12, 13, 14, 15, 16, 17, 18, 19, -7, -7, 22, 23, 24, -7, -7],da.getValues())
152         # Let's test with DAI right hand side
153         da1=DataArrayInt.New()
154         da1.setValues([25,26,27,125,126,127],2,3)
155         #
156         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
157         da[-2:,1:4]=da1
158         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 21, 22, 125, 126, 127, 26],da.getValues())
159         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
160         da[1:,3]=[225,226,227]
161         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 225, 16, 17, 18, 19, 226, 21, 22, 23, 24, 227, 26],da.getValues())
162         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
163         da[1,2:]=[225,226,227]
164         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 225, 226, 227, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],da.getValues())
165         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
166         da[da2,-2:]=[88,99,1010,1111,1212,1313]
167         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
168         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
169         da3=DataArrayInt.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
170         da[da2,-2:]=da3
171         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
172         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
173         da[da2,[0,2]]=da3
174         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
175         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
176         da[da2,0:3:2]=da3
177         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
178         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
179         da[da2,0:3:2]=-8
180         self.assertEqual([-8, 8, -8, 10, 11, 12, 13, 14, 15, 16, -8, 18, -8, 20, 21, -8, 23, -8, 25, 26],da.getValues())
181         pass
182
183     def testSwigSetItem2(self):
184         da=DataArrayDouble.New()
185         da.alloc(20,1)
186         da.iota(7)
187         da.rearrange(5)
188         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
189         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
190         da[:,2]=3.
191         self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues())
192         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
193         da[2]=3.
194         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 3., 3., 3., 3., 3., 22., 23., 24., 25., 26.],da.getValues())
195         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
196         da[[0,3]]=-1.
197         self.assertEqual([-1., -1., -1., -1., -1., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., -1., -1., -1., -1., -1.],da.getValues())
198         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
199         da[:,[1,3,4]]=-3.
200         self.assertEqual([7., -3., 9., -3., -3., 12., -3., 14., -3., -3., 17., -3., 19., -3., -3., 22., -3., 24., -3., -3.],da.getValues())
201         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
202         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
203         da[da2]=-7.
204         self.assertEqual([-7., -7., -7., -7., -7., 12., 13., 14., 15., 16., -7., -7., -7., -7., -7., -7., -7., -7., -7., -7.],da.getValues())
205         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
206         da[da2,-2:]=-7
207         self.assertEqual([7., 8., 9., -7., -7., 12., 13., 14., 15., 16., 17., 18., 19., -7., -7., 22., 23., 24., -7., -7.],da.getValues())
208         # Let's test with DAI right hand side
209         da1=DataArrayDouble.New()
210         da1.setValues([25,26,27,125,126,127],2,3)
211         #
212         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
213         da[-2:,1:4]=da1
214         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 25., 26., 27., 21., 22., 125., 126., 127., 26.],da.getValues())
215         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
216         da[1:,3]=[225.,226.,227.]
217         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 225., 16., 17., 18., 19., 226., 21., 22., 23., 24., 227., 26.],da.getValues())
218         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
219         da[1,2:]=[225,226,227]
220         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 225., 226., 227., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26.],da.getValues())
221         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
222         da[da2,-2:]=[88,99,1010,1111,1212,1313]
223         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
224         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
225         da3=DataArrayDouble.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
226         da[da2,-2:]=da3
227         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
228         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
229         da[da2,[0,2]]=da3
230         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
231         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
232         da[da2,0:3:2]=da3
233         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
234         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
235         da[da2,0:3:2]=-8.
236         self.assertEqual([-8., 8., -8., 10., 11., 12., 13., 14., 15., 16., -8., 18., -8., 20., 21., -8., 23., -8., 25., 26.],da.getValues())
237         pass
238
239     def testSwigDADOp(self):
240         da=DataArrayDouble.New()
241         da.alloc(12,1)
242         da.iota(7.)
243         da1=DataArrayDouble.New()
244         da1.alloc(12,1)
245         da1.iota(8.)
246         da2=da+da1
247         self.assertEqual([15., 17., 19., 21., 23., 25., 27., 29., 31., 33., 35., 37.],da2.getValues())
248         da2=da+3
249         da3=3+da
250         self.assertTrue(da2.isEqual(da3,1e-12))
251         da2=da-1.
252         self.assertEqual([6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0],da2.getValues())
253         da2=1-da
254         self.assertEqual([-6.0, -7.0, -8.0, -9.0, -10.0, -11.0, -12.0, -13.0, -14.0, -15.0, -16.0, -17.0],da2.getValues())
255         da2=da*3
256         self.assertEqual([21.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0, 48.0, 51.0, 54.0],da2.getValues())
257         da2=3.*da
258         self.assertEqual([21.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0, 48.0, 51.0, 54.0],da2.getValues())
259         da2=da*da1
260         self.assertEqual([56.0, 72.0, 90.0, 110.0, 132.0, 156.0, 182.0, 210.0, 240.0, 272.0, 306.0, 342.0],da2.getValues())
261         da2=da/4.
262         self.assertEqual([1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 4.25, 4.5],da2.getValues())
263         da3=4./da
264         da4=da3*da2
265         self.assertTrue(da4.isUniform(1.,1e-12))
266         st1=da.getHiddenCppPointer()
267         da+=1
268         st2=da.getHiddenCppPointer()
269         self.assertEqual(st1,st2)
270         self.assertTrue(da.isEqual(da1,1e-12))
271         da-=8
272         st2=da.getHiddenCppPointer()
273         self.assertEqual(st1,st2)
274         self.assertEqual(list(range(12)), da.getValues())
275         da+=da1
276         st2=da.getHiddenCppPointer()
277         self.assertEqual(st1,st2)
278         self.assertEqual([8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0],da.getValues())
279         da*=0.5
280         st2=da.getHiddenCppPointer()
281         self.assertEqual(st1,st2)
282         self.assertEqual([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0],da.getValues())
283         da*=da1
284         st2=da.getHiddenCppPointer()
285         self.assertEqual(st1,st2)
286         self.assertEqual([32.0, 45.0, 60.0, 77.0, 96.0, 117.0, 140.0, 165.0, 192.0, 221.0, 252.0, 285.0],da.getValues())
287         da/=da1
288         self.assertEqual(st1,st2)
289         self.assertEqual([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0],da.getValues())
290         da/=2
291         st2=da.getHiddenCppPointer()
292         self.assertEqual(st1,st2)
293         self.assertEqual([2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5],da.getValues())
294         da.rearrange(3)
295         da5=DataArrayDouble.New()
296         da5.setValues([5.,4.,3.,2.],4,1)
297         da*=da5 # it works with unmathing number of compo
298         st2=da.getHiddenCppPointer()
299         self.assertEqual(st1,st2)
300         self.assertEqual([10.0, 12.5, 15.0, 14.0, 16.0, 18.0, 15.0, 16.5, 18.0, 13.0, 14.0, 15.0],da.getValues())
301         #
302         da.alloc(30,1)
303         da.iota(7.)
304         da.rearrange(3)
305         ids=DataArrayInt.New()
306         ids.setValues([3,4,7],3,1)
307         da[ids,:]=[5.,8.,9.]
308         self.assertEqual([7.,8.,9.,10.,11.,12.,13.,14.,15.,5.,8.,9.,5.,8.,9.,22.,23.,24.,25.,26.,27.,5.,8.,9.,31.,32.,33.,34.,35.,36.0],da.getValues())
309         #
310         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
311         da[ids,[1,2]]=[5,8]
312         self.assertEqual([7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,5.,8.,19.,5.,8.,22.,23.,24.,25.,26.,27.,28.,5.,8.,31.,32.,33.,34.,35.,36.],da.getValues())
313         pass
314
315     def testSwigDAIOp(self):
316         da=DataArrayInt.New()
317         da.alloc(12,1)
318         da.iota(7)
319         da1=DataArrayInt.New()
320         da1.alloc(12,1)
321         da1.iota(8)
322         da2=da+da1
323         self.assertEqual([15,17,19,21,23,25,27,29,31,33,35,37],da2.getValues())
324         da2=da+3
325         da3=3+da
326         self.assertTrue(da2.isEqual(da3))
327         da2=da-1
328         self.assertEqual([6,7,8,9,10,11,12,13,14,15,16,17],da2.getValues())
329         da2=1-da
330         self.assertEqual([-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17],da2.getValues())
331         da2=da*3
332         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
333         da2=3*da
334         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
335         da2=da*da1
336         self.assertEqual([56,72,90,110,132,156,182,210,240,272,306,342.0],da2.getValues())
337         da2=da/4
338         self.assertEqual([1,2,2,2,2,3,3,3,3,4,4,4],da2.getValues())
339         da3=4/da
340         da4=da3*da2
341         self.assertTrue(da4.isUniform(0))
342         st1=da.getHiddenCppPointer()
343         da+=1
344         st2=da.getHiddenCppPointer()
345         self.assertEqual(st1,st2)
346         self.assertTrue(da.isEqual(da1))
347         da-=8
348         st2=da.getHiddenCppPointer()
349         self.assertEqual(st1,st2)
350         self.assertEqual(list(range(12)), da.getValues())
351         da+=da1
352         st2=da.getHiddenCppPointer()
353         self.assertEqual(st1,st2)
354         self.assertEqual([8,10,12,14,16,18,20,22,24,26,28,30],da.getValues())
355         da/=2
356         st2=da.getHiddenCppPointer()
357         self.assertEqual(st1,st2)
358         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
359         da*=da1
360         st2=da.getHiddenCppPointer()
361         self.assertEqual(st1,st2)
362         self.assertEqual([32,45,60,77,96,117,140,165,192,221,252,285],da.getValues())
363         da/=da1
364         self.assertEqual(st1,st2)
365         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
366         da/=2
367         st2=da.getHiddenCppPointer()
368         self.assertEqual(st1,st2)
369         self.assertEqual([2,2, 3,3, 4,4, 5,5, 6,6, 7,7],da.getValues())
370         da.rearrange(3)
371         da5=DataArrayInt.New()
372         da5.setValues([5,4,3,2],4,1)
373         da*=da5 # it works with unmathing number of compo
374         st2=da.getHiddenCppPointer()
375         self.assertEqual(st1,st2)
376         self.assertEqual([10,10, 15,12,16,16,15,15, 18,12,14,14],da.getValues())
377         da%=6
378         st2=da.getHiddenCppPointer()
379         self.assertEqual(st1,st2)
380         self.assertEqual([4,4,3,0,4,4,3,3,0,0,2,2],da.getValues())
381         #
382         da.alloc(30,1)
383         da.iota(7)
384         da.rearrange(3)
385         ids=DataArrayInt.New()
386         ids.setValues([3,4,7],3,1)
387         da[ids,:]=[5,8,9]
388         self.assertEqual([7,8,9,10,11,12,13,14,15,5,8,9,5,8,9,22,23,24,25,26,27,5,8,9,31,32,33,34,35,36],da.getValues())
389         #
390         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
391         da[ids,[1,2]]=[5,8]
392         self.assertEqual([7,8,9,10,11,12,13,14,15,16,5,8,19,5,8,22,23,24,25,26,27,28,5,8,31,32,33,34,35,36],da.getValues())
393         pass
394
395     def testSwigDAIOp2(self):
396         da=DataArrayInt.New()
397         st=da.getHiddenCppPointer()
398         da.alloc(10,3)
399         da.rearrange(1)
400         da.iota(0)
401         da.rearrange(3)
402         da[:,1]+=4
403         da[-2:,2]+=10
404         da[-2:,2]+=10
405         da[:,2]+=da[:,0]
406         da[da[0],:]=7
407         self.assertEqual(st,da.getHiddenCppPointer())
408         self.assertEqual(da.getValues(),[7,7,7,3,8,8,7,7,7,9,14,20,12,17,26,7,7,7,18,23,38,21,26,44,24,29,70,27,32,76])
409         pass
410
411     def testSwigDAIOp3(self):
412         da=DataArrayInt.New()
413         self.assertRaises(InterpKernelException,da.__len__)
414         self.assertRaises(InterpKernelException,da.__int__)
415         for elt in da:
416             self.assertTrue(False)
417             pass
418         da.alloc(12,3)
419         da.rearrange(1) ; da.fillWithZero()
420         l1=list(da)
421         self.assertEqual(36,len(da));
422         da.rearrange(3)
423         tmp=da[0]
424         self.assertRaises(InterpKernelException,tmp.__int__)
425         self.assertEqual(12,len(da));
426         l=list(da)
427         for elt in enumerate(l):
428             elt[1][2]=elt[0]
429             pass
430         ref=[0,0,0,0,0,1,0,0,2,0,0,3,0,0,4,0,0,5,0,0,6,0,0,7,0,0,8,0,0,9,0,0,10,0,0,11]
431         self.assertEqual(ref,da.getValues());
432         da.rearrange(1)
433         l=[int(elt) for elt in l1]
434         self.assertEqual(ref,da.getValues());
435         self.assertEqual(11,int(da[-1:]))
436         pass
437
438     def testSwigDADOp3(self):
439         da=DataArrayDouble.New()
440         self.assertRaises(InterpKernelException,da.__len__)
441         self.assertRaises(InterpKernelException,da.__float__)
442         for elt in da:
443             self.assertTrue(False)
444             pass
445         da.alloc(12,3)
446         da.rearrange(1) ; da.fillWithZero()
447         l1=list(da)
448         self.assertEqual(36,len(da));
449         da.rearrange(3)
450         tmp=da[0]
451         self.assertRaises(InterpKernelException,tmp.__float__)
452         self.assertEqual(12,len(da));
453         l=list(da)
454         for elt in enumerate(l):
455             elt[1][2]=elt[0]
456             pass
457         ref=[0.,0.,0.,0.,0.,1.,0.,0.,2.,0.,0.,3.,0.,0.,4.,0.,0.,5.,0.,0.,6.,0.,0.,7.,0.,0.,8.,0.,0.,9.,0.,0.,10.,0.,0.,11.]
458         self.assertEqual(ref,da.getValues());
459         da.rearrange(1)
460         l=[float(elt) for elt in l1]
461         self.assertEqual(ref,da.getValues());
462         self.assertEqual(11.,float(da[-1:]))
463         pass
464
465     def testSwigDataArrayIntIterator1(self):
466         da=DataArrayInt.New()
467         da.alloc(12,1)
468         da.iota(2)
469         da.rearrange(3)
470         # __getitem__ testing
471         li=[]
472         for it in da:
473             li+=it[1:]
474             pass
475         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
476         li=[]
477         for it in da:
478             li+=[it[-1]]
479             pass
480         self.assertEqual([4, 7, 10, 13],li)
481         li=[]
482         for it in da:
483             li+=it[[2,1,0]]
484             pass
485         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
486         # __setitem__ testing
487         da3=da.deepCopy()
488         da2=DataArrayInt.New()
489         da2.alloc(12,1)
490         da2.iota(2002)
491         da2.rearrange(3)
492         it2=da2.__iter__()
493         i=0
494         for it in da:
495             pt = next(it2)
496             it[:]=pt
497             pass
498         self.assertTrue(da.isEqual(da2))
499         da=da3
500         da3=da.deepCopy()
501         #
502         for it in da:
503             it[:]=5
504             pass
505         da.rearrange(1)
506         self.assertTrue(da.isUniform(5))
507         da=da3
508         da3=da.deepCopy()
509         #
510         for it in da:
511             it[:]=[8,9,12]
512             pass
513         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
514         da=da3
515         da3=da.deepCopy()
516         #
517         for it in da:
518             it[2]=[7]
519             pass
520         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
521         pass
522
523     def testSwigDataArrayDoubleIterator1(self):
524         da=DataArrayDouble.New()
525         da.alloc(12,1)
526         da.iota(2)
527         da.rearrange(3)
528         # __getitem__ testing
529         li=[]
530         for it in da:
531             li+=it[1:]
532             pass
533         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
534         li=[]
535         for it in da:
536             li+=[it[-1]]
537             pass
538         self.assertEqual([4, 7, 10, 13],li)
539         li=[]
540         for it in da:
541             li+=it[[2,1,0]]
542             pass
543         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
544         # __setitem__ testing
545         da3=da.deepCopy()
546         da2=DataArrayDouble.New()
547         da2.alloc(12,1)
548         da2.iota(2002)
549         da2.rearrange(3)
550         it2=da2.__iter__()
551         i=0
552         for it in da:
553             pt = next(it2)
554             it[:]=pt
555             pass
556         self.assertTrue(da.isEqual(da2,1e-12))
557         da=da3
558         da3=da.deepCopy()
559         #
560         for it in da:
561             it[:]=5
562             pass
563         da.rearrange(1)
564         self.assertTrue(da.isUniform(5,1e-12))
565         da=da3
566         da3=da.deepCopy()
567         #
568         for it in da:
569             it[:]=[8,9,12]
570             pass
571         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
572         da=da3
573         da3=da.deepCopy()
574         #
575         for it in da:
576             it[2]=[7]
577             pass
578         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
579         pass
580
581     def testSwigUMeshIterator1(self):
582         m=MEDCouplingDataForTest.build2DTargetMesh_1()
583         li1=[]
584         li2=[]
585         for cell in m:
586             li1+=cell.getAllConn()[1:]
587             li2+=[cell.getType()]
588             pass
589         self.assertEqual(li1,[0, 3, 4, 1, 1, 4, 2, 4, 5, 2, 6, 7, 4, 3, 7, 8, 5, 4])
590         self.assertEqual(li2,[4, 3, 3, 4, 4])
591         pass
592
593     def testSwigUMeshIterator2(self):
594         m=MEDCouplingDataForTest.build2DTargetMesh_1()
595         self.assertRaises(InterpKernelException,m.cellsByType);
596         m.rearrange2ConsecutiveCellTypes()
597         li1=[]
598         li2=[]
599         li3=[]
600         for cellsByType in m.cellsByType():
601             li1.append(cellsByType.getType())
602             li2.append(cellsByType.getNumberOfElems())
603             temp=[]
604             for cell in cellsByType:
605                 t=[None,None]
606                 t[0]=cell.getType()
607                 t[1]=cell.getAllConn()[1:]
608                 temp.append(t)
609                 pass
610             li3.append(temp)
611             pass
612         self.assertEqual(li1,[4, 3])
613         self.assertEqual(li2,[3, 2])
614         self.assertEqual(li3,[[[4, (0, 3, 4, 1)], [4, (6, 7, 4, 3)], [4, (7, 8, 5, 4)]], [[3, (1, 4, 2)], [3, (4, 5, 2)]]])
615         pass
616
617     def testDAIAggregateMulti1(self):
618         a=DataArrayInt.New()
619         a.setValues(list(range(4)), 2, 2)
620         a.setName("aa")
621         b=DataArrayInt.New()
622         b.setValues(list(range(6)), 3, 2)
623         c=DataArrayInt.Aggregate([a,b])
624         self.assertEqual(list(range(4)) + list(range(6)), c.getValues())
625         self.assertEqual("aa",c.getName())
626         self.assertEqual(5,c.getNumberOfTuples())
627         self.assertEqual(2,c.getNumberOfComponents())
628         pass
629
630     def testMergeUMeshes2(self):
631         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
632         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
633         m3=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
634         #
635         vec1=[0,2,3]
636         m2_2=m2.buildPartOfMySelf(vec1,False);
637         vec2=[1,1]
638         m3_2=m3.buildPartOfMySelf(vec2,False);
639         #
640         ms=[m1,m2_2,m3_2];
641         #
642         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[None]);
643         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[3.4])
644         m4=MEDCouplingUMesh.MergeUMeshes(ms);
645         m4.checkConsistencyLight();
646         self.assertEqual(10,m4.getNumberOfCells());
647         self.assertEqual(20,m4.getNumberOfNodes());
648         self.assertEqual(45,m4.getNodalConnectivityArrayLen());
649         m4bis=MEDCouplingMesh.MergeMeshes(ms);
650         self.assertTrue(m4.isEqual(m4bis,1e-12))
651         del m4bis
652         #
653         vec3=[0,1,2,3,4]
654         m4_1=m4.buildPartOfMySelf(vec3,False);
655         m4_1.setName(m1.getName());
656         self.assertTrue(m4_1.isEqual(m1,1e-12));
657         #
658         vec4=[5,6,7]
659         m4_2=m4.buildPartOfMySelf(vec4,False);
660         cellCor,nodeCor=m4_2.checkGeoEquivalWith(m2_2,10,1e-12);
661         #
662         vec5=[8,9]
663         m4_3=m4.buildPartOfMySelf(vec5,False);
664         self.assertEqual(2,m4_3.getNumberOfCells());
665         self.assertEqual(3,m4_3.getNumberOfNodes());
666         m3_2.zipCoords();
667         m4_3.setName(m3_2.getName());
668         self.assertTrue(m4_3.isEqual(m3_2,1e-12));
669         #
670         pass
671
672     def testBuild0DMeshFromCoords1(self):
673         sourceCoords=[-0.3,-0.3,0., 0.7,-0.3,0., -0.3,0.7,0., 0.7,0.7,0.]
674         coo=DataArrayDouble.New();
675         coo.setValues(sourceCoords,4,3);
676         coo.setName("My0D");
677         m=MEDCouplingUMesh.Build0DMeshFromCoords(coo);
678         m.checkConsistencyLight();
679         self.assertEqual(4,m.getNumberOfNodes());
680         self.assertEqual(4,m.getNumberOfCells());
681         self.assertEqual(3,m.getSpaceDimension());
682         self.assertEqual(0,m.getMeshDimension());
683         types1=m.getAllGeoTypes();
684         self.assertEqual([NORM_POINT1],types1);
685         for i in range(4):
686             conn=m.getNodeIdsOfCell(i);
687             self.assertEqual([i],conn);
688             self.assertTrue(NORM_POINT1==m.getTypeOfCell(i));
689             pass
690         self.assertEqual(m.getName(),"My0D");
691         pass
692
693     def testDescriptionInMeshTimeUnit1(self):
694         text1="totoTTEDD";
695         m=MEDCouplingDataForTest.build2DTargetMesh_1();
696         m.setDescription(text1);
697         self.assertEqual(m.getDescription(),text1);
698         m2=m.deepCopy();
699         self.assertTrue(m.isEqual(m2,1e-12));
700         self.assertEqual(m2.getDescription(),text1);
701         m2.setDescription("ggg");
702         self.assertTrue(not m.isEqual(m2,1e-12));
703         #
704         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
705         f.setTimeUnit(text1);
706         self.assertEqual(f.getTimeUnit(),text1);
707         f2=f.deepCopy();
708         self.assertEqual(f2.getTimeUnit(),text1);
709         #
710         pass
711
712     def testMultiFields1(self):
713         mfs=MEDCouplingDataForTest.buildMultiFields_1();
714         ms=mfs.getMeshes();
715         dms,refs=mfs.getDifferentMeshes()
716         das=mfs.getArrays();
717         das2,refs2=mfs.getDifferentArrays()
718         self.assertEqual(5,len(mfs.getFields()))
719         self.assertEqual(1,len(mfs.getFields()[0].getArrays()));
720         self.assertEqual(2,len(mfs.getFields()[1].getArrays()));
721         self.assertEqual(1,len(mfs.getFields()[2].getArrays()));
722         self.assertEqual(1,len(mfs.getFields()[3].getArrays()));
723         self.assertEqual(1,len(mfs.getFields()[4].getArrays()));
724         self.assertEqual(5,len(ms));
725         self.assertEqual(2,len(dms));
726         self.assertEqual(6,len(das));
727         self.assertEqual(5,len(das2));
728         mfs2=mfs.deepCopy();
729         self.assertTrue(mfs.isEqual(mfs2,1e-12,1e-12))
730         pass
731
732     def testFieldOverTime1(self):
733         fs=MEDCouplingDataForTest.buildMultiFields_2();
734         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
735         f4bis=fs[4].buildNewTimeReprFromThis(ONE_TIME,False);
736         fs[4]=f4bis;
737         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
738         f4bis.setTime(2.7,20,21);
739         fot=MEDCouplingFieldOverTime.New(fs);
740         dt=fot.getDefinitionTimeZone();
741         hs=dt.getHotSpotsTime();
742         self.assertEqual(6,len(hs));
743         expected1=[0.2,0.7,1.2,1.35,1.7,2.7]
744         for i in range(6):
745             self.assertAlmostEqual(expected1[i],hs[i],12);
746             pass
747         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.2);
748         self.assertEqual(0,meshId);
749         self.assertEqual(0,arrId);
750         self.assertEqual(0,arrIdInField);
751         self.assertEqual(0,fieldId);
752         #
753         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.7);
754         self.assertEqual(0,meshId);
755         self.assertEqual(1,arrId);
756         self.assertEqual(0,arrIdInField);
757         self.assertEqual(1,fieldId);
758         #
759         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeLeft(1.2);#**** WARNING left here
760         self.assertEqual(0,meshId);
761         self.assertEqual(2,arrId);
762         self.assertEqual(1,arrIdInField);
763         self.assertEqual(1,fieldId);
764         #
765         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.2);#**** WARNING right again here
766         self.assertEqual(1,meshId);
767         self.assertEqual(3,arrId);
768         self.assertEqual(0,arrIdInField);
769         self.assertEqual(2,fieldId);
770         #
771         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.35);
772         self.assertEqual(1,meshId);
773         self.assertEqual(3,arrId);
774         self.assertEqual(0,arrIdInField);
775         self.assertEqual(2,fieldId);
776         #
777         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.7);
778         self.assertEqual(0,meshId);
779         self.assertEqual(3,arrId);
780         self.assertEqual(0,arrIdInField);
781         self.assertEqual(3,fieldId);
782         #
783         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(2.7);
784         self.assertEqual(1,meshId);
785         self.assertEqual(4,arrId);
786         self.assertEqual(0,arrIdInField);
787         self.assertEqual(4,fieldId);
788         #
789         dt2=MEDCouplingDefinitionTime();
790         self.assertTrue(not dt2.isEqual(dt));
791         dt2.assign(dt);
792         dt2.assign(dt);#to check memory management
793         self.assertTrue(dt2.isEqual(dt));
794         #
795         dt3=MEDCouplingDefinitionTime();
796         #
797         pass
798
799     def testDAICheckAndPreparePermutation1(self):
800         vals1=[9,10,0,6,4,11,3,7];
801         expect1=[5,6,0,3,2,7,1,4];
802         vals2=[9,10,0,6,10,11,3,7];
803         da=DataArrayInt.New();
804         da.setValues(vals1,8,1);
805         da2=da.checkAndPreparePermutation();
806         self.assertEqual(8,da2.getNumberOfTuples());
807         self.assertEqual(1,da2.getNumberOfComponents());
808         for i in range(8):
809             self.assertEqual(expect1[i],da2.getIJ(i,0));
810             pass
811         #
812         da=DataArrayInt.New();
813         da.alloc(8,1);
814         da.iota(0);
815         da2=da.checkAndPreparePermutation();
816         self.assertEqual(1,da2.getNumberOfComponents());
817         self.assertTrue(da2.isIota(8));
818         #
819         da=DataArrayInt.New();
820         da.alloc(8,1);
821         da.setValues(vals2,8,1);
822         self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
823         pass
824
825     def testDAIChangeSurjectiveFormat1(self):
826         vals1=[0,3,2,3,2,2,1,2]
827         expected1=[0,1,2,6,8]
828         expected2=[0,  6,  2,4,5,7,  1,3]
829         da=DataArrayInt.New();
830         da.setValues(vals1,8,1);
831         #
832         da2,da2I=da.changeSurjectiveFormat(4);
833         self.assertEqual(5,da2I.getNumberOfTuples());
834         self.assertEqual(8,da2.getNumberOfTuples());
835         self.assertEqual(expected1,da2I.getValues());
836         self.assertEqual(expected2,da2.getValues());
837         #
838         self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
839         #
840         pass
841
842     def testUMeshGetCellIdsLyingOnNodes1(self):
843         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
844         nodeIds1=[1,2,3,4,6]
845         nodeIds2=[6,7]
846         da=m.getCellIdsLyingOnNodes(nodeIds1,True);
847         self.assertEqual(1,da.getNumberOfTuples());
848         self.assertEqual(1,da.getNumberOfComponents());
849         self.assertEqual(1,da.getIJ(0,0));
850         da2=DataArrayInt.New()
851         da2.setValues(nodeIds2,2,1)
852         da=m.getCellIdsLyingOnNodes(da2,False);
853         self.assertEqual(2,da.getNumberOfTuples());
854         self.assertEqual(1,da.getNumberOfComponents());
855         self.assertEqual(3,da.getIJ(0,0));
856         self.assertEqual(4,da.getIJ(1,0));
857         pass
858
859     def testUMeshFindCellIdsOnBoundary1(self):
860         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
861         da5=m.findCellIdsOnBoundary();
862         self.assertTrue(da5.isIota(5));
863         pass
864
865     def testMeshSetTime1(self):
866         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
867         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
868         #
869         self.assertTrue(m1.isEqual(m2,1e-12));
870         m1.setTime(3.14,6,7);
871         tmp3,tmp1,tmp2=m1.getTime();
872         self.assertEqual(6,tmp1);
873         self.assertEqual(7,tmp2);
874         self.assertAlmostEqual(3.14,tmp3,12);
875         self.assertTrue(not m1.isEqual(m2,1e-12));
876         m2.setTime(3.14,6,7);
877         self.assertTrue(m1.isEqual(m2,1e-12));
878         m1.setTimeUnit("ms");
879         self.assertTrue(m1.getTimeUnit()=="ms");
880         m1.setTimeUnit("us");
881         self.assertTrue(m1.getTimeUnit()=="us");
882         self.assertTrue(not m1.isEqual(m2,1e-12));
883         m2.setTimeUnit("us");
884         self.assertTrue(m1.isEqual(m2,1e-12));
885         m2.setTime(3.14,6,8);
886         self.assertTrue(not m1.isEqual(m2,1e-12));
887         m2.setTime(3.14,7,7);
888         self.assertTrue(not m1.isEqual(m2,1e-12));
889         m2.setTime(3.15,6,7);
890         self.assertTrue(not m1.isEqual(m2,1e-12));
891         #
892         m1.setTime(10.34,55,12);
893         m3=m1.deepCopy();
894         self.assertTrue(m1.isEqual(m3,1e-12));
895         tmp3,tmp1,tmp2=m3.getTime();
896         self.assertEqual(55,tmp1);
897         self.assertEqual(12,tmp2);
898         self.assertAlmostEqual(10.34,tmp3,12);
899         #
900         # testing CMesh
901         coo1=[0.,1.,2.,3.5]
902         a=DataArrayDouble.New();
903         a.setValues(coo1,4,1);
904         b=MEDCouplingCMesh.New();
905         b.setCoordsAt(0,a);
906         #
907         b.setTime(5.67,8,100);
908         tmp3,tmp1,tmp2=b.getTime();
909         self.assertEqual(8,tmp1);
910         self.assertEqual(100,tmp2);
911         self.assertAlmostEqual(5.67,tmp3,12);
912         c=b.deepCopy();
913         self.assertTrue(c.isEqual(b,1e-12));
914         tmp3,tmp1,tmp2=c.getTime();
915         self.assertEqual(8,tmp1);
916         self.assertEqual(100,tmp2);
917         self.assertAlmostEqual(5.67,tmp3,12);
918         pass
919
920     def testApplyFuncTwo1(self):
921         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
922         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
923         f1.setMesh(m1);
924         #
925         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
926         da=DataArrayDouble.New();
927         da.setValues(vals,5,3);
928         f1.setArray(da);
929         #
930         self.assertRaises(InterpKernelException,da.applyFuncCompo,1,"y+z");
931         da.setInfoOnComponent(0,"x [m]");
932         da.setInfoOnComponent(1,"y [mm]");
933         da.setInfoOnComponent(2,"z [km]");
934
935         self.assertRaises(InterpKernelException, da.applyFuncCompo, 1, "x+y+zz+zzz");
936         self.assertRaises(InterpKernelException, da.applyFuncCompo, 1, "toto(x+y)");
937         self.assertRaises(InterpKernelException, da.applyFuncCompo, 1, "x/0");
938
939         da2=da.applyFuncCompo(1,"y+z");
940         self.assertEqual(1,da2.getNumberOfComponents());
941         self.assertEqual(5,da2.getNumberOfTuples());
942         expected1=[32.,34.,36.,38.,40.]
943         for i in range(5):
944             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
945             pass
946         da2=da.applyFunc(1,"y+z");
947         expected2=[12.,14.,16.,18.,20.]
948         for i in range(5):
949             self.assertAlmostEqual(expected2[i],da2.getIJ(0,i),12);
950             pass
951         #
952         self.assertEqual(3,f1.getNumberOfComponents());
953         self.assertEqual(5,f1.getNumberOfTuples());
954         f1.applyFuncCompo(1,"y+z");
955         self.assertEqual(1,f1.getNumberOfComponents());
956         self.assertEqual(5,f1.getNumberOfTuples());
957         for i in range(5):
958             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
959             pass
960         #
961         pass
962
963     def testApplyFuncThree1(self):
964         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
965         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
966         f1.setMesh(m1);
967         #
968         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
969         da=DataArrayDouble.New();
970         da.setValues(vals,5,3);
971         f1.setArray(da);
972         #
973         vs=3*[None];
974         vs[0]="x"; vs[1]="Y"; vs[2]="z";
975         self.assertRaises(InterpKernelException, da.applyFuncNamedCompo, 1, vs, "y+z");
976         self.assertRaises(InterpKernelException, da.applyFuncNamedCompo, 1, vs, "x+Y+z+zz+zzz");
977         self.assertRaises(InterpKernelException, da.applyFuncNamedCompo, 1, vs, "x/0");
978         vs[1]="y";
979         da2=da.applyFuncNamedCompo(1,vs,"y+z");
980         expected1=[32.,34.,36.,38.,40.]
981         for i in range(5):
982             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
983             pass
984         self.assertRaises(InterpKernelException, da.applyFuncNamedCompo, 1, ["x","y","z","a"],"x+a")
985         f1.setArray(da);
986         self.assertEqual(3,f1.getNumberOfComponents());
987         self.assertEqual(5,f1.getNumberOfTuples());
988         f1.applyFuncNamedCompo(1,vs,"y+z");
989         self.assertEqual(1,f1.getNumberOfComponents());
990         self.assertEqual(5,f1.getNumberOfTuples());
991         for i in range(5):
992             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
993             pass
994         pass
995
996     def testFillFromAnalyticTwo1(self):
997         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
998         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
999         self.assertRaises(InterpKernelException,m1.fillFromAnalyticCompo,ON_NODES,1,"y+z");
1000         m1.getCoords().setInfoOnComponent(0,"x [m]");
1001         m1.getCoords().setInfoOnComponent(1,"y");
1002         m1.getCoords().setInfoOnComponent(2,"z");
1003         f1=m1.fillFromAnalyticCompo(ON_NODES,1,"y+z");
1004         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
1005         self.assertEqual("us",f1.getTimeUnit())
1006         self.assertEqual(1,f1.getNumberOfComponents());
1007         self.assertEqual(9,f1.getNumberOfTuples());
1008         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
1009         for i in range(9):
1010             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
1011             pass
1012         pass
1013
1014     def testFillFromAnalyticThree1(self):
1015         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1016         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
1017         vs=3*[None];
1018         vs[0]="x"; vs[1]="Y"; vs[2]="z";
1019         self.assertRaises(InterpKernelException,m1.fillFromAnalyticNamedCompo,ON_NODES,1,vs,"y+z");
1020         vs[1]="y";
1021         f1=m1.fillFromAnalyticNamedCompo(ON_NODES,1,vs,"y+z");
1022         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
1023         self.assertEqual("us",f1.getTimeUnit())
1024         self.assertEqual(1,f1.getNumberOfComponents());
1025         self.assertEqual(9,f1.getNumberOfTuples());
1026         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
1027         for i in range(9):
1028             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
1029             pass
1030         pass
1031
1032     def testDAUnitVar1(self):
1033         da=DataArrayDouble.New();
1034         da.alloc(1,3);
1035         da.setInfoOnComponent(0,"XPS [m]");
1036         st1=da.getVarOnComponent(0);
1037         self.assertTrue(st1=="XPS");
1038         st2=da.getUnitOnComponent(0);
1039         self.assertTrue(st2=="m");
1040         #
1041         da.setInfoOnComponent(0,"XPS         [m]");
1042         st1=da.getVarOnComponent(0);
1043         self.assertTrue(st1=="XPS");
1044         st2=da.getUnitOnComponent(0);
1045         self.assertTrue(st2=="m");
1046         #
1047         da.setInfoOnComponent(0,"XPP         [m]");
1048         st1=da.getVarOnComponent(0);
1049         self.assertTrue(st1=="XPP");
1050         st2=da.getUnitOnComponent(0);
1051         self.assertTrue(st2=="m");
1052         #
1053         da.setInfoOnComponent(0,"XPP kdep  kefer   [ m  ]");
1054         st1=da.getVarOnComponent(0);
1055         self.assertTrue(st1=="XPP kdep  kefer");
1056         st2=da.getUnitOnComponent(0);
1057         self.assertTrue(st2==" m  ");
1058         #
1059         da.setInfoOnComponent(0,"     XPP k[  dep  k]efer   [ m^ 2/s^3*kJ  ]");
1060         st1=da.getVarOnComponent(0);
1061         self.assertTrue(st1=="     XPP k[  dep  k]efer");
1062         st2=da.getUnitOnComponent(0);
1063         self.assertTrue(st2==" m^ 2/s^3*kJ  ");
1064         #
1065         da.setInfoOnComponent(0,"     XPP kefer   ");
1066         st1=da.getVarOnComponent(0);
1067         self.assertTrue(st1=="     XPP kefer   ");
1068         st2=da.getUnitOnComponent(0);
1069         self.assertTrue(st2=="");
1070         #
1071         da.setInfoOnComponent(0,"temperature( bof)");
1072         st1=da.getVarOnComponent(0);
1073         self.assertTrue(st1=="temperature( bof)");
1074         st2=da.getUnitOnComponent(0);
1075         self.assertTrue(st2=="");
1076         #
1077         da.setInfoOnComponent(0,"kkk [m]");
1078         da.setInfoOnComponent(1,"ppp   [m^2/kJ]");
1079         da.setInfoOnComponent(2,"abcde   [MW/s]");
1080         #
1081         vs=da.getVarsOnComponent();
1082         self.assertEqual(3,len(vs));
1083         self.assertTrue(vs[0]=="kkk");
1084         self.assertTrue(vs[1]=="ppp");
1085         self.assertTrue(vs[2]=="abcde");
1086         vs=da.getUnitsOnComponent();
1087         self.assertEqual(3,len(vs));
1088         self.assertTrue(vs[0]=="m");
1089         self.assertTrue(vs[1]=="m^2/kJ");
1090         self.assertTrue(vs[2]=="MW/s");
1091         pass
1092
1093     def testGaussCoordinates1(self):
1094         #Testing 1D cell types
1095         m1=MEDCouplingDataForTest.build1DMultiTypes_1();
1096         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
1097         f.setMesh(m1);
1098         wg1=[0.3];
1099         gsCoo1=[0.2];
1100         refCoo1=[-1.0,1.0];
1101         f.setGaussLocalizationOnType(NORM_SEG2,refCoo1,gsCoo1,wg1);
1102         wg2=wg1;
1103         gsCoo2=[0.2];
1104         refCoo2=[-1.0,1.0,0.0];
1105         f.setGaussLocalizationOnType(NORM_SEG3,refCoo2,gsCoo2,wg2);
1106         #
1107         resToTest=f.getLocalizationOfDiscr();
1108         self.assertEqual(3,resToTest.getNumberOfComponents());
1109         self.assertEqual(2,resToTest.getNumberOfTuples());
1110         expected1=[0.6,0.6,0.6, 0.6,0.6,0.6]
1111         for i in range(6):
1112             self.assertAlmostEqual(expected1[i],resToTest.getIJ(0,i),14);
1113             pass
1114         #
1115         #Testing 2D cell types
1116         m2=MEDCouplingDataForTest.build2DMultiTypes_1();
1117         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
1118         f.setMesh(m2);
1119         wg3=[0.3,0.3];
1120         tria3CooGauss=[ 0.1, 0.8, 0.2, 0.7 ]
1121         gsCoo3=tria3CooGauss
1122         tria3CooRef=[ 0.0, 0.0, 1.0 , 0.0, 0.0, 1.0 ]
1123         refCoo3=tria3CooRef;
1124         f.setGaussLocalizationOnType(NORM_TRI3,refCoo3,gsCoo3,wg3);
1125         wg4=[0.3,0.3,0.3];
1126         tria6CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4 ]
1127         gsCoo4=tria6CooGauss;
1128         tria6CooRef=[0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5]
1129         refCoo4=tria6CooRef;
1130         f.setGaussLocalizationOnType(NORM_TRI6,refCoo4,gsCoo4,wg4);
1131         wg5=[0.3,0.3,0.3,0.3];
1132         quad4CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4, 0.15, 0.27 ]
1133         gsCoo5=quad4CooGauss;
1134         quad4CooRef=[-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0]
1135         refCoo5=quad4CooRef;
1136         f.setGaussLocalizationOnType(NORM_QUAD4,refCoo5,gsCoo5,wg5);
1137         wg6=[0.3,0.3,0.3,0.3];
1138         quad8CooGauss=[ 0.34, 0.16, 0.21, 0.3, 0.23, 0.4, 0.14, 0.37 ]
1139         gsCoo6=quad8CooGauss;
1140         quad8CooRef=[ -1.0, -1.0, 1.0, -1.0, 1.0,  1.0, -1.0,  1.0, 0.0, -1.0, 1.0,  0.0, 0.0,  1.0, -1.0,  0.0]
1141         refCoo6=quad8CooRef;
1142         f.setGaussLocalizationOnType(NORM_QUAD8,refCoo6,gsCoo6,wg6);
1143         #
1144         resToTest=f.getLocalizationOfDiscr();
1145         self.assertEqual(3,resToTest.getNumberOfComponents());
1146         self.assertEqual(13,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
1147         expected2=[5.1,1.55,0.0, 4.7,1.65,0.0,
1148                    2.32,1.52,0.0, 1.6,1.32,0.0, 3.52,1.26,0.0,#TRI6
1149                    2.6,1.6,0.0, 2.4,1.8,0.0, 2.4,1.2,0.0, 2.3,1.46,0.0,#QUAD4
1150                    2.32,2.68,0.0, 2.6,2.42,0.0, 2.8,2.46,0.0, 2.74,2.28,0.0 ];#QUAD8
1151         for i in range(39):
1152             self.assertAlmostEqual(expected2[i],resToTest.getIJ(0,i),14);
1153             pass
1154         #
1155         #Testing 3D cell types
1156         m3=MEDCouplingDataForTest.build3DMultiTypes_1();
1157         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
1158         f.setMesh(m3);
1159         #
1160         wg7=[0.3];
1161         tetra4CooGauss=[0.34, 0.16, 0.21]
1162         gsCoo7=tetra4CooGauss;
1163         tetra4CooRef=[0.0,1.0,0.0, 0.0,0.0,1.0, 0.0,0.0,0.0, 1.0,0.0,0.0]
1164         refCoo7=tetra4CooRef;
1165         f.setGaussLocalizationOnType(NORM_TETRA4,refCoo7,gsCoo7,wg7);
1166         wg8=[0.3];
1167         tetra10CooGauss=[0.2, 0.3, 0.1]
1168         gsCoo8=tetra10CooGauss;
1169         tetra10CooRef=[0.0,1.0,0.0, 0.0,0.0,0.0, 0.0,0.0,1.0, 1.0,0.0,0.0, 0.0,0.5,0.0, 0.0,0.0,0.5, 0.0,0.5,0.5, 0.5,0.5,0.0, 0.5,0.0,0.0, 0.5,0.0,0.5]
1170         refCoo8=tetra10CooRef;
1171         f.setGaussLocalizationOnType(NORM_TETRA10,refCoo8,gsCoo8,wg8);
1172         wg9=[0.3];
1173         pyra5CooGauss=[0.2, 0.3, 0.1]
1174         gsCoo9=pyra5CooGauss;
1175         pyra5CooRef=[1.0,0.0,0.0, 0.0,1.0,0.0, -1.0,0.0,0.0, 0.0,-1.0,0.0, 0.0,0.0,1.0]
1176         refCoo9=pyra5CooRef;
1177         f.setGaussLocalizationOnType(NORM_PYRA5,refCoo9,gsCoo9,wg9);
1178         wg10=[0.3];
1179         pyra13CooGauss=[0.1, 0.2, 0.7]
1180         gsCoo10=pyra13CooGauss;
1181         pyra13CooRef=[1.0,0.0,0.0, 0.0,1.0,0.0,-1.0,0.0,0.0,0.0,-1.0,0.0,0.0,0.0,1.0,0.5,0.5,0.0,-0.5,0.5,0.0,-0.5,-0.5,0.0,0.5,-0.5,0.0,0.5,0.0,0.5,0.0,0.5,0.5,-0.5,0.0,0.5,0.0,-0.5,0.5]
1182         refCoo10=pyra13CooRef;
1183         f.setGaussLocalizationOnType(NORM_PYRA13,refCoo10,gsCoo10,wg10);
1184         wg11=[0.3];
1185         penta6CooGauss=[0.2, 0.3, 0.1]
1186         gsCoo11=penta6CooGauss;
1187         penta6CooRef=[-1.0,1.0,0.0,-1.0,-0.0,1.0,-1.0,0.0,0.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,0.0,0.0]
1188         refCoo11=penta6CooRef;
1189         f.setGaussLocalizationOnType(NORM_PENTA6,refCoo11,gsCoo11,wg11);
1190         wg12=[0.3];
1191         penta15CooGauss=[0.2, 0.3,0.15]
1192         gsCoo12=penta15CooGauss;
1193         penta15CooRef=[-1.0,1.0,0.0,-1.0,0.0,1.0,-1.0,0.0,0.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,0.0,0.0,-1.0,0.5,0.5,-1.0,0.0,0.5,-1.0,0.5,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.5,0.5,1.0,0.0, 0.5,1.0,0.5,0.0]
1194         refCoo12=penta15CooRef;
1195         f.setGaussLocalizationOnType(NORM_PENTA15,refCoo12,gsCoo12,wg12);
1196         wg13=[0.3];
1197         hexa8CooGauss=[0.2,0.3,0.15]
1198         gsCoo13=hexa8CooGauss;
1199         hexa8CooRef=[-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0]
1200         refCoo13=hexa8CooRef;
1201         f.setGaussLocalizationOnType(NORM_HEXA8,refCoo13,gsCoo13,wg13);
1202         wg14=[0.3];
1203         hexa20CooGauss=[0.11,0.3,0.55]
1204         gsCoo14=hexa20CooGauss;
1205         hexa20CooRef=[-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0,0.0,-1.0,-1.0,1.0,0.0,-1.0,0.0,1.0,-1.0,-1.0,0.0,-1.0,-1.0,-1.0,0.0,1.0,-1.0,0.0,1.0,1.0,0.0,-1.0,1.0,0.0,0.0,-1.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,-1.0,0.0,1.0]
1206         refCoo14=hexa20CooRef;
1207         f.setGaussLocalizationOnType(NORM_HEXA20,refCoo14,gsCoo14,wg14);
1208         #
1209         resToTest=f.getLocalizationOfDiscr();
1210         self.assertEqual(3,resToTest.getNumberOfComponents());
1211         self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
1212         expected3=[1.312,3.15,1.02, 0.56,3.3,0.6, 2.18,1.1,0.2, 1.18,1.54,0.98, 1.56,0.3,3.6, 1.613,0.801,4.374, 2.6,2.4,2.3, 2.31232,2.3933985,1.553255]
1213         for i in range(24):
1214             self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14);
1215             pass
1216         #
1217         pass
1218
1219     def testP2Localization1(self):
1220         m=MEDCouplingUMesh.New("testP2",2);
1221         coords=[0.,2.,3.5,0.,4.5,1.5,1.2,0.32,3.4,1.,2.1,2.4]
1222         conn=[0,1,2,3,4,5]
1223         coo=DataArrayDouble.New();
1224         coo.setValues(coords,6,2);
1225         m.setCoords(coo);
1226         m.allocateCells(1);
1227         m.insertNextCell(NORM_TRI6,6,conn[0:6])
1228         m.finishInsertingCells();
1229         #
1230         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
1231         f.setMesh(m);
1232         da=DataArrayDouble.New();
1233         vals1=[1.2,2.3,3.4, 2.2,3.3,4.4, 3.2,4.3,5.4, 4.2,5.3,6.4, 5.2,6.3,7.4, 6.2,7.3,8.4]
1234         da.setValues(vals1,6,3);
1235         f.setArray(da);
1236         #
1237         loc=[2.27,1.3]
1238         locs=f.getValueOnMulti(loc);
1239         expected1=[6.0921164547752236, 7.1921164547752232, 8.2921164547752255]
1240         for i in range(3):
1241             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
1242             pass
1243         pass
1244
1245     def testP2Localization2(self):
1246         m=MEDCouplingUMesh.New("testP2_2",3);
1247         coords=[0.33312787792955395, -0.35155740179580952, -0.03567564825034563, 1.307146326477638, -0.57234557776250305, -0.08608044208272235, 0.5551834466499993, 0.62324964668794192, -0.014638951108536295, 0.37761817224442129, -0.38324019806913578, 0.96283164472856886, 0.79494856035658679, -0.40628057809270046, 0.0021004190225864614, 1.023740446371799, 0.07665912970471335, -0.072889657161871096, 0.54564584619517376, 0.11132872093429744, 0.039647326652013051, 0.27164784387819052, -0.42018012100866675, 0.46563376500745146, 0.89501965094896418, -0.56148455362735061, 0.43337469695473035, 0.49118025152924394, 0.093884938060727313, 0.47216346905220891]
1248         conn=[0,1,2,3,4,5,6,7,8,9]
1249         coo=DataArrayDouble.New();
1250         coo.setValues(coords,10,3);
1251         m.setCoords(coo);
1252         m.allocateCells(1);
1253         m.insertNextCell(NORM_TETRA10,10,conn[0:10])
1254         m.finishInsertingCells();
1255         #
1256         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
1257         f.setMesh(m);
1258         da=DataArrayDouble.New();
1259         vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2]
1260         da.setValues(vals1,10,1);
1261         f.setArray(da);
1262         #
1263         loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748]
1264         locs=f.getValueOnMulti(loc);
1265         expected1=[10.0844021968047]
1266         for i in range(1):
1267             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
1268             pass
1269         pass
1270
1271     def testGetValueOn2(self):
1272         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1273         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
1274         f.setMesh(m);
1275         arr=DataArrayDouble.New();
1276         nbOfCells=m.getNumberOfCells();
1277         f.setArray(arr);
1278         values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
1279         arr.setValues(values1,nbOfCells,3);
1280         loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
1281         f.checkConsistencyLight();
1282         locs=f.getValueOnMulti(loc);
1283         self.assertEqual(5,locs.getNumberOfTuples());
1284         self.assertEqual(3,locs.getNumberOfComponents());
1285         for j in range(15):
1286             self.assertAlmostEqual(values1[j],locs.getIJ(0,j),12);
1287             pass
1288         # Testing ON_NODES
1289         f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
1290         f.setMesh(m);
1291         arr=DataArrayDouble.New();
1292         nbOfNodes=m.getNumberOfNodes();
1293         f.setArray(arr);
1294         values2=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.,12.,112.,10012.,13.,113.,10013.,14.,114.,10014.,15.,115.,10015.]
1295         arr.setValues(values2,nbOfNodes,3);
1296         loc2=[0.5432,-0.2432, 0.5478,0.1528, 0.5432,-0.2432, 0.5432,-0.2432]
1297         expected2=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124, 9.0272, 109.0272, 10009.0272, 9.0272, 109.0272, 10009.0272]
1298         f.checkConsistencyLight();
1299         loc3=DataArrayDouble.New()
1300         loc3.setValues(loc2,4,2);
1301         locs=f.getValueOnMulti(loc3);
1302         self.assertEqual(4,locs.getNumberOfTuples());
1303         self.assertEqual(3,locs.getNumberOfComponents());
1304         for i in range(12):
1305             self.assertAlmostEqual(expected2[i],locs.getIJ(0,i),12);
1306             pass
1307         #
1308         pass
1309
1310     def testDAIGetIdsNotEqual1(self):
1311         d=DataArrayInt.New();
1312         vals1=[2,3,5,6,8,5,5,6,1,-5]
1313         d.setValues(vals1,10,1);
1314         d2=d.findIdsNotEqual(5);
1315         self.assertEqual(7,d2.getNumberOfTuples());
1316         self.assertEqual(1,d2.getNumberOfComponents());
1317         expected1=[0,1,3,4,7,8,9]
1318         for i in range(7):
1319             self.assertEqual(expected1[i],d2.getIJ(0,i));
1320             pass
1321         d.rearrange(2);
1322         self.assertRaises(InterpKernelException,d.findIdsNotEqual,5);
1323         vals2=[-4,5,6]
1324         vals3=vals2;
1325         d.rearrange(1);
1326         d3=d.findIdsNotEqualList(vals3);
1327         self.assertEqual(5,d3.getNumberOfTuples());
1328         self.assertEqual(1,d3.getNumberOfComponents());
1329         expected2=[0,1,4,8,9]
1330         for i in range(5):
1331             self.assertEqual(expected2[i],d3.getIJ(0,i));
1332             pass
1333         pass
1334
1335     def testDAIComputeOffsets1(self):
1336         d=DataArrayInt.New();
1337         vals1=[3,5,1,2,0,8]
1338         expected1=[0,3,8,9,11,11]
1339         d.setValues(vals1,6,1);
1340         d.computeOffsets();
1341         self.assertEqual(6,d.getNumberOfTuples());
1342         self.assertEqual(1,d.getNumberOfComponents());
1343         for i in range(6):
1344             self.assertEqual(expected1[i],d.getIJ(0,i));
1345             pass
1346         pass
1347
1348     def testUMeshHexagonPrism1(self):
1349         coords=[0.8660254037844386, 0.5, 0.0, 0.0, 1.0, 0.0, -0.8660254037844386, 0.5, 0.0, -0.8660254037844386, -0.5, 0.0, 0.0, -1.0, 0.0, 0.8660254037844386, -0.5, 0.0,
1350                 0.8660254037844386, 0.5, 2.0, 0.0, 1.0, 2.0, -0.8660254037844386, 0.5, 2.0, -0.8660254037844386, -0.5, 2.0, 0.0, -1.0, 2.0, 0.8660254037844386, -0.5, 2.0];
1351         conn=[1,2,3,4,5,0,7,8,9,10,11,6]
1352         mesh=MEDCouplingUMesh.New("MyFirstHexagonalPrism",3);
1353         coo=DataArrayDouble.New();
1354         coo.setValues(coords,12,3);
1355         mesh.setCoords(coo);
1356         mesh.allocateCells(1);
1357         mesh.insertNextCell(NORM_HEXGP12,12,conn[0:12])
1358         mesh.finishInsertingCells();
1359         #
1360         mesh.checkConsistencyLight();
1361         vols=mesh.getMeasureField(False);
1362         self.assertEqual(1,vols.getNumberOfTuples());
1363         self.assertEqual(1,vols.getNumberOfComponents());
1364         self.assertAlmostEqual(-5.196152422706632,vols.getIJ(0,0),12);
1365         bary=mesh.computeCellCenterOfMass();
1366         self.assertEqual(1,bary.getNumberOfTuples());
1367         self.assertEqual(3,bary.getNumberOfComponents());
1368         expected1=[0.,0.,1.]
1369         for i in range(3):
1370             self.assertAlmostEqual(expected1[i],bary.getIJ(0,i),12);
1371             pass
1372         d1=DataArrayInt.New();
1373         d2=DataArrayInt.New();
1374         d3=DataArrayInt.New();
1375         d4=DataArrayInt.New();
1376         m2=mesh.buildDescendingConnectivity(d1,d2,d3,d4);
1377         self.assertEqual(8,m2.getNumberOfCells());
1378         expected4=[[1,2,3,4,5,0],[7,6,11,10,9,8],[1,7,8,2],[2,8,9,3],[3,9,10,4],[4,10,11,5],[5,11,6,0],[0,6,7,1]];
1379         expected2=[NORM_POLYGON, NORM_POLYGON, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4];
1380         expected3=[6,6,4,4,4,4,4,4]
1381         for i in range(8):
1382             self.assertTrue(m2.getTypeOfCell(i)==expected2[i]);
1383             v=m2.getNodeIdsOfCell(i);
1384             self.assertTrue(len(v)==expected3[i]);
1385             self.assertEqual(expected4[i],v);
1386         #
1387         mesh.convertAllToPoly();
1388         self.assertTrue(NORM_POLYHED==mesh.getTypeOfCell(0));
1389         mesh.unPolyze();
1390         self.assertTrue(NORM_HEXGP12==mesh.getTypeOfCell(0));
1391         self.assertEqual(13,mesh.getNodalConnectivityArrayLen());
1392         #
1393         pass
1394
1395     def testDADCheckIsMonotonic(self):
1396         da=DataArrayDouble.New();
1397         da.setValues([-1.,1.01,2.03,6.],2,2);
1398         self.assertRaises(InterpKernelException,da.isMonotonic,True,1e-12);
1399         da.rearrange(1);
1400         self.assertTrue(da.isMonotonic(True,1e-12));
1401         da.checkMonotonic(True,1e-12);
1402         da.setIJ(2,0,6.1);
1403         self.assertTrue(not da.isMonotonic(True,1e-12));
1404         self.assertRaises(InterpKernelException,da.checkMonotonic,True,1e-12);
1405         da.setIJ(2,0,5.99);
1406         self.assertTrue(da.isMonotonic(True,1e-12));
1407         self.assertTrue(not da.isMonotonic(True,1e-1));
1408         pass
1409
1410     def testCheckCoherencyDeeper1(self):
1411         m=MEDCouplingDataForTest.build3DSourceMesh_1();
1412         m.checkConsistencyLight();
1413         m.checkConsistency();
1414         m.getNodalConnectivity().setIJ(8,0,-1);
1415         m.checkConsistencyLight();
1416         self.assertRaises(InterpKernelException,m.checkConsistency);
1417         m.getNodalConnectivity().setIJ(8,0,-6);
1418         m.checkConsistencyLight();
1419         self.assertRaises(InterpKernelException,m.checkConsistency);
1420         m.getNodalConnectivity().setIJ(8,0,9);#9>=NbOfNodes
1421         m.checkConsistencyLight();
1422         self.assertRaises(InterpKernelException,m.checkConsistency);
1423         m.getNodalConnectivity().setIJ(8,0,8);#OK
1424         m.checkConsistencyLight();
1425         m.checkConsistency();
1426         elts=[1,5]
1427         m.convertToPolyTypes(elts);
1428         m.checkConsistencyLight();
1429         m.checkConsistency();
1430         m.getNodalConnectivity().setIJ(2,0,9);#9>=NbOfNodes
1431         m.checkConsistencyLight();
1432         self.assertRaises(InterpKernelException,m.checkConsistency);
1433         m.getNodalConnectivity().setIJ(2,0,-3);
1434         m.checkConsistencyLight();
1435         self.assertRaises(InterpKernelException,m.checkConsistency);
1436         m.getNodalConnectivity().setIJ(2,0,-1);
1437         m.checkConsistencyLight();
1438         self.assertRaises(InterpKernelException,m.checkConsistency);#Throw because cell#0 is not a polyhedron
1439         m.getNodalConnectivity().setIJ(2,0,4);
1440         m.checkConsistencyLight();
1441         m.checkConsistency();
1442         m.getNodalConnectivity().setIJ(7,0,-1);
1443         m.checkConsistencyLight();
1444         m.checkConsistency();#OK because we are in polyhedron connec
1445         m.getNodalConnectivity().setIJ(36,0,14);
1446         m.checkConsistencyLight();
1447         self.assertRaises(InterpKernelException,m.checkConsistency);#Throw because now cell 5 is a TETRA4 (14) so mismatch of number index and static type.
1448         pass
1449
1450     def testUnPolyze2(self):
1451         m=MEDCouplingUMesh.New("jjj",3);
1452         coo=DataArrayDouble.New();
1453         coo.alloc(4,3);
1454         coo.rearrange(1);
1455         coo.iota(0);
1456         coo.rearrange(3);
1457         m.setCoords(coo);
1458         m.allocateCells(2);
1459         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
1460         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
1461         m.finishInsertingCells();
1462         m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(4*[m]);
1463         m2.convertToPolyTypes([2]);
1464         m2.unPolyze();
1465         self.assertEqual(NORM_TETRA4,m2.getTypeOfCell(2));
1466         self.assertEqual(40,m2.getNodalConnectivityArrayLen());
1467         temp2=m2.getNodeIdsOfCell(2);
1468         self.assertEqual(temp2,[0,1,2,3]);
1469         m2.checkConsistency();
1470         m3=m2.deepCopy();
1471         m2.unPolyze();
1472         self.assertTrue(m3.isEqual(m2,1e-12));
1473         pass
1474
1475     def testDACpyFrom1(self):
1476         d=DataArrayDouble.New();
1477         d.alloc(12,1);
1478         d.iota(14.);
1479         d.rearrange(3);
1480         d.setName("Toto");
1481         d.setInfoOnComponent(0,"X [m]");
1482         d.setInfoOnComponent(1,"Y [m]");
1483         d.setInfoOnComponent(2,"Z [m]");
1484         #
1485         d1=DataArrayDouble.New();
1486         self.assertTrue(not d.isEqual(d1,1e-12));
1487         d1.deepCopyFrom(d);
1488         self.assertTrue(d.isEqual(d1,1e-12));
1489         d1.deepCopyFrom(d);
1490         self.assertTrue(d.isEqual(d1,1e-12));
1491         d1.rearrange(2);
1492         self.assertTrue(not d.isEqual(d1,1e-12));
1493         d1.deepCopyFrom(d);
1494         self.assertTrue(d.isEqual(d1,1e-12));
1495         #
1496         d2=d.convertToIntArr();
1497         d4=DataArrayInt.New();
1498         self.assertTrue(not d2.isEqual(d4));
1499         d4.deepCopyFrom(d2);
1500         self.assertTrue(d2.isEqual(d4));
1501         d4.deepCopyFrom(d2);
1502         self.assertTrue(d2.isEqual(d4));
1503         d4.rearrange(2);
1504         self.assertTrue(not d2.isEqual(d4));
1505         d4.deepCopyFrom(d2);
1506         self.assertTrue(d2.isEqual(d4));
1507         pass
1508
1509     def testDAITransformWithIndArr1(self):
1510         tab1=[17,18,22,19]
1511         tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
1512         expected=[17,18,18,19,19,17,18,19,22,22,19,17]
1513         d=DataArrayInt.New();
1514         d.setValues(tab1,4,1);
1515         d1=DataArrayInt.New();
1516         d1.setValues(tab2,12,1);
1517         d2=d1[:]
1518         #
1519         d1.transformWithIndArr(d);
1520         self.assertEqual(12,d1.getNumberOfTuples());
1521         self.assertEqual(1,d1.getNumberOfComponents());
1522         for i in range(12):
1523             self.assertEqual(expected[i],d1.getIJ(i,0));
1524             pass
1525         #
1526         d1=d2
1527         d1.transformWithIndArr(tab1)
1528         self.assertEqual(12,d1.getNumberOfTuples());
1529         self.assertEqual(1,d1.getNumberOfComponents());
1530         for i in range(12):
1531             self.assertEqual(expected[i],d1.getIJ(i,0));
1532             pass
1533         pass
1534
1535     def testDAIBuildPermArrPerLevel1(self):
1536         arr=[2,0,1,1,0,1,2,0,1,1,0,0]
1537         expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
1538         da=DataArrayInt.New();
1539         da.setValues(arr,12,1);
1540         da2=da.buildPermArrPerLevel();
1541         self.assertEqual(12,da2.getNumberOfTuples());
1542         self.assertEqual(1,da2.getNumberOfComponents());
1543         for i in range(12):
1544             self.assertEqual(expected1[i],da2.getIJ(i,0));
1545             pass
1546         pass
1547
1548     def testDAIOperations1(self):
1549         arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
1550         da=DataArrayInt.New();
1551         da.setValues(arr1,4,3);
1552         da1=DataArrayInt.New();
1553         da1.alloc(12,1);
1554         da1.iota(2);
1555         self.assertRaises(InterpKernelException,DataArrayInt.Add,da,da1);#not same number of tuples/Components
1556         da1.rearrange(3);
1557         da2=DataArrayInt.Add(da,da1);
1558         self.assertEqual(4,da2.getNumberOfTuples());
1559         self.assertEqual(3,da2.getNumberOfComponents());
1560         expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
1561         for i in range(12):
1562             self.assertEqual(expected1[i],da2.getIJ(0,i));
1563             pass
1564         da1.substractEqual(da);
1565         expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
1566         for i in range(12):
1567             self.assertEqual(expected2[i],da1.getIJ(0,i));
1568             pass
1569         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
1570         da1.addEqual(da);
1571         for i in range(12):
1572             self.assertEqual(expected1[i],da1.getIJ(0,i));
1573             pass
1574         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
1575         da2=DataArrayInt.Multiply(da,da1);
1576         self.assertEqual(4,da2.getNumberOfTuples());
1577         self.assertEqual(3,da2.getNumberOfComponents());
1578         expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
1579         for i in range(12):
1580             self.assertEqual(expected3[i],da2.getIJ(0,i));
1581             pass
1582         da.divideEqual(da1);
1583         self.assertEqual(4,da.getNumberOfTuples());
1584         self.assertEqual(3,da.getNumberOfComponents());
1585         expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
1586         for i in range(12):
1587             self.assertEqual(expected4[i],da.getIJ(0,i));
1588             pass
1589         da.setValues(arr1,4,3);
1590         da1.multiplyEqual(da);
1591         self.assertEqual(4,da1.getNumberOfTuples());
1592         self.assertEqual(3,da1.getNumberOfComponents());
1593         for i in range(12):
1594             self.assertEqual(expected3[i],da1.getIJ(0,i));
1595             pass
1596         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
1597         da2=DataArrayInt.Divide(da,da1);
1598         self.assertEqual(4,da2.getNumberOfTuples());
1599         self.assertEqual(3,da2.getNumberOfComponents());
1600         for i in range(12):
1601             self.assertEqual(expected4[i],da2.getIJ(0,i));
1602             pass
1603         da1.applyInv(321);
1604         self.assertEqual(4,da1.getNumberOfTuples());
1605         self.assertEqual(3,da1.getNumberOfComponents());
1606         expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
1607         for i in range(12):
1608             self.assertEqual(expected5[i],da1.getIJ(0,i));
1609             pass
1610         da1.applyDivideBy(2);
1611         self.assertEqual(4,da1.getNumberOfTuples());
1612         self.assertEqual(3,da1.getNumberOfComponents());
1613         expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
1614         for i in range(12):
1615             self.assertEqual(expected6[i],da1.getIJ(0,i));
1616             pass
1617         expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
1618         da1.applyModulus(7);
1619         for i in range(12):
1620             self.assertEqual(expected7[i],da1.getIJ(0,i));
1621             pass
1622         da1.applyLin(1,1);
1623         expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
1624         da1.applyRModulus(3);
1625         for i in range(12):
1626             self.assertEqual(expected8[i],da1.getIJ(0,i));
1627             pass
1628         pass
1629
1630     def testEmulateMEDMEMBDC1(self):
1631         m,m1=MEDCouplingDataForTest.buildPointe_1();
1632         m2,da1,da2,da3,da4,da5,da0=m.emulateMEDMEMBDC(m1)
1633         expected0=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,36,37,32,33,34,35,38,39,40,41,42,43,44,45,46]
1634         expected1=[1,32,29,23,41,36]
1635         self.assertEqual(47,da0.getNumberOfTuples());
1636         self.assertEqual(1,da0.getNumberOfComponents());
1637         for i in range(47):
1638             self.assertEqual(expected0[i],da0.getIJ(0,i));
1639             pass
1640         self.assertEqual(6,da5.getNumberOfTuples());
1641         self.assertEqual(1,da5.getNumberOfComponents());
1642         for i in range(6):
1643             self.assertEqual(expected1[i],da5.getIJ(0,i));
1644             pass
1645         expected2=[0,1,2,3,4,0,5,6,7,4,8,9,1,7,10,11,12,13,14,5,15,16,17,8,18,19,20,10,21,22,23,2,13,24,25,21,16,26,27,12,19,28,29,15,22,30,31,18,36,26,28,30,24,37,32,33,34,35,38,36,39,40,41,42,37,38,43,44,45,46]
1646         self.assertEqual(70,da1.getNumberOfTuples());
1647         self.assertEqual(1,da1.getNumberOfComponents());
1648         for i in range(70):
1649             self.assertEqual(expected2[i],da1.getIJ(0,i));
1650             pass
1651         expected3=[0,4,8,12,16,20,24,28,32,36,40,44,48,53,58,64,70]
1652         self.assertEqual(17,da2.getNumberOfTuples());
1653         self.assertEqual(1,da2.getNumberOfComponents());
1654         for i in range(17):
1655             self.assertEqual(expected3[i],da2.getIJ(0,i));
1656             pass
1657         expected4=[0,2,4,6,7,9,11,12,14,16,17,19,20,22,24,25,27,29,30,32,34,35,37,39,40,42,43,45,46,48,49,51,52,53,54,55,56,58,60,62,63,64,65,66,67,68,69,70]
1658         #expected4=[0,2,4,6,7,9,11,12,14,16,17,19,20,22,24,25,27,29,30,32,34,35,37,39,40,42,43,45,46,48,49,51,52,54,56,57,58,59,60,62,63,64,65,66,67,68,69,70];
1659         self.assertEqual(48,da4.getNumberOfTuples());
1660         self.assertEqual(1,da4.getNumberOfComponents());
1661         for i in range(48):
1662             self.assertEqual(expected4[i],da4.getIJ(0,i));
1663             pass
1664         expected5=[0,1,0,3,0,7,0,1,2,1,4,1,2,3,2,5,2,3,6,3,4,9,4,8,4,5,10,5,9,5,6,11,6,10,6,7,8,7,11,7,8,12,8,9,12,9,10,12,10,11,12,11,13,13,13,13,12,14,13,15,14,15,14,14,14,14,15,15,15,15]
1665         self.assertEqual(70,da3.getNumberOfTuples());
1666         self.assertEqual(1,da3.getNumberOfComponents());
1667         for i in range(70):
1668             self.assertEqual(expected5[i],da3.getIJ(0,i));
1669             pass
1670         pass
1671
1672     def testGetLevArrPerCellTypes1(self):
1673         m,m1=MEDCouplingDataForTest.buildPointe_1();
1674         m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
1675         order=[NORM_TRI3,NORM_QUAD4];
1676         da0,da1=m1.getLevArrPerCellTypes(order);
1677         expected0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1]
1678         expected1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,36,37,32,33,34,35,38,39,40,41,42,43,44,45,46]
1679         self.assertEqual(47,da0.getNumberOfTuples());
1680         self.assertEqual(1,da0.getNumberOfComponents());
1681         for i in range(47):
1682             self.assertEqual(expected0[i],da0.getIJ(0,i));
1683             pass
1684         self.assertEqual(2,da1.getNumberOfTuples());
1685         self.assertEqual(1,da1.getNumberOfComponents());
1686         self.assertEqual(36,da1.getIJ(0,0));#36 TRI3
1687         self.assertEqual(11,da1.getIJ(1,0));#11 QUAD4
1688         #
1689         da2=da0.buildPermArrPerLevel();
1690         #
1691         self.assertEqual(47,da2.getNumberOfTuples());
1692         self.assertEqual(1,da2.getNumberOfComponents());
1693         for i in range(47):
1694             self.assertEqual(expected1[i],da2.getIJ(0,i));
1695             pass
1696         pass
1697
1698     def testSortCellsInMEDFileFrmt1(self):
1699         m,m1=MEDCouplingDataForTest.buildPointe_1();
1700         m2=m.deepCopy()
1701         da=DataArrayInt.New()
1702         da.setValues([0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13],16,1)
1703         daa=da.invertArrayN2O2O2N(16)
1704         m.renumberCells(daa,False)
1705         da2=m.sortCellsInMEDFileFrmt()
1706         self.assertEqual(da2.getValues(),[0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13])
1707         self.assertTrue(m.isEqual(m2,1e-12))
1708         self.assertTrue(da.isEqual(da2))
1709         pass
1710
1711     def testBuildPartAndReduceNodes1(self):
1712         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1713         arr=[1,0]
1714         m2,da=m.buildPartAndReduceNodes(arr);
1715         self.assertEqual(5,m2.getNumberOfNodes());
1716         self.assertEqual(2,m2.getNumberOfCells());
1717         f=m2.getMeasureField(True);
1718         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
1719         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
1720         #
1721         arr2=DataArrayInt.New()
1722         arr2.setValues(arr,2,1)
1723         m2,da=m.buildPartAndReduceNodes(arr2);
1724         self.assertEqual(5,m2.getNumberOfNodes());
1725         self.assertEqual(2,m2.getNumberOfCells());
1726         f=m2.getMeasureField(True);
1727         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
1728         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
1729         pass
1730
1731     def testDAITransformWithIndArrR1(self):
1732         tab1=[2,4,5,3,6,7]
1733         tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
1734         expected=[0,3,1,2,4,5]
1735         d=DataArrayInt.New();
1736         d.setValues(tab1,6,1);
1737         d1=DataArrayInt.New();
1738         d1.setValues(tab2,12,1);
1739         d2=d1[:]
1740         #
1741         d3=d.transformWithIndArrR(d1);
1742         self.assertEqual(6,d3.getNumberOfTuples());
1743         self.assertEqual(1,d3.getNumberOfComponents());
1744         for i in range(6):
1745             self.assertEqual(expected[i],d3.getIJ(i,0));
1746             pass
1747         #
1748         d1=d2
1749         d3=d.transformWithIndArrR(tab2)
1750         self.assertEqual(6,d3.getNumberOfTuples());
1751         self.assertEqual(1,d3.getNumberOfComponents());
1752         for i in range(6):
1753             self.assertEqual(expected[i],d3.getIJ(i,0));
1754             pass
1755         pass
1756
1757     def testDAISplitByValueRange1(self):
1758         val1=[6,5,0,3,2,7,8,1,4]
1759         val2=[0,4,9]
1760         d=DataArrayInt.New();
1761         d.setValues(val1,9,1);
1762         e,f,g=d.splitByValueRange(val2);
1763         self.assertEqual(9,e.getNumberOfTuples());
1764         self.assertEqual(1,e.getNumberOfComponents());
1765         self.assertEqual(9,f.getNumberOfTuples());
1766         self.assertEqual(1,f.getNumberOfComponents());
1767         self.assertEqual(2,g.getNumberOfTuples());
1768         self.assertEqual(1,g.getNumberOfComponents());
1769         #
1770         expected1=[1,1,0,0,0,1,1,0,1]
1771         expected2=[2,1,0,3,2,3,4,1,0]
1772         for i in range(9):
1773             self.assertEqual(expected1[i],e.getIJ(i,0));
1774             self.assertEqual(expected2[i],f.getIJ(i,0));
1775             pass
1776         self.assertEqual(0,g.getIJ(0,0));
1777         self.assertEqual(1,g.getIJ(1,0));
1778         #
1779         d.setIJ(6,0,9);
1780         self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
1781         # non regression test in python wrapping
1782         rg=DataArrayInt([0,10,29,56,75,102,121,148,167,194,213,240,259,286,305,332,351,378,397,424,443,470,489,516])
1783         a,b,c=DataArrayInt([75]).splitByValueRange(rg)
1784         assert(a.isEqual(DataArrayInt([4])))
1785         assert(b.isEqual(DataArrayInt([0])))
1786         assert(c.isEqual(DataArrayInt([4])))
1787         pass
1788
1789     def testUMeshSplitProfilePerType1(self):
1790         val0=[2,0,1,3,4]
1791         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1792         m.renumberCells(val0,False);
1793         #
1794         val1=[0,2,3]
1795         d=DataArrayInt.New();
1796         d.setValues(val1,3,1);
1797         d.setName("sup")
1798         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
1799         self.assertEqual(2,len(code));
1800         self.assertEqual(2,len(idsInPflPerType));
1801         expected1=[[3,1,0], [4,2,1]]
1802         self.assertEqual(expected1,code)
1803         self.assertEqual(2,len(idsInPflPerType));
1804         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
1805         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
1806         self.assertEqual(2,idsInPflPerType[1].getNumberOfTuples());
1807         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
1808         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
1809         #
1810         self.assertEqual(2,len(pfls));
1811         self.assertEqual("sup",pfls[0].getName())
1812         self.assertEqual(1,pfls[0].getNumberOfTuples());
1813         self.assertEqual(0,pfls[0].getIJ(0,0));
1814         self.assertEqual("sup",pfls[1].getName())
1815         self.assertEqual(2,pfls[1].getNumberOfTuples());
1816         self.assertEqual(0,pfls[1].getIJ(0,0));
1817         self.assertEqual(1,pfls[1].getIJ(1,0));
1818         #
1819         val2=[0,2,3,4]
1820         d=DataArrayInt.New();
1821         d.setValues(val2,4,1);
1822         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
1823         self.assertEqual(2,len(code));
1824         self.assertEqual(2,len(idsInPflPerType));
1825         expected2=[[3,1,0], [4,3,-1]]
1826         self.assertEqual(expected2,code);
1827         self.assertEqual(2,len(idsInPflPerType));
1828         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
1829         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
1830         self.assertEqual(3,idsInPflPerType[1].getNumberOfTuples());
1831         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
1832         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
1833         self.assertEqual(3,idsInPflPerType[1].getIJ(2,0));
1834         #
1835         self.assertEqual(1,len(pfls));
1836         self.assertEqual(1,pfls[0].getNumberOfTuples());
1837         self.assertEqual(0,pfls[0].getIJ(0,0));
1838         #
1839         val3=[1,0,2]
1840         d=DataArrayInt.New();
1841         d.setValues(val3,3,1);
1842         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
1843         self.assertEqual(2,len(code));
1844         self.assertEqual(2,len(idsInPflPerType));
1845         expected3=[[3,2,0], [4,1,1]]
1846         self.assertEqual(expected3,code);
1847         self.assertEqual(2,len(idsInPflPerType));
1848         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
1849         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
1850         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
1851         self.assertEqual(1,idsInPflPerType[1].getNumberOfTuples());
1852         self.assertEqual(2,idsInPflPerType[1].getIJ(0,0));
1853         #
1854         self.assertEqual(2,len(pfls));
1855         self.assertEqual(2,pfls[0].getNumberOfTuples());
1856         self.assertEqual(1,pfls[0].getIJ(0,0));
1857         self.assertEqual(0,pfls[0].getIJ(1,0));
1858         self.assertEqual(0,pfls[1].getIJ(0,0));
1859         #
1860         val4=[3,4]
1861         d=DataArrayInt.New();
1862         d.setValues(val4,2,1);
1863         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
1864         self.assertEqual(1,len(code));
1865         self.assertEqual(1,len(idsInPflPerType));
1866         expected4=[[4,2,0]]
1867         self.assertEqual(expected4,code);
1868         self.assertEqual(1,len(idsInPflPerType));
1869         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
1870         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
1871         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
1872         #
1873         self.assertEqual(1,len(pfls));
1874         self.assertEqual(2,pfls[0].getNumberOfTuples());
1875         self.assertEqual(1,pfls[0].getIJ(0,0));
1876         self.assertEqual(2,pfls[0].getIJ(1,0));
1877         pass
1878
1879     def testDAIBuildExplicitArrByRanges1(self):
1880         d=DataArrayInt.New();
1881         vals1=[0,2,3]
1882         d.setValues(vals1,3,1);
1883         e=DataArrayInt.New();
1884         vals2=[0,3,6,10,14,20]
1885         e.setValues(vals2,6,1);
1886         #
1887         f=d.buildExplicitArrByRanges(e);
1888         self.assertEqual(11,f.getNumberOfTuples());
1889         self.assertEqual(1,f.getNumberOfComponents());
1890         expected1=[0,1,2,6,7,8,9,10,11,12,13]
1891         for i in range(11):
1892             self.assertEqual(expected1[i],f.getIJ(i,0));
1893             pass
1894         pass
1895
1896     def testDAIComputeOffsets2(self):
1897         d=DataArrayInt.New();
1898         vals1=[3,5,1,2,0,8]
1899         expected1=[0,3,8,9,11,11,19]
1900         d.setValues(vals1,6,1);
1901         d.computeOffsetsFull();
1902         self.assertEqual(7,d.getNumberOfTuples());
1903         self.assertEqual(1,d.getNumberOfComponents());
1904         for i in range(7):
1905             self.assertEqual(expected1[i],d.getIJ(0,i));
1906             pass
1907         pass
1908
1909     def testMergeField3(self):
1910         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1911         m.getCoords().setInfoOnComponent(0,"x [m]");
1912         m.getCoords().setInfoOnComponent(1,"z [km]");
1913         m.setName("m");
1914         m.setDescription("desc");
1915         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
1916         f1.setName("f1");
1917         f1.setMesh(m);
1918         arr=DataArrayDouble.New();
1919         arr.alloc(5,2);
1920         arr.setInfoOnComponent(0,"X [m]");
1921         arr.setInfoOnComponent(1,"YY [mm]");
1922         arr.fillWithValue(2.);
1923         f1.setArray(arr);
1924         #
1925         f2=MEDCouplingFieldDouble.MergeFields([f1]);
1926         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
1927         #
1928         pass
1929     
1930     def testGetDistributionOfTypes1(self):
1931         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1932         tab1=[2,0,1,3,4]
1933         self.assertRaises(InterpKernelException,m.getDistributionOfTypes);
1934         m.renumberCells(tab1,False);
1935         code=m.getDistributionOfTypes();
1936         self.assertEqual(2,len(code));
1937         self.assertEqual(3,code[0][0]);
1938         self.assertEqual(2,code[0][1]);
1939         self.assertEqual(-1,code[0][2]);
1940         self.assertEqual(4,code[1][0]);
1941         self.assertEqual(3,code[1][1]);
1942         self.assertEqual(-1,code[1][2]);
1943         pass
1944
1945     def testNorm2_1(self):
1946         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1947         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
1948         f.setMesh(m);
1949         #
1950         d=DataArrayDouble.New();
1951         tab=[1.2,1.3,2.2,2.3,3.2,3.3,4.2,4.3,5.2,5.3]
1952         d.setValues(tab,5,2);
1953         f.setArray(d);
1954         f.checkConsistencyLight();
1955         #
1956         self.assertAlmostEqual(11.209371079592289,f.norm2(),14);
1957         #
1958         pass
1959
1960     def testNormMax1(self):
1961         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1962         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
1963         f.setMesh(m);
1964         #
1965         d=DataArrayDouble.New();
1966         tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
1967         d.setValues(tab,5,2);
1968         f.setArray(d);
1969         f.checkConsistencyLight();
1970         #
1971         self.assertAlmostEqual(7.8,f.normMax(),14);
1972         #
1973         pass
1974
1975     def testFindAndCorrectBadOriented3DExtrudedCells1(self):
1976         coords=[0.0011180339887498999, -0.0011755705045849499, 0.0, -0.0012331070204200001, -0.0011755705045849499, 0.0, -0.00067557050458494599, -0.00145964954842536, 0.0, -0.00050000000000000001, -0.00086602540378443902, 0.0, 0.00140211303259031, -0.00061803398874989504, 0.0, 0.00086602540378443902, -0.00050000000000000001, 0.0, 0.001, 0.0, 0.0, 0.00034561537182258202, 0.000269164072574575, 0.0, 0.0, 0.001, 0.0, -0.00050000000000000001, 0.00086602540378443902, 0.0, -0.000269164072574575, 0.00034561537182258202, 0.0, -0.001, 0.0, 0.0, -0.00086602540378443902, -0.00050000000000000001, 0.0, -0.00034561537182258202, -0.000269164072574575, 0.0, 0.0, -0.001, 0.0, 0.00050000000000000001, -0.00086602540378443902, 0.0, 0.000269164072574575, -0.00034561537182258202, 0.0, 0.0015, -6.01853107621011e-36, 0.0, 0.00056049747291484397, -0.00145964954842536, 0.0, 0.0011180339887498999, -0.0011755705045849499, 0.00050000000000000001, -0.0012331070204200001, -0.0011755705045849499, 0.00050000000000000001, -0.00067557050458494599, -0.00145964954842536, 0.00050000000000000001, -0.00050000000000000001, -0.00086602540378443902, 0.00050000000000000001, 0.00140211303259031, -0.00061803398874989504, 0.00050000000000000001, 0.00086602540378443902, -0.00050000000000000001, 0.00050000000000000001, 0.001, 0.0, 0.00050000000000000001, 0.00034561537182258202, 0.000269164072574575, 0.00050000000000000001, 0.0, 0.001, 0.00050000000000000001, -0.00050000000000000001, 0.00086602540378443902, 0.00050000000000000001, -0.000269164072574575, 0.00034561537182258202, 0.00050000000000000001, -0.001, 0.0, 0.00050000000000000001, -0.00086602540378443902, -0.00050000000000000001, 0.00050000000000000001, -0.00034561537182258202, -0.000269164072574575, 0.00050000000000000001, 0.0, -0.001, 0.00050000000000000001, 0.00050000000000000001, -0.00086602540378443902, 0.00050000000000000001, 0.000269164072574575, -0.00034561537182258202, 0.00050000000000000001, 0.0015, -6.01853107621011e-36, 0.00050000000000000001, 0.00056049747291484397, -0.00145964954842536, 0.00050000000000000001];
1977         conn=[2, 1, 3, 21, 20, 22, 4, 0, 5, 23, 19, 24, 8, 9, 10, 27, 28, 29, 11, 12, 13, 30, 31, 32, 0, 18, 15, 5, 19, 37, 34, 24, 6, 17, 4, 5, 25, 36, 23, 24, 3, 14, 16, 13, 22, 33, 35, 32, 13, 16, 7, 10, 32, 35, 26, 29]
1978         connExp=[16, 2, 1, 3, 21, 20, 22, 16, 4, 0, 5, 23, 19, 24, 16, 8, 10, 9, 27, 29, 28, 16, 11, 13, 12, 30, 32, 31, 18, 0, 18, 15, 5, 19, 37, 34, 24,18, 6, 17, 4, 5, 25, 36, 23, 24, 18, 3, 13, 16, 14, 22, 32, 35, 33, 18, 13, 10, 7, 16, 32, 29, 26, 35]
1979         invalidCells=[2,3,6,7]
1980         m=MEDCouplingUMesh.New("Example",3);
1981         coo=DataArrayDouble.New();
1982         coo.setValues(coords,38,3);
1983         m.setCoords(coo);
1984         m.allocateCells(8);
1985         m.insertNextCell(NORM_PENTA6,6,conn[0:6])
1986         m.insertNextCell(NORM_PENTA6,6,conn[6:12])
1987         m.insertNextCell(NORM_PENTA6,6,conn[12:18])
1988         m.insertNextCell(NORM_PENTA6,6,conn[18:24])
1989         m.insertNextCell(NORM_HEXA8,8,conn[24:32])
1990         m.insertNextCell(NORM_HEXA8,8,conn[32:40])
1991         m.insertNextCell(NORM_HEXA8,8,conn[40:48])
1992         m.insertNextCell(NORM_HEXA8,8,conn[48:56])
1993         m.finishInsertingCells();
1994         #
1995         v=m.findAndCorrectBadOriented3DExtrudedCells();
1996         self.assertEqual(4,len(v));
1997         self.assertEqual(v.getValues(),invalidCells);
1998         self.assertEqual(connExp,m.getNodalConnectivity().getValues());
1999         self.assertTrue(m.findAndCorrectBadOriented3DExtrudedCells().empty())
2000         #
2001         pass
2002
2003     def testConvertExtrudedPolyhedra1(self):
2004         conn=[1,2,3,4, 5,6,7,8,9,10,11,12, 13,14,15,16, 17,18,19,20,21,22, 23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38, 39,40,41,42,43,44,45,46, 47,48,49,50,51,52,53,54,55,56,57,58, 59,60,61,62,63,64,65,66,67,68,69,70,71,72]
2005         m=MEDCouplingUMesh.New("Example",3);
2006         coo=DataArrayDouble.New();
2007         coo.alloc(73,3);
2008         coo.rearrange(1); coo.iota(0); coo.rearrange(3);
2009         m.setCoords(coo);
2010         m.allocateCells(9);
2011         m.insertNextCell(NORM_TETRA4,4,conn[0:4])
2012         m.insertNextCell(NORM_HEXA8,8,conn[4:12])
2013         m.insertNextCell(NORM_TETRA4,4,conn[12:16])
2014         m.insertNextCell(NORM_POLYHED,6,conn[16:22])
2015         m.insertNextCell(NORM_PENTA6,6,conn[22:28])
2016         m.insertNextCell(NORM_POLYHED,10,conn[28:38])
2017         m.insertNextCell(NORM_HEXA8,8,conn[38:46])
2018         m.insertNextCell(NORM_HEXGP12,12,conn[46:58])
2019         m.insertNextCell(NORM_POLYHED,14,conn[58:72])
2020         m.finishInsertingCells();
2021         #
2022         m.convertExtrudedPolyhedra();
2023         da=m.getNodalConnectivity();
2024         dai=m.getNodalConnectivityIndex();
2025         self.assertEqual(10,dai.getNbOfElems());
2026         self.assertEqual(159,da.getNbOfElems());
2027         #
2028         expected1=[14,1,2,3,4,18,5,6,7,8,9,10,11,12,14,13,14,15,16,31,17,18,19,-1,20,22,21,-1,17,20,21,18,-1,18,21,22,19,-1,19,22,20,17,16,23,24,25,26,27,28,31,29,30,31,32,33,-1,34,38,37,36,35,-1,29,34,35,30,-1,30,35,36,31,-1,31,36,37,32,-1,32,37,38,33,-1,33,38,34,29,18,39,40,41,42,43,44,45,46,22,47,48,49,50,51,52,53,54,55,56,57,58,31,59,60,61,62,63,64,65,-1,66,72,71,70,69,68,67,-1,59,66,67,60,-1,60,67,68,61,-1,61,68,69,62,-1,62,69,70,63,-1,63,70,71,64,-1,64,71,72,65,-1,65,72,66,59];
2029         expected2=[0,5,14,19,42,49,86,95,108,159]
2030         self.assertEqual(expected1,da.getValues());
2031         self.assertEqual(expected2,dai.getValues());
2032         m.checkConsistency()
2033         pass
2034
2035     def testNonRegressionCopyTinyStrings(self):
2036         m=MEDCouplingDataForTest.build2DTargetMesh_1()
2037         f1=m.getMeasureField(True)
2038         f1.getArray().setInfoOnComponent(0,"P [N/m^2]")
2039         bary=m.computeCellCenterOfMass()
2040         f2=f1.buildNewTimeReprFromThis(NO_TIME,False)
2041         f2.setArray(bary)
2042         self.assertRaises(InterpKernelException,f1.copyTinyAttrFrom,f2)
2043         pass
2044
2045     def testDaDSetPartOfValuesAdv1(self):
2046         tab1=[3.,4.,5., 13.,14.,15., 23.,24.,25., 33.,34.,35., 43.,44.,45., 53.,54.,55.]
2047         tab2=[6.,7.,8., 16.,17.,18., 26.,27.,28.]
2048         tab3=[4,1, 2,2, 3,0]
2049         a=DataArrayDouble.New();
2050         a.setValues(tab1,6,3);
2051         b=DataArrayDouble.New();
2052         b.setValues(tab2,3,3);
2053         c=DataArrayInt.New();
2054         c.setValues(tab3,3,2);
2055         #
2056         a.setPartOfValuesAdv(b,c);
2057         expected1=[3.,4.,5., 13.,14.,15., 26.,27.,28., 6.,7.,8., 16.,17.,18., 53.,54.,55.]
2058         self.assertEqual(expected1,a.getValues());
2059         pass
2060
2061     def testUMeshBuildSetInstanceFromThis1(self):
2062         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2063         m2=m.buildSetInstanceFromThis(3);
2064         self.assertTrue(m.isEqual(m2,1e-12));
2065         #
2066         m=MEDCouplingUMesh.New("toto",2);
2067         m2=m.buildSetInstanceFromThis(3);
2068         self.assertEqual(0,m2.getNumberOfNodes());
2069         self.assertEqual(0,m2.getNumberOfCells());
2070         pass
2071
2072     def testUMeshMergeMeshesCVW1(self):
2073         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2074         m2=MEDCouplingUMesh.New("toto",2);
2075         m3=MEDCouplingUMesh.MergeUMeshes([m,m2]);
2076         m3.setName(m.getName());
2077         self.assertTrue(m.isEqual(m3,1e-12));
2078         pass
2079     
2080     def testChangeUnderlyingMeshWithCMesh1(self):
2081         mesh=MEDCouplingCMesh.New();
2082         coordsX=DataArrayDouble.New();
2083         arrX=[ -1., 1., 2., 4. ]
2084         coordsX.setValues(arrX,4,1);
2085         coordsY=DataArrayDouble.New();
2086         arrY=[ -2., 2., 4., 8. ]
2087         coordsY.setValues(arrY,4,1);
2088         coordsZ=DataArrayDouble.New();
2089         arrZ=[ -3., 3., 6., 12. ]
2090         coordsZ.setValues(arrZ,4,1);
2091         mesh.setCoords(coordsX,coordsY,coordsZ);
2092         f=mesh.getMeasureField(True)
2093         mesh2=mesh.deepCopy()
2094         for myId in [0,1,2,10,11,12,20,21,22]:
2095             f=mesh.getMeasureField(True)
2096             f.changeUnderlyingMesh(mesh2,myId,1e-12);
2097             pass
2098         mesh2.setName("uuuu")
2099         for myId in [1,2,10,11,12,20,21,22]:
2100             f=mesh.getMeasureField(True)
2101             f.changeUnderlyingMesh(mesh2,myId,1e-12);
2102             pass
2103         pass
2104
2105     def testDADFindCommonTuples1(self):
2106         da=DataArrayDouble.New();
2107         # nbOftuples=1
2108         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
2109         da.setValues(array1,6,1)
2110         c,cI=da.findCommonTuples(1e-2);
2111         expected1=[0,3,4]
2112         expected2=[0,3]
2113         self.assertEqual(3,c.getNbOfElems());
2114         self.assertEqual(2,cI.getNbOfElems());
2115         self.assertEqual(expected1,c.getValues())
2116         self.assertEqual(expected2,cI.getValues())
2117         c,cI=da.findCommonTuples(2e-1)
2118         expected3=[0,3,4,1,2]
2119         expected4=[0,3,5]
2120         self.assertEqual(5,c.getNbOfElems());
2121         self.assertEqual(3,cI.getNbOfElems());
2122         self.assertEqual(expected3,c.getValues())
2123         self.assertEqual(expected4,cI.getValues())
2124         # nbOftuples=2
2125         array2=[2.3,2.3,1.2,1.2,1.3,1.3,2.3,2.3,2.301,2.301,0.8,0.8]
2126         da.setValues(array2,6,2)
2127         c,cI=da.findCommonTuples(1e-2);
2128         self.assertEqual(3,c.getNbOfElems());
2129         self.assertEqual(2,cI.getNbOfElems());
2130         self.assertEqual(expected1,c.getValues())
2131         self.assertEqual(expected2,cI.getValues())
2132         c,cI=da.findCommonTuples(2e-1)
2133         self.assertEqual(5,c.getNbOfElems());
2134         self.assertEqual(3,cI.getNbOfElems());
2135         self.assertEqual(expected3,c.getValues())
2136         self.assertEqual(expected4,cI.getValues())
2137         # nbOftuples=3
2138         array3=[2.3,2.3,2.3,1.2,1.2,1.2,1.3,1.3,1.3,2.3,2.3,2.3,2.301,2.301,2.301,0.8,0.8,0.8]
2139         da.setValues(array3,6,3)
2140         c,cI=da.findCommonTuples(1e-2);
2141         self.assertEqual(3,c.getNbOfElems());
2142         self.assertEqual(2,cI.getNbOfElems());
2143         self.assertEqual(expected1,c.getValues())
2144         self.assertEqual(expected2,cI.getValues())
2145         c,cI=da.findCommonTuples(2e-1)
2146         self.assertEqual(5,c.getNbOfElems());
2147         self.assertEqual(3,cI.getNbOfElems());
2148         self.assertEqual(expected3,c.getValues())
2149         self.assertEqual(expected4,cI.getValues())
2150         # nbOftuples=1, no common groups
2151         array11=[2.3,1.2,1.3,2.4,2.5,0.8]
2152         da.setValues(array11,6,1)
2153         c,cI=da.findCommonTuples(1e-2);
2154         self.assertEqual(0,c.getNbOfElems());
2155         self.assertEqual(1,cI.getNbOfElems());
2156         self.assertEqual([0],cI.getValues())
2157         
2158         array12=[0.]*(6*5)
2159         da.setValues(array12,6,5) #bad NumberOfComponents
2160         self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2);
2161         pass
2162
2163     def testDABack1(self):
2164         da=DataArrayDouble.New();
2165         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
2166         da.setValues(array1,6,1);
2167         self.assertAlmostEqual(0.8,da.back(),14);
2168         da.rearrange(2);
2169         self.assertRaises(InterpKernelException,da.back);
2170         da.alloc(0,1);
2171         self.assertRaises(InterpKernelException,da.back);
2172         #
2173         da=DataArrayInt.New();
2174         array2=[4,7,8,2]
2175         da.setValues(array2,4,1);
2176         self.assertEqual(2,da.back());
2177         da.rearrange(2);
2178         self.assertRaises(InterpKernelException,da.back);
2179         da.alloc(0,1);
2180         self.assertRaises(InterpKernelException,da.back);
2181         pass
2182
2183     def testDADGetDifferentValues1(self):
2184         da=DataArrayDouble.New();
2185         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
2186         da.setValues(array1,6,1)
2187         #
2188         expected1=[2.301,1.2,1.3,0.8]
2189         dv=da.getDifferentValues(1e-2);
2190         self.assertEqual(4,dv.getNbOfElems());
2191         for i in range(4):
2192             self.assertAlmostEqual(expected1[i],dv.getIJ(i,0),14);
2193             pass
2194         #
2195         dv=da.getDifferentValues(2e-1);
2196         expected2=[2.301,1.3,0.8]
2197         self.assertEqual(3,dv.getNbOfElems());
2198         for i in range(3):
2199             self.assertAlmostEqual(expected2[i],dv.getIJ(i,0),14);
2200             pass
2201         pass
2202
2203     def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
2204         arr=[0,3, 5,7,9]
2205         arrI=[0,2,5]
2206         a=DataArrayInt.New();
2207         a.setValues(arr,5,1);
2208         b=DataArrayInt.New();
2209         b.setValues(arrI,3,1);
2210         ret,newNbTuple=DataArrayInt.ConvertIndexArrayToO2N(10,a,b);
2211         expected=[0,1,2,0,3,4,5,4,6,4]
2212         self.assertEqual(10,ret.getNbOfElems());
2213         self.assertEqual(7,newNbTuple);
2214         self.assertEqual(1,ret.getNumberOfComponents());
2215         self.assertEqual(expected,ret.getValues());
2216         self.assertRaises(InterpKernelException,DataArrayInt.ConvertIndexArrayToO2N,9,a,b);
2217         pass
2218
2219     def testDADIReverse1(self):
2220         arr=[0,3,5,7,9,2]
2221         a=DataArrayInt.New();
2222         a.setValues(arr,6,1);
2223         self.assertEqual(2,a.back());
2224         a.reverse();
2225         for i in range(6):
2226             self.assertEqual(arr[5-i],a.getIJ(i,0));
2227             pass
2228         a.setValues(arr[:-1],5,1);
2229         a.reverse();
2230         for i in range(5):
2231             self.assertEqual(arr[4-i],a.getIJ(i,0));
2232             pass
2233         #
2234         arr2=[0.,3.,5.,7.,9.,2.]
2235         b=DataArrayDouble.New();
2236         b.setValues(arr2,6,1);
2237         b.reverse();
2238         for i in range(6):
2239             self.assertAlmostEqual(arr2[5-i],b.getIJ(i,0),14);
2240             pass
2241         b.setValues(arr2[:5],5,1);
2242         self.assertAlmostEqual(9.,b.back(),14)
2243         b.reverse();
2244         for i in range(5):
2245             self.assertAlmostEqual(arr2[4-i],b.getIJ(i,0),14);
2246             pass
2247         pass
2248
2249     def testGetNodeIdsInUse1(self):
2250         m0=MEDCouplingDataForTest.build2DTargetMesh_1();
2251         CellIds=[1,2]
2252         m1=m0.buildPartOfMySelf(CellIds,True);
2253         arr,newNbOfNodes=m1.getNodeIdsInUse();
2254         expected=[-1,0,1,-1,2,3,-1,-1,-1]
2255         self.assertEqual(4,newNbOfNodes);
2256         self.assertEqual(9,arr.getNbOfElems());
2257         self.assertEqual(expected,arr.getValues());
2258         arr2=arr.invertArrayO2N2N2O(newNbOfNodes);
2259         self.assertEqual(4,arr2.getNbOfElems());
2260         expected2=[1,2,4,5]
2261         self.assertEqual(expected2,arr2.getValues());
2262         pass
2263
2264     def testBuildDescendingConnec2(self):
2265         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
2266         #
2267         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
2268         mesh2.checkConsistencyLight();
2269         self.assertEqual(1,mesh2.getMeshDimension());
2270         self.assertEqual(13,mesh2.getNumberOfCells());
2271         self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
2272         self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
2273         self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
2274         self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
2275         expected1=[1,2,3,4,-3,5,6, 7,8,-5,9,10,-2,11, 12,13,-7,-10]
2276         self.assertEqual(expected1,desc.getValues());
2277         expected2=[0,4,7,10,14,18]
2278         self.assertEqual(expected2,descIndx.getValues());
2279         expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18]
2280         self.assertEqual(expected3,revDescIndx.getValues());
2281         expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4]
2282         self.assertEqual(expected4,revDesc.getValues());
2283         conn=mesh2.getNodalConnectivity();
2284         connIndex=mesh2.getNodalConnectivityIndex();
2285         expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39]
2286         self.assertEqual(expected5,connIndex.getValues());
2287         expected6=[1, 0, 3, 1, 3, 4, 1, 4, 1, 1, 1, 0, 1, 4, 2, 1, 2, 1, 1, 4, 5, 1, 5, 2, 1, 6, 7, 1, 7, 4, 1, 3, 6, 1, 7, 8, 1, 8, 5]
2288         self.assertEqual(expected6,conn.getValues());
2289         pass
2290
2291     def testIntersect2DMeshesTmp1(self):
2292         m1c=MEDCouplingCMesh.New();
2293         coordsX=DataArrayDouble.New();
2294         arrX=[ -1., 1., 2., 4. ]
2295         coordsX.setValues(arrX,4,1);
2296         m1c.setCoordsAt(0,coordsX);
2297         coordsY=DataArrayDouble.New();
2298         arrY=[ -2., 2., 4., 8. ]
2299         coordsY.setValues(arrY,4,1);
2300         m1c.setCoordsAt(1,coordsY);
2301         m1=m1c.buildUnstructured()
2302         m1bis=m1.buildPartOfMySelf([3,4,5],False)
2303         m2=m1.deepCopy()
2304         m2=m2.buildPartOfMySelf([0,1,2],False)
2305         m2.translate([0.5,0.5])
2306         #
2307         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1bis,m2,1e-10)
2308         expected1=[0,0,1,1,1,2,2,2]
2309         expected2=[0,-1,0,1,-1,1,2,-1]
2310         self.assertEqual(8,d1.getNumberOfTuples());
2311         self.assertEqual(8,d2.getNumberOfTuples());
2312         self.assertEqual(8,m3.getNumberOfCells());
2313         self.assertEqual(22,m3.getNumberOfNodes());
2314         self.assertEqual(2,m3.getSpaceDimension());
2315         self.assertEqual(expected1,d1.getValues());
2316         self.assertEqual(expected2,d2.getValues());
2317         expected3=[5,17,1,16,12,5,16,0,4,5,17,12,5,18,1,17,13,5,19,2,18,13,5,17,5,6,19,13,5,20,2,19,14,5,21,3,20,14,5,19,6,7,21,14]
2318         expected4=[0,5,12,17,22,28,33,38,44]
2319         expected5=[-1.0,2.0,1.0,2.0,2.0,2.0,4.0,2.0,-1.0,4.0,1.0,4.0,2.0,4.0,4.0,4.0,-0.5,-1.5,1.5,-1.5,2.5,-1.5,4.5,-1.5,-0.5,2.5,1.5,2.5,2.5,2.5,4.5,2.5,-0.5,2.0,1.0,2.5,1.5,2.0,2.0,2.5,2.5,2.0,4.0,2.5]
2320         self.assertEqual(44,m3.getNodalConnectivity().getNumberOfTuples());
2321         self.assertEqual(9,m3.getNodalConnectivityIndex().getNumberOfTuples());
2322         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
2323         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
2324         for i in range(44):
2325             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
2326             pass
2327         pass
2328
2329     def testFindNodesOnLine1(self):
2330         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
2331         pt=[-0.3,-0.3]
2332         pt2=[0.,0.,0.]
2333         pt3=[-0.3,0.,0.]
2334         vec=[0.,1.]
2335         vec2=[1.,0.,0.]
2336         vec3=[0.,1.,1.]
2337         expected1=[0,3,6]
2338         res=mesh.findNodesOnLine(pt,vec,1e-12);
2339         self.assertEqual(3,len(res));
2340         self.assertEqual(expected1,res.getValues());
2341         #
2342         mesh.changeSpaceDimension(3);
2343         mesh.rotate(pt2,vec2,pi/4.);
2344         res=mesh.findNodesOnLine(pt3,vec3,1e-12);
2345         self.assertEqual(3,len(res));
2346         self.assertEqual(expected1,res.getValues());
2347         pass
2348
2349     def testIntersect2DMeshesTmp2(self):
2350         m1c=MEDCouplingCMesh.New();
2351         coordsX1=DataArrayDouble.New();
2352         arrX1=[ 0., 1., 1.5, 2. ]
2353         coordsX1.setValues(arrX1,4,1);
2354         m1c.setCoordsAt(0,coordsX1);
2355         coordsY1=DataArrayDouble.New();
2356         arrY1=[ 0., 1.5, 3.]
2357         coordsY1.setValues(arrY1,3,1);
2358         m1c.setCoordsAt(1,coordsY1);
2359         m1=m1c.buildUnstructured();
2360         m2c=MEDCouplingCMesh.New();
2361         coordsX2=DataArrayDouble.New();
2362         arrX2=[ 0., 1., 2. ]
2363         coordsX2.setValues(arrX2,3,1);
2364         m2c.setCoordsAt(0,coordsX2);
2365         coordsY2=DataArrayDouble.New();
2366         arrY2=[ 0., 1., 3.]
2367         coordsY2.setValues(arrY2,3,1);
2368         m2c.setCoordsAt(1,coordsY2);
2369         m2=m2c.buildUnstructured();
2370         #
2371         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
2372         #
2373         expected1=[0,0,1,1,2,2,3,4,5]
2374         expected2=[0,2,1,3,1,3,2,3,3]
2375         self.assertEqual(9,d1.getNumberOfTuples());
2376         self.assertEqual(9,d2.getNumberOfTuples());
2377         self.assertEqual(9,m3.getNumberOfCells());
2378         self.assertEqual(22,m3.getNumberOfNodes());
2379         self.assertEqual(2,m3.getSpaceDimension());
2380         self.assertEqual(expected1,d1.getValues());
2381         self.assertEqual(expected2,d2.getValues());
2382         expected3=[5,16,13,12,15,5,15,4,5,16,5,21,2,13,16,5,16,5,6,21,5,17,14,2,21,5,21,6,7,17,5,4,18,19,5,5,5,19,10,6,5,6,10,20,7]
2383         expected4=[0,5,10,15,20,25,30,35,40,45]
2384         expected5=[0.0,0.0,1.0,0.0,1.5,0.0,2.0,0.0,0.0,1.5,1.0,1.5,1.5,1.5,2.0,1.5,0.0,3.0,1.0,3.0,1.5,3.0,2.0,3.0,0.0,0.0,1.0,0.0,2.0,0.0,0.0,1.0,1.0,1.0,2.0,1.0,0.0,3.0,1.0,3.0,2.0,3.0,1.5,1.0]
2385         self.assertEqual(45,m3.getNodalConnectivity().getNumberOfTuples());
2386         self.assertEqual(10,m3.getNodalConnectivityIndex().getNumberOfTuples());
2387         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
2388         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
2389         for i in range(44):
2390             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
2391             pass
2392         pass
2393     
2394     def testBuildPartOfMySelfSafe1(self):
2395         mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
2396         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True)
2397         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,4,5,4],True)
2398         pass
2399
2400     def testIntersect2DMeshesTmp3(self):
2401         m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
2402         m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
2403         m1=MEDCouplingUMesh.New();
2404         m1.setMeshDimension(2);
2405         m1.allocateCells(8);
2406         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
2407         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
2408         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
2409         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
2410         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
2411         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
2412         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
2413         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
2414         m1.finishInsertingCells();
2415         myCoords1=DataArrayDouble.New();
2416         myCoords1.setValues(m1Coords,25,2);
2417         m1.setCoords(myCoords1);
2418         #
2419         m2Coords=[0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1,-1.1,-1.,0.,-1.,1.1,-1,1.7,-1.]
2420         m2Conn=[0,3,2,1, 1,2,5,4, 7,6,3,0, 8,9,6,7, 7,0,12,11, 8,7,11,10, 0,1,13,12, 1,4,14,13]
2421         m2=MEDCouplingUMesh.New();
2422         m2.setMeshDimension(2);
2423         m2.allocateCells(8);
2424         for i in range(8):
2425             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
2426             pass
2427         m2.finishInsertingCells();
2428         myCoords2=DataArrayDouble.New();
2429         myCoords2.setValues(m2Coords,15,2);
2430         m2.setCoords(myCoords2);
2431         #
2432         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
2433         m3.unPolyze()
2434         #
2435         expected1=[0,1,1,1,2,3,3,3,4,5,5,5,6,7,7,7]
2436         expected2=[0,0,1,-1,2,2,3,-1,4,4,5,-1,6,6,7,-1]
2437         self.assertEqual(16,d1.getNumberOfTuples());
2438         self.assertEqual(16,d2.getNumberOfTuples());
2439         self.assertEqual(16,m3.getNumberOfCells());
2440         self.assertEqual(104,m3.getNumberOfNodes());
2441         self.assertEqual(2,m3.getSpaceDimension());
2442         self.assertEqual(expected1,d1.getValues());
2443         self.assertEqual(expected2,d2.getValues());
2444         expected3=[6,28,1,25,44,45,46,8,26,1,28,27,47,48,49,50,8,40,2,26,27,51,52,53,54,8,28,4,40,27,55,56,57,58,6,28,25,5,59,60,61,8,28,5,32,31,62,63,64,65,8,32,6,41,31,66,67,68,69,8,41,4,28,31,70,71,72,73,6,25,37,5,74,75,76,8,32,5,37,36,77,78,79,80,8,42,6,32,36,81,82,83,84,8,37,8,42,36,85,86,87,88,6,1,37,25,89,90,91,8,37,1,26,38,92,93,94,95,8,26,2,43,38,96,97,98,99,8,43,8,37,38,100,101,102,103]
2445         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
2446         expected5=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,1.118033988749895,1.,-1.118033988749895,1.,-1.118033988749895,-1.,1.118033988749895,-1.,0.7071067811865477,0.7071067811865476,0.5,0.,0.,0.5,1.05,0.,0.7071067811865475,0.7071067811865477,0.55,1.,1.1,0.5,1.4012585384440737,0.535233134659635,1.3,0.,1.1,0.5,1.1090169943749475,1.,0.,1.25,0.6123724356957946,1.369306393762915,1.1090169943749475,1.,0.55,1.,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-0.7071067811865475,0.7071067811865477,-1.05,0.,-1.1,0.5,-0.55,1.,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.1090169943749475,1.,-1.1,0.5,-0.6123724356957941,1.3693063937629155,0.,1.25,-0.55,1.,-1.1090169943749475,1.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.5,0.,-1.05,0.,-0.7071067811865478,-0.7071067811865475,-0.55,-1.,-1.1,-0.5,-1.4012585384440734,-0.5352331346596354,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,0.,-1.25,-0.6123724356957945,-1.369306393762915,-1.1090169943749475,-1.,-0.55,-1.,0.7071067811865475,-0.7071067811865477,0.,-0.5,0.5,0.,0.7071067811865477,-0.7071067811865475,1.05,0.,1.1,-0.5,0.55,-1.,1.3,0.,1.4012585384440737,-0.535233134659635,1.1090169943749475,-1.,1.1,-0.5,0.6123724356957946,-1.369306393762915,0.,-1.25,0.55,-1.,1.1090169943749475,-1.0]
2447         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
2448         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
2449         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
2450         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
2451         for i in range(208):
2452             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
2453             pass
2454         pass
2455
2456     def testUMeshTessellate2D1(self):
2457         m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
2458         m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
2459         m1=MEDCouplingUMesh.New();
2460         m1.setMeshDimension(2);
2461         m1.allocateCells(8);
2462         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
2463         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
2464         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
2465         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
2466         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
2467         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
2468         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
2469         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
2470         m1.finishInsertingCells();
2471         myCoords1=DataArrayDouble.New();
2472         myCoords1.setValues(m1Coords,25,2);
2473         m1.setCoords(myCoords1);
2474         #
2475         m11=m1.deepCopy();
2476         m11.tessellate2D(1.);
2477         self.assertTrue(m11.getCoords().isEqual(m11.getCoords(),1e-12));
2478         expected1=[5,0,3,11,1,5,3,4,12,2,1,11,5,5,15,3,0,5,6,16,4,3,15,5,5,5,0,7,19,5,6,5,19,7,8,20,5,0,1,23,7,5,1,2,24,8,7,23]
2479         expected2=[0,5,12,17,24,29,36,41,48]
2480         self.assertEqual(48,m11.getNodalConnectivity().getNumberOfTuples());
2481         self.assertEqual(9,m11.getNodalConnectivityIndex().getNumberOfTuples());
2482         self.assertEqual(expected1,m11.getNodalConnectivity().getValues());
2483         self.assertEqual(expected2,m11.getNodalConnectivityIndex().getValues());
2484         #
2485         m12=m1.deepCopy();
2486         m12.tessellate2D(0.5);
2487         self.assertEqual(41,m12.getNumberOfNodes());
2488         expected3=[5,0,3,25,26,1,5,3,4,27,28,2,1,26,25,5,5,29,30,3,0,5,6,31,32,4,3,30,29,5,5,5,0,7,33,34,5,6,5,34,33,7,8,35,36,5,0,1,37,38,7,5,1,2,39,40,8,7,38,37]
2489         expected4=[0,6,15,21,30,36,45,51,60]
2490         expected5=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,0.479425538604203,0.8775825618903728,0.8414709848078964,0.54030230586814,0.7191383079063044,1.3163738428355591,1.2622064772118446,0.8104534588022099,-0.877582561890373,0.4794255386042027,-0.5403023058681399,0.8414709848078964,-1.3163738428355596,0.7191383079063038,-0.8104534588022098,1.2622064772118446,-0.4794255386042031,-0.8775825618903728,-0.8414709848078965,-0.5403023058681399,-0.7191383079063045,-1.3163738428355591,-1.2622064772118449,-0.8104534588022098,0.8775825618903729,-0.47942553860420295,0.54030230586814,-0.8414709848078964,1.3163738428355594,-0.7191383079063043,0.8104534588022099,-1.2622064772118446]
2491         for i in range(82):
2492             self.assertAlmostEqual(expected5[i],m12.getCoords().getIJ(0,i),12);
2493             pass
2494         self.assertEqual(60,m12.getNodalConnectivity().getNumberOfTuples());
2495         self.assertEqual(9,m12.getNodalConnectivityIndex().getNumberOfTuples());
2496         self.assertEqual(expected3,m12.getNodalConnectivity().getValues());
2497         self.assertEqual(expected4,m12.getNodalConnectivityIndex().getValues());
2498         pass
2499
2500     def testUMeshTessellate2DCurve1(self):
2501         # A quarter of circle:
2502         mcoords = [0.4,0.0,   0.0,-0.4,   0.283,-0.283]
2503         mconnec = [0,1,2]
2504
2505         m1 = MEDCouplingUMesh.New()
2506         m1.setMeshDimension(1)
2507         m1.allocateCells(1)
2508         m1.insertNextCell(NORM_SEG3, mconnec)
2509
2510         myCoords = DataArrayDouble.New(mcoords, 3, 2)
2511         m1.setCoords(myCoords)
2512         
2513         m2 = m1.deepCopy()
2514         m2.tessellate2D(0.1)
2515         # If the following raises, the test will fail automatically:
2516         m2.checkConsistency(0.0) # eps param not used
2517
2518     def testIntersect2DMeshesTmp4(self):
2519         m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
2520         m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
2521         m1=MEDCouplingUMesh.New();
2522         m1.setMeshDimension(2);
2523         m1.allocateCells(8);
2524         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
2525         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
2526         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
2527         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
2528         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
2529         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
2530         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
2531         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
2532         m1.finishInsertingCells();
2533         myCoords1=DataArrayDouble.New();
2534         myCoords1.setValues(m1Coords,25,2);
2535         m1.setCoords(myCoords1);
2536         #
2537         m2Coords=[0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1,-1.1,-1.,0.,-1.,1.1,-1,1.7,-1.]
2538         m2Conn=[0,3,2,1, 1,2,5,4, 7,6,3,0, 8,9,6,7, 7,0,12,11, 8,7,11,10, 0,1,13,12, 1,4,14,13]
2539         m2=MEDCouplingUMesh.New();
2540         m2.setMeshDimension(2);
2541         m2.allocateCells(8);
2542         for i in range(8):
2543             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
2544             pass
2545         m2.finishInsertingCells();
2546         myCoords2=DataArrayDouble.New();
2547         myCoords2.setValues(m2Coords,15,2);
2548         m2.setCoords(myCoords2);
2549         #
2550         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10)
2551         m3.unPolyze()
2552         #
2553         expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2554         expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1]
2555         self.assertEqual(16,d1.getNumberOfTuples());
2556         self.assertEqual(16,d2.getNumberOfTuples());
2557         self.assertEqual(16,m3.getNumberOfCells());
2558         self.assertEqual(104,m3.getNumberOfNodes());
2559         self.assertEqual(2,m3.getSpaceDimension());
2560         self.assertEqual(expected1,d1.getValues());
2561         self.assertEqual(expected2,d2.getValues());
2562         expected3=[6,16,15,18,44,45,46,8,18,2,1,16,47,48,49,50,8,17,1,2,40,51,52,53,54,8,40,5,4,17,55,56,57,58,6,18,15,20,59,60,61,8,20,7,6,18,62,63,64,65,8,41,6,7,21,66,67,68,69,8,21,8,9,41,70,71,72,73,6,20,15,22,74,75,76,8,22,11,7,20,77,78,79,80,8,21,7,11,42,81,82,83,84,8,42,10,8,21,85,86,87,88,6,22,15,16,89,90,91,8,16,1,13,22,92,93,94,95,8,43,13,1,17,96,97,98,99,8,17,4,14,43,100,101,102,103]
2563         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
2564         expected5=[0.,0.,1.1, 0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,1.1180339887498951,1.,-1.1180339887498951,1.,-1.1180339887498951,-1.,1.1180339887498951,-1.,0.5,0.,0.,0.5,0.7071067811865477,0.7071067811865476,0.55,1.,1.1,0.5,1.05,0.,0.7071067811865477,0.7071067811865475,1.3,0.,1.1,0.5,1.1090169943749475,1.,1.4012585384440737,0.535233134659635,1.4090169943749475,1.,1.7,0.5,1.6,0.,1.4012585384440737,0.535233134659635,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-1.05,0.,-1.1,0.5,-0.55,1.,-0.7071067811865478,0.7071067811865475,-1.1090169943749475,1.,-1.1,0.5,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.6,0.,-1.7,0.5,-1.4090169943749475,1.,-1.4012585384440737,0.5352331346596344,-0.5,0.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.55,-1.,-1.1,-0.5,-1.05,0.,-0.7071067811865475,-0.7071067811865477,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,-1.4012585384440734,-0.5352331346596354,-1.4090169943749475,-1.,-1.7,-0.5,-1.6,0.,-1.4012585384440732,-0.5352331346596354,0.,-0.5,0.5,0.,0.7071067811865475,-0.7071067811865477,1.05,0.,1.1,-0.5,0.55,-1.,0.7071067811865475,-0.7071067811865477,1.1090169943749475,-1.,1.1,-0.5,1.3,0.,1.4012585384440737,-0.535233134659635,1.6,0.,1.7,-0.5,1.4090169943749475,-1.,1.4012585384440737,-0.535233134659635]
2565         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
2566         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
2567         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
2568         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
2569         for i in range(208):
2570             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
2571             pass
2572         pass
2573
2574     def testGetCellIdsCrossingPlane1(self):
2575         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2576         vec=[-0.07,1.,0.07]
2577         origin=[1.524,1.4552,1.74768]
2578         ids1=mesh3D.getCellIdsCrossingPlane(origin,vec,1e-10)
2579         self.assertEqual([1,3,4,7,9,10,13,15,16],ids1.getValues())
2580         vec2=[0.,0.,1.]
2581         ids2=mesh3D.getCellIdsCrossingPlane(origin,vec2,1e-10)
2582         self.assertEqual([6,7,8,9,10,11],ids2.getValues())
2583         pass
2584
2585     def testBuildSlice3D1(self):
2586         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2587         vec1=[-0.07,1.,0.07]
2588         origin1=[1.524,1.4552,1.74768]
2589         slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
2590         expected1=[1,3,4,7,9,10,13,15,16]
2591         expected2=[5,42,41,40,43,44,5,42,46,45,41,5,44,43,40,47,48,5,49,42,44,50,5,49,51,46,42,5,50,44,48,52,5,53,49,50,54,5,53,55,51,49,5,54,50,52,56]
2592         expected3=[0,6,11,17,22,27,32,37,42,47]
2593         expected4=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,2.,2.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,2.,2.,1.,1.,1.,2.,1.,1.25,2.,1.,1.5,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,1.,1.,3.,1.,1.25,3.,1.,1.5,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,1.,1.5408576,0.,2.,1.6108576000000001,0.,2.,1.5408576,1.,1.,1.5,0.5836800000000008,1.,1.4708576,1.,3.,1.6808576,0.,3.,1.6108576000000001,1.,0.,1.4708576,0.,0.,1.4008576,1.,2.,1.4708576,2.,1.,1.4008576000000001,2.,3.,1.5408575999999998,2.,0.,1.3308575999999999,2.,2.,1.4008576,3.,1.,1.3308576,3.,3.,1.4708576,3.,0.,1.2608576,3.]
2594         self.assertEqual(2,slice1.getMeshDimension());
2595         self.assertEqual(3,slice1.getSpaceDimension());
2596         self.assertEqual(57,slice1.getNumberOfNodes());
2597         self.assertEqual(9,slice1.getNumberOfCells());
2598         self.assertEqual(9,ids.getNumberOfTuples());
2599         self.assertEqual(47,slice1.getNodalConnectivity().getNumberOfTuples());
2600         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
2601         self.assertEqual(expected1,ids.getValues());
2602         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
2603         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
2604         for i in range(171):
2605             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
2606             pass
2607         # 2nd slice based on already existing nodes of mesh3D.
2608         vec2=[0.,3.,1.]
2609         origin2=[2.5,1.,3.]
2610         slice1,ids=mesh3D.buildSlice3D(origin2,vec2,1e-10);
2611         expected5=[5,50,10,4,51,5,50,52,7,10,5,51,4,5,53,5,54,50,51,55,56,5,54,57,52,50,5,56,55,51,53,58,5,38,59,56,54,43,5,54,57,46,43,5,38,59,56,58,48]
2612         expected6=[0,5,10,15,21,26,32,38,43,49]
2613         expected7=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,1.,3.,0.,2.,2.,0.,2.,3.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25,2.,1.,0.,2.,1.,1.5,2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,0.,0.,3.,1.,1.,3.,1.,1.25,3.,1.,0.,3.,1.,1.5,3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,2.,1.6666666666666667,1.,1.,1.6666666666666667,1.,3.,1.6666666666666667,1.,0.,1.6666666666666667,1.,2.,1.3333333333333335,2.,1.,1.5,1.5,1.,1.3333333333333333,2.,3.,1.3333333333333335,2.,0.,1.3333333333333335,2.,1.,1.25,2.25]
2614         self.assertEqual(2,slice1.getMeshDimension());
2615         self.assertEqual(3,slice1.getSpaceDimension());
2616         self.assertEqual(60,slice1.getNumberOfNodes());
2617         self.assertEqual(9,slice1.getNumberOfCells());
2618         self.assertEqual(9,ids.getNumberOfTuples());
2619         self.assertEqual(49,slice1.getNodalConnectivity().getNumberOfTuples());
2620         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
2621         self.assertEqual(expected1,ids.getValues());
2622         self.assertEqual(expected5,slice1.getNodalConnectivity().getValues());
2623         self.assertEqual(expected6,slice1.getNodalConnectivityIndex().getValues());
2624         for i in range(180):
2625             self.assertAlmostEqual(expected7[i],slice1.getCoords().getIJ(0,i),12);
2626             pass
2627         # 3rd slice based on shared face of mesh3D.
2628         vec3=[0.,0.,1.]
2629         origin3=[2.5,1.,2.]
2630         slice1,ids=mesh3D.buildSlice3D(origin3,vec3,1e-10);
2631         expected8=[6,7,8,9,10,11,12,13,14,15,16,17]
2632         expected9=[5,15,26,16,18,5,16,21,28,22,19,17,5,18,20,21,16,5,21,24,25,28,5,26,16,17,19,22,23,5,22,27,29,28,5,15,26,16,18,5,16,21,28,22,19,17,5,18,20,21,16,5,21,24,25,28,5,26,16,17,19,22,23,5,22,27,29,28]
2633         expected10=[0,5,12,17,22,29,34,39,46,51,56,63,68]
2634         expected11=[0.,0.,1.,1.,1.,1.,1.,1.25,1.,1.,0.,1.,1.,1.5,1.,2.,0.,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25,2.,1.,0.,2.,1.,1.5,2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,1.,3.,2.,2.,2.,2.,2.,3.,2.,0.,0.,3.,1.,1.,3.,1.,1.25,3.,1.,0.,3.,1.,1.5,3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,1.,3.,3.,2.,2.,3.,2.,3.,3.]
2635         self.assertEqual(2,slice1.getMeshDimension());
2636         self.assertEqual(3,slice1.getSpaceDimension());
2637         self.assertEqual(45,slice1.getNumberOfNodes());
2638         self.assertEqual(12,slice1.getNumberOfCells());
2639         self.assertEqual(12,ids.getNumberOfTuples());
2640         self.assertEqual(68,slice1.getNodalConnectivity().getNumberOfTuples());
2641         self.assertEqual(13,slice1.getNodalConnectivityIndex().getNumberOfTuples());
2642         self.assertEqual(expected8,ids.getValues());
2643         self.assertEqual(expected9,slice1.getNodalConnectivity().getValues());
2644         self.assertEqual(expected10,slice1.getNodalConnectivityIndex().getValues());
2645         for i in range(135):
2646             self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12);
2647             pass
2648         pass
2649
2650     def testBuildSlice3DSurf1(self):
2651         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2652         mesh2D=mesh3D.buildDescendingConnectivity()[0];
2653         vec1=[-0.07,1.,0.07]
2654         origin1=[1.524,1.4552,1.74768]
2655         slice1,ids=mesh2D.buildSlice3DSurf(origin1,vec1,1e-10);
2656         expected1=[6,8,10,11,13,18,19,21,23,25,26,38,41,43,47,49,52,53,64,67,69,73,75,78,79]
2657         expected2=[1,40,41,1,42,41,1,40,43,1,44,43,1,42,44,1,45,41,1,42,46,1,46,45,1,47,40,1,47,48,1,44,48,1,49,42,1,44,50,1,49,50,1,49,51,1,51,46,1,48,52,1,50,52,1,53,49,1,50,54,1,53,54,1,53,55,1,55,51,1,52,56,1,54,56]
2658         expected3=[0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75];
2659         expected4=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,2.,2.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,2.,2.,1.,1.,1.,2.,1.,1.25,2.,1.,1.5,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,1.,1.,3.,1.,1.25,3.,1.,1.5,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,1.,1.5408576,0.,2.,1.6108576000000001,0.,2.,1.5408576,1.,1.,1.5,0.5836800000000008,1.,1.4708576,1.,3.,1.6808576,0.,3.,1.6108576000000001,1.,0.,1.4708576,0.,0.,1.4008576,1.,2.,1.4708576,2.,1.,1.4008576000000001,2.,3.,1.5408575999999998,2.,0.,1.3308575999999999,2.,2.,1.4008576,3.,1.,1.3308576,3.,3.,1.4708576,3.,0.,1.2608576,3.]
2660         self.assertEqual(1,slice1.getMeshDimension());
2661         self.assertEqual(3,slice1.getSpaceDimension());
2662         self.assertEqual(57,slice1.getNumberOfNodes());
2663         self.assertEqual(25,slice1.getNumberOfCells());
2664         self.assertEqual(25,ids.getNumberOfTuples());
2665         self.assertEqual(75,slice1.getNodalConnectivity().getNumberOfTuples());
2666         self.assertEqual(26,slice1.getNodalConnectivityIndex().getNumberOfTuples());
2667         self.assertEqual(expected1,ids.getValues());
2668         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
2669         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
2670         for i in range(171):
2671             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
2672             pass
2673         #
2674         vec2=[0.,0.,1.]
2675         origin2=[2.5,1.,2.]
2676         slice1,ids=mesh2D.buildSlice3DSurf(origin2,vec2,1e-10);
2677         expected5=[32,32,32,32,33,34,35,36,37,38,39,40,41,42,43,43,43,43,43,43,44,44,44,44,45,46,47,47,47,47,48,49,50,51,52,53,53,53,53,53,53,54,54,54,54,55,56,57,59,60,61,62,63,64,65,66,67,68,71,72,74,75,76,77,78,81,82,83]
2678         expected6=[1,15,18,1,18,16,1,16,26,1,26,15,1,26,15,1,16,26,1,18,16,1,15,18,1,16,21,1,21,28,1,22,28,1,19,22,1,17,19,1,16,17,1,16,21,1,21,28,1,28,22,1,22,19,1,19,17,1,17,16,1,16,18,1,18,20,1,20,21,1,21,16,1,20,21,1,18,20,1,28,21,1,21,24,1,24,25,1,25,28,1,25,28,1,24,25,1,21,24,1,23,22,1,26,23,1,26,16,1,16,17,1,17,19,1,19,22,1,22,23,1,23,26,1,22,28,1,28,29,1,29,27,1,27,22,1,27,22,1,29,27,1,28,29,1,26,15,1,16,26,1,18,16,1,15,18,1,16,21,1,21,28,1,22,28,1,19,22,1,17,19,1,16,17,1,20,21,1,18,20,1,25,28,1,24,25,1,21,24,1,23,22,1,26,23,1,27,22,1,29,27,1,28,29]
2679         expected7=[0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,201,204];
2680         expected8=[0.,0.,1.,1.,1.,1.,1.,1.25, 1.,1.,0.,1.,1.,1.5, 1.,2.,0.,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25, 2.,1.,0.,2.,1.,1.5, 2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,1.,3.,2.,2.,2.,2.,2.,3.,2.,0.,0.,3.,1.,1.,3.,1.,1.25, 3.,1.,0.,3.,1.,1.5, 3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,1.,3.,3.,2.,2.,3.,2.,3.,3.]
2681         self.assertEqual(1,slice1.getMeshDimension());
2682         self.assertEqual(3,slice1.getSpaceDimension());
2683         self.assertEqual(45,slice1.getNumberOfNodes());
2684         self.assertEqual(68,slice1.getNumberOfCells());
2685         self.assertEqual(68,ids.getNumberOfTuples());
2686         self.assertEqual(204,slice1.getNodalConnectivity().getNumberOfTuples());
2687         self.assertEqual(69,slice1.getNodalConnectivityIndex().getNumberOfTuples());
2688         self.assertEqual(expected5,ids.getValues());
2689         self.assertEqual(expected6,slice1.getNodalConnectivity().getValues());
2690         self.assertEqual(expected7,slice1.getNodalConnectivityIndex().getValues());
2691         for i in range(135):
2692             self.assertAlmostEqual(expected8[i],slice1.getCoords().getIJ(0,i),12);
2693             pass
2694         pass
2695
2696     def testDataArrayDoubleAdvSetting1(self):
2697         data1=[1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.]
2698         data2=[8.,38.,9.,39.,0.,30.,11.,41.,12.,42.]
2699         compsCpp=["comp1","comp2"]
2700         da=DataArrayDouble.New();
2701         da.setInfoAndChangeNbOfCompo(compsCpp);
2702         da.setName("da");
2703         da.alloc(7,2);
2704         compsCpp=compsCpp[:-1]
2705         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
2706         da.setValues(data1,7,2)
2707         #
2708         p=[(0,3),(3,5),(5,7)]
2709         tmp=da.selectByTupleRanges(p);
2710         self.assertTrue(tmp.isEqual(da,1e-14));
2711         p=[(0,2),(3,4),(5,7)]
2712         tmp=da.selectByTupleRanges(p);
2713         expected1=[1.,11.,2.,12.,4.,14.,6.,16.,7.,17.]
2714         self.assertEqual(5,tmp.getNumberOfTuples());
2715         self.assertEqual(2,tmp.getNumberOfComponents());
2716         for i in range(10):
2717             self.assertAlmostEqual(expected1[i],tmp.getIJ(0,i),14);
2718             pass
2719         p=[(0,2),(0,2),(5,6)]
2720         tmp=da.selectByTupleRanges(p);
2721         expected2=[1.,11.,2.,12.,1.,11.,2.,12.,6.,16.]
2722         self.assertEqual(5,tmp.getNumberOfTuples());
2723         self.assertEqual(2,tmp.getNumberOfComponents());
2724         for i in range(10):
2725             self.assertAlmostEqual(expected2[i],tmp.getIJ(0,i),14);
2726             pass
2727         p=[(0,2),(-1,2),(5,6)]
2728         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
2729         p=[(0,2),(0,2),(5,8)]
2730         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
2731         #
2732         da2=DataArrayDouble.New();
2733         da2.setValues(data2,5,2);
2734         #
2735         dac=da.deepCopy();
2736         dac.setContigPartOfSelectedValuesSlice(1,da2,2,4,1);
2737         expected3=[1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.]
2738         for i in range(14):
2739             self.assertAlmostEqual(expected3[i],dac.getIJ(0,i),14);
2740             pass
2741         #
2742         dac=da.deepCopy();
2743         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,3,da2,0,5,1);
2744         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,0,da2,4,6,1);
2745         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,3,da2,5,0,1);
2746         dac.setContigPartOfSelectedValuesSlice(3,da2,1,5,1);
2747         expected4=[1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.]
2748         for i in range(14):
2749             self.assertAlmostEqual(expected4[i],dac.getIJ(0,i),14);
2750             pass
2751         #
2752         ids=DataArrayInt.New();
2753         ids.alloc(3,1);
2754         dac=da.deepCopy();
2755         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
2756         dac.setContigPartOfSelectedValues(2,da2,ids);
2757         expected5=[1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.]
2758         for i in range(14):
2759             self.assertAlmostEqual(expected5[i],dac.getIJ(0,i),14);
2760             pass
2761         #
2762         dac=da.deepCopy();
2763         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
2764         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
2765         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
2766         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
2767         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
2768         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
2769         #
2770         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
2771         dac=da.deepCopy();
2772         dac.setContigPartOfSelectedValues(4,da2,ids);
2773         expected6=[1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.]
2774         for i in range(14):
2775             self.assertAlmostEqual(expected6[i],dac.getIJ(0,i),14);
2776             pass
2777         pass
2778
2779     def testDataArrayIntAdvSetting1(self):
2780         data1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
2781         data2=[8,38,9,39,0,30,11,41,12,42]
2782         compsCpp=["comp1","comp2"]
2783         da=DataArrayInt.New();
2784         da.setInfoAndChangeNbOfCompo(compsCpp);
2785         da.setName("da");
2786         da.alloc(7,2);
2787         compsCpp=compsCpp[:-1]
2788         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
2789         da.setValues(data1,7,2)
2790         #
2791         p=[(0,3),(3,5),(5,7)]
2792         tmp=da.selectByTupleRanges(p);
2793         self.assertTrue(tmp.isEqual(da));
2794         p=[(0,2),(3,4),(5,7)]
2795         tmp=da.selectByTupleRanges(p);
2796         expected1=[1,11,2,12,4,14,6,16,7,17]
2797         self.assertEqual(5,tmp.getNumberOfTuples());
2798         self.assertEqual(2,tmp.getNumberOfComponents());
2799         for i in range(10):
2800             self.assertEqual(expected1[i],tmp.getIJ(0,i));
2801             pass
2802         p=[(0,2),(0,2),(5,6)]
2803         tmp=da.selectByTupleRanges(p);
2804         expected2=[1,11,2,12,1,11,2,12,6,16]
2805         self.assertEqual(5,tmp.getNumberOfTuples());
2806         self.assertEqual(2,tmp.getNumberOfComponents());
2807         for i in range(10):
2808             self.assertEqual(expected2[i],tmp.getIJ(0,i));
2809             pass
2810         p=[(0,2),(-1,2),(5,6)]
2811         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
2812         p=[(0,2),(0,2),(5,8)]
2813         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
2814         #
2815         da2=DataArrayInt.New();
2816         da2.setValues(data2,5,2);
2817         #
2818         dac=da.deepCopy();
2819         dac.setContigPartOfSelectedValuesSlice(1,da2,2,4,1);
2820         expected3=[1,11,0,30,11,41,4,14,5,15,6,16,7,17]
2821         for i in range(14):
2822             self.assertEqual(expected3[i],dac.getIJ(0,i));
2823             pass
2824         #
2825         dac=da.deepCopy();
2826         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,3,da2,0,5,1);
2827         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,0,da2,4,6,1);
2828         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValuesSlice,3,da2,5,0,1);
2829         dac.setContigPartOfSelectedValuesSlice(3,da2,1,5,1);
2830         expected4=[1,11,2,12,3,13,9,39,0,30,11,41,12,42]
2831         for i in range(14):
2832             self.assertEqual(expected4[i],dac.getIJ(0,i));
2833             pass
2834         #
2835         ids=DataArrayInt.New();
2836         ids.alloc(3,1);
2837         dac=da.deepCopy();
2838         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
2839         dac.setContigPartOfSelectedValues(2,da2,ids);
2840         expected5=[1,11,2,12,0,30,8,38,12,42,6,16,7,17]
2841         for i in range(14):
2842             self.assertEqual(expected5[i],dac.getIJ(0,i));
2843             pass
2844         #
2845         dac=da.deepCopy();
2846         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
2847         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
2848         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
2849         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
2850         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
2851         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
2852         #
2853         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
2854         dac=da.deepCopy();
2855         dac.setContigPartOfSelectedValues(4,da2,ids);
2856         expected6=[1,11,2,12,3,13,4,14,0,30,0,30,9,39]
2857         for i in range(14):
2858             self.assertEqual(expected6[i],dac.getIJ(0,i));
2859             pass
2860         pass
2861
2862     def testBuildDescendingConnec2Of3DMesh1(self):
2863         mesh=MEDCouplingDataForTest.build3DSourceMesh_1();
2864         #
2865         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
2866         mesh2.checkConsistencyLight();
2867         self.assertEqual(2,mesh2.getMeshDimension());
2868         self.assertEqual(30,mesh2.getNumberOfCells());
2869         self.assertEqual(31,revDescIndx.getNbOfElems()); self.assertEqual(31,revDescIndx.getNumberOfTuples());
2870         self.assertEqual(13,descIndx.getNbOfElems()); self.assertEqual(13,descIndx.getNumberOfTuples());
2871         self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
2872         self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
2873         expected1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,-10,15,-5,-13,16,17,-14,18,-4,19,-2,20,21,22,23,24,25,-11,26,-1,-12,-25,-22,27,28,-7,-20,-24,29,-16,-18,30,-8,-28]
2874         self.assertEqual(expected1,desc.getValues());
2875         expected2=[0,4,8,12,16,20,24,28,32,36,40,44,48]
2876         self.assertEqual(expected2,descIndx.getValues());
2877         expected3=[0,2,4,5,7,9,10,12,14,15,17,19,21,23,25,26,28,29,31,32,34,35,37,38,40,42,43,44,46,47,48]
2878         self.assertEqual(expected3,revDescIndx.getValues());
2879         expected4=[0,8,0,6,0,0,5,1,4,1,1,9,1,11,2,2,3,2,7,2,8,3,4,3,5,3,4,10,4,5,11,5,6,10,6,6,9,7,7,10,7,8,8,9,9,11,10,11]
2880         self.assertEqual(expected4,revDesc.getValues());
2881         conn=mesh2.getNodalConnectivity();
2882         connIndex=mesh2.getNodalConnectivityIndex();
2883         expected5=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120]
2884         self.assertEqual(expected5,connIndex.getValues());
2885         expected6=[3,8,1,7,3,8,3,1,3,1,3,7,3,7,3,8,3,6,0,8,3,6,2,0,3,0,2,8,3,8,2,6,3,7,4,5,3,7,8,4,3,4,8,5,3,5,8,7,3,6,8,4,3,6,7,8,3,4,7,6,3,8,4,0,3,0,4,6,3,6,3,8,3,7,3,6,3,8,0,1,3,1,0,3,3,3,0,8,3,4,1,5,3,4,8,1,3,1,8,5,3,1,7,5,3,0,2,3,3,3,2,8,3,1,4,0,3,3,2,6]
2886         self.assertEqual(expected6,conn.getValues());
2887         pass
2888
2889     def testAre2DCellsNotCorrectlyOriented1(self):
2890         m1Coords=[1.,1.,-1.,-1.,-1.,-1.,1.,-1.]
2891         m1Conn=[0,3,1,2]
2892         m1=MEDCouplingUMesh.New();
2893         m1.setMeshDimension(2);
2894         m1.allocateCells(1);
2895         m1.insertNextCell(NORM_QUAD4,4,m1Conn[0:4])
2896         m1.finishInsertingCells();
2897         myCoords1=DataArrayDouble.New();
2898         myCoords1.setValues(m1Coords,4,2);
2899         m1.setCoords(myCoords1);
2900         #
2901         vec1=[0.,0.,1.]
2902         for i in range(18):
2903             vec2=[3.*cos(pi/9.*i),3.*sin(pi/9.*i)];
2904             m1Cpy=m1.deepCopy();
2905             m1Cpy.translate(vec2);
2906             self.assertRaises(InterpKernelException,m1Cpy.are2DCellsNotCorrectlyOriented,vec1,False);
2907             m1Cpy.changeSpaceDimension(3);
2908             res=m1Cpy.are2DCellsNotCorrectlyOriented(vec1,False)
2909             self.assertEqual([0],res.getValues());
2910             pass
2911         pass
2912
2913     def testDataArrayAbs1(self):
2914         d1=DataArrayDouble.New();
2915         val1=[2.,-3.,-5.,6.,-7.,-8.,9.,10.,-11.,-12.,-13.,-15.]
2916         expected1=[2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.]
2917         d1.setValues(val1,6,2);
2918         d2=d1.convertToIntArr();
2919         #
2920         d1.abs();
2921         for i in range(12):
2922             self.assertAlmostEqual(expected1[i],d1.getIJ(0,i),14);
2923             pass
2924         #
2925         expected2=[2,3,5,6,7,8,9,10,11,12,13,15]
2926         d2.abs();
2927         for i in range(12):
2928             self.assertEqual(expected2[i],d2.getIJ(0,i));
2929             pass
2930         #
2931         pass
2932
2933     # test on 1D
2934     def testGetValueOn3(self):
2935         v=[0.,1.,1.5,2.]
2936         v2=[0.7,1.25,0.,2.,1.5]
2937         disp=[5.,50.,500.,6.,60.,600.,7.,70.,700.,8.,80.,800.]
2938         m=MEDCouplingUMesh.New("myMesh",1)
2939         nbNodes=len(v)
2940         nbCells=nbNodes-1
2941         m.allocateCells(nbCells)
2942         coords=DataArrayDouble.New() ; coords.setValues(v,nbNodes,1)
2943         m.setCoords(coords)
2944         m.insertNextCell(NORM_SEG2,2,[0,1])
2945         m.insertNextCell(NORM_SEG2,2,[2,1])
2946         m.insertNextCell(NORM_SEG2,2,[2,3])
2947         m.finishInsertingCells()
2948         f=MEDCouplingFieldDouble.New(ON_NODES)
2949         f.setMesh(m)
2950         array=DataArrayDouble.New(); array.setValues(disp,m.getNumberOfNodes(),3)
2951         f.setArray(array)
2952         arr1=f.getValueOnMulti(v2)
2953         self.assertEqual(5,arr1.getNumberOfTuples());
2954         self.assertEqual(3,arr1.getNumberOfComponents());
2955         expected1=[5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.]
2956         for i in range(15):
2957             self.assertAlmostEqual(expected1[i],arr1.getIJ(0,i),14);
2958             pass
2959         pass
2960
2961     def testGetNodeIdsOfCell2(self):
2962         m1c=MEDCouplingCMesh.New();
2963         coordsX=DataArrayDouble.New();
2964         arrX=[ -1., 1., 2., 4., 4.5 ]
2965         coordsX.setValues(arrX,5,1);
2966         coordsY=DataArrayDouble.New();
2967         arrY=[ -2., 2., 4., 8.]
2968         coordsY.setValues(arrY,4,1);
2969         coordsZ=DataArrayDouble.New();
2970         arrZ=[ -2., 2., 4.]
2971         coordsZ.setValues(arrZ,3,1);
2972         # test in 1D
2973         m1c.setCoordsAt(0,coordsX);
2974         expected1=[[0,1],[1,2],[2,3],[3,4]]
2975         self.assertEqual(4,m1c.getNumberOfCells())
2976         for i in range(m1c.getNumberOfCells()):
2977             self.assertEqual(expected1[i],m1c.getNodeIdsOfCell(i))
2978             pass
2979         # test in 2D
2980         m1c.setCoordsAt(1,coordsY);
2981         self.assertEqual(12,m1c.getNumberOfCells())
2982         self.assertEqual(20,m1c.getNumberOfNodes())
2983         expected2=[[0,1,6,5],[1,2,7,6],[2,3,8,7],[3,4,9,8],[5,6,11,10],[6,7,12,11],[7,8,13,12],[8,9,14,13],[10,11,16,15],[11,12,17,16],[12,13,18,17],[13,14,19,18]]
2984         for i in range(m1c.getNumberOfCells()):
2985             self.assertEqual(expected2[i],m1c.getNodeIdsOfCell(i))
2986             pass
2987         # test in 3D
2988         m1c.setCoordsAt(2,coordsZ);
2989         self.assertEqual(24,m1c.getNumberOfCells())
2990         self.assertEqual(60,m1c.getNumberOfNodes())
2991         expected3=[[0,1,6,5,20,21,26,25],[1,2,7,6,21,22,27,26],[2,3,8,7,22,23,28,27],[3,4,9,8,23,24,29,28],[5,6,11,10,25,26,31,30],[6,7,12,11,26,27,32,31],[7,8,13,12,27,28,33,32],[8,9,14,13,28,29,34,33],[10,11,16,15,30,31,36,35],[11,12,17,16,31,32,37,36],[12,13,18,17,32,33,38,37],[13,14,19,18,33,34,39,38],[20,21,26,25,40,41,46,45],[21,22,27,26,41,42,47,46],[22,23,28,27,42,43,48,47],[23,24,29,28,43,44,49,48],[25,26,31,30,45,46,51,50],[26,27,32,31,46,47,52,51],[27,28,33,32,47,48,53,52],[28,29,34,33,48,49,54,53],[30,31,36,35,50,51,56,55],[31,32,37,36,51,52,57,56],[32,33,38,37,52,53,58,57],[33,34,39,38,53,54,59,58]]
2992         self.assertEqual(24,m1c.getNumberOfCells())
2993         for i in range(m1c.getNumberOfCells()):
2994             self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i))
2995             pass
2996         pass
2997           
2998     pass
2999
3000 if __name__ == '__main__':
3001     unittest.main()