Salome HOME
54cc915ebd8c9d110545f11d8f747dfd17150b30
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingBasicsTest.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2014  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@cea.fr
27
28 class MEDCouplingBasicsTest(unittest.TestCase):
29     def testArray2(self):
30         arr=DataArrayDouble.New()
31         arr.setValues([12.,11.,10.,9.,8.,7.,6.,5.,4.,3.,2.,1.],3,4)
32         arr.setInfoOnComponent(0,"ggg");
33         arr.setInfoOnComponent(1,"hhhh");
34         arr.setInfoOnComponent(2,"jj");
35         arr.setInfoOnComponent(3,"kkkkkk");
36         arr2=arr.convertToIntArr();
37         arr3=arr2.convertToDblArr();
38         self.assertTrue(arr.isEqual(arr3,1e-14))
39         pass
40
41     def testArray3(self):
42         arr1=DataArrayInt.New();
43         arr1Ref=[0,10,1,11,2,12,3,13,4,14,5,15,6,16]
44         arr1.setValues(arr1Ref,7,2);
45         self.assertEqual(7,arr1.getNumberOfTuples());
46         self.assertEqual(2,arr1.getNumberOfComponents());
47         self.assertEqual(arr1Ref,list(arr1.getValues()));
48         arr2=arr1.substr(3);
49         self.assertEqual(4,arr2.getNumberOfTuples());
50         self.assertEqual(2,arr2.getNumberOfComponents());
51         self.assertEqual(arr1Ref[6:],list(arr2.getValues()));
52         arr3=arr1.substr(2,5);
53         self.assertEqual(3,arr3.getNumberOfTuples());
54         self.assertEqual(2,arr3.getNumberOfComponents());
55         self.assertEqual(arr1Ref[4:10],list(arr3.getValues()));
56         #
57         arr4=DataArrayDouble.New();
58         arr4Ref=[0.8,10.8,1.9,11.9,2.1,12.1,3.2,13.2,4.3,14.3,5.4,15.4,6.5,16.5]
59         arr4.setValues(arr4Ref,7,2);
60         self.assertEqual(7,arr4.getNumberOfTuples());
61         self.assertEqual(2,arr4.getNumberOfComponents());
62         tmp=arr4.getValues()
63         for i in xrange(14):
64             self.assertTrue(abs(arr4Ref[i]-tmp[i])<1e-14);
65             pass
66         arr5=arr4.substr(3);
67         self.assertEqual(4,arr5.getNumberOfTuples());
68         self.assertEqual(2,arr5.getNumberOfComponents());
69         tmp=arr5.getValues()
70         for i in xrange(8):
71             self.assertTrue(abs(arr4Ref[6+i]-tmp[i])<1e-14);
72             pass
73         arr6=arr4.substr(2,5);
74         self.assertEqual(3,arr6.getNumberOfTuples());
75         self.assertEqual(2,arr6.getNumberOfComponents());
76         tmp=arr6.getValues()
77         for i in xrange(6):
78             self.assertTrue(abs(arr4Ref[4+i]-tmp[i])<1e-14);
79             pass
80         pass
81
82     def testMesh(self):
83         tab4=[1, 2, 8, 7, 2, 3, 9, 8, 3,
84               4, 10, 9, 4, 5, 11, 10, 5,
85               0, 6, 11, 0, 1, 7, 6 ]
86         nbOfNodes=12
87         nbOfCells=6
88         coords=[ 0.024155, 0.04183768725682622, -0.305, 0.04831000000000001, -1.015761910347357e-17,
89                  -0.305, 0.09662000000000001, -1.832979297858306e-18, -0.305, 0.120775, 0.04183768725682623,
90                  -0.305, 0.09662000000000001, 0.08367537451365245, -0.305, 0.04831000000000001, 0.08367537451365246,
91                  -0.305, 0.024155, 0.04183768725682622, -0.2863, 0.04831000000000001, -1.015761910347357e-17, -0.2863, 
92                  0.09662000000000001, -1.832979297858306e-18, -0.2863, 0.120775, 0.04183768725682623, -0.2863, 0.09662000000000001,
93                  0.08367537451365245, -0.2863, 0.04831000000000001, 0.08367537451365246, -0.2863 ]
94         self.assertEqual(MEDCouplingMesh.GetNumberOfNodesOfGeometricType(NORM_TRI3),3)
95         self.assertTrue(MEDCouplingMesh.IsStaticGeometricType(NORM_TRI3))
96         self.assertTrue(MEDCouplingMesh.IsLinearGeometricType(NORM_TRI3))
97         self.assertEqual(MEDCouplingMesh.GetDimensionOfGeometricType(NORM_TRI3),2)
98         self.assertEqual(MEDCouplingMesh.GetReprOfGeometricType(NORM_TRI3),"NORM_TRI3")
99         self.assertRaises(InterpKernelException,MEDCouplingMesh.GetNumberOfNodesOfGeometricType,NORM_POLYGON)
100         self.assertTrue(not MEDCouplingMesh.IsStaticGeometricType(NORM_POLYGON))
101         self.assertTrue(MEDCouplingMesh.IsLinearGeometricType(NORM_POLYGON))
102         self.assertEqual(MEDCouplingMesh.GetDimensionOfGeometricType(NORM_POLYGON),2)
103         self.assertEqual(MEDCouplingMesh.GetReprOfGeometricType(NORM_POLYGON),"NORM_POLYGON")
104         self.assertEqual(MEDCouplingMesh.GetNumberOfNodesOfGeometricType(NORM_TRI6),6)
105         self.assertTrue(MEDCouplingMesh.IsStaticGeometricType(NORM_TRI6))
106         self.assertTrue(not MEDCouplingMesh.IsLinearGeometricType(NORM_TRI6))
107         self.assertEqual(MEDCouplingMesh.GetDimensionOfGeometricType(NORM_TRI6),2)
108         self.assertEqual(MEDCouplingMesh.GetReprOfGeometricType(NORM_TRI6),"NORM_TRI6")
109         mesh=MEDCouplingUMesh.New()
110         mesh.setMeshDimension(2)
111         mesh.allocateCells(8);
112         mesh.setName("mesh1")
113         self.assertTrue(mesh.getName()=="mesh1")
114         for i in range(nbOfCells):
115             mesh.insertNextCell(NORM_QUAD4,4,tab4[4*i:4*(i+1)]);
116             pass
117         mesh.finishInsertingCells()
118         self.assertTrue(mesh.getNumberOfCells()==nbOfCells)
119         self.assertTrue(mesh.getNodalConnectivity().getNbOfElems()==30)
120         self.assertTrue(mesh.getNodalConnectivityIndex().getNbOfElems()==nbOfCells+1)
121         myCoords=DataArrayDouble.New()
122         myCoords.setValues(coords,nbOfNodes,3);
123         self.assertTrue(myCoords.getIJ(3,2)==-0.305)
124         mesh.setCoords(myCoords);
125         mesh.checkCoherency();
126         self.assertTrue(mesh.getAllGeoTypes()==[4])
127         myFalseConn=DataArrayInt.New()
128         myFalseConn.setValues(tab4,6,4)
129         self.assertTrue(myFalseConn.getIJ(1,1)==3)
130         #
131         field=MEDCouplingFieldDouble.New(ON_CELLS)
132         field.setMesh(mesh)
133         field.setNature(Integral)
134         myCoords=DataArrayDouble.New()
135         sampleTab=[]
136         for i in range(nbOfCells*9):
137             sampleTab.append(float(i))
138         myCoords.setValues(sampleTab,nbOfCells,9);
139         field.setArray(myCoords)
140         self.assertTrue(3==mesh.getSpaceDimension())
141         field.checkCoherency()
142         mesh2=mesh.clone(False)
143         mesh3=mesh.clone(True)
144         mesh3=0
145         mesh2=0
146         ## deep full recursively copy of field -> both field and mesh underneath copied
147         field2=field.clone(True)
148         field2.setMesh(field.getMesh().clone(True))
149         mesh3=mesh.clone(True)
150         field3=mesh3.fillFromAnalytic(ON_CELLS,2,"x*IVec+(y+z)*JVec")
151         field3.applyFunc("u*u*u+cos(u)")
152         pass
153         
154     def testMeshPointsCloud(self):
155         targetCoords=[-0.3,-0.3,0.5, 0.2,-0.3,1., 0.7,-0.3,1.5,
156                       -0.3,0.2,0.5, 0.2,0.2,1., 0.7,0.2,1.5, -0.3,0.7,0.5, 0.2,0.7,1., 0.7,0.7,1.5]
157         targetMesh=MEDCouplingUMesh.New();
158         targetMesh.setMeshDimension(0);
159         targetMesh.allocateCells(8);
160         targetMesh.insertNextCell(NORM_POINT1,1,[0]);
161         targetMesh.insertNextCell(NORM_POINT1,1,[1]);
162         targetMesh.insertNextCell(NORM_POINT1,1,[2]);
163         targetMesh.insertNextCell(NORM_POINT1,1,[3]);
164         targetMesh.insertNextCell(NORM_POINT1,1,[4]);
165         targetMesh.insertNextCell(NORM_POINT1,1,[5]);
166         targetMesh.insertNextCell(NORM_POINT1,1,[7]);
167         targetMesh.insertNextCell(NORM_POINT1,1,[6]);
168         targetMesh.finishInsertingCells();
169         self.assertRaises(InterpKernelException,targetMesh.checkCoherency);
170         myCoords=DataArrayDouble.New();
171         myCoords.setValues(targetCoords,9,3);
172         targetMesh.setCoords(myCoords);
173         self.assertEqual(targetMesh.getSpaceDimension(),3)
174         self.assertEqual(targetMesh.getNumberOfCells(),8)
175         self.assertEqual(targetMesh.getNumberOfNodes(),9)
176         self.assertEqual(targetMesh.getMeshDimension(),0)
177         pass
178
179     def testMeshM1D(self):
180         meshM1D=MEDCouplingUMesh.New();
181         self.assertRaises(InterpKernelException,meshM1D.getMeshDimension);
182         self.assertRaises(InterpKernelException,meshM1D.getNumberOfNodes);
183         self.assertRaises(InterpKernelException,meshM1D.getNumberOfCells);
184         self.assertRaises(InterpKernelException,meshM1D.setMeshDimension,-2)
185         self.assertRaises(InterpKernelException,meshM1D.setMeshDimension,-10)
186         meshM1D.setMeshDimension(-1);
187         meshM1D.checkCoherency();
188         self.assertEqual(meshM1D.getMeshDimension(),-1);
189         self.assertEqual(meshM1D.getNumberOfCells(),1);
190         self.assertRaises(InterpKernelException,meshM1D.getNumberOfNodes);
191         self.assertRaises(InterpKernelException,meshM1D.getSpaceDimension);
192         cpy=meshM1D.clone(True);
193         self.assertTrue(cpy.isEqual(meshM1D,1e-12));
194         fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
195         fieldOnCells.setMesh(meshM1D);
196         array=DataArrayDouble.New();
197         array.setValues(6*[7.],1,6);
198         fieldOnCells.setArray(array);
199         fieldOnCells.checkCoherency();
200         pass
201     
202     def testDeepCopy(self):
203         array=DataArrayDouble.New();
204         array.setValues(5*3*[7.],5,3);
205         self.assertEqual(array.getIJ(3,2),7.);
206         array2=array.deepCpy();
207         self.assertEqual(array2.getIJ(3,2),7.)
208         #
209         array3=DataArrayInt.New();
210         array3.setValues(5*3*[17],5,3);
211         self.assertEqual(array3.getIJ(3,2),17);
212         array4=array3.deepCpy();
213         self.assertEqual(array4.getIJ(3,2),17);
214         pass
215     
216     def testRevNodal(self):
217         mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
218         revNodal,revNodalIndx=mesh.getReverseNodalConnectivity();
219         revNodalExpected=[0,0,1,1,2,0,3,0,1,2,3,4,2,4,3,3,4,4];
220         revNodalIndexExpected=[0,1,3,5,7,12,14,15,17,18];
221         self.assertEqual(revNodal.getNbOfElems(),18)
222         self.assertEqual(revNodalIndx.getNbOfElems(),10)
223         self.assertEqual(list(revNodal.getValues()),revNodalExpected)
224         self.assertEqual(list(revNodalIndx.getValues()),revNodalIndexExpected)
225         pass
226     
227     def testConvertToPolyTypes(self):
228         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
229         elts=[1,3];
230         mesh.convertToPolyTypes(elts);
231         mesh.checkCoherency();
232         self.assertEqual(5,mesh.getNumberOfCells());
233         self.assertEqual(23,mesh.getNodalConnectivity().getNumberOfTuples());
234         expected1=[4, 0, 3, 4, 1, 5, 1, 4, 2, 3, 4, 5, 2, 5, 6, 7, 4, 3, 4, 7, 8, 5, 4]
235         self.assertEqual(expected1,list(mesh.getNodalConnectivity().getValues()));
236         #
237         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
238         mesh.convertToPolyTypes(elts);
239         mesh.checkCoherency();
240         self.assertEqual(8,mesh.getNumberOfCells());
241         self.assertEqual(114,mesh.getNodalConnectivity().getNumberOfTuples());
242         mesh.convertToPolyTypes(elts);
243         mesh.checkCoherency();
244         self.assertEqual(8,mesh.getNumberOfCells());
245         self.assertEqual(114,mesh.getNodalConnectivity().getNumberOfTuples());
246         pass
247
248     def testDescConn2D(self):
249         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
250         desc=DataArrayInt.New();
251         descIndx=DataArrayInt.New();
252         revDesc=DataArrayInt.New();
253         revDescIndx=DataArrayInt.New();
254         mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
255         mesh2.checkCoherency();
256         self.assertEqual(1,mesh2.getMeshDimension());
257         self.assertEqual(13,mesh2.getNumberOfCells());
258         self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
259         self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
260         self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
261         self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
262         expected1=[0,1,2,3, 2,4,5, 6,7,4, 8,9,1,10, 11,12,6,9];
263         self.assertEqual(expected1,list(desc.getValues()));
264         expected2=[0,4,7,10,14,18];
265         self.assertEqual(expected2,list(descIndx.getValues()));
266         expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18];
267         self.assertEqual(expected3,list(revDescIndx.getValues()));
268         expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4];
269         self.assertEqual(expected4,list(revDesc.getValues()));
270         conn=mesh2.getNodalConnectivity();
271         connIndex=mesh2.getNodalConnectivityIndex();
272         expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39];
273         self.assertEqual(expected5,list(connIndex.getValues()));
274         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];
275         self.assertEqual(expected6,list(conn.getValues()));
276         #
277         eltsV=[1,3];
278         mesh.convertToPolyTypes(eltsV);
279         mesh.checkCoherency();
280         #
281         desc=DataArrayInt.New();
282         descIndx=DataArrayInt.New();
283         revDesc=DataArrayInt.New();
284         revDescIndx=DataArrayInt.New();
285         #
286         mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
287         mesh2.checkCoherency();
288         self.assertEqual(1,mesh2.getMeshDimension());
289         self.assertEqual(13,mesh2.getNumberOfCells());
290         self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
291         self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
292         self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
293         self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
294         self.assertEqual(expected1,list(desc.getValues()));
295         self.assertEqual(expected2,list(descIndx.getValues()));
296         self.assertEqual(expected3,list(revDescIndx.getValues()));
297         self.assertEqual(expected4,list(revDesc.getValues()));
298         conn=mesh2.getNodalConnectivity();
299         connIndex=mesh2.getNodalConnectivityIndex();
300         self.assertEqual(expected5,list(connIndex.getValues()));
301         self.assertEqual(expected6,list(conn.getValues()));
302         pass
303     
304     def testDescConn3D(self):
305         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
306         desc=DataArrayInt.New();
307         descIndx=DataArrayInt.New();
308         revDesc=DataArrayInt.New();
309         revDescIndx=DataArrayInt.New();
310         #
311         mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
312         mesh2.checkCoherency();
313         self.assertEqual(2,mesh2.getMeshDimension());
314         self.assertEqual(36,mesh2.getNumberOfCells());
315         self.assertEqual(37,revDescIndx.getNbOfElems()); self.assertEqual(37,revDescIndx.getNumberOfTuples());
316         self.assertEqual(9,descIndx.getNbOfElems()); self.assertEqual(9,descIndx.getNumberOfTuples());
317         self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
318         self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
319         expected1=[0, 6, 12, 18, 24, 30, 36, 42, 48]
320         expected2=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 11, 12, 4, 13, 14, 15, 16, 17, 10, 18, 19, 13, 1, 20, 21, 22, 23, 24, 7, 25, 26, 27, 28, 22, 12, 29, 23, 30, 31, 32, 17, 33, 28, 34, 35, 30]
321         expected3=[0, 1, 3, 4, 6, 8, 9, 10, 12, 13, 14, 16, 17, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48]
322         expected4=[0, 0, 4, 0, 0, 1, 0, 2, 0, 1, 1, 5, 1, 1, 1, 3, 2, 2, 6, 2, 3, 2, 2, 3, 3, 7, 3, 3, 4, 4, 4, 5, 4, 6, 4, 5, 5, 5, 5, 7, 6, 6, 7, 6, 6, 7, 7, 7]
323         expected5=[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180]
324         expected6=[4, 0, 1, 4, 3, 4, 9, 12, 13, 10, 4, 0, 9, 10, 1, 4, 1, 10, 13, 4, 4, 4, 13, 12, 3, 4, 3, 12, 9, 0, 4, 1, 2, 5, 4, 4, 10, 13, 14, 11, 4, 1, 10, 11, 2, 4, 2, 11, 14,
325                    5, 4, 5, 14, 13, 4, 4, 3, 4, 7, 6, 4, 12, 15, 16, 13, 4, 4, 13, 16, 7, 4, 7, 16, 15, 6, 4, 6, 15, 12, 3, 4, 4, 5, 8, 7, 4, 13, 16, 17, 14, 4, 5, 14, 17, 8, 4, 8,
326                    17, 16, 7, 4, 18, 21, 22, 19, 4, 9, 18, 19, 10, 4, 10, 19, 22, 13, 4, 13, 22, 21, 12, 4, 12, 21, 18, 9, 4, 19, 22, 23, 20, 4, 10, 19, 20, 11, 4, 11, 20, 23, 14, 4,
327                    14, 23, 22, 13, 4, 21, 24, 25, 22, 4, 13, 22, 25, 16, 4, 16, 25, 24, 15, 4, 15, 24, 21, 12, 4, 22, 25, 26, 23, 4, 14, 23, 26, 17, 4, 17, 26, 25, 16]
328         expected7=[4, 0, 1, 4, 3, 4, 9, 12, 13, 10, 4, 0, 9, 10, 1, 4, 1, 10, 13, 4, 4, 4, 13, 12, 3, 4, 3, 12, 9, 0, 5, 1, 2, 5, 4, 5, 10, 13, 14, 11, 5, 1, 10, 11, 2, 5, 2, 11, 14,
329                    5, 5, 5, 14, 13, 4, 4, 3, 4, 7, 6, 4, 12, 15, 16, 13, 4, 4, 13, 16, 7, 4, 7, 16, 15, 6, 4, 6, 15, 12, 3, 5, 4, 5, 8, 7, 5, 13, 16, 17, 14, 5, 5, 14, 17, 8, 5, 8,
330                    17, 16, 7, 4, 18, 21, 22, 19, 4, 9, 18, 19, 10, 4, 10, 19, 22, 13, 4, 13, 22, 21, 12, 4, 12, 21, 18, 9, 4, 19, 22, 23, 20, 4, 10, 19, 20, 11, 4, 11, 20, 23, 14, 4,
331                    14, 23, 22, 13, 4, 21, 24, 25, 22, 4, 13, 22, 25, 16, 4, 16, 25, 24, 15, 4, 15, 24, 21, 12, 4, 22, 25, 26, 23, 4, 14, 23, 26, 17, 4, 17, 26, 25, 16]
332         
333         self.assertEqual(expected1,list(descIndx.getValues()));
334         self.assertEqual(expected2,list(desc.getValues()));
335         self.assertEqual(expected3,list(revDescIndx.getValues()));
336         self.assertEqual(expected4,list(revDesc.getValues()));
337         self.assertEqual(expected5,list(mesh2.getNodalConnectivityIndex().getValues()));
338         self.assertEqual(expected6,list(mesh2.getNodalConnectivity().getValues()));
339         #
340         eltsV=[1,3]
341         mesh.convertToPolyTypes(eltsV);
342         mesh.checkCoherency();
343         desc=DataArrayInt.New();
344         descIndx=DataArrayInt.New();
345         revDesc=DataArrayInt.New();
346         revDescIndx=DataArrayInt.New();
347         mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
348         mesh2.checkCoherency();
349         self.assertEqual(2,mesh2.getMeshDimension());
350         self.assertEqual(36,mesh2.getNumberOfCells());
351         self.assertEqual(37,revDescIndx.getNbOfElems()); self.assertEqual(37,revDescIndx.getNumberOfTuples());
352         self.assertEqual(9,descIndx.getNbOfElems()); self.assertEqual(9,descIndx.getNumberOfTuples());
353         self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
354         self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
355         self.assertEqual(expected1,list(descIndx.getValues()));
356         self.assertEqual(expected2,list(desc.getValues()));
357         self.assertEqual(expected3,list(revDescIndx.getValues()));
358         self.assertEqual(expected4,list(revDesc.getValues()));
359         self.assertEqual(expected5,list(mesh2.getNodalConnectivityIndex().getValues()));
360         self.assertEqual(expected7,list(mesh2.getNodalConnectivity().getValues()));
361         pass
362
363     def testFindBoundaryNodes(self):
364         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
365         boundaryNodes=mesh.findBoundaryNodes();
366         expected1=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
367         self.assertEqual(expected1,boundaryNodes.getValues());
368         pass
369
370     def testBoundaryMesh(self):
371         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
372         mesh2=mesh.buildBoundaryMesh(False);
373         self.assertEqual(24,mesh2.getNumberOfCells());
374         self.assertEqual(26,mesh2.getNumberOfNodes());
375         pass
376
377     def testBuildPartOfMySelf(self):
378         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
379         mesh.setName("Toto");
380         tab1=[0,4]
381         tab2=[0,2,3]
382         #
383         subMesh=mesh.buildPart(tab1)
384         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
385         subMesh=mesh.buildPartOfMySelf(tab1,True);
386         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
387         name=subMesh.getName();
388         self.assertEqual(2,len(mesh.getAllGeoTypes()));
389         self.assertEqual(NORM_TRI3,mesh.getAllGeoTypes()[0]);
390         self.assertEqual(NORM_QUAD4,mesh.getAllGeoTypes()[1]);
391         self.assertEqual(1,len(subMesh.getAllGeoTypes()));
392         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[0]);
393         self.assertEqual(name,"Toto");
394         self.assertEqual(2,subMesh.getNumberOfCells());
395         subConn=[4,0,3,4,1,4,7,8,5,4];
396         subConnIndex=[0,5,10];
397         self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
398         self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
399         self.assertEqual(subConn[0:10],list(subMesh.getNodalConnectivity().getValues()));
400         self.assertEqual(subConnIndex[0:3],list(subMesh.getNodalConnectivityIndex().getValues()));
401         #
402         subMesh=mesh.buildPartOfMySelf(tab2[0:3],True);
403         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh));
404         name=subMesh.getName();
405         self.assertEqual(2,len(subMesh.getAllGeoTypes()));
406         self.assertEqual(NORM_TRI3,subMesh.getAllGeoTypes()[0]);
407         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[1]);
408         self.assertEqual(name,"Toto");
409         self.assertEqual(3,subMesh.getNumberOfCells());
410         subConn2=[4,0,3,4,1,3,4,5,2,4,6,7,4,3]
411         subConnIndex2=[0,5,9,14]
412         self.assertEqual(14,subMesh.getNodalConnectivity().getNbOfElems());
413         self.assertEqual(4,subMesh.getNodalConnectivityIndex().getNbOfElems());
414         self.assertEqual(subConn2[0:14],list(subMesh.getNodalConnectivity().getValues()));
415         self.assertEqual(subConnIndex2[0:4],list(subMesh.getNodalConnectivityIndex().getValues()));
416         dd=DataArrayInt.New()
417         dd.alloc(3,1)
418         dd.iota(0)
419         dd.setName("coucou")
420         subMesh=subMesh.buildPartOfMySelf(dd,True);
421         self.assertEqual("coucou",subMesh.getName());
422         pass
423     
424     def testBuildPartOfMySelfNode(self):
425         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
426         tab1=[5,7,8,4]
427         subMesh=mesh.buildPartOfMySelfNode(tab1[0:4],True);
428         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
429         self.assertEqual(1,len(subMesh.getAllGeoTypes()));
430         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[0]);
431         self.assertEqual(1,subMesh.getNumberOfCells());
432         self.assertEqual(5,subMesh.getNodalConnectivity().getNbOfElems());
433         self.assertEqual(2,subMesh.getNodalConnectivityIndex().getNbOfElems());
434         subConn=[4,7,8,5,4]
435         subConnIndex=[0,5]
436         self.assertEqual(subConn[0:5],list(subMesh.getNodalConnectivity().getValues()));
437         self.assertEqual(subConnIndex[0:2],list(subMesh.getNodalConnectivityIndex().getValues()));
438         #
439         ddd=DataArrayInt.New()
440         ddd.setValues(tab1[0:2],2,1)
441         ddd.setName("ddd")
442         subMesh=mesh.buildPartOfMySelfNode(ddd,False);
443         self.assertEqual("ddd",subMesh.getName())
444         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
445         self.assertEqual(2,len(subMesh.getAllGeoTypes()));
446         self.assertEqual(NORM_TRI3,subMesh.getAllGeoTypes()[0]);
447         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[1]);
448         self.assertEqual(3,subMesh.getNumberOfCells());
449         self.assertEqual(14,subMesh.getNodalConnectivity().getNbOfElems());
450         self.assertEqual(4,subMesh.getNodalConnectivityIndex().getNbOfElems());
451         subConn2=[3,4,5,2,4,6,7,4,3,4,7,8,5,4]
452         subConnIndex2=[0,4,9,14]
453         self.assertEqual(subConn2[0:14],list(subMesh.getNodalConnectivity().getValues()));
454         self.assertEqual(subConnIndex2[0:4],list(subMesh.getNodalConnectivityIndex().getValues()));
455         #testing the case where length of tab2 is greater than max number of node per cell.
456         tab2=[0,3,2,1,4,5,6]
457         subMesh=mesh.buildPartOfMySelfNode(tab2[0:7],True);
458         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
459         self.assertEqual(2,len(subMesh.getAllGeoTypes()));
460         self.assertEqual(NORM_TRI3,subMesh.getAllGeoTypes()[0]);
461         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[1]);
462         self.assertEqual(3,subMesh.getNumberOfCells());
463         pass
464     
465     def testZipCoords(self):
466         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
467         self.assertEqual(2,len(mesh.getAllGeoTypes()));
468         self.assertEqual(2,mesh.getSpaceDimension());
469         self.assertEqual(9,mesh.getNumberOfNodes());
470         self.assertEqual(5,mesh.getNumberOfCells());
471         oldConn=mesh.getNodalConnectivity().getValues()[0:mesh.getNodalConnectivity().getNbOfElems()];
472         oldConnIndex=mesh.getNodalConnectivityIndex().getValues()[0:mesh.getNumberOfCells()+1]
473         oldCoords=mesh.getCoords();
474         mesh.zipCoords();
475         self.assertEqual(2,len(mesh.getAllGeoTypes()));
476         self.assertEqual(2,mesh.getSpaceDimension());
477         self.assertEqual(9,mesh.getNumberOfNodes());
478         self.assertEqual(5,mesh.getNumberOfCells());
479         self.assertEqual(mesh.getCoords().getValues()[0:2*9],oldCoords.getValues());
480         self.assertEqual(list(oldConn),list(mesh.getNodalConnectivity().getValues()));
481         self.assertEqual(list(oldConnIndex),list(mesh.getNodalConnectivityIndex().getValues()));
482         #
483         tab1=[0,4]
484         subMesh=mesh.buildPartOfMySelf(tab1,True);
485         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
486         traducer=subMesh.zipCoordsTraducer();
487         expectedTraducer=[0, 1, -1, 2, 3, 4, -1, 5, 6]
488         self.assertEqual(expectedTraducer,list(traducer.getValues()));
489         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[0]);
490         self.assertEqual(2,subMesh.getNumberOfCells());
491         subConn=[4,0,2,3,1,4,5,6,4,3]
492         subConnIndex=[0,5,10]
493         self.assertEqual(7,subMesh.getNumberOfNodes());
494         self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
495         self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
496         self.assertEqual(subConn,list(subMesh.getNodalConnectivity().getValues()));
497         self.assertEqual(subConnIndex,list(subMesh.getNodalConnectivityIndex().getValues()));
498         #
499         subMesh=mesh.buildPartOfMySelf(tab1,False);
500         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
501         self.assertEqual(NORM_QUAD4,subMesh.getAllGeoTypes()[0]);
502         self.assertEqual(2,subMesh.getNumberOfCells());
503         self.assertEqual(7,subMesh.getNumberOfNodes());
504         self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
505         self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
506         self.assertEqual(subConn,list(subMesh.getNodalConnectivity().getValues()));
507         self.assertEqual(subConnIndex,list(subMesh.getNodalConnectivityIndex().getValues()));
508         pass
509     
510     def testZipConnectivity(self):
511         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
512         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
513         cells1=[2,3,4]
514         m3=m2.buildPartOfMySelf(cells1,True);
515         self.assertTrue(isinstance(m3,MEDCouplingUMesh))
516         m4=MEDCouplingDataForTest.build2DSourceMesh_1();
517         m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
518         m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
519         #
520         self.assertEqual(10,m6.getNumberOfCells());
521         self.assertEqual(22,m6.getNumberOfNodes());
522         (arr,areNodesMerged,newNbOfNodes)=m6.mergeNodes(1e-13);
523         self.assertTrue(areNodesMerged);
524         self.assertEqual(10,m6.getNumberOfCells());
525         self.assertEqual(9,m6.getNumberOfNodes());
526         #
527         arr=m6.zipConnectivityTraducer(0);
528         self.assertEqual(7,m6.getNumberOfCells());
529         m7=m6.clone(True);
530         arr=m6.zipConnectivityTraducer(0);
531         self.assertTrue(m7.isEqual(m6,1e-12));
532         self.assertEqual(7,m6.getNumberOfCells());
533         pass
534     
535     def testEqualMesh(self):
536         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
537         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
538         #
539         self.assertTrue(mesh1.isEqual(mesh1,1e-12));
540         #
541         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
542         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
543         pt=mesh2.getCoords().getValues();
544         tmp=pt[1]
545         mesh2.getCoords().setIJ(0,1,5.999);
546         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
547         self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
548         mesh2.getCoords().setIJ(0,1,tmp);
549         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
550         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
551         #
552         pt2=mesh1.getNodalConnectivity().getValues();
553         mesh1.getNodalConnectivity().setIJ(5,0,int(pt2[5])+1);
554         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
555         self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
556         mesh1.getNodalConnectivity().setIJ(5,0,int(pt2[5]));
557         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
558         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
559         #
560         pt2=mesh1.getNodalConnectivityIndex().getValues();
561         mesh1.getNodalConnectivityIndex().setIJ(1,0,int(pt2[1]+1));
562         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
563         self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
564         mesh1.getNodalConnectivityIndex().setIJ(1,0,int(pt2[1]));
565         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
566         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
567         #
568         tmp3=mesh1.getName();
569         mesh1.setName("lllll");
570         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
571         self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
572         mesh1.setName(tmp3);
573         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
574         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
575         #
576         tmp3=mesh2.getCoords().getInfoOnComponent(1);
577         mesh2.getCoords().setInfoOnComponent(1,"kkkkkk");
578         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
579         self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
580         mesh2.getCoords().setInfoOnComponent(1,tmp3);
581         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
582         self.assertTrue(mesh2.isEqual(mesh1,1e-12));
583         pass
584     
585     def testEqualFieldDouble(self):
586         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
587         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
588         #
589         fieldOnCells1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
590         fieldOnCells1.setMesh(mesh1);
591         fieldOnCells2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
592         fieldOnCells2.setMesh(mesh2);
593         #
594         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
595         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
596         #
597         fieldOnNodes1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
598         self.assertTrue(not fieldOnCells1.isEqual(fieldOnNodes1,1e-12,1e-15));
599         self.assertTrue(not fieldOnNodes1.isEqual(fieldOnCells1,1e-12,1e-15));
600         #
601         fieldOnCells2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
602         self.assertEqual(fieldOnCells2.getMesh(),None) # to check that convertMesh wrapping do not raise but return Py_None
603         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
604         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
605         fieldOnCells1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
606         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
607         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
608         fieldOnCells1.setTime(4.,6,7);
609         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
610         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
611         fieldOnCells2.setTime(4.,6,7);
612         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
613         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
614         fieldOnCells1.setName("Power");
615         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
616         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
617         fieldOnCells2.setName("Power");
618         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
619         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
620         #
621         fieldOnCells1.setMesh(mesh1);
622         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
623         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
624         fieldOnCells2.setMesh(mesh1);
625         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
626         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
627         arr=DataArrayDouble.New();
628         arr.setName("popo");
629         arr.setValues(mesh1.getNumberOfCells()*3*[6.],mesh1.getNumberOfCells(),3);
630         fieldOnCells1.setArray(arr);
631         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
632         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
633         fieldOnCells2.setArray(arr);
634         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
635         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
636         #
637         arr2=arr.deepCpy();
638         fieldOnCells2.setArray(arr2);
639         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
640         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
641         arr.setIJ(1,2,6.1);
642         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
643         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
644         arr.setIJ(1,2,6.);
645         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
646         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
647         arr2.setName("popo2");
648         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
649         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
650         #
651         arr2.setName("popo");
652         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
653         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
654         #
655         arr2.setInfoOnComponent(2,"jjj");
656         self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
657         self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
658         arr.setInfoOnComponent(2,"jjj");
659         self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
660         self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
661         pass
662
663     def testNatureChecking(self):
664         field=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
665         field.setNature(Integral);
666         field.setNature(ConservativeVolumic);
667         field.setNature(IntegralGlobConstraint);
668         field=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
669         field.setNature(ConservativeVolumic);
670         self.assertRaises(InterpKernelException,field.setNature,Integral);
671         self.assertRaises(InterpKernelException,field.setNature,IntegralGlobConstraint);
672         pass
673
674     def testBuildSubMeshData(self):
675         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1()
676         #check buildSubMesh on field on cells
677         fieldCells=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
678         fieldCells.setMesh(targetMesh);
679         elts=[1,2,4]
680         ret1,di=fieldCells.buildSubMeshData(elts);
681         self.assertTrue(isinstance(ret1,MEDCouplingUMesh))
682         self.assertEqual(3,ret1.getNumberOfCells());
683         self.assertEqual(9,ret1.getNumberOfNodes());
684         self.assertEqual(3,di.getNumberOfTuples());
685         self.assertEqual(1,di.getNumberOfComponents());
686         toCheck=di.getValues();
687         self.assertTrue(elts,toCheck);
688         #check buildSubMesh on field on nodes
689         fieldNodes=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
690         fieldNodes.setMesh(targetMesh);
691         ret2,di=fieldNodes.buildSubMeshData(elts);
692         self.assertTrue(isinstance(ret2,MEDCouplingUMesh))
693         self.assertEqual(3,ret2.getNumberOfCells());
694         self.assertEqual(6,ret2.getNumberOfNodes());
695         self.assertEqual(6,di.getNumberOfTuples());
696         self.assertEqual(1,di.getNumberOfComponents());
697         toCheck=di.getValues();
698         expected=[1,2,4,5,7,8]
699         self.assertEqual(expected,list(toCheck));
700         pass
701     
702     def testExtrudedMesh1(self):
703         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
704         ext=MEDCouplingExtrudedMesh.New(mesh3D,mesh2D,1);
705         self.assertEqual(18,ext.getNumberOfCells());
706         self.assertEqual(60,ext.getNumberOfNodes());
707         ids3D=ext.getMesh3DIds();
708         ids3DExpected=[5,4,3,2,1,0, 11,10,9,8,7,6, 17,16,15,14,13,12]
709         self.assertEqual(18,ids3D.getNumberOfTuples());
710         self.assertEqual(1,ids3D.getNumberOfComponents());
711         self.assertEqual(ids3DExpected,list(ids3D.getValues()));
712         mesh1D=ext.getMesh1D();
713         self.assertEqual(4,mesh1D.getNumberOfNodes());
714         self.assertEqual(3,mesh1D.getNumberOfCells());
715         mesh1DExpected=[0.66666666666666663, 1.4583333333333333, 0, 0.66666666666666663,
716                         1.4583333333333333, 1, 0.66666666666666663, 1.4583333333333333,
717                         2, 0.66666666666666663, 1.4583333333333333, 3]
718         mesh1DCoords=mesh1D.getCoords();
719         self.assertEqual(4,mesh1DCoords.getNumberOfTuples());
720         self.assertEqual(3,mesh1DCoords.getNumberOfComponents());
721         self.assertEqual(mesh1DExpected,mesh1DCoords.getValues());
722         conn1D=mesh1D.getNodalConnectivity();
723         self.assertEqual(9,conn1D.getNumberOfTuples());
724         self.assertEqual(1,conn1D.getNumberOfComponents());
725         conn1DExpected=[1,0,1,1,1,2,1,2,3]
726         self.assertEqual(conn1DExpected,list(conn1D.getValues()));
727         pass
728
729     def testExtrudedMesh3(self):
730         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
731         m1.changeSpaceDimension(3);
732         m2=MEDCouplingDataForTest.buildCU1DMesh_U();
733         m2.changeSpaceDimension(3);
734         center=[0.,0.,0.]
735         vector=[0.,1.,0.]
736         m2.rotate(center,vector,-pi/2.);
737         m3=m1.buildExtrudedMesh(m2,0);
738         #
739         m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
740         self.assertEqual(15,m4.getNumberOfCells());
741         self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
742         self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
743         m3DIds=m4.getMesh3DIds().getValues();
744         self.assertEqual(range(15),list(m3DIds));
745         #some random in cells to check that extrusion alg find it correctly
746         expected1=[1,3,2,0,6,5,7,10,11,8,12,9,14,13,4]
747         m3.renumberCells(expected1,False);
748         m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
749         self.assertEqual(15,m4.getNumberOfCells());
750         self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
751         self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
752         m3DIds=m4.getMesh3DIds().getValues();
753         self.assertEqual(expected1,list(m3DIds));
754         #play with polygons and polyedrons
755         cells=[2,3]
756         m1.convertToPolyTypes(cells);
757         m3=m1.buildExtrudedMesh(m2,0);
758         self.assertEqual(NORM_HEXA8,m3.getTypeOfCell(0));
759         self.assertEqual(NORM_PENTA6,m3.getTypeOfCell(1));
760         self.assertEqual(NORM_POLYHED,m3.getTypeOfCell(2));
761         self.assertEqual(NORM_POLYHED,m3.getTypeOfCell(3));
762         self.assertEqual(NORM_HEXA8,m3.getTypeOfCell(4));
763         m3.renumberCells(expected1,False);
764         m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
765         self.assertEqual(15,m4.getNumberOfCells());
766         self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
767         self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
768         m3DIds=m4.getMesh3DIds().getValues();
769         self.assertEqual(expected1,list(m3DIds));
770         pass
771
772     def testExtrudedMesh4(self):
773         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
774         cells=[2,4];
775         m1.convertToPolyTypes(cells);
776         m1.changeSpaceDimension(3);
777         m2=MEDCouplingDataForTest.buildCU1DMesh_U();
778         m2.changeSpaceDimension(3);
779         center=[0.,0.,0.]
780         vector=[0.,1.,0.]
781         m2.rotate(center,vector,-pi/2.);
782         m3=m1.buildExtrudedMesh(m2,0);
783         expected1=[1,3,2,0,6,5,7,10,11,8,12,9,14,13,4]
784         rexpected1=[3, 0, 2, 1, 14, 5, 4, 6, 9, 11, 7, 8, 10, 13, 12]
785         m3.renumberCells(expected1,False);
786         m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
787         self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(0));
788         self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(1));
789         self.assertEqual(NORM_POLYHED,m4.getTypeOfCell(2));
790         self.assertEqual(NORM_PENTA6,m4.getTypeOfCell(7));
791         f=m4.getMeasureField(True);
792         arr=f.getArray();
793         self.assertEqual(15,arr.getNumberOfTuples());
794         self.assertEqual(1,arr.getNumberOfComponents());
795         arrPtr=arr.getValues();
796         expected2=[0.075,0.0375,0.0375,0.075,0.075,
797                    0.1125,0.05625,0.05625,0.1125,0.1125,
798                    0.0625,0.03125,0.03125,0.0625,0.0625]
799         for i in xrange(15):
800             self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],16);
801             pass
802         m5=m4.build3DUnstructuredMesh();
803         self.assertTrue(m5.isEqual(m3,1e-12));
804         f=m5.getMeasureField(True);
805         f.setMesh(m4)
806         self.assertTrue(isinstance(f.getMesh(),MEDCouplingExtrudedMesh))
807         arr=f.getArray();
808         arrPtr=arr.getValues();
809         for i in xrange(15):
810             self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],15);
811             pass
812         pass
813
814     def testFindCommonNodes(self):
815         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
816         comm,commI=targetMesh.findCommonNodes(1e-10,-1);
817         self.assertEqual(1,commI.getNumberOfTuples());
818         self.assertEqual(0,comm.getNumberOfTuples());
819         o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
820         self.assertEqual(27,newNbOfNodes);
821         self.assertEqual(27,o2n.getNumberOfTuples());
822         o2nExp1=range(27)
823         self.assertEqual(o2nExp1,list(o2n.getValues()));
824         #
825         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
826         self.assertEqual(31,targetMesh.getNumberOfNodes());
827         comm,commI=targetMesh.findCommonNodes(1e-10);# testing default parameter
828         self.assertEqual(3,commI.getNumberOfTuples());
829         self.assertEqual(6,comm.getNumberOfTuples());
830         commExpected=[1,27,28,29,23,30]
831         commIExpected=[0,4,6]
832         self.assertEqual(commExpected,list(comm.getValues()));
833         self.assertEqual(commIExpected,list(commI.getValues()));
834         o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
835         self.assertEqual(31,o2n.getNumberOfTuples());
836         self.assertEqual(27,newNbOfNodes);
837         o2nExp2=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
838                  21,22,23,24,25,26,1,1,1,23]
839         self.assertEqual(o2nExp2,list(o2n.getValues()));
840         #
841         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
842         time=targetMesh.getTimeOfThis();
843         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
844         targetMesh.updateTime();
845         self.assertEqual(time,targetMesh.getTimeOfThis());
846         self.assertTrue(not areNodesMerged);
847         #
848         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
849         time=targetMesh.getTimeOfThis();
850         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
851         targetMesh.updateTime();
852         self.assertTrue(time!=targetMesh.getTimeOfThis());
853         self.assertTrue(areNodesMerged);
854         connExp=[18,0,1,4,3,9,10,13,12, 18,1,2,5,4,10,11,14,13, 18,3,4,7,6,12,13,16,15,
855                  18,4,5,8,7,13,14,17,16,
856                  18,9,10,13,12,18,19,22,21, 18,10,11,14,13,19,20,23,22, 18,12,13,16,15,21,22,25,24,
857                  18,13,14,17,16,22,23,26,25]
858         self.assertEqual(72,targetMesh.getNodalConnectivity().getNumberOfTuples());
859         self.assertEqual(connExp,list(targetMesh.getNodalConnectivity().getValues()));
860         self.assertEqual(27,targetMesh.getCoords().getNumberOfTuples());
861         coordsExp=[ 0., 0., 0., 50., 0., 0. , 200., 0., 0.  , 0., 50., 0., 50., 50., 0. ,
862                     200., 50., 0.,   0., 200., 0., 50., 200., 0. , 200., 200., 0. ,
863                     0., 0., 50., 50., 0., 50. , 200., 0., 50.  , 0., 50., 50., 50.,
864                     50., 50. , 200., 50., 50.,   0., 200., 50., 50., 200., 50. ,
865                     200., 200., 50. , 0., 0., 200., 50., 0., 200. , 200., 0., 200.  
866                     , 0., 50., 200., 50., 50., 200. , 200., 50., 200., 
867                     0., 200., 200., 50., 200., 200. , 200., 200., 200. ]
868         self.assertEqual(coordsExp,targetMesh.getCoords().getValues());
869         # 2D
870         targetMesh=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
871         self.assertEqual(18,targetMesh.getNumberOfNodes());
872         time=targetMesh.getTimeOfThis();
873         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
874         self.assertTrue(time!=targetMesh.getTimeOfThis());
875         self.assertTrue(areNodesMerged);
876         self.assertEqual(9,targetMesh.getNumberOfNodes());
877         connExp2=[4,0,4,3,1, 3,1,3,2, 3,3,5,2, 4,4,6,7,3, 4,7,8,5,3]
878         self.assertEqual(23,targetMesh.getNodalConnectivity().getNumberOfTuples());
879         self.assertEqual(connExp2,list(targetMesh.getNodalConnectivity().getValues()));
880         coordsExp2=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, 0.2,0.2, -0.3,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7]
881         self.assertEqual(9,targetMesh.getCoords().getNumberOfTuples());
882         self.assertEqual(coordsExp2,targetMesh.getCoords().getValues());
883         pass
884
885     def testCheckButterflyCells(self):
886         sourceMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
887         cells=sourceMesh.checkButterflyCells();
888         self.assertEqual(0,len(cells));
889         conn=sourceMesh.getNodalConnectivity()
890         tmp=conn.getIJ(15,0)
891         conn.setIJ(15,0,conn.getIJ(16,0))
892         conn.setIJ(16,0,tmp)
893         cells=sourceMesh.checkButterflyCells();
894         self.assertEqual(1,len(cells));
895         self.assertEqual([3],cells.getValues());
896         tmp=conn.getIJ(15,0)
897         conn.setIJ(15,0,conn.getIJ(16,0))
898         conn.setIJ(16,0,tmp)
899         cells=sourceMesh.checkButterflyCells();
900         self.assertEqual(0,len(cells));
901         # 3D surf
902         sourceMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
903         cells=sourceMesh.checkButterflyCells();
904         self.assertEqual(0,len(cells));
905         conn=sourceMesh.getNodalConnectivity()
906         tmp=conn.getIJ(15,0)
907         conn.setIJ(15,0,conn.getIJ(16,0))
908         conn.setIJ(16,0,tmp)
909         cells=sourceMesh.checkButterflyCells();
910         self.assertEqual(1,len(cells));
911         self.assertEqual([3],cells.getValues());
912         tmp=conn.getIJ(15,0)
913         conn.setIJ(15,0,conn.getIJ(16,0))
914         conn.setIJ(16,0,tmp)
915         cells=sourceMesh.checkButterflyCells();
916         self.assertEqual(0,len(cells));
917         pass
918
919     def testMergeMesh1(self):
920         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
921         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
922         vec=[1.,0.]
923         m2.translate(vec);
924         m3=m1.mergeMyselfWith(m2);
925         self.assertTrue(isinstance(m3,MEDCouplingUMesh));
926         m3.checkCoherency();
927         m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
928         self.assertTrue(m3.isEqual(m4,1.e-12));
929         da,isMerged,newNbOfNodes=m3.mergeNodes(1.e-12);
930         self.assertEqual(11,m3.getNumberOfNodes());
931         self.assertTrue(isMerged);
932         pass
933
934     def testMergeMeshOnSameCoords1(self):
935         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
936         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
937         cells=range(5);
938         m2.convertToPolyTypes(cells);
939         m1.tryToShareSameCoords(m2,1e-12);
940         m3=MEDCouplingDataForTest.build2DTargetMesh_1();
941         m3.tryToShareSameCoords(m2,1e-12);
942         meshes=[m1,m2,m3]
943         m4=MEDCouplingUMesh.MergeUMeshesOnSameCoords(meshes);
944         m4.checkCoherency();
945         self.assertEqual(15,m4.getNumberOfCells());
946         cells1=[0,1,2,3,4]
947         m1_1=m4.buildPartOfMySelf(cells1,True);
948         m1_1.setName(m1.getName());
949         self.assertTrue(m1.isEqual(m1_1,1e-12));
950         cells2=[5,6,7,8,9]
951         m2_1=m4.buildPartOfMySelf(cells2,True);
952         m2_1.setName(m2.getName());
953         self.assertTrue(m2.isEqual(m2_1,1e-12));
954         cells3=[10,11,12,13,14]
955         m3_1=m4.buildPartOfMySelf(cells3,True);
956         m3_1.setName(m3.getName());
957         self.assertTrue(m3.isEqual(m3_1,1e-12));
958         pass
959
960     def testMergeField1(self):
961         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
962         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
963         vec=[1.,0.]
964         m2.translate(vec);
965         f1=m1.getMeasureField(True);
966         f2=m2.getMeasureField(True);
967         f3=MEDCouplingFieldDouble.MergeFields(f1,f2);
968         f3.checkCoherency();
969         m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
970         self.assertTrue(f3.getMesh().isEqual(m4,1.e-12));
971         name=f3.getName();
972         self.assertEqual(name,"MeasureOfMesh_");
973         self.assertEqual(f3.getTypeOfField(),ON_CELLS);
974         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
975         self.assertEqual(1,f3.getNumberOfComponents());
976         self.assertEqual(7,f3.getNumberOfTuples());
977         values=[0.25,0.125,0.125,0.25,0.25,0.5,0.5]
978         tmp=f3.getArray().getValues();
979         self.assertEqual(len(values),len(tmp))
980         for i in xrange(7):
981             self.assertTrue(abs(values[i]-tmp[i])<1e-12)
982             pass
983         pass
984
985     def testFillFromAnalytic(self):
986         m=MEDCouplingDataForTest.build2DTargetMesh_1();
987         m.setTime(3.4,5,6); m.setTimeUnit("us");
988         f1=m.fillFromAnalytic(ON_CELLS,1,"x+y");
989         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
990         self.assertEqual("us",f1.getTimeUnit())
991         f1.checkCoherency();                    
992         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
993         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
994         self.assertEqual(1,f1.getNumberOfComponents());
995         self.assertEqual(5,f1.getNumberOfTuples());
996         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
997         tmp=f1.getArray().getValues();
998         self.assertEqual(len(values1),len(tmp))
999         for i in xrange(len(tmp)):
1000             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1001             pass
1002         #
1003         f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1004         f1.checkCoherency();
1005         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1006         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1007         self.assertEqual(1,f1.getNumberOfComponents());
1008         self.assertEqual(9,f1.getNumberOfTuples());
1009         values2=[-0.6,-0.1,0.4,-0.1,0.4,0.9,0.4,0.9,1.4]
1010         tmp=f1.getArray().getValues();
1011         self.assertEqual(len(values2),len(tmp))
1012         for i in xrange(len(tmp)):
1013             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1014             pass
1015         #
1016         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1017         f1.checkCoherency();
1018         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1019         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1020         self.assertEqual(2,f1.getNumberOfComponents());
1021         self.assertEqual(9,f1.getNumberOfTuples());
1022         values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
1023         tmp=f1.getArray().getValues();
1024         self.assertEqual(len(values3),len(tmp))
1025         for i in xrange(len(tmp)):
1026             self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1027             pass
1028         values4=f1.accumulate();
1029         self.assertEqual(2,len(values4))
1030         self.assertTrue(abs(3.6-values4[0])<1.e-12);
1031         self.assertTrue(abs(7.2-values4[1])<1.e-12);
1032         values4=f1.integral(True);
1033         self.assertEqual(2,len(values4))
1034         self.assertTrue(abs(0.5-values4[0])<1.e-12);
1035         self.assertTrue(abs(1.-values4[1])<1.e-12);
1036         #
1037         self.assertRaises(InterpKernelException,m.fillFromAnalytic,ON_NODES,1,"1./(x-0.2)");
1038         pass
1039
1040     def testFillFromAnalytic2(self):
1041         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1042         f1=m.fillFromAnalytic(ON_CELLS,1,"y+x");
1043         f1.checkCoherency();
1044         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
1045         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1046         self.assertEqual(1,f1.getNumberOfComponents());
1047         self.assertEqual(5,f1.getNumberOfTuples());
1048         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
1049         tmp=f1.getArray().getValues();
1050         self.assertEqual(len(values1),len(tmp))
1051         for i in xrange(len(values1)):
1052             self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
1053             pass
1054         #
1055         f1=m.fillFromAnalytic(ON_NODES,1,"y+2*x");
1056         f1.checkCoherency();
1057         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1058         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1059         self.assertEqual(1,f1.getNumberOfComponents());
1060         self.assertEqual(9,f1.getNumberOfTuples());
1061         values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1062         tmp=f1.getArray().getValues();
1063         self.assertEqual(len(values2),len(tmp))
1064         for i in xrange(len(values2)):
1065             self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
1066             pass
1067         f1=m.fillFromAnalytic(ON_NODES,1,"2.*x+y");
1068         f1.checkCoherency();
1069         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1070         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1071         self.assertEqual(1,f1.getNumberOfComponents());
1072         self.assertEqual(9,f1.getNumberOfTuples());
1073         tmp=f1.getArray().getValues();
1074         values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1075         self.assertEqual(len(values2Bis),len(tmp))
1076         for i in xrange(len(values2Bis)):
1077             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
1078             pass
1079         #
1080         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1081         f1.checkCoherency();
1082         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1083         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1084         self.assertEqual(2,f1.getNumberOfComponents());
1085         self.assertEqual(9,f1.getNumberOfTuples());
1086         values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
1087         tmp=f1.getArray().getValues();
1088         self.assertEqual(len(values3),len(tmp))
1089         for i in xrange(len(values3)):
1090             self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
1091             pass
1092         values4=f1.accumulate();
1093         self.assertTrue(abs(3.6-values4[0])<1.e-12);
1094         self.assertTrue(abs(7.2-values4[1])<1.e-12);
1095         values4=f1.integral(True);
1096         self.assertTrue(abs(0.5-values4[0])<1.e-12);
1097         self.assertTrue(abs(1.-values4[1])<1.e-12);
1098         pass
1099
1100     def testApplyFunc(self):
1101         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1102         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1103         f1.checkCoherency();
1104         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1105         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1106         self.assertEqual(2,f1.getNumberOfComponents());
1107         self.assertEqual(9,f1.getNumberOfTuples());
1108         f1.applyFunc(1,"x+y");
1109         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1110         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1111         self.assertEqual(1,f1.getNumberOfComponents());
1112         self.assertEqual(9,f1.getNumberOfTuples());
1113         values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1114         tmp=f1.getArray().getValues();
1115         self.assertEqual(len(values1),len(tmp))
1116         for i in xrange(len(tmp)):
1117             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1118             pass
1119         pass
1120
1121     def testApplyFunc2(self):
1122         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1123         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1124         f1.checkCoherency();
1125         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1126         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1127         self.assertEqual(2,f1.getNumberOfComponents());
1128         self.assertEqual(9,f1.getNumberOfTuples());
1129         #
1130         f2=f1.clone(True);
1131         self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a+b+c+d");
1132         self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a/0");
1133         self.assertRaises(InterpKernelException, f2.applyFunc, "a/0");
1134         f2.applyFunc("abs(u)^2.4+2*u");
1135         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1136         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1137         self.assertEqual(2,f1.getNumberOfComponents());
1138         self.assertEqual(9,f1.getNumberOfTuples());
1139         values2=[-0.9065304805418678, -0.85105859001709905, -0.19601892829446504, -0.37898777756476987,
1140                  0.91090317490482353, 2.1853504664669781, -0.19601892829446504, -0.37898777756476987,
1141                  0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1142                  0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1143                  5.0423700574830965, 17.435300118916864]
1144         tmp=f2.getArray().getValues();
1145         self.assertEqual(len(tmp),len(values2))
1146         for i in xrange(len(tmp)):
1147             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1148             pass
1149         #
1150         f1.applyFunc(1,"x+y");
1151         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1152         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1153         self.assertEqual(1,f1.getNumberOfComponents());
1154         self.assertEqual(9,f1.getNumberOfTuples());
1155         values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1156         tmp=f1.getArray().getValues();
1157         self.assertEqual(len(tmp),len(values1))
1158         for i in xrange(len(tmp)):
1159             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1160             pass
1161         pass
1162
1163     def testOperationsOnFields(self):
1164         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1165         f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1166         f2=m.fillFromAnalytic(ON_NODES,1,"x+y");
1167         f1.checkCoherency();
1168         f2.checkCoherency();
1169         f3=f1+f2;
1170         f3.checkCoherency();
1171         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1172         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1173         values1=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1174         tmp=f3.getArray().getValues();
1175         self.assertEqual(len(values1),len(tmp))
1176         for i in xrange(len(tmp)):
1177             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1178             pass
1179         #
1180         f3=f1*f2;
1181         f3.checkCoherency();
1182         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1183         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1184         values2=[0.36,0.01,0.16,0.01,0.16,0.81,0.16,0.81,1.96]
1185         tmp=f3.getArray().getValues();
1186         self.assertEqual(len(values2),len(tmp))
1187         for i in xrange(len(tmp)):
1188             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1189             pass
1190         #
1191         f3=f1+f2;
1192         f4=f1-f3;
1193         f4.checkCoherency();
1194         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1195         self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1196         values3=[0.6,0.1,-0.4,0.1,-0.4,-0.9,-0.4,-0.9,-1.4]
1197         tmp=f4.getArray().getValues();
1198         self.assertEqual(len(values3),len(tmp))
1199         for i in xrange(len(tmp)):
1200             self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1201             pass
1202         #
1203         f3=f1+f2;
1204         f4=f3/f2;
1205         f4.checkCoherency();
1206         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1207         self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1208         tmp=f4.getArray().getValues();
1209         for i in xrange(len(tmp)):
1210             self.assertTrue(abs(tmp[i]-2.)<1.e-12)
1211             pass
1212         #
1213         f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
1214         f4.checkCoherency();
1215         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1216         self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1217         self.assertRaises(InterpKernelException,f1.__add__,f4);
1218         f5=f4.buildNewTimeReprFromThis(ONE_TIME,False);
1219         self.assertEqual(f5.getTypeOfField(),ON_NODES);
1220         self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1221         f3=f1+f5;
1222         tmp=f3.getArray().getValues();
1223         values4=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1224         self.assertEqual(len(values3),len(tmp))
1225         for i in xrange(len(tmp)):
1226             self.assertTrue(abs(tmp[i]-values4[i])<1.e-12)
1227             pass
1228         #
1229         f4=f2.buildNewTimeReprFromThis(NO_TIME,True);
1230         f4.checkCoherency();
1231         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1232         self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1233         self.assertRaises(InterpKernelException,f1.__add__,f4);
1234         f5=f4.buildNewTimeReprFromThis(ONE_TIME,True);
1235         self.assertEqual(f5.getTypeOfField(),ON_NODES);
1236         self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1237         f3=f1+f5;
1238         tmp=f3.getArray().getValues();
1239         values5=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1240         self.assertEqual(len(values5),len(tmp))
1241         for i in xrange(len(tmp)):
1242             self.assertTrue(abs(tmp[i]-values5[i])<1.e-12)
1243             pass
1244         pass
1245
1246     def testOperationsOnFields2(self):
1247         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1248         m.setTime(3.4,5,6); m.setTimeUnit("us");
1249         f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1250         f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1251         f3=f1/f2;
1252         f3.checkCoherency();
1253         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1254         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1255         expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1256                    0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1257                    0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1258         self.assertEqual(1,f3.getNumberOfComponents());
1259         self.assertEqual(9,f3.getNumberOfTuples());
1260         val=f3.getArray().getValues();
1261         for i in xrange(9):
1262             self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1263         #
1264         f1=m.buildOrthogonalField();
1265         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
1266         self.assertEqual("us",f1.getTimeUnit())
1267         f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1268         f3=f1*f2;
1269         expected2=[-0.035355339059327376,0.,0.035355339059327376, 0.2592724864350674,0.,-0.2592724864350674, 0.37712361663282529,0.,-0.37712361663282529, -0.035355339059327376,0.,0.035355339059327376, 0.31819805153394637,0.,-0.31819805153394637]
1270         val=f3.getArray().getValues();
1271         for i in xrange(15):
1272             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1273             pass
1274         #
1275         f3=f2*f1;
1276         val=f3.getArray().getValues();
1277         for i in xrange(15):
1278             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1279             pass
1280         pass
1281
1282     def testOperationsOnFields3(self):
1283         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1284         f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1285         f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1286         f1/=f2
1287         f1.checkCoherency();
1288         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1289         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1290         expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1291                    0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1292                    0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1293         self.assertEqual(1,f1.getNumberOfComponents());
1294         self.assertEqual(9,f1.getNumberOfTuples());
1295         val=f1.getArray().getValues();
1296         for i in xrange(9):
1297             self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1298             pass
1299         #
1300         f1=m.buildOrthogonalField();
1301         f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1302         f1*=f2
1303         expected2=[-0.035355339059327376,0.,0.035355339059327376, 0.2592724864350674,0.,-0.2592724864350674, 0.37712361663282529,0.,-0.37712361663282529, -0.035355339059327376,0.,0.035355339059327376, 0.31819805153394637,0.,-0.31819805153394637]
1304         val=f1.getArray().getValues();
1305         for i in xrange(15):
1306             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1307             pass
1308         #
1309         f1=m.buildOrthogonalField();
1310         # to avoid valgrind leaks
1311         # self.assertRaises(InterpKernelException,f2.__imul__,f1);
1312         pass
1313
1314     def testOperationsOnFields4(self):
1315         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1316         nbOfCells=m.getNumberOfCells();
1317         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
1318         f1.setMesh(m);
1319         array=DataArrayDouble.New();
1320         f1.setArray(array);
1321         self.assertRaises(InterpKernelException,f1.setEndArray,array);
1322         self.assertRaises(InterpKernelException,f1.getEndArray);
1323         arr1=[0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.]
1324         arr2=[5.,15.,25.,6.,16.,26.,7.,17.,27.,8.,18.,28.,9.,19.,29.]
1325         array.setValues(arr1,nbOfCells,3);
1326         f1.setStartTime(2.,0,0);
1327         f1.setEndTime(3.,0,0);
1328         f1.checkCoherency();
1329         pos=[0.3,-0.2]
1330         res=f1.getValueOn(pos);
1331         self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1332         self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1333         self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1334         res=None
1335         res=f1.getValueOn(pos,2.2);
1336         self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1337         self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1338         self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1339         res=None
1340         self.assertRaises(InterpKernelException,f1.getValueOn,pos,3.2)
1341         f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
1342         f2.setMesh(m);
1343         f2.setArray(f1.getArray());
1344         f2.setStartTime(2.,3,0);
1345         f2.setEndTime(4.,13,0);
1346         self.assertRaises(InterpKernelException,f2.checkCoherency)
1347         array2=DataArrayDouble.New();
1348         array2.setValues(arr2,nbOfCells,3);
1349         f2.setEndArray(array2);
1350         f2.checkCoherency();
1351         #
1352         res=None
1353         res=f2.getValueOn(pos,3.21);
1354         self.assertTrue(abs(4.025-res[0])<1.e-12);
1355         self.assertTrue(abs(14.025-res[1])<1.e-12);
1356         self.assertTrue(abs(24.025-res[2])<1.e-12);
1357         f3=f2.clone(True);
1358         self.assertTrue(f2.isEqual(f3,1e-12,1e-12));
1359         f3.getEndArray().setIJ(0,0,5.001);
1360         self.assertTrue(not f2.isEqual(f3,1e-12,1e-12));
1361         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1362         f3.setStartTime(2.1,3,0);
1363         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1364         f3.setStartTime(2.,3,0);
1365         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1366         f3.setStartTime(2.,4,0);
1367         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1368         f3.setStartTime(2.,3,1);
1369         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1370         f3.setStartTime(2.,3,0);
1371         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1372         f3.setEndTime(4.1,13,0);
1373         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1374         f3.setEndTime(4.,13,0);
1375         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1376         f3.setEndTime(4.,14,0);
1377         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1378         f3.setEndTime(4.,13,1);
1379         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1380         f3.setEndTime(4.,13,0);
1381         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1382         f4=f2+f2
1383         res=None
1384         res=f4.getValueOn(pos,3.21);
1385         self.assertTrue(abs(8.05-res[0])<1.e-12);
1386         self.assertTrue(abs(28.05-res[1])<1.e-12);
1387         self.assertTrue(abs(48.05-res[2])<1.e-12);
1388         f4+=f2;
1389         res=None
1390         res=f4.getValueOn(pos,3.21);
1391         self.assertTrue(abs(12.075-res[0])<1.e-12);
1392         self.assertTrue(abs(42.075-res[1])<1.e-12);
1393         self.assertTrue(abs(72.075-res[2])<1.e-12);
1394         pass
1395     
1396     def testMergeNodesOnField(self):
1397         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1398         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1399         f1.mergeNodes(1e-10);
1400         #
1401         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1402         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1403         tmp=f1.getArray()
1404         tmp.setIJ(0,0,1000.);
1405         f1.mergeNodes(1e-10);
1406         #
1407         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1408         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1409         tmp=f1.getArray()
1410         tmp.setIJ(1,0,1000.);
1411         self.assertRaises(InterpKernelException,f1.mergeNodes,1.e-10)
1412         pass
1413
1414     def testCheckConsecutiveCellTypes(self):
1415         sourceMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1416         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1417         self.assertTrue(sourceMesh.checkConsecutiveCellTypes());
1418         order1=[NORM_TRI3,NORM_QUAD4]
1419         order2=[NORM_QUAD4,NORM_TRI3]
1420         self.assertTrue(not targetMesh.checkConsecutiveCellTypes());
1421         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1422         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1423         da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order1);
1424         self.assertEqual(5,da.getNumberOfTuples());
1425         self.assertEqual(1,da.getNumberOfComponents());
1426         expected1=[2,0,1,3,4]
1427         self.assertTrue(expected1==list(da.getValues()));
1428         da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order2);
1429         self.assertEqual(5,da.getNumberOfTuples());
1430         self.assertEqual(1,da.getNumberOfComponents());
1431         expected2=[0,3,4,1,2]
1432         self.assertTrue(expected2==list(da.getValues()));
1433         renumber1=[4,0,1,2,3]
1434         targetMesh.renumberCells(renumber1,False);
1435         self.assertTrue(targetMesh.checkConsecutiveCellTypes());
1436         self.assertTrue(targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1437         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1438         pass
1439
1440     def testRearrange2ConsecutiveCellTypes(self):
1441         m1_1=MEDCouplingDataForTest.build2DSourceMesh_1();
1442         m2_1=MEDCouplingDataForTest.build2DTargetMesh_1();
1443         arr1=m1_1.rearrange2ConsecutiveCellTypes();
1444         m1_2=MEDCouplingDataForTest.build2DSourceMesh_1();
1445         self.assertTrue(m1_2.isEqual(m1_1,1e-12));
1446         expected1=[0,1]
1447         self.assertEqual(2,arr1.getNumberOfTuples());
1448         self.assertEqual(1,arr1.getNumberOfComponents());
1449         self.assertEqual(expected1,arr1.getValues());
1450         expected2=[0,3,4,1,2]
1451         arr1=m2_1.rearrange2ConsecutiveCellTypes();
1452         self.assertEqual(5,arr1.getNumberOfTuples());
1453         self.assertEqual(1,arr1.getNumberOfComponents());
1454         self.assertEqual(expected2,list(arr1.getValues()));
1455         m2_2=MEDCouplingDataForTest.build2DTargetMesh_1();
1456         self.assertEqual(5,arr1.getNumberOfTuples());
1457         self.assertEqual(1,arr1.getNumberOfComponents());
1458         self.assertEqual(expected2,list(arr1.getValues()));
1459         self.assertTrue(not m2_2.isEqual(m2_1,1e-12));
1460         m2_2.renumberCells(expected2,False);
1461         self.assertTrue(m2_2.isEqual(m2_1,1e-12));
1462         pass
1463
1464     def testSplitByType(self):
1465         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1466         v=m1.splitByType();
1467         self.assertEqual(3,len(v));
1468         m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(v);
1469         m2.setName(m1.getName());
1470         self.assertTrue(m1.isEqual(m2,1.e-12));
1471         pass
1472
1473     def testFuseUMeshesOnSameCoords(self):
1474         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1475         cells1=[2,3,4]
1476         m3=m2.buildPartOfMySelf(cells1,True);
1477         self.assertTrue(isinstance(m3,MEDCouplingUMesh))
1478         cells2=[1,2,4]
1479         m4=m2.buildPartOfMySelf(cells2,True);
1480         self.assertTrue(isinstance(m4,MEDCouplingUMesh))
1481         cells3=[1,2]
1482         m5=m2.buildPartOfMySelf(cells3,True);
1483         self.assertTrue(isinstance(m5,MEDCouplingUMesh))
1484         meshes=[m3,m4,m5]
1485         #
1486         m7,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1487         self.assertEqual(4,m7.getNumberOfCells());
1488         self.assertEqual(3,len(corr));
1489         expectedVals1=[3,3,2]
1490         expectedVals2=[[0,1,2],[3,0,2],[3,0]]
1491         for i in xrange(3):
1492             arr=corr[i];
1493             self.assertEqual(1,arr.getNumberOfComponents());
1494             nbOfVals=expectedVals1[i];
1495             self.assertEqual(nbOfVals,arr.getNumberOfTuples());
1496             vals=arr.getValues();
1497             self.assertEqual(expectedVals2[i],list(vals));
1498             pass
1499         arr2,fidsOfGroups=DataArrayInt.MakePartition(corr,m7.getNumberOfCells());
1500         fidExp=[5,1,3,4]
1501         fidsGrp=[[1,3,5],[3,4,5],[4,5]]
1502         self.assertEqual(3,len(fidsOfGroups));
1503         self.assertEqual(1,arr2.getNumberOfComponents());
1504         self.assertEqual(4,arr2.getNumberOfTuples());
1505         self.assertEqual(fidExp,list(arr2.getValues()));
1506         for i in xrange(3):
1507             nbOfVals=expectedVals1[i];
1508             self.assertEqual(list(fidsOfGroups[i]),fidsGrp[i]);
1509             pass
1510         pass
1511
1512     def testFuseUMeshesOnSameCoords2(self):
1513         m1,m2=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
1514         part1=[2,3,6,4,10]
1515         m3=m1.buildPartOfMySelf(part1,True);
1516         part2=[5,6,4,7]
1517         m4=m1.buildPartOfMySelf(part2,True);
1518         meshes=[m1,m3,m3,m4]
1519         m5,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1520         self.assertEqual(18,m5.getNumberOfCells());
1521         exp2=[
1522             [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
1523             [2,3,6,4,10],
1524             [2,3,6,4,10],
1525             [5,6,4,7]]
1526         i=0;
1527         for it in corr:
1528             self.assertEqual(exp2[i],list(it.getValues()));
1529             i+=1
1530             pass
1531         pass
1532
1533     def testBuildOrthogonalField(self):
1534         targetMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1535         field=targetMesh.buildOrthogonalField();
1536         expected=[0.70710678118654746,0.,-0.70710678118654746]
1537         self.assertEqual(5,field.getNumberOfTuples());
1538         self.assertEqual(3,field.getNumberOfComponents());
1539         vals=field.getArray().getValues();
1540         for i in xrange(15):
1541             self.assertTrue(abs(expected[i%3]-vals[i])<1e-12);
1542         # testing
1543         targetCoords=[0.,0.,0.,0.5,0.,0.5,1.,0.,1.,0.,1.,0.]
1544         targetConn=[0,1,2,3]
1545         targetMesh=MEDCouplingUMesh.New();
1546         targetMesh.setMeshDimension(2);
1547         targetMesh.allocateCells(1);
1548         targetMesh.insertNextCell(NORM_QUAD4,targetConn[0:4])
1549         targetMesh.finishInsertingCells();
1550         myCoords=DataArrayDouble.New();
1551         myCoords.setValues(targetCoords,4,3);
1552         targetMesh.setCoords(myCoords);
1553         field=targetMesh.buildOrthogonalField();
1554         self.assertEqual(1,field.getNumberOfTuples());
1555         self.assertEqual(3,field.getNumberOfComponents());
1556         vals=field.getArray().getValues();
1557         self.assertTrue(abs(-0.70710678118654746-vals[0])<1e-12);
1558         self.assertTrue(abs(0.-vals[1])<1e-12);
1559         self.assertTrue(abs(0.70710678118654746-vals[2])<1e-12);
1560         pass
1561
1562     def testGetCellsContainingPoint(self):
1563         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1564         pos=[0.,0.,0.4,0.4,0.,0.4,0.1,0.1,0.25,0.,0.65,0.]
1565         #2D basic
1566         t1,t2=targetMesh.getCellsContainingPoints(pos,6,1e-12);
1567         self.assertEqual(6,t1.getNumberOfTuples());
1568         self.assertEqual(1,t1.getNumberOfComponents());
1569         self.assertEqual(7,t2.getNumberOfTuples());
1570         self.assertEqual(1,t2.getNumberOfComponents());
1571         expectedValues1=[0,4,3,0,1,2]
1572         expectedValues2=[0,1,2,3,4,5,6]
1573         self.assertEqual(list(t1.getValues()),expectedValues1);
1574         self.assertEqual(list(t2.getValues()),expectedValues2);
1575         #2D with no help of bounding box.
1576         center=[0.2,0.2]
1577         MEDCouplingPointSet.Rotate2DAlg(center,0.78539816339744830962,6,pos);
1578         targetMesh.rotate(center,0.78539816339744830962);
1579         t1=None
1580         t2=None
1581         t1,t2=targetMesh.getCellsContainingPoints(pos,1e-12);
1582         self.assertEqual(6,t1.getNumberOfTuples());
1583         self.assertEqual(7,t2.getNumberOfTuples());
1584         self.assertEqual(list(t1.getValues()),expectedValues1);
1585         self.assertEqual(list(t2.getValues()),expectedValues2);
1586         t1,t2=targetMesh.getCellsContainingPoints(DataArrayDouble.New(pos,6,2),1e-12);
1587         self.assertEqual(6,t1.getNumberOfTuples());
1588         self.assertEqual(7,t2.getNumberOfTuples());
1589         self.assertEqual(list(t1.getValues()),expectedValues1);
1590         self.assertEqual(list(t2.getValues()),expectedValues2);
1591         self.assertRaises(InterpKernelException,targetMesh.getCellsContainingPoints,DataArrayDouble.New(pos,4,3),1e-12);
1592         #2D outside
1593         pos1bis=[-0.3303300858899107,-0.11819805153394641]
1594         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos1bis,1e-12));
1595         #test limits 2D
1596         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1597         pos2=[0.2,-0.05]
1598         t1=None
1599         t1=targetMesh.getCellsContainingPoint(pos2,1e-12)
1600         self.assertEqual(2,len(t1));
1601         expectedValues3=[0,1]
1602         self.assertEqual(list(t1.getValues()),expectedValues3);
1603         pos3=[0.2,0.2]
1604         t1=None
1605         t1=targetMesh.getCellsContainingPoint(pos3,1e-12);
1606         self.assertEqual(5,len(t1));
1607         expectedValues4=[0,1,2,3,4]
1608         self.assertEqual(list(t1.getValues()),expectedValues4);
1609         self.assertEqual(0,targetMesh.getCellContainingPoint(pos3,1e-12));
1610         #3D
1611         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1612         pos4=[25.,25.,25.]
1613         self.assertEqual(0,targetMesh.getCellContainingPoint(pos4,1e-12));
1614         pos5=[50.,50.,50.]
1615         t1=None
1616         t1=targetMesh.getCellsContainingPoint(pos5,1e-12);
1617         self.assertEqual(8,len(t1));
1618         expectedValues5=[0,1,2,3,4,5,6,7]
1619         self.assertEqual(list(t1.getValues()),expectedValues5);
1620         pos6=[0., 50., 0.]
1621         t1=None
1622         t1=targetMesh.getCellsContainingPoint(pos6,1e-12);
1623         self.assertEqual(2,len(t1));
1624         expectedValues6=[0,2]
1625         self.assertEqual(list(t1.getValues()),expectedValues6);
1626         #3D outside
1627         pos7=[-1.0,-1.0,0.]
1628         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos7,1e-12));
1629         #3D outside 2
1630         center2=[0.,0.,0.]
1631         vec2=[0.,-1.,0.]
1632         targetMesh.rotate(center2,vec2,0.78539816339744830962);
1633         pos8=[-25.,25.,12.]
1634         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos8,1e-12));
1635         pass
1636
1637     def testGetValueOn1(self):
1638         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1639         fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
1640         nbOfCells=targetMesh.getNumberOfCells();
1641         fieldOnCells.setMesh(targetMesh);
1642         array=DataArrayDouble.New();
1643         tmp=2*nbOfCells*[None]
1644         for i in xrange(nbOfCells):
1645             tmp[2*i]=7.+float(i);
1646             tmp[2*i+1]=17.+float(i)
1647             pass
1648         array.setValues(tmp,nbOfCells,2);
1649         fieldOnCells.setArray(array);
1650         #
1651         pos1=[0.25,0.]
1652         res=fieldOnCells.getValueOn(pos1);
1653         self.assertEqual(2,len(res))
1654         self.assertTrue(abs(8.-res[0])<1e-12);
1655         self.assertTrue(abs(18.-res[1])<1e-12);
1656         #
1657         #
1658         targetMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1659         fieldOnNodes=MEDCouplingFieldDouble.New(ON_NODES);
1660         nbOfNodes=targetMesh.getNumberOfNodes();
1661         fieldOnNodes.setMesh(targetMesh);
1662         array=DataArrayDouble.New();
1663         tmp=2*nbOfNodes*[None]
1664         for i in xrange(nbOfNodes):
1665             tmp[2*i]=17.+float(i);
1666             tmp[2*i+1]=27.+float(i)
1667             pass
1668         array.setValues(tmp,nbOfNodes,2);
1669         fieldOnNodes.setArray(array);
1670         #
1671         pos2=[-0.13333333333333333,-0.13333333333333333]
1672         res=None
1673         res=fieldOnNodes.getValueOn(pos2);
1674         self.assertEqual(2,len(res))
1675         self.assertTrue(abs(17.5-res[0])<1e-12);
1676         self.assertTrue(abs(27.5-res[1])<1e-12);
1677         pos3=[0.033333333333333326,0.36666666666666664]
1678         res=None
1679         res=fieldOnNodes.getValueOn(pos3);
1680         self.assertEqual(2,len(res))
1681         self.assertTrue(abs(18.666666666666667-res[0])<1e-12);
1682         self.assertTrue(abs(28.666666666666667-res[1])<1e-12);
1683         pass
1684
1685     def testCMesh0(self):
1686         mesh=MEDCouplingCMesh.New();
1687         meshEmpty=mesh.clone(True);
1688         self.assertTrue(meshEmpty.isEqual(mesh, 1e-12));
1689         
1690         coordsX=DataArrayDouble.New();
1691         arrX=[ -1., 1., 2., 4. ]
1692         coordsX.setValues(arrX, 4, 1);
1693         coordsY=DataArrayDouble.New();
1694         arrY=[ -2., 2., 4., 8. ]
1695         coordsY.setValues(arrY, 4, 1);
1696         coordsZ=DataArrayDouble.New();
1697         arrZ=[ -3., 3., 6., 12. ]
1698         coordsZ.setValues(arrZ, 4, 1);
1699         mesh.setCoords(coordsX, coordsY, coordsZ);
1700         #
1701         fieldOnNodes=mesh.fillFromAnalytic(ON_NODES, 1, "x+y/2.+z/3.");
1702         self.assertEqual(1, fieldOnNodes.getNumberOfComponents());
1703         self.assertEqual(64, fieldOnNodes.getNumberOfTuples());
1704         expected1=[-3., -1., 0., 2., -1., 1., 2., 4., 0., 2., 3., 5., 2., 4., 5., 7., -1., 1., 2.,
1705                     4., 1., 3., 4., 6., 2., 4., 5., 7., 4., 6., 7., 9., 0., 2., 3., 5., 2., 4., 5.,
1706                     7., 3., 5., 6., 8., 5., 7., 8., 10., 2., 4., 5.,
1707                     7., 4., 6., 7., 9., 5., 7., 8., 10., 7., 9., 10., 12.];
1708         
1709         val=fieldOnNodes.getArray().getValues();
1710         for i in xrange(64):
1711           self.assertAlmostEqual(expected1[i], val[i], 12)
1712         res=fieldOnNodes.getValueOnPos(1, 3, 2);
1713         self.assertAlmostEqual(7., res[0], 12);
1714         #
1715         fieldOnCells=mesh.fillFromAnalytic(ON_CELLS, 1, "x+y/2.+z/3.");
1716         self.assertEqual(1, fieldOnCells.getNumberOfComponents());
1717         self.assertEqual(27, fieldOnCells.getNumberOfTuples());
1718         val=fieldOnCells.getArray().getValues();
1719         expected2=[0, 1.5, 3, 1.5, 3, 4.5, 3, 4.5, 6, 1.5, 3, 4.5, 3, 4.5,
1720                     6, 4.5, 6, 7.5, 3, 4.5, 6, 4.5, 6, 7.5, 6, 7.5, 9];
1721         for i in xrange(27):
1722           self.assertAlmostEqual(expected2[i], val[i], 12);
1723         #res=fieldOnCells.getValueOnPos(1,2,1);
1724         #self.assertAlmostEqual(6.,res,12);
1725         #
1726         meshDeepCopy=mesh.deepCpy();
1727         meshClone=mesh.clone(False);
1728         
1729         meshEmpty.copyTinyStringsFrom(mesh);
1730         #no data in meshEmpty, expected False
1731         self.assertTrue(not meshEmpty.isEqual(mesh, 1e-12));
1732         
1733         self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1734         meshDeepCopy.copyTinyStringsFrom(mesh);
1735         self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1736         self.assertTrue(meshClone.isEqual(mesh, 1e-12));
1737         
1738         self.assertEqual(CARTESIAN, mesh.getType());
1739         self.assertEqual(CARTESIAN, meshEmpty.getType());
1740         self.assertEqual(CARTESIAN, meshDeepCopy.getType());
1741         self.assertEqual(CARTESIAN, meshClone.getType());
1742         pass
1743
1744     def testCMesh1(self):
1745         mesh1=MEDCouplingCMesh.New();
1746         coordsX1=DataArrayDouble.New();
1747         arrX1=[ -1., 1., 2., 4. ]
1748         coordsX1.setValues(arrX1, 4, 1);
1749         coordsY1=DataArrayDouble.New();
1750         arrY1=[ -2., 2., 4., 8. ]
1751         coordsY1.setValues(arrY1, 4, 1);
1752         coordsZ1=DataArrayDouble.New();
1753         arrZ1=[ -3., 3., 6., 12. ]
1754         coordsZ1.setValues(arrZ1, 4, 1);
1755         mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1756         
1757         mesh2=MEDCouplingCMesh.New();
1758         coordsX2=DataArrayDouble.New();
1759         arrX2=[ -1., 1., 2., 4. ]
1760         coordsX2.setValues(arrX2, 4, 1);
1761         coordsY2=DataArrayDouble.New();
1762         arrY2=[ -2., 2., 4., 8. ]
1763         coordsY2.setValues(arrY2, 4, 1);
1764         coordsZ2=DataArrayDouble.New();
1765         arrZ2=[ -3., 3., 6., 12.+1e-6 ]
1766         coordsZ2.setValues(arrZ2, 4, 1);
1767         mesh2.setCoords(coordsX2, coordsY2, coordsZ2);
1768         
1769         mesh3=MEDCouplingCMesh.New();
1770         coordsX3=DataArrayDouble.New();
1771         arrX3=[-1.]
1772         coordsX3.setValues(arrX3, 1, 1);
1773         coordsY3=DataArrayDouble.New();
1774         arrY3=[-2.]
1775         coordsY3.setValues(arrY3, 1, 1);
1776         coordsZ3=DataArrayDouble.New();
1777         arrZ3=[-3.]
1778         coordsZ3.setValues(arrZ3, 1, 1);
1779         mesh3.setCoords(coordsX3, coordsY3, coordsZ3);
1780         
1781         self.assertEqual(3, mesh1.getSpaceDimension());
1782         self.assertEqual(3, mesh1.getMeshDimension());
1783         
1784         self.assertTrue(not mesh1.isEqual(mesh2, 1e-12));
1785         self.assertTrue(not mesh2.isEqual(mesh1, 1e-12));
1786         self.assertTrue(not mesh2.isEqualWithoutConsideringStr(mesh1, 1e-12));
1787         self.assertTrue(mesh1.isEqual(mesh2, 1e-5));
1788         self.assertTrue(not mesh1.isEqual(mesh2, 1e-7));
1789         
1790         self.assertRaises(InterpKernelException, mesh3.checkCoherency1, 1e-12);
1791         mesh1.checkCoherency2(1e-12);
1792         self.assertEqual(NORM_HEXA8, mesh1.getTypeOfCell(1));
1793         
1794         self.assertEqual(NORM_HEXA8, mesh1.getAllGeoTypes()[0]);
1795         self.assertEqual(27, mesh1.getNumberOfCellsWithType(NORM_HEXA8));
1796         self.assertRaises(InterpKernelException, mesh1.getNumberOfCellsWithType, NORM_QUAD4);
1797         
1798         coo=mesh1.getCoordinatesOfNode(0);
1799         self.assertEqual(3, len(coo));
1800         self.assertAlmostEqual(-1., coo[0], 14);
1801         self.assertAlmostEqual(-2., coo[1], 14);
1802         self.assertAlmostEqual(-3., coo[2], 14);
1803         coo=mesh1.getCoordinatesOfNode(63);
1804         self.assertEqual(3, len(coo));
1805         self.assertAlmostEqual(4., coo[0], 14);
1806         self.assertAlmostEqual(8., coo[1], 14);
1807         self.assertAlmostEqual(12., coo[2], 14);
1808         
1809         a=str(mesh1)
1810         repr=mesh1.simpleRepr();
1811         repr=mesh1.advancedRepr();
1812         self.assertTrue("Cartesian" in repr);
1813         self.assertTrue("Number of components : 1" in repr);
1814         self.assertTrue("Number of tuples : 4" in repr);
1815         self.assertTrue("Z Array :" in repr);
1816         pass
1817
1818     def testCMesh2(self):
1819         mesh1=MEDCouplingCMesh.New();
1820         coordsX1=DataArrayDouble.New();
1821         arrX1=[ -1., 1., 2., 4. ]
1822         coordsX1.setValues(arrX1, 4, 1);
1823         coordsY1=DataArrayDouble.New();
1824         arrY1=[ -2., 2., 4., 8. ]
1825         coordsY1.setValues(arrY1, 4, 1);
1826         coordsZ1=DataArrayDouble.New();
1827         arrZ1=[ -3., 3., 6., 12. ]
1828         coordsZ1.setValues(arrZ1, 4, 1);
1829         mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1830         
1831         dis=mesh1.getDistributionOfTypes();
1832         self.assertEqual(1, len(dis));
1833         self.assertEqual(NORM_HEXA8, dis[0][0]);
1834         self.assertEqual(27, dis[0][1]);
1835         self.assertEqual(-1, dis[0][2]);
1836         
1837         idsPerType=[]
1838         self.assertTrue(not mesh1.checkTypeConsistencyAndContig(dis, idsPerType));
1839         dis[0][0]=NORM_QUAD4;
1840         self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1841         dis[0][0]=NORM_HEXA8;
1842         dis[0][2]=0;
1843         ids=DataArrayInt.New();
1844         ids.alloc(10, 1);
1845         ids.fillWithValue(23);
1846         idsPerType=[ids];
1847         check=mesh1.checkTypeConsistencyAndContig(dis, idsPerType);
1848         self.assertTrue(check);
1849         self.assertTrue(check.isEqual(ids));
1850         
1851         code, idsInPflPerType, pfls=mesh1.splitProfilePerType(ids);
1852         self.assertEqual(1, len(code));
1853         self.assertEqual(NORM_HEXA8, code[0][0]);
1854         self.assertEqual(10, code[0][1]);
1855         self.assertEqual(0, code[0][2]);
1856         self.assertEqual(1, len(idsInPflPerType));
1857         self.assertEqual(1, len(pfls));
1858         self.assertTrue(idsInPflPerType[0].isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9])));
1859         self.assertTrue(pfls[0].isEqual(ids));
1860         
1861         cells1=[0, 1, 25, 26]
1862         partMesh1=mesh1.buildPart(cells1)
1863         self.assertTrue(isinstance(partMesh1,MEDCouplingMesh))
1864         self.assertEqual(4, partMesh1.getNumberOfCellsWithType(NORM_HEXA8));
1865         self.assertEqual(64, mesh1.getNumberOfNodes());
1866         self.assertEqual(64, partMesh1.getNumberOfNodes());
1867         
1868         cells2=[25, 26]
1869         partMesh2, arr1=mesh1.buildPartAndReduceNodes(cells2)
1870         self.assertTrue(isinstance(partMesh2,MEDCouplingCMesh))
1871         self.assertEqual(2,partMesh2.getNumberOfCellsWithType(NORM_HEXA8));
1872         self.assertEqual(12,partMesh2.getNumberOfNodes());
1873         
1874         cells3=[2, 3]
1875         partMesh3, arr2=partMesh1.buildPartAndReduceNodes(cells3)
1876         self.assertTrue(isinstance(partMesh3,MEDCouplingUMesh))
1877         self.assertEqual(2, partMesh3.getNumberOfCellsWithType(NORM_HEXA8));
1878         self.assertEqual(12, partMesh3.getNumberOfNodes());
1879         
1880         self.assertRaises(InterpKernelException, mesh1.simplexize, 0);
1881         self.assertRaises(InterpKernelException, mesh1.getMeasureFieldOnNode, True);
1882         
1883         #double bbox1[6];
1884         #double bbox2[6];
1885         bbox1=mesh1.getBoundingBox(); #[(-1.0, 4.0), (-2.0, 8.0), (-3.0, 12.0)]
1886         bbox2=partMesh1.getBoundingBox();
1887         self.assertTrue(bbox1==bbox2);
1888         bbox1=partMesh3.getBoundingBox();
1889         bbox2=partMesh2.getBoundingBox();
1890         self.assertTrue(bbox1==bbox2);
1891         
1892         self.assertRaises(InterpKernelException, mesh1.buildOrthogonalField);
1893         mesh2d=MEDCouplingCMesh.New();
1894         mesh2d.setCoords(coordsX1, coordsY1);
1895         f1=mesh2d.buildOrthogonalField();
1896         
1897         pass
1898
1899     def testScale(self):
1900         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1901         pos=[0.2,0.2]
1902         mesh.scale(pos,0.5);
1903         expected1=[-0.05,-0.05, 0.2,-0.05, 0.45,-0.05, -0.05,0.2, 0.2,0.2, 0.45,0.2,
1904                    -0.05,0.45, 0.2,0.45, 0.45,0.45]
1905         val=mesh.getCoords().getValues();
1906         self.assertEqual(18,len(val))
1907         for i in xrange(18):
1908             self.assertTrue(abs(expected1[i]-val[i])<1e-12);
1909             pass
1910         pass
1911
1912     def testTryToShareSameCoords(self):
1913         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1914         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1915         self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1916         m1.tryToShareSameCoords(m2,1e-12);
1917         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1918         m1.tryToShareSameCoords(m2,1e-12);
1919         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1920         m2.tryToShareSameCoords(m1,1e-12);
1921         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1922         #
1923         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1924         m2=MEDCouplingDataForTest.build2DTargetMesh_2();
1925         self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1926         m1.tryToShareSameCoords(m2,1e-12);
1927         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1928         m1.tryToShareSameCoords(m2,1e-12);
1929         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1930         m2.tryToShareSameCoords(m1,1e-12);
1931         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1932         #
1933         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1934         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
1935         self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1936         self.assertRaises(InterpKernelException,m1.tryToShareSameCoords,m2,1e-12)
1937         pass
1938
1939     def testFindNodeOnPlane(self):
1940         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1941         pt=[300.,300.,0.]
1942         v=[0.,0.,2.]
1943         n=mesh.findNodesOnPlane(pt,v,1e-12);
1944         self.assertEqual(9,len(n));
1945         m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1946         self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1947         me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1948         da=me.getMesh3DIds();
1949         self.assertEqual(8,me.getNumberOfCells());
1950         expected=[0,1,2,3,4,5,6,7]
1951         val=da.getValues();
1952         self.assertEqual(expected,list(val));
1953         #
1954         m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1955         self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1956         me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1957         da=me.getMesh3DIds();
1958         self.assertEqual(8,me.getNumberOfCells());
1959         expected=[0,1,2,3,4,5,6,7]
1960         val=da.getValues();
1961         self.assertEqual(expected,list(val));
1962         pass
1963
1964     def testRenumberCells(self):
1965         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1966         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1967         self.assertTrue(m.isEqual(m2,0));
1968         arr=[12,3,25,2,26]
1969         m.renumberCells(arr,True);
1970         self.assertTrue(not m.isEqual(m2,0));
1971         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(0));
1972         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
1973         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(2));
1974         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
1975         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(4));
1976         arr2=[5,-1,-5,4,8]
1977         m.renumberCells(arr2,True);
1978         self.assertTrue(m.isEqual(m2,0));
1979         pass
1980
1981     def testChangeSpaceDimension(self):
1982         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1983         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1984         #
1985         self.assertEqual(3,m1.getSpaceDimension());
1986         m1.changeSpaceDimension(2);
1987         self.assertEqual(2,m1.getSpaceDimension());
1988         m1.setName(m2.getName());
1989         self.assertTrue(m1.isEqual(m2,1e-12));
1990         m1.changeSpaceDimension(3);
1991         self.assertEqual(3,m1.getSpaceDimension());
1992         expected=[-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0.]
1993         val=m1.getCoords().getValues();
1994         for i in xrange(27):
1995             self.assertTrue(abs(expected[i]-val[i])<1e-14);
1996             pass
1997         pass
1998
1999     def testGaussPointField1(self):
2000         _a=0.446948490915965;
2001         _b=0.091576213509771;
2002         _p1=0.11169079483905;
2003         _p2=0.0549758718227661;
2004         refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2005         gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
2006                  2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]
2007         wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2008         _refCoo1=refCoo1
2009         _gsCoo1=gsCoo1
2010         _wg1=wg1
2011         #
2012         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2013         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2014         f.setMesh(m);
2015         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2016         self.assertEqual(0,f.getNbOfGaussLocalization());
2017         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2018         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1); # not a bug only to check that it works well
2019         self.assertRaises(InterpKernelException,f.setGaussLocalizationOnType,NORM_QUAD4,_refCoo1,_gsCoo1,_wg1)
2020         self.assertEqual(1,f.getNbOfGaussLocalization());
2021         refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2022         _refCoo2=refCoo2
2023         _gsCoo1=_gsCoo1[0:4]
2024         _wg1=_wg1[0:2]
2025         f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2026         self.assertEqual(2,f.getNbOfGaussLocalization());
2027         array=DataArrayDouble.New();
2028         ptr=18*2*[None]
2029         for i in xrange(18*2):
2030             ptr[i]=float(i+1)
2031         array.setValues(ptr,18,2);
2032         ptr=array.getPointer();
2033         f.setArray(array);
2034         f.setName("MyFirstFieldOnGaussPoint");
2035         f.checkCoherency();
2036         self.assertAlmostEqual(27.,f.getIJK(2,5,0),14);
2037         self.assertAlmostEqual(16.,f.getIJK(1,5,1),14);
2038         #
2039         f.clearGaussLocalizations();
2040         self.assertEqual(0,f.getNbOfGaussLocalization());
2041         self.assertRaises(InterpKernelException,f.checkCoherency);
2042         ids1=[0,1,3,4]
2043         self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,ids1,_refCoo2,_gsCoo1,_wg1);
2044         self.assertEqual(0,f.getNbOfGaussLocalization());
2045         ids2=[0,4]
2046         f.setGaussLocalizationOnCells(ids2,_refCoo2,_gsCoo1,_wg1);
2047         self.assertEqual(1,f.getNbOfGaussLocalization());
2048         self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2049         self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneCell,1);
2050         ids3=[1,2]
2051         f.setGaussLocalizationOnCells(ids3,_refCoo1,_gsCoo1,_wg1);
2052         self.assertEqual(2,f.getNbOfGaussLocalization());
2053         self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2054         self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(1));
2055         self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(2));
2056         self.assertRaises(InterpKernelException,f.checkCoherency);#<- cell 3 has no localization
2057         ids4=[3]
2058         _gsCoo2=_gsCoo1;
2059         _wg2=_wg1;
2060         _gsCoo2[0]=0.8888777776666;
2061         _wg2[0]=0.1234567892377;
2062         f.setGaussLocalizationOnCells(ids4,_refCoo2,_gsCoo2,_wg2);
2063         self.assertEqual(3,f.getNbOfGaussLocalization());
2064         tmpIds=f.getCellIdsHavingGaussLocalization(0);
2065         self.assertEqual(ids2,list(tmpIds.getValues()));
2066         self.assertRaises(InterpKernelException,f.checkCoherency);#<- it's always not ok because undelying array not with the good size.
2067         array2=f.getArray().substr(0,10);
2068         f.setArray(array2);
2069         f.checkCoherency();#<- here it is OK
2070         f2=f.clone(True);
2071         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2072         gl1=f2.getGaussLocalization(0);
2073         tmp=gl1.getGaussCoord(1,1);
2074         self.assertAlmostEqual(2.07*_b-1,tmp,14);
2075         gl1.setGaussCoord(1,1,0.07);
2076         self.assertTrue(not f.isEqual(f2,1e-14,1e-14));
2077         gl1.setGaussCoord(1,1,tmp);
2078         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2079         f2.checkCoherency();
2080         pass
2081
2082     def testGaussPointNEField1(self):
2083         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2084         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2085         f.setMesh(m);
2086         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2087         f.setName("MyFirstFieldOnNE");
2088         f.setDescription("MyDescriptionNE");
2089         array=DataArrayDouble.New();
2090         tmp=18*2*[None]
2091         for i in xrange(18*2):
2092             tmp[i]=float(i+7)
2093             pass
2094         array.setValues(tmp,18,2);
2095         ptr=array.getPointer();
2096         f.setArray(array);
2097         #
2098         f.checkCoherency();
2099         f2=f.clone(True);
2100         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2101         self.assertAlmostEqual(21.,f.getIJK(2,0,0),14);
2102         self.assertAlmostEqual(18.,f.getIJK(1,1,1),14);
2103         pass
2104
2105     def testCellOrientation1(self):
2106         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2107         vec=[0.,0.,-1.]
2108         self.assertRaises(InterpKernelException,m.are2DCellsNotCorrectlyOriented,vec,False);
2109         m.changeSpaceDimension(3);
2110         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2111         self.assertTrue(len(res1)==0);
2112         vec[2]=1.;
2113         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2114         self.assertEqual(5,len(res1));
2115         #
2116         vec[2]=-1.;
2117         # connectivity inversion
2118         conn=m.getNodalConnectivity().getValues();
2119         tmp=conn[11];
2120         conn[11]=conn[12];
2121         conn[12]=tmp;
2122         m.getNodalConnectivity().setValues(conn,len(conn),1)
2123         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2124         self.assertEqual(1,len(res1));
2125         self.assertEqual(2,res1.getValues()[0]);
2126         m.orientCorrectly2DCells(vec,False);
2127         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2128         self.assertTrue(len(res1)==0);
2129         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
2130         m2.changeSpaceDimension(3);
2131         self.assertTrue(m.isEqual(m2,1e-12));
2132         pass
2133
2134     def testCellOrientation2(self):
2135         m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2136         res1=m2.arePolyhedronsNotCorrectlyOriented();
2137         self.assertEqual(6,len(res1));
2138         m2.orientCorrectlyPolyhedrons();
2139         res1=m2.arePolyhedronsNotCorrectlyOriented();
2140         self.assertTrue(len(res1)==0);
2141         m2.checkCoherency();
2142         self.assertEqual(18,m2.getNumberOfCells());
2143         cellIds2=[0,6,12]
2144         m2.convertToPolyTypes(cellIds2);
2145         m2.orientCorrectlyPolyhedrons();
2146         res1=m2.arePolyhedronsNotCorrectlyOriented();
2147         self.assertTrue(len(res1)==0);
2148         f2=m2.getMeasureField(False);
2149         f2Ptr=f2.getArray().getValues();
2150         #Test to check global reverse in MEDCouplingUMesh::tryToCorrectPolyhedronOrientation
2151         m3=MEDCouplingDataForTest.build2DTargetMesh_1();
2152         vec=[0.,0.,1.]
2153         m3.changeSpaceDimension(3);
2154         ids2=[0,1,2,3,4]
2155         m3.convertToPolyTypes(ids2);
2156         m3.orientCorrectly2DCells(vec,False);
2157         m4=MEDCouplingDataForTest.buildCU1DMesh_U();
2158         m4.changeSpaceDimension(3);
2159         center=[0.,0.,0.]
2160         vector=[0.,1.,0.]
2161         m4.rotate(center,vector,-pi/2.);
2162         m5=m3.buildExtrudedMesh(m4,0);
2163         res1=m5.arePolyhedronsNotCorrectlyOriented();
2164         self.assertEqual(15,len(res1));
2165         m5.orientCorrectlyPolyhedrons();
2166         res1=m5.arePolyhedronsNotCorrectlyOriented();
2167         self.assertTrue(len(res1)==0);
2168         f3=m5.getMeasureField(False);
2169         self.assertEqual(15,f3.getArray().getNumberOfTuples());
2170         self.assertEqual(1,f3.getNumberOfComponents());
2171         f3Ptr=f3.getArray().getValues();
2172         expected1=[0.075,0.0375,0.0375,0.075,0.075, 0.1125,0.05625,0.05625,0.1125,0.1125, 0.0625,0.03125,0.03125,0.0625,0.0625];
2173         for i in xrange(15):
2174             self.assertTrue(abs(expected1[i]-f3Ptr[i])<1e-12);
2175             pass
2176         f4=m5.getBarycenterAndOwner();
2177         self.assertEqual(15,f4.getNumberOfTuples());
2178         self.assertEqual(3,f4.getNumberOfComponents());
2179         f4Ptr=f4.getValues();
2180         expected2=[-0.05,-0.05,0.15, 0.3666666666666667,-0.13333333333333333,0.15, 0.53333333333333333,0.033333333333333333,0.15, -0.05,0.45,0.15, 0.45,0.45,0.15,-0.05,-0.05,0.525, 0.3666666666666667,-0.13333333333333333,0.525, 0.53333333333333333,0.033333333333333333,0.525, -0.05,0.45,0.525, 0.45,0.45,0.525,-0.05,-0.05,0.875, 0.3666666666666667,-0.13333333333333333,0.875, 0.53333333333333333,0.033333333333333333,0.875, -0.05,0.45,0.875, 0.45,0.45,0.875];
2181         for i in xrange(45):
2182             self.assertTrue(abs(expected2[i]-f4Ptr[i])<1e-12);
2183             pass
2184         pass
2185
2186     def testCellOrientation3(self):
2187         from cmath import rect  
2188
2189         c = [rect(1.0, i*pi/4.0) for i in range(8)]
2190         coords = [c[-1].real,c[-1].imag,  c[3].real,c[3].imag,
2191                    c[5].real,c[5].imag,  c[1].real,c[1].imag]
2192         connec = [0,1,2,3] 
2193         baseMesh = MEDCouplingUMesh.New("circle", 2)  
2194         baseMesh.allocateCells(1)
2195         meshCoords = DataArrayDouble.New(coords, 4, 2)
2196         baseMesh.setCoords(meshCoords)
2197         baseMesh.insertNextCell(NORM_QPOLYG, connec)  # a circle
2198         baseMesh.finishInsertingCells()  
2199         baseMesh.changeSpaceDimension(3)
2200         Oz = [0.0, 0.0, -1.0] 
2201         cell_lst = baseMesh.are2DCellsNotCorrectlyOriented(Oz, False)
2202         self.assertEqual(cell_lst.getNumberOfTuples(), 0)
2203         Oz[2] = 1.0
2204         cell_lst = baseMesh.are2DCellsNotCorrectlyOriented(Oz, False)
2205         self.assertEqual(cell_lst.getNumberOfTuples(), 1)
2206
2207     def testPolyhedronBarycenter(self):
2208         connN=[0,3,2,1, -1, 4,5,6,7, -1, 0,4,7,3, -1, 3,7,6,2, -1, 2,6,5,1, -1, 1,5,4,0];
2209         coords=[0.,0.,0., 1.,0.,0., 1.,1.,0., 0.,1.,0., 0.,0.,1., 1.,0.,1., 1.,1.,1., 0.,1.,1., 0.5, 0.5, 0.5];
2210         meshN=MEDCouplingUMesh.New();
2211         meshN.setName("ForBary");
2212         meshN.setMeshDimension(3);
2213         meshN.allocateCells(4);
2214         meshN.insertNextCell(NORM_POLYHED,29,connN[0:29])
2215         meshN.finishInsertingCells();
2216         myCoords=DataArrayDouble.New();
2217         myCoords.setValues(coords,9,3);
2218         meshN.setCoords(myCoords);
2219         meshN.checkCoherency();
2220         #
2221         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2222         meshN.orientCorrectlyPolyhedrons();
2223         self.assertTrue(len(res1)==0);
2224         da=meshN.getBarycenterAndOwner();
2225         self.assertEqual(1,da.getNumberOfTuples());
2226         self.assertEqual(3,da.getNumberOfComponents());
2227         daPtr=da.getValues();
2228         ref=meshN.getCoords().getValues()[24:];
2229         for i in xrange(3):
2230             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2231             pass
2232         #
2233         center=[0.,0.,0.]
2234         vec=[0.,2.78,0.]
2235         da=meshN.getBarycenterAndOwner();
2236         daPtr=da.getValues();
2237         ref=meshN.getCoords().getValues()[24:];
2238         for i in xrange(3):
2239             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2240             pass
2241         #
2242         meshN.rotate(center,vec,pi/7.);
2243         meshN.translate(vec);
2244         da=meshN.getBarycenterAndOwner();
2245         daPtr=da.getValues();
2246         ref=meshN.getCoords().getValues()[24:];
2247         for i in xrange(3):
2248             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2249             pass
2250         #
2251         center2=[1.12,3.45,6.78]
2252         vec2=[4.5,9.3,2.8]
2253         meshN.rotate(center2,vec2,e);
2254         meshN.translate(vec2);
2255         da=meshN.getBarycenterAndOwner();
2256         daPtr=da.getValues();
2257         ref=meshN.getCoords().getValues()[24:];
2258         for i in xrange(3):
2259             self.assertTrue(abs(ref[i]-daPtr[i])<1e-10);
2260             pass
2261         pass
2262
2263     def testNormL12Integ1D(self):
2264         m1=MEDCouplingDataForTest.build1DTargetMesh_3();
2265         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2266         f1.setMesh(m1);
2267         array=DataArrayDouble.New();
2268         arr=[-5.23,15.45,-25.56,6.67,-16.78,26.89,-7.91,17.23,-27.43,8.21,-18.63,28.72]
2269         array.setValues(arr,m1.getNumberOfCells(),3);
2270         f1.setArray(array);
2271         #
2272         f3=m1.getBarycenterAndOwner();
2273         self.assertEqual(4,f3.getNumberOfTuples());
2274         self.assertEqual(1,f3.getNumberOfComponents());
2275         expected9=[0.75,5.105,0.8,5.155]
2276         ptr=f3.getValues();
2277         for i in xrange(4):
2278             self.assertTrue(abs(expected9[i]-ptr[i])<1e-12);
2279             pass
2280         #
2281         f2=m1.getMeasureField(False);
2282         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2283         self.assertEqual(1,f2.getNumberOfComponents());
2284         expected1=[0.5,0.21,-0.6,-0.31]
2285         ptr=f2.getArray().getValues();
2286         for i in xrange(4):
2287             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2288             pass
2289         expected2=[0.5,0.21,0.6,0.31]
2290         f2=m1.getMeasureField(True);
2291         ptr=f2.getArray().getValues();
2292         for i in xrange(4):
2293             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2294             pass
2295         #integral
2296         self.assertTrue(4,f1.getNumberOfTuples())
2297         res=f1.integral(False);
2298         self.assertTrue(3,len(res))
2299         expected3=[0.9866,-0.3615,0.4217]
2300         for i in xrange(3):
2301             self.assertTrue(abs(expected3[i]-res[i])<1e-12);
2302             pass
2303         self.assertTrue(abs(expected3[0]-f1.integral(0,False))<1e-12);
2304         self.assertTrue(abs(expected3[1]-f1.integral(1,False))<1e-12);
2305         self.assertTrue(abs(expected3[2]-f1.integral(2,False))<1e-12);
2306         res=f1.integral(True);
2307         expected4=[-3.4152,8.7639,-14.6879]
2308         for i in xrange(3):
2309             self.assertTrue(abs(expected4[i]-res[i])<1e-12);
2310             pass
2311         #normL1
2312         res=f1.normL1();
2313         self.assertTrue(3,len(res))
2314         expected5=[6.979506172839505, 16.89018518518518, 27.02969135802469]
2315         for i in xrange(3):
2316             self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2317             pass
2318         self.assertTrue(abs(expected5[0]-f1.normL1(0))<1e-12);
2319         self.assertTrue(abs(expected5[1]-f1.normL1(1))<1e-12);
2320         self.assertTrue(abs(expected5[2]-f1.normL1(2))<1e-12);
2321         #normL2
2322         res=f1.normL2();
2323         self.assertTrue(3,len(res))
2324         expected7=[7.090910979452395, 16.9275542960123, 27.053271464160858]
2325         for i in xrange(3):
2326             self.assertTrue(abs(expected7[i]-res[i])<1e-9);
2327             pass
2328         self.assertTrue(abs(expected7[0]-f1.normL2(0))<1e-9);
2329         self.assertTrue(abs(expected7[1]-f1.normL2(1))<1e-9);
2330         self.assertTrue(abs(expected7[2]-f1.normL2(2))<1e-9);
2331         #buildMeasureField
2332         f4=f1.buildMeasureField(False);
2333         self.assertTrue(abs(-0.2-f4.accumulate(0))<1e-12);
2334         f4=f1.buildMeasureField(True);
2335         self.assertTrue(abs(1.62-f4.accumulate(0))<1e-12);
2336         # Testing with 2D Curve
2337         m1=MEDCouplingDataForTest.build2DCurveTargetMesh_3();
2338         f2=m1.getMeasureField(False);
2339         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2340         self.assertEqual(1,f2.getNumberOfComponents());
2341         ptr=f2.getArray().getValues();
2342         for i in xrange(4):
2343             self.assertTrue(abs(sqrt(2.)*expected2[i]-ptr[i])<1e-12);
2344             pass
2345         f2=m1.getMeasureField(True);
2346         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2347         self.assertEqual(1,f2.getNumberOfComponents());
2348         ptr=f2.getArray().getValues();
2349         for i in xrange(4):
2350             self.assertTrue(abs(expected2[i]*sqrt(2.)-ptr[i])<1e-12);
2351             pass
2352         #bary
2353         f3=m1.getBarycenterAndOwner();
2354         self.assertEqual(4,f3.getNumberOfTuples());
2355         self.assertEqual(2,f3.getNumberOfComponents());
2356         expected10=[0.75,0.75,5.105,5.105,0.8,0.8,5.155,5.155]
2357         ptr=f3.getValues();
2358         for i in xrange(8):
2359             self.assertTrue(abs(expected10[i]-ptr[i])<1e-12);
2360             pass
2361         #
2362         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2363         f1.setMesh(m1);
2364         array=DataArrayDouble.New();
2365         array.setValues(arr,m1.getNumberOfCells(),3);
2366         f1.setArray(array);
2367         res=f1.integral(False);
2368         for i in xrange(3):
2369             self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2370             pass
2371         res=f1.integral(True);
2372         for i in xrange(3):
2373             self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2374             pass
2375         res=f1.normL1();
2376         for i in xrange(3):
2377             self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2378             pass
2379         res=f1.normL2();
2380         for i in xrange(3):
2381             self.assertTrue(abs(expected7[i]-res[i])<1e-12);
2382             pass
2383         pass
2384
2385     def testAreaBary2D(self):
2386         m1=MEDCouplingDataForTest.build2DTargetMesh_3();
2387         f1=m1.getMeasureField(False);
2388         self.assertEqual(10,f1.getArray().getNumberOfTuples());
2389         self.assertEqual(1,f1.getNumberOfComponents());
2390         expected1=[-0.5,-1,-1.5,-0.5,-1,  0.5,1,1.5,0.5,1]
2391         ptr=f1.getArray().getValues();
2392         for i in xrange(10):
2393             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2394             pass
2395         f1=m1.getMeasureField(True);
2396         ptr=f1.getArray().getValues();
2397         for i in xrange(10):
2398             self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2399             pass
2400         f2=m1.getBarycenterAndOwner();
2401         self.assertEqual(10,f2.getNumberOfTuples());
2402         self.assertEqual(2,f2.getNumberOfComponents());
2403         expected2=[0.5,0.3333333333333333,0.5,0.5,0.5,0.77777777777777777,0.5,0.3333333333333333,0.5,0.5,0.5,0.3333333333333333,0.5,0.5,0.5,0.77777777777777777,0.5,0.3333333333333333,0.5,0.5]
2404         ptr=f2.getValues();
2405         for i in xrange(20):
2406             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2407             pass
2408         m1.changeSpaceDimension(3);
2409         f1=m1.getMeasureField(False);
2410         self.assertEqual(10,f1.getArray().getNumberOfTuples());
2411         self.assertEqual(1,f1.getNumberOfComponents());
2412         ptr=f1.getArray().getValues();
2413         for i in xrange(10):
2414             self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2415             pass
2416         f2=m1.getBarycenterAndOwner();
2417         self.assertEqual(10,f2.getNumberOfTuples());
2418         self.assertEqual(3,f2.getNumberOfComponents());
2419         ptr=f2.getValues();
2420         expected3=[0.5,0.3333333333333333,0.,0.5,0.5,0.,0.5,0.77777777777777777,0.,0.5,0.3333333333333333,0.,0.5,0.5,0., 0.5,0.3333333333333333,0.,0.5,0.5,0.,0.5,0.77777777777777777,0.,0.5,0.3333333333333333,0.,0.5,0.5,0.]
2421         for i in xrange(30):
2422             self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2423             pass
2424         pass
2425
2426     def testAreaBary3D(self):
2427         coords=[ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
2428                  0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
2429                  0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
2430                  0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
2431                  -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
2432                  -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
2433                  0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
2434                  0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
2435                  -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
2436                  0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
2437                 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
2438                  -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
2439                  -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
2440                  -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
2441                  -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
2442                  -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
2443                  0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
2444                  0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
2445                  0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
2446                  -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
2447                  -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
2448                 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
2449                  -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
2450                  0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
2451                  0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
2452                  0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
2453                  -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
2454                  -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
2455                 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
2456                  0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
2457                  -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
2458                  0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
2459                  0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
2460                  0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
2461                  -0.0372812069535 , -0.286740286332 , 0.00963701291166 ]
2462         
2463         connN = [ #polyhedron 0
2464             0 , 1 , 3 , 4 , 2 , -1 , 1 , 5 , 6 , 7 , 0 , -1 , 0 , 7 , 8 , 10 , 11 , 9 , 2 , -1 , 1 , 5 , 12 , 14 , 15 , 13 , 3 , -1 , 16 , 9 , 2 , 4 , 17 , -1
2465             , 4 , 3 , 13 , 18 , 17 , -1 , 5 , 6 , 19 , 21 , 20 , 12 , -1 , 6 , 7 , 8 , 23 , 22 , 19 , -1 , 23 , 24 , 10 , 8 , -1 , 25 , 11 , 9 , 16 , -1
2466             , 24 , 26 , 25 , 11 , 10 , -1 , 12 , 14 , 20 , -1 , 27 , 28 , 29 , 15 , 13 , 18 , -1 , 14 , 15 , 29 , 30 , 21 , 20 , -1 , 26 , 27 , 18 , 17 , 16 , 25 , -1
2467             , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
2468             # polyhedron 1
2469             0 , 7 , 8 , 10 , 11 , 9 , 2 , -1 , 32 , 0 , 7 , 35 , 34 , 33 , -1 , 32 , 0 , 2 , 37 , 36 , -1 , 35 , 7 , 8 , 40 , 39 , 38 , -1
2470             , 2 , 37 , 41 , 9 , -1 , 40 , 8 , 10 , 44 , 43 , 42 , -1 , 41 , 9 , 11 , 44 , 43 , -1 , 44 , 11 , 10 , -1 , 32 , 33 , 45 , 47 , 46 , 36 , -1
2471             , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
2472             , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
2473             # polyhedron 2
2474             6 , 7 , 8 , 23 , 22 , 19 , -1 , 6 , 35 , 7 , -1 , 6 , 35 , 38 , 19 , -1 , 35 , 7 , 8 , 40 , 39 , 38 , -1 , 53 , 22 , 19 , 38 , 39 , 54 , -1
2475             , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
2476             # polyhedron 3
2477             35 , 34 , 48 , 50 , 49 , 38 , -1 , 6 , 35 , 34 , 56 , 55 , 5 , -1 , 6 , 35 , 38 , 19 , -1 , 34 , 56 , 57 , 59 , 58 , 48 , -1
2478             , 60 , 61 , 21 , 19 , 38 , 49 , -1 , 62 , 50 , 48 , 58 , -1 , 60 , 63 , 64 , 62 , 50 , 49 , -1 , 5 , 6 , 19 , 21 , 20 , 12 , -1
2479             , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
2480             , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
2481         
2482         barys = [ -0.0165220465527 , -0.0190922868195 , 0.158882733414 ,
2483                   0.0287618656076 , 0.135874379934 , -0.14601588119 ,
2484                   -0.147128055553 , 0.0465995097041 , -0.049391174453 ,
2485                   -0.00142506732317 , -0.0996953090351 , -0.115159183132 ]
2486         meshN=MEDCouplingUMesh.New();
2487         meshN.setName("ForBary");
2488         meshN.setMeshDimension(3);
2489         meshN.allocateCells(4);
2490         meshN.insertNextCell(NORM_POLYHED,113,connN);
2491         meshN.insertNextCell(NORM_POLYHED,99,connN[113:]);
2492         meshN.insertNextCell(NORM_POLYHED,43,connN[212:]);
2493         meshN.insertNextCell(NORM_POLYHED,92,connN[255:]);
2494         meshN.finishInsertingCells();
2495         myCoords=DataArrayDouble.New();
2496         myCoords.setValues(coords,69,3);
2497         meshN.setCoords(myCoords);
2498         meshN.checkCoherency();
2499         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2500         meshN.orientCorrectlyPolyhedrons();
2501         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2502         self.assertTrue(len(res1)==0);
2503         #
2504         da=meshN.getBarycenterAndOwner();
2505         self.assertEqual(4,da.getNumberOfTuples());
2506         self.assertEqual(3,da.getNumberOfComponents());
2507         daPtr=da.getValues();
2508         for i in xrange(12):
2509             self.assertTrue(abs(barys[i]-daPtr[i])<1e-12);
2510             pass
2511         pass
2512
2513     def testRenumberCellsForFields(self):
2514         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2515         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2516         f.setMesh(m);
2517         arr=DataArrayDouble.New();
2518         nbOfCells=m.getNumberOfCells();
2519         values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
2520         arr.setValues(values1,nbOfCells,3);
2521         f.setArray(arr);
2522         renumber1=[3,1,0,4,2]
2523         loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
2524         for j in xrange(5):
2525             res=f.getValueOn(loc[2*j:2*j+2]);
2526             for i in xrange(3):
2527                 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2528                 pass
2529             pass
2530         f.renumberCells(renumber1,False);
2531         ptr=f.getArray().getValues();
2532         expected1=[9.,109.,10009.,8.,108.,10008.,11.,111.,10011.,7.,107.,10007.,10.,110.,10010.]
2533         for i in xrange(15):
2534             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2535             pass
2536         #check that fields remains the same geometrically
2537         for j in xrange(5):
2538             res=f.getValueOn(loc[2*j:2*(j+1)]);
2539             for i in xrange(3):
2540                 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2541                 pass
2542             pass
2543         #On gauss
2544         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2545         f.setMesh(m);
2546         _a=0.446948490915965;
2547         _b=0.091576213509771;
2548         _p1=0.11169079483905;
2549         _p2=0.0549758718227661;
2550         refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2551         gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b, 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ];
2552         wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2553         _refCoo1=refCoo1[0:6];
2554         _gsCoo1=gsCoo1[0:12];
2555         _wg1=wg1[0:6];
2556         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2557         refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2558         _refCoo2=refCoo2[0:8];
2559         _gsCoo1=_gsCoo1[0:4]
2560         _wg1=_wg1[0:2]
2561         f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2562         arr=DataArrayDouble.New();
2563         values2=[1.,1001.,2.,1002., 11.,1011.,12.,1012.,13.,1013.,14.,1014.,15.,1015.,16.,1016., 21.,1021.,22.,1022.,23.,1023.,24.,1024.,25.,1025.,26.,1026., 31.,1031.,32.,1032., 41.,1041.,42.,1042.]
2564         arr.setValues(values2,18,2);
2565         f.setArray(arr);
2566         f.checkCoherency();
2567         fCpy=f.clone(True);
2568         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2569         f.renumberCells(renumber1,False);
2570         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2571         expected2=[21.,1021.,22.,1022.,23.,1023.,24.,1024.,25.,1025.,26.,1026., 11.,1011.,12.,1012.,13.,1013.,14.,1014.,15.,1015.,16.,1016., 41.,1041.,42.,1042., 1.,1001.,2.,1002., 31.,1031.,32.,1032.]
2572         ptr=f.getArray().getValues();
2573         for i in xrange(36):
2574             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2575             pass
2576         renumber2=[2,1,4,0,3]
2577         f.renumberCells(renumber2,False);
2578         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2579         #GaussNE
2580         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2581         f.setMesh(m);
2582         arr=DataArrayDouble.New();
2583         values3=[1.,1001.,2.,1002.,3.,1003.,4.,1004., 11.,1011.,12.,1012.,13.,1013., 21.,1021.,22.,1022.,23.,1023., 31.,1031.,32.,1032.,33.,1033.,34.,1034., 41.,1041.,42.,1042.,43.,1043.,44.,1044.]
2584         arr.setValues(values3,18,2);
2585         f.setArray(arr);
2586         f.checkCoherency();
2587         fCpy=f.clone(True);
2588         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2589         f.renumberCells(renumber1,False);
2590         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2591         expected3=[21.,1021.,22.,1022.,23.,1023.,11.,1011.,12.,1012.,13.,1013.,41.,1041.,42.,1042.,43.,1043.,44.,1044.,1.,1001.,2.,1002.,3.,1003.,4.,1004.,31.,1031.,32.,1032.,33.,1033.,34.,1034.]
2592         ptr=f.getArray().getValues();
2593         for i in xrange(36):
2594             self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2595             pass
2596         f.renumberCells(renumber2,False);#perform reverse operation of renumbering to check that the resulting field is equal.
2597         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2598         #
2599         pass
2600
2601     def testRenumberNodesForFields(self):
2602         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2603         f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2604         f.setMesh(m);
2605         self.assertEqual(9,f.getNumberOfMeshPlacesExpected());
2606         arr=DataArrayDouble.New();
2607         nbOfNodes=m.getNumberOfNodes();
2608         values1=[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.]
2609         arr.setValues(values1,nbOfNodes,3);
2610         f.setArray(arr);
2611         f.checkCoherency();
2612         renumber1=[0,4,1,3,5,2,6,7,8]
2613         loc=[0.5432,-0.2432, 0.5478,0.1528]
2614         expected1=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124]
2615         for j in xrange(2):
2616             res=f.getValueOn(loc[2*j:2*j+2]);
2617             for i in xrange(3):
2618                 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2619                 pass
2620             pass
2621         fCpy=f.clone(True);
2622         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2623         f.renumberNodes(renumber1);
2624         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2625         for j in xrange(2):
2626             res=f.getValueOn(loc[2*j:2*j+2]);
2627             for i in xrange(3):
2628                 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2629                 pass
2630             pass
2631         expected2=[7.,107.,10007.,9.,109.,10009.,12.,112.,10012.,10.,110.,10010.,8.,108.,10008.,11.,111.,10011.,13.,113.,10013.,14.,114.,10014.,15.,115.,10015.]
2632         for i in xrange(27):
2633             self.assertTrue(abs(expected2[i]-f.getArray().getValues()[i])<1e-12);
2634             pass
2635         renumber2=[0,2,5,3,1,4,6,7,8]
2636         f.renumberNodes(renumber2);
2637         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2638         pass
2639
2640     def testConvertQuadraticCellsToLinear(self):
2641         mesh=MEDCouplingDataForTest.build2DTargetMesh_3();
2642         mesh.checkCoherency();
2643         types=mesh.getAllGeoTypes();
2644         types.sort()
2645         self.assertEqual(5,len(types));
2646         expected1=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4, NORM_TRI6, NORM_QUAD8]
2647         expected1.sort()
2648         self.assertEqual(expected1,types);
2649         self.assertTrue(mesh.isPresenceOfQuadratic());
2650         self.assertEqual(62,mesh.getMeshLength());
2651         f1=mesh.getMeasureField(False);
2652         #
2653         mesh.convertQuadraticCellsToLinear();
2654         self.assertTrue(not mesh.isPresenceOfQuadratic());
2655         #
2656         mesh.checkCoherency();
2657         f2=mesh.getMeasureField(False);
2658         self.assertTrue(f1.getArray().isEqual(f2.getArray(),1e-12));
2659         self.assertEqual(48,mesh.getMeshLength());
2660         types2=mesh.getAllGeoTypes();
2661         types2.sort()
2662         self.assertEqual(3,len(types2));
2663         expected2=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4]
2664         expected2.sort()
2665         self.assertEqual(expected2,types2);
2666         pass
2667
2668     def testCheckGeoEquivalWith(self):
2669         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2670         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2671         #First test mesh1
2672         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,0,1e-12);#deepEqual
2673         self.assertTrue(cellCor==None);
2674         self.assertTrue(nodeCor==None);
2675         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,1,1e-12);#fastEqual
2676         self.assertTrue(cellCor==None);
2677         self.assertTrue(nodeCor==None);
2678         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2679         self.assertTrue(cellCor==None);
2680         self.assertTrue(nodeCor==None);
2681         #Second test mesh1 and mesh2 are 2 different meshes instance
2682         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,0,1e-12);#deepEqual
2683         self.assertTrue(cellCor==None);
2684         self.assertTrue(nodeCor==None);
2685         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual
2686         self.assertTrue(cellCor==None);
2687         self.assertTrue(nodeCor==None);
2688         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2689         self.assertTrue(cellCor==None);
2690         self.assertTrue(nodeCor==None);
2691         #Third test : cell permutation by keeping the first the middle and the last as it is.
2692         renum=[0,2,1,3,4,5,6,8,7,9]
2693         mesh2.renumberCells(renum,False);
2694         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2695         self.assertTrue(cellCor==None);
2696         self.assertTrue(nodeCor==None);
2697         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2698         self.assertTrue(cellCor==None);
2699         self.assertTrue(nodeCor==None);
2700         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2701         self.assertTrue(cellCor);
2702         self.assertEqual(10,cellCor.getNumberOfTuples());
2703         self.assertEqual(1,cellCor.getNumberOfComponents());
2704         self.assertEqual(renum,list(cellCor.getValues()))
2705         self.assertTrue(nodeCor==None);
2706         cellCor=0;
2707         self.assertTrue(nodeCor==None);
2708         a,b=mesh1.checkDeepEquivalWith(mesh2,0,1e-12);
2709         self.assertEqual(renum,list(a.getValues()))
2710         self.assertTrue(b==None);
2711         mesh2.setCoords(mesh1.getCoords())
2712         a=mesh1.checkDeepEquivalOnSameNodesWith(mesh2,0,1e-12);
2713         self.assertEqual(renum,list(a.getValues()))
2714         #4th test : cell and node permutation by keeping the first the middle and the last as it is.
2715         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2716         renum2=[0,2,1,3,4,5,6,8,7,9,10]
2717         mesh2.renumberCells(renum,False);
2718         mesh2.renumberNodes(renum2,11);
2719         cellCor=None
2720         nodeCor=None
2721         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2722         self.assertTrue(cellCor==None);
2723         self.assertTrue(nodeCor==None);
2724         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2725         self.assertTrue(cellCor==None);
2726         self.assertTrue(nodeCor==None);
2727         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2728         self.assertTrue(cellCor);
2729         self.assertEqual(10,cellCor.getNumberOfTuples());
2730         self.assertEqual(1,cellCor.getNumberOfComponents());
2731         self.assertEqual(renum,list(cellCor.getValues()))
2732         self.assertTrue(nodeCor);
2733         self.assertEqual(11,nodeCor.getNumberOfTuples());
2734         self.assertEqual(1,nodeCor.getNumberOfComponents());
2735         self.assertEqual(renum2,list(nodeCor.getValues()))
2736         cellCor=0;
2737         nodeCor=0;
2738         #5th test : modification of the last cell to check fastCheck detection.
2739         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2740         renum3=[0,2,1,3,4,5,6,8,9,7]
2741         mesh2.renumberCells(renum3,False);
2742         mesh2.renumberNodes(renum2,11);
2743         cellCor=None
2744         nodeCor=None
2745         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12)
2746         self.assertTrue(cellCor==None);
2747         self.assertTrue(nodeCor==None);
2748         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,1,1e-12)
2749         self.assertTrue(cellCor==None);
2750         self.assertTrue(nodeCor==None);
2751         cellCor,nodeCor=mesh2.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2752         self.assertTrue(cellCor!=None);
2753         self.assertEqual(10,cellCor.getNumberOfTuples());
2754         self.assertEqual(1,cellCor.getNumberOfComponents());
2755         self.assertEqual(renum3,list(cellCor.getValues()))
2756         self.assertTrue(nodeCor!=None);
2757         self.assertEqual(11,nodeCor.getNumberOfTuples());
2758         self.assertEqual(1,nodeCor.getNumberOfComponents());
2759         self.assertEqual(renum2,list(nodeCor.getValues()));
2760         pass
2761
2762     def testCheckGeoEquivalWith2(self):
2763         mesh1=MEDCouplingDataForTest.build2DTargetMesh_4();
2764         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
2765         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);
2766         self.assertEqual(None,cellCor);
2767         self.assertNotEqual(None,nodeCor);
2768         expected1=[0, 1, 3, 4, 5, 6, 7, 8, 9]
2769         for i in xrange(9):
2770             self.assertEqual(expected1[i],nodeCor.getIJ(i,0));
2771             pass
2772         pass
2773       
2774     def testSwig2CheckDeepEquivalWith1(self):
2775         eps = 1.0e-8
2776         mcart = MEDCouplingCMesh()
2777         mcart.setCoordsAt(0, DataArrayDouble([0.0,1.5,2.0]))
2778         mcart.setCoordsAt(1, DataArrayDouble([1.0,2.5,3.0,4.0]))
2779         m = mcart.buildUnstructured()
2780         m2 = m[1:m.getNumberOfCells()]
2781         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 0, eps)
2782         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 1, eps)
2783         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 2, eps)
2784         pass
2785
2786     def testSwig2CheckDeepEquivalWith2(self):
2787         eps = 1.0e-8
2788         m = MEDCouplingUMesh("tst", 2)
2789         m.setCoords(DataArrayDouble([], 0,2))
2790         m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
2791         m2 = m.deepCpy()
2792         m.checkDeepEquivalWith(m2, 0, eps)  # Should not raise!
2793         pass
2794
2795     def testCopyTinyStringsFromOnFields(self):
2796         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2797         nbOfCells=m.getNumberOfCells();
2798         f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2799         f.setMesh(m);
2800         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2801         f.setName("a");
2802         f.setDescription("b");
2803         a1=DataArrayDouble.New();
2804         a1.alloc(nbOfCells,2);
2805         a1.fillWithZero();
2806         a1.setInfoOnComponent(0,"c");
2807         a1.setInfoOnComponent(1,"d");
2808         a2=a1.deepCpy();
2809         a2.setInfoOnComponent(0,"e");
2810         a2.setInfoOnComponent(1,"f");
2811         f.setArray(a1);
2812         f.setEndArray(a2);
2813         f.setEndTime(3.,3,4);
2814         m.setName("g");
2815         m.getCoords().setInfoOnComponent(0,"h");
2816         m.getCoords().setInfoOnComponent(1,"i");
2817         m.getCoords().setInfoOnComponent(2,"j");
2818         #
2819         f.checkCoherency();
2820         f2=f.clone(True);
2821         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2822         f2.setName("smth");
2823         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2824         f2.copyTinyStringsFrom(f);
2825         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2826         f2.setDescription("GGG");
2827         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2828         f2.copyTinyStringsFrom(f);
2829         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2830         f2.getArray().setInfoOnComponent(0,"mmmm");
2831         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2832         f2.copyTinyStringsFrom(f);
2833         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2834         f2.getEndArray().setInfoOnComponent(1,"mmmm");
2835         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2836         f2.copyTinyStringsFrom(f);
2837         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2838         m2=m.clone(True);
2839         self.assertTrue(m2.isEqual(m,1e-12));
2840         m2.setName("123");
2841         self.assertTrue(not m2.isEqual(m,1e-12));
2842         m2.copyTinyStringsFrom(m);
2843         self.assertTrue(m2.isEqual(m,1e-12));
2844         m2.getCoords().setInfoOnComponent(1,"eee");
2845         self.assertTrue(not m2.isEqual(m,1e-12));
2846         m2.copyTinyStringsFrom(m);
2847         self.assertTrue(m2.isEqual(m,1e-12));
2848         pass
2849
2850     def testTryToShareSameCoordsPermute(self):
2851         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2852         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2853         #self.assertTrue(m.getCoords()!=m2.getCoords());
2854         m.tryToShareSameCoordsPermute(m2,1e-12);
2855         #self.assertTrue(m.getCoords()==m2.getCoords());
2856         self.assertTrue(m2.isEqual(m,1e-12));
2857         renum1=[1,2,0,5,8,7,4,3,6]
2858         r1=DataArrayInt.New()
2859         r1.setValues(renum1,len(renum1),1)
2860         m.renumberNodes(r1,9);
2861         #self.assertTrue(m.getCoords()!=m2.getCoords());
2862         self.assertTrue(not m2.isEqual(m,1e-12));
2863         m.tryToShareSameCoordsPermute(m2,1e-12);
2864         #self.assertTrue(m.getCoords()==m2.getCoords());
2865         self.assertTrue(m2.isEqual(m,1e-12));
2866         pass
2867
2868     def testTryToShareSameCoordsPermute2(self):
2869         m1=MEDCouplingDataForTest.build2DTargetMesh_4();
2870         targetCoords=[-0.3,-0.3, 0.2,-0.3, -0.3,0.2, 0.2,0.2 ]
2871         targetConn=[0,2,3,1]
2872         m2=MEDCouplingUMesh.New();
2873         m2.setMeshDimension(2);
2874         m2.allocateCells(1);
2875         m2.insertNextCell(NORM_QUAD4,targetConn[0:4])
2876         m2.finishInsertingCells();
2877         myCoords=DataArrayDouble.New();
2878         myCoords.setValues(targetCoords,4,2);
2879         m2.setCoords(myCoords);
2880         m2.checkCoherency();
2881         m1.checkCoherency();
2882         #
2883         expected1=[0.25,0.125,0.125,0.25,0.25]
2884         f1=m1.getMeasureField(False);
2885         f2=m2.getMeasureField(False);
2886         self.assertEqual(5,f1.getArray().getNumberOfTuples());
2887         self.assertEqual(1,f2.getArray().getNumberOfTuples());
2888         for i in xrange(5):
2889             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2890             pass
2891         self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2892         self.assertRaises(InterpKernelException,m1.tryToShareSameCoordsPermute,m2,1e-12);# <- here in this order the sharing is impossible.
2893         # Let's go for deeper test of tryToShareSameCoordsPermute
2894         m2.tryToShareSameCoordsPermute(m1,1e-12);
2895         f1=m1.getMeasureField(False);
2896         f2=m2.getMeasureField(False);
2897         self.assertEqual(5,f1.getArray().getNumberOfTuples());
2898         self.assertEqual(1,f2.getArray().getNumberOfTuples());
2899         for i in xrange(5):
2900             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2901             pass
2902         self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2903         pass
2904
2905     def testChangeUnderlyingMesh1(self):
2906         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2907         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2908         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2909         f1.setMesh(mesh1);
2910         array=DataArrayDouble.New();
2911         arr=[7., 107., 8., 108., 9., 109., 10., 110., 11., 111., 12., 112., 13., 113., 14., 114., 15., 115., 16., 116.]
2912         array.setValues(arr,mesh1.getNumberOfCells(),2);
2913         f1.setArray(array);
2914         #
2915         renum=[0,2,1,3,4,5,6,8,7,9]
2916         mesh2.renumberCells(renum,False);
2917         #self.assertTrue(f1.getMesh()==mesh1);
2918         f1.changeUnderlyingMesh(mesh1,10,1e-12);# nothing done only to check that nothing done.
2919         #self.assertTrue(f1.getMesh()==mesh1);
2920         f1.changeUnderlyingMesh(mesh2,10,1e-12);
2921         #self.assertTrue(f1.getMesh()==mesh2);
2922         expected1=[7.,107.,9.,109.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.]
2923         for i in xrange(20):
2924             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
2925             pass
2926         #
2927         f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2928         f1.setMesh(mesh1);
2929         array=DataArrayDouble.New();
2930         arr2=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.,17.,117.]
2931         array.setValues(arr2,mesh1.getNumberOfNodes(),2);
2932         f1.setArray(array);
2933         #
2934         renum2=[0,2,10,3,4,5,6,8,7,9,1]
2935         mesh2.renumberNodes(renum2,11);
2936         #self.assertTrue(f1.getMesh()==mesh1);
2937         f1.changeUnderlyingMesh(mesh2,10,1e-12);
2938         #self.assertTrue(f1.getMesh()==mesh2);
2939         expected2=[7.,107.,17.,117.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.,9.,109.]
2940         for i in xrange(22):
2941             self.assertAlmostEqual(expected2[i],f1.getArray().getIJ(0,i),12);
2942             pass
2943         pass
2944
2945     def testGetMaxValue1(self):
2946         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2947         nbOfCells=m.getNumberOfCells();
2948         f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2949         f.setMesh(m);
2950         a1=DataArrayDouble.New();
2951         val1=[3.,4.,5.,6.,7.]
2952         a1.setValues(val1,nbOfCells,1);
2953         a2=DataArrayDouble.New();
2954         val2=[0.,1.,2.,8.,7.]
2955         a2.setValues(val2,nbOfCells,1);
2956         f.setArray(a1);
2957         f.setEndArray(a2);
2958         f.setEndTime(3.,3,4);
2959         f.checkCoherency();
2960         #
2961         self.assertAlmostEqual(8.,f.getMaxValue(),14);
2962         self.assertAlmostEqual(0.,f.getMinValue(),14);
2963         self.assertAlmostEqual(5.,f.getAverageValue(),14);
2964         self.assertAlmostEqual(5.125,f.getWeightedAverageValue(0,True),14);
2965         a1.setIJ(0,2,9.5);
2966         self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2967         self.assertAlmostEqual(0.,f.getMinValue(),14);
2968         a2.setIJ(0,0,9.);
2969         self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2970         self.assertAlmostEqual(1.,f.getMinValue(),14);
2971         pass
2972
2973     def testSubstractInPlaceDM1(self):
2974         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2975         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2976         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2977         f1.setMesh(mesh1);
2978         array=DataArrayDouble.New();
2979         arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
2980         array.setValues(arr,mesh1.getNumberOfCells(),2);
2981         f1.setArray(array);
2982         #
2983         self.assertEqual(10,f1.getNumberOfTuples());
2984         self.assertEqual(2,f1.getNumberOfComponents());
2985         self.assertEqual(20,f1.getNumberOfValues());
2986         #
2987         renum=[0,2,3,1,4,5,6,8,7,9]
2988         mesh2.renumberCells(renum,False);
2989         #
2990         f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2991         f2.setMesh(mesh2);
2992         array=DataArrayDouble.New();
2993         arr2=[7.1,107.1,10.1,110.1,8.1,108.1,9.1,109.1,11.1,111.1,12.1,112.1,13.1,113.1,15.1,115.1,14.1,114.1,16.1,116.1]
2994         array.setValues(arr2,mesh2.getNumberOfCells(),2);
2995         f2.setArray(array);
2996         #
2997         f1.substractInPlaceDM(f2,10,1e-12);
2998         f1.applyFunc(1,"abs(x+y+0.2)");
2999         self.assertAlmostEqual(0.,f1.getMaxValue(),13);
3000         pass
3001
3002     def testDotCrossProduct1(self):
3003         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3004         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3005         f1.setTime(2.3,5,6);
3006         f1.setMesh(mesh1);
3007         array=DataArrayDouble.New();
3008         arr1=[7.,107.,207.,8.,108.,208.,9.,109.,209.,10.,110.,210.,11.,111.,211.,12.,112.,212.,13.,113.,213.,14.,114.,214.,15.,115.,215.,16.,116.,216.]
3009         array.setValues(arr1,mesh1.getNumberOfCells(),3);
3010         f1.setArray(array);
3011         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3012         f2.setTime(7.8,4,5);
3013         f2.setMesh(mesh1);
3014         array=DataArrayDouble.New();
3015         arr2=[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.]
3016         array.setValues(arr2,mesh1.getNumberOfCells(),3);
3017         f2.setArray(array);
3018         #
3019         f3=f1.dot(f2);
3020         expected1=[842.,1820.,2816.,3830.,4862.,5912.,6980.,8066.,9170.,10292.]
3021         for i in xrange(10):
3022             self.assertAlmostEqual(expected1[i],f3.getIJ(i,0),9);
3023             pass
3024         #
3025         f4=f1.crossProduct(f2);
3026         expected2=[-93., 186., -93., -392., 784., -392., -691., 1382., -691., -990., 1980., -990., -1289., 2578., -1289., -1588., 3176., -1588., -1887., 3774., -1887., -2186., 4372., -2186., -2485., 4970., -2485., -2784., 5568., -2784.]
3027         for i in xrange(30):
3028             self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
3029             pass
3030         pass
3031
3032     def testMinMaxFields1(self):
3033         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3034         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3035         f1.setTime(2.3,5,6);
3036         f1.setMesh(mesh1);
3037         array=DataArrayDouble.New();
3038         arr1=[7.,107.,207.,8.,108.,208.,9.,109.,209.,10.,110.,210.,11.,111.,211.,12.,112.,212.,13.,113.,213.,14.,114.,214.,15.,115.,215.,16.,116.,216.]
3039         array.setValues(arr1,mesh1.getNumberOfCells(),3);
3040         f1.setArray(array);
3041         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3042         f2.setTime(7.8,4,5);
3043         f2.setMesh(mesh1);
3044         array=DataArrayDouble.New();
3045         arr2=[6.,108.,206.,9.,107.,209.,8.,110.,208.,11.,109.,211.,10.,112.,210.,13.,111.,213.,12.,114.,212.,15.,113.,215.,14.,116.,214.,17.,115.,217.]
3046         array.setValues(arr2,mesh1.getNumberOfCells(),3);
3047         f2.setArray(array);
3048         #
3049         f3=f1.max(f2);
3050         expected1=[7.,108.,207.,9.,108.,209.,9.,110.,209.,11.,110.,211.,11.,112.,211.,13.,112.,213.,13.,114.,213.,15.,114.,215.,15.,116.,215.,17.,116.,217.]
3051         for i in xrange(30):
3052             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),9);
3053             pass
3054         #
3055         f4=f1.min(f2);
3056         expected2=[6.,107.,206.,8.,107.,208.,8.,109.,208.,10.,109.,210.,10.,111.,210.,12.,111.,212.,12.,113.,212.,14.,113.,214.,14.,115.,214.,16.,115.,216.]
3057         for i in xrange(30):
3058             self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
3059             pass
3060         #
3061         pass
3062
3063     def testApplyLin1(self):
3064         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3065         f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
3066         f1.setMesh(mesh1);
3067         array=DataArrayDouble.New();
3068         arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
3069         array.setValues(arr,mesh1.getNumberOfCells(),2);
3070         f1.setArray(array);
3071         #
3072         f1.applyLin(2.,3.,0);
3073         expected1=[17.,107.,19.,108.,21.,109.,23.,110.,25.,111.,27.,112.,29.,113.,31.,114.,33.,115.,35.,116.]
3074         for i in xrange(20):
3075             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),9);
3076             pass
3077         #
3078         arr2=[2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3079         array=DataArrayDouble.New();
3080         array.setValues(arr2,mesh1.getNumberOfCells(),2);
3081         f1.setEndArray(array);
3082         #
3083         f1.applyLin(4.,5.,1);
3084         #
3085         expected2=[17.,433.,19.,437.,21.,441.,23.,445.,25.,449.,27.,453.,29.,457.,31.,461.,33.,465.,35.,469.]
3086         for i in xrange(20):
3087             self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),9);
3088             pass
3089         expected3=[2.,413.,3.,417.,4.,421.,5.,425.,6.,429.,7.,433.,8.,437.,9.,441.,10.,445.,11.,449.]
3090         for i in xrange(20):
3091             self.assertAlmostEqual(expected3[i],f1.getEndArray().getIJ(0,i),9);
3092             pass
3093         #
3094         pass
3095
3096     def testGetIdsInRange1(self):
3097         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3098         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3099         f1.setTime(2.3,5,6);
3100         f1.setMesh(mesh1);
3101         array=DataArrayDouble.New();
3102         arr1=[2.,8.,6.,5.,11.,7.,9.,3.,10.,4.]
3103         array.setValues(arr1,mesh1.getNumberOfCells(),1);
3104         f1.setArray(array);
3105         #
3106         f1.checkCoherency();
3107         da=f1.getIdsInRange(2.9,7.1);
3108         self.failUnlessEqual(5,da.getNbOfElems());
3109         expected1=[2,3,5,7,9]
3110         self.failUnlessEqual(expected1,list(da.getValues()));
3111         da=f1.getIdsInRange(8.,12.);
3112         self.failUnlessEqual(4,da.getNbOfElems());
3113         expected2=[1,4,6,8]
3114         self.failUnlessEqual(expected2,list(da.getValues()));
3115         #
3116         pass
3117
3118     def testBuildSubPart1(self):
3119         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3120         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3121         f1.setTime(2.3,5,6);
3122         f1.setMesh(mesh1);
3123         array=DataArrayDouble.New();
3124         arr1=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.]
3125         array.setValues(arr1,mesh1.getNumberOfCells(),2);
3126         f1.setArray(array);
3127         #
3128         part1=[2,1,4]
3129         f2=f1[part1];
3130         f2.zipCoords()
3131         self.failUnlessEqual(3,f2.getNumberOfTuples());
3132         self.failUnlessEqual(2,f2.getNumberOfComponents());
3133         expected1=[5.,105.,4.,104.,7.,107.]
3134         for i in xrange(6):
3135             self.assertAlmostEqual(f2.getIJ(0,i),expected1[i],12);
3136             pass
3137         self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3138         self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3139         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3140         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3141         m2C=f2.getMesh();
3142         self.failUnlessEqual(13,m2C.getMeshLength());
3143         expected2=[0.2, -0.3, 0.7, -0.3, 0.2, 0.2, 0.7, 0.2, 0.2, 0.7, 0.7, 0.7]
3144         for i in xrange(12):
3145             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3146             pass
3147         expected3=[3,2,3,1,3,0,2,1,4,4,5,3,2]
3148         self.failUnlessEqual(expected3,list(m2C.getNodalConnectivity().getValues()));
3149         expected4=[0,4,8,13]
3150         self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3151         # Test with field on nodes.
3152         f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3153         f1.setTime(2.3,5,6);
3154         f1.setMesh(mesh1);
3155         array=DataArrayDouble.New();
3156         arr2=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3157         array.setValues(arr2,mesh1.getNumberOfNodes(),2);
3158         f1.setArray(array);
3159         part2=[1,2]
3160         f2=f1.buildSubPart(part2);
3161         self.failUnlessEqual(4,f2.getNumberOfTuples());
3162         self.failUnlessEqual(2,f2.getNumberOfComponents());
3163         expected5=[4.,104.,5.,105.,7.,107.,8.,108.]
3164         for i in xrange(8):
3165             self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3166             pass
3167         self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3168         self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3169         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3170         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3171         m2C=f2.getMesh();
3172         self.failUnlessEqual(8,m2C.getMeshLength());
3173         for i in xrange(8):#8 is not an error
3174             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3175             pass
3176         self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:]);
3177         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3178         self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3179         #idem previous because nodes of cell#4 are not fully present in part3
3180         part3=[1,2]
3181         arrr=DataArrayInt.New();
3182         arrr.setValues(part3,2,1);
3183         f2=f1.buildSubPart(arrr);
3184         self.failUnlessEqual(4,f2.getNumberOfTuples());
3185         self.failUnlessEqual(2,f2.getNumberOfComponents());
3186         for i in xrange(8):
3187             self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3188             pass
3189         self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3190         self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3191         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3192         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3193         m2C=f2.getMesh();
3194         self.failUnlessEqual(8,m2C.getMeshLength());
3195         for i in xrange(8):#8 is not an error
3196             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3197             pass
3198         self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3199         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3200         self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3201         #
3202         part4=[1,2,4]
3203         f2=f1.buildSubPart(part4);
3204         self.failUnlessEqual(6,f2.getNumberOfTuples());
3205         self.failUnlessEqual(2,f2.getNumberOfComponents());
3206         expected6=[4.,104.,5.,105.,7.,107.,8.,108.,10.,110.,11.,111.]
3207         for i in xrange(12):
3208             self.assertAlmostEqual(f2.getIJ(0,i),expected6[i],12);
3209             pass
3210         self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3211         self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3212         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3213         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3214         m2C=f2.getMesh();
3215         self.failUnlessEqual(13,m2C.getMeshLength());
3216         for i in xrange(12):
3217             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3218             pass
3219         self.failUnlessEqual(expected3[0:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3220         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[0:4]);
3221         self.failUnlessEqual(expected3[8:13],list(m2C.getNodalConnectivity().getValues())[8:13]);
3222         self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3223         pass
3224
3225     def testDoublyContractedProduct1(self):
3226         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3227         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3228         f1.setMesh(mesh1);
3229         array=DataArrayDouble.New();
3230         arr1=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3231         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3232         f1.setArray(array);
3233         f1.checkCoherency();
3234         #
3235         f2=f1.doublyContractedProduct();
3236         f2.checkCoherency();
3237         self.assertEqual(1,f2.getNumberOfComponents());
3238         self.assertEqual(5,f2.getNumberOfTuples());
3239         for i in xrange(5):
3240             self.assertAlmostEqual(3906.56,f2.getIJ(i,0),9);
3241             pass
3242         #
3243         pass
3244
3245     def testDeterminant1(self):
3246         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3247         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
3248         f1.setTime(2.3,5,6);
3249         f1.setEndTime(3.8,7,3);
3250         f1.setMesh(mesh1);
3251         array=DataArrayDouble.New();
3252         arr1=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3253         array.setValues(arr1,mesh1.getNumberOfCells(),4);
3254         f1.setArray(array);
3255         #4 components
3256         f1.checkCoherency();
3257         f2=f1.determinant();
3258         f2.checkCoherency();
3259         self.assertEqual(CONST_ON_TIME_INTERVAL,f2.getTimeDiscretization());
3260         self.assertEqual(1,f2.getNumberOfComponents());
3261         self.assertEqual(5,f2.getNumberOfValues());
3262         for i in xrange(5):
3263             self.assertAlmostEqual(-2.42,f2.getIJ(i,0),13);
3264             pass
3265         #6 components multi arrays with end array not defined
3266         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3267         f1.setTime(2.3,5,6);
3268         f1.setEndTime(3.8,7,3);
3269         f1.setMesh(mesh1);
3270         array=DataArrayDouble.New();
3271         arr2=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7,
3272               1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3273         array.setValues(arr2,mesh1.getNumberOfNodes(),6);
3274         f1.setArray(array);
3275         self.assertRaises(InterpKernelException,f1.checkCoherency);#no end array specified !
3276         #
3277         f2=f1.determinant();
3278         self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3279         self.assertEqual(1,f2.getArray().getNumberOfComponents());
3280         self.assertEqual(9,f2.getNumberOfTuples());
3281         for i in xrange(9):
3282             self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3283             pass
3284         #6 components multi arrays with end array defined
3285         array=DataArrayDouble.New();
3286         arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5,
3287               7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3288         array.setValues(arr3,mesh1.getNumberOfNodes(),6);
3289         f1.setEndArray(array);
3290         f1.checkCoherency();
3291         f2=f1.determinant();
3292         f2.checkCoherency();
3293         self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3294         self.assertEqual(1,f2.getNumberOfComponents());
3295         self.assertEqual(9,f2.getNumberOfTuples());
3296         time2,it,order=f2.getTime()
3297         self.assertAlmostEqual(2.3,time2,12);
3298         self.assertEqual(5,it);
3299         self.assertEqual(6,order);
3300         time2,it,order=f2.getEndTime()
3301         self.assertAlmostEqual(3.8,time2,12);
3302         self.assertEqual(7,it);
3303         self.assertEqual(3,order);
3304         for i in xrange(9):
3305             self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3306             self.assertAlmostEqual(1289.685,f2.getEndArray().getIJ(i,0),9);
3307             pass
3308         #9 components
3309         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3310         f1.setTime(7.8,10,2);
3311         f1.setMesh(mesh1);
3312         array=DataArrayDouble.New();
3313         arr4=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3314         array.setValues(arr4,mesh1.getNumberOfCells(),9);
3315         f1.setArray(array);
3316         #
3317         f1.checkCoherency();
3318         f2=f1.determinant();
3319         f2.checkCoherency();
3320         self.assertEqual(ONE_TIME,f2.getTimeDiscretization());
3321         self.assertEqual(1,f2.getNumberOfComponents());
3322         self.assertEqual(5,f2.getNumberOfTuples());
3323         time2,it,order=f2.getTime()
3324         self.assertAlmostEqual(7.8,time2,12);
3325         self.assertEqual(10,it);
3326         self.assertEqual(2,order);
3327         for i in xrange(5):
3328             self.assertAlmostEqual(3.267,f2.getIJ(i,0),13);
3329             pass
3330         pass
3331
3332     def testEigenValues1(self):
3333         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3334         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3335         f1.setMesh(mesh1);
3336         array=DataArrayDouble.New();
3337         arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3338         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3339         f1.setArray(array);
3340         f1.checkCoherency();
3341         #
3342         f2=f1.eigenValues();
3343         f2.checkCoherency();
3344         self.assertEqual(3,f2.getNumberOfComponents());
3345         self.assertEqual(5,f2.getNumberOfTuples());
3346         expected1=[13.638813677891717,-4.502313844635971,-2.2364998332557486]
3347         for i in xrange(5):
3348             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3349             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3350             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3351             pass
3352         pass
3353
3354     def testEigenVectors1(self):
3355         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3356         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3357         f1.setMesh(mesh1);
3358         array=DataArrayDouble.New();
3359         arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3360         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3361         f1.setArray(array);
3362         f1.checkCoherency();
3363         #
3364         f2=f1.eigenVectors();
3365         f2.checkCoherency();
3366         self.assertEqual(9,f2.getNumberOfComponents());
3367         self.assertEqual(5,f2.getNumberOfTuples());
3368         expected1=[0.5424262364180696, 0.5351201064614425, 0.6476266283176001,#eigenvect 0
3369                    0.7381111277307373, 0.06458838384003074, -0.6715804522117897,#eigenvect 1
3370                    -0.4012053603397987, 0.8423032781211455, -0.3599436712889738#eigenvect 2
3371                    ]
3372         for i in xrange(5):
3373             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3374             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3375             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3376             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3377             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3378             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3379             self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3380             self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3381             self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3382             pass
3383         #
3384         pass
3385
3386     def testInverse1(self):
3387         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3388         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3389         f1.setMesh(mesh1);
3390         array=DataArrayDouble.New();
3391         arr1=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3392         array.setValues(arr1,mesh1.getNumberOfCells(),9);
3393         f1.setArray(array);
3394         f1.checkCoherency();
3395         #
3396         f2=f1.inverse();
3397         f2.checkCoherency();
3398         self.assertEqual(9,f2.getNumberOfComponents());
3399         self.assertEqual(5,f2.getNumberOfTuples());
3400         expected1=[-2.6538108356290113, 2.855831037649208, -1.1111111111111067, 3.461891643709813, -4.775022956841121, 2.2222222222222143, -1.1111111111111054, 2.222222222222214, -1.1111111111111072]
3401         for i in xrange(5):
3402             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3403             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3404             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3405             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3406             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3407             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3408             self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3409             self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3410             self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3411             pass
3412         #
3413         array=DataArrayDouble.New();
3414         arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3415         array.setValues(arr3,mesh1.getNumberOfCells(),6);
3416         f1.setArray(array);
3417         f1.checkCoherency();
3418         #
3419         f2=f1.inverse();
3420         f2.checkCoherency();
3421         self.assertEqual(6,f2.getNumberOfComponents());
3422         self.assertEqual(5,f2.getNumberOfTuples());
3423         expected3=[-0.3617705098531818, -0.8678630828458127, -0.026843764174972983, 0.5539957431465833, 0.13133439560823013, -0.05301294502145887]
3424         for i in xrange(5):
3425             self.assertAlmostEqual(expected3[0],f2.getIJ(i,0),13);
3426             self.assertAlmostEqual(expected3[1],f2.getIJ(i,1),13);
3427             self.assertAlmostEqual(expected3[2],f2.getIJ(i,2),13);
3428             self.assertAlmostEqual(expected3[3],f2.getIJ(i,3),13);
3429             self.assertAlmostEqual(expected3[4],f2.getIJ(i,4),13);
3430             self.assertAlmostEqual(expected3[5],f2.getIJ(i,5),13);
3431             pass
3432         #
3433         array=DataArrayDouble.New();
3434         arr2=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3435         array.setValues(arr2,mesh1.getNumberOfCells(),4);
3436         f1.setArray(array);
3437         f1.checkCoherency();
3438         #
3439         f2=f1.inverse();
3440         f2.checkCoherency();
3441         self.assertEqual(4,f2.getNumberOfComponents());
3442         self.assertEqual(5,f2.getNumberOfTuples());
3443         expected2=[-1.8595041322314059, 0.9504132231404963, 1.404958677685951, -0.49586776859504156]
3444         for i in xrange(5):
3445             self.assertAlmostEqual(expected2[0],f2.getIJ(i,0),13);
3446             self.assertAlmostEqual(expected2[1],f2.getIJ(i,1),13);
3447             self.assertAlmostEqual(expected2[2],f2.getIJ(i,2),13);
3448             self.assertAlmostEqual(expected2[3],f2.getIJ(i,3),13);
3449             pass
3450         #
3451         pass
3452
3453     def testTrace1(self):
3454         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3455         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3456         f1.setMesh(mesh1);
3457         array=DataArrayDouble.New();
3458         arr1=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3459         array.setValues(arr1,mesh1.getNumberOfCells(),9);
3460         f1.setArray(array);
3461         f1.checkCoherency();
3462         #
3463         f2=f1.trace();
3464         f2.checkCoherency();
3465         self.assertEqual(1,f2.getNumberOfComponents());
3466         self.assertEqual(5,f2.getNumberOfTuples());
3467         for i in xrange(5):
3468             self.assertAlmostEqual(15.9,f2.getIJ(i,0),13);
3469             pass
3470         #
3471         array=DataArrayDouble.New();
3472         arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3473         array.setValues(arr3,mesh1.getNumberOfCells(),6);
3474         f1.setArray(array);
3475         f1.checkCoherency();
3476         #
3477         f2=f1.trace();
3478         f2.checkCoherency();
3479         self.assertEqual(1,f2.getNumberOfComponents());
3480         self.assertEqual(5,f2.getNumberOfTuples());
3481         for i in xrange(5):
3482             self.assertAlmostEqual(25.8,f2.getIJ(i,0),13);
3483             pass
3484         #
3485         array=DataArrayDouble.New();
3486         arr2=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3487         array.setValues(arr2,mesh1.getNumberOfCells(),4);
3488         f1.setArray(array);
3489         f1.checkCoherency();
3490         #
3491         f2=f1.trace();
3492         f2.checkCoherency();
3493         self.assertEqual(1,f2.getNumberOfComponents());
3494         self.assertEqual(5,f2.getNumberOfTuples());
3495         for i in xrange(5):
3496             self.assertAlmostEqual(5.7,f2.getIJ(i,0),13);
3497             pass
3498         #
3499         pass
3500
3501     def testDeviator1(self):
3502         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3503         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3504         f1.setMesh(mesh1);
3505         array=DataArrayDouble.New();
3506         arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3507         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3508         f1.setArray(array);
3509         f1.checkCoherency();
3510         #
3511         f2=f1.deviator();
3512         f2.checkCoherency();
3513         self.assertEqual(6,f2.getNumberOfComponents());
3514         self.assertEqual(5,f2.getNumberOfTuples());
3515         expected1=[-1.1,0.,1.1,4.5,5.6,6.7]
3516         for i in xrange(5):
3517             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3518             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3519             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3520             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3521             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3522             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3523             pass
3524         #
3525         pass
3526
3527     def testMagnitude1(self):
3528         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3529         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3530         f1.setMesh(mesh1);
3531         array=DataArrayDouble.New();
3532         arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6]
3533         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3534         f1.setArray(array);
3535         f1.checkCoherency();
3536         #
3537         f2=f1.magnitude();
3538         f2.checkCoherency();
3539         self.assertEqual(1,f2.getNumberOfComponents());
3540         self.assertEqual(5,f2.getNumberOfTuples());
3541         for i in xrange(5):
3542             self.assertAlmostEqual(8.3606219864313918,f2.getIJ(i,0),13);
3543             pass
3544         #
3545         pass
3546
3547     def testMaxPerTuple1(self):
3548         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3549         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3550         f1.setMesh(mesh1);
3551         array=DataArrayDouble.New();
3552         arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3553         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3554         f1.setArray(array);
3555         f1.checkCoherency();
3556         #
3557         f2=f1.maxPerTuple();
3558         f2.checkCoherency();
3559         self.assertEqual(1,f2.getNumberOfComponents());
3560         self.assertEqual(5,f2.getNumberOfTuples());
3561         for i in xrange(5):
3562             self.assertAlmostEqual(5.6,f2.getIJ(i,0),13);
3563             pass
3564         #
3565         d2,d2I=array.maxPerTupleWithCompoId()
3566         self.assertEqual(1,d2.getNumberOfComponents());
3567         self.assertEqual(5,d2.getNumberOfTuples());
3568         for i in xrange(5):
3569             self.assertAlmostEqual(5.6,d2.getIJ(i,0),13);
3570             pass
3571         self.assertTrue(d2I.isEqual(DataArrayInt([4,3,2,0,1])))
3572         pass
3573
3574     def testChangeNbOfComponents(self):
3575         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3576         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3577         f1.setMesh(mesh1);
3578         array=DataArrayDouble.New();
3579         arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3580         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3581         f1.setArray(array);
3582         f1.checkCoherency();
3583         #
3584         f1.changeNbOfComponents(3,7.77);
3585         f1.checkCoherency();
3586         self.assertEqual(3,f1.getNumberOfComponents());
3587         self.assertEqual(5,f1.getNumberOfTuples());
3588         expected1=[1.2,2.3,3.4, 1.2,3.4,4.5, 3.4,4.5,5.6, 5.6,1.2,2.3, 4.5,5.6,1.2]
3589         for i in xrange(15):
3590             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),13);
3591             pass
3592         f1.changeNbOfComponents(4,7.77);
3593         f1.checkCoherency();
3594         self.assertEqual(4,f1.getNumberOfComponents());
3595         self.assertEqual(5,f1.getNumberOfTuples());
3596         expected2=[1.2,2.3,3.4,7.77, 1.2,3.4,4.5,7.77, 3.4,4.5,5.6,7.77, 5.6,1.2,2.3,7.77, 4.5,5.6,1.2,7.77]
3597         for i in xrange(20):
3598             self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),13);
3599             pass
3600         #
3601         pass
3602
3603     def testSortPerTuple1(self):
3604         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3605         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3606         f1.setMesh(mesh1);
3607         array=DataArrayDouble.New();
3608         arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3609         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3610         f1.setArray(array);
3611         f1.checkCoherency();
3612         #
3613         f1.sortPerTuple(True);
3614         f1.checkCoherency();
3615         self.assertEqual(5,f1.getNumberOfComponents());
3616         self.assertEqual(5,f1.getNumberOfTuples());
3617         for i in xrange(5):
3618             self.assertAlmostEqual(arr1[0],f1.getIJ(i,0),13);
3619             self.assertAlmostEqual(arr1[1],f1.getIJ(i,1),13);
3620             self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3621             self.assertAlmostEqual(arr1[3],f1.getIJ(i,3),13);
3622             self.assertAlmostEqual(arr1[4],f1.getIJ(i,4),13);
3623             pass
3624         #
3625         f1.sortPerTuple(False);
3626         f1.checkCoherency();
3627         self.assertEqual(5,f1.getNumberOfComponents());
3628         self.assertEqual(5,f1.getNumberOfTuples());
3629         for i in xrange(5):
3630             self.assertAlmostEqual(arr1[4],f1.getIJ(i,0),13);
3631             self.assertAlmostEqual(arr1[3],f1.getIJ(i,1),13);
3632             self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3633             self.assertAlmostEqual(arr1[1],f1.getIJ(i,3),13);
3634             self.assertAlmostEqual(arr1[0],f1.getIJ(i,4),13);
3635             pass
3636         #
3637         pass
3638
3639     def testIsEqualWithoutConsideringStr1(self):
3640         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3641         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
3642         #
3643         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3644         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3645         mesh2.setName("rr");
3646         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3647         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3648         da1,da2=mesh1.checkGeoEquivalWith(mesh2,2,1e-12);
3649         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);
3650         mesh2.setName("");
3651         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3652         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3653         mesh2.getCoords().setInfoOnComponent(0,"tty");
3654         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3655         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3656         mesh2.getCoords().setInfoOnComponent(0,"");
3657         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3658         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3659         mesh2.getCoords().setInfoOnComponent(1,"tty");
3660         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3661         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3662         mesh2.getCoords().setInfoOnComponent(1,"");
3663         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3664         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3665         tmp=mesh2.getCoords().getIJ(0,3);
3666         mesh2.getCoords().setIJ(0,3,9999.);
3667         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3668         self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3669         mesh2.getCoords().setIJ(0,3,tmp);
3670         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3671         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3672         tmp2=mesh2.getNodalConnectivity().getIJ(0,4);
3673         mesh2.getNodalConnectivity().setIJ(0,4,0);
3674         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3675         self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3676         mesh2.getNodalConnectivity().setIJ(0,4,tmp2);
3677         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3678         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3679         #
3680         f1=mesh1.getMeasureField(True);
3681         f2=mesh2.getMeasureField(True);
3682         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3683         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3684         f2.setName("ftest");
3685         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3686         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3687         f1.setName("ftest");
3688         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3689         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3690         #
3691         f2.getArray().setInfoOnComponent(0,"eee");
3692         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3693         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3694         f2.getArray().setInfoOnComponent(0,"");
3695         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3696         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3697         #
3698         f2.getArray().setIJ(1,0,0.123);
3699         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3700         self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3701         f2.getArray().setIJ(1,0,0.125);
3702         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3703         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3704         #
3705         pass
3706     
3707     def testGetNodeIdsOfCell1(self):
3708         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3709         li=mesh1.getNodeIdsOfCell(1)
3710         expected1=[1, 4, 2]
3711         self.assertEqual(expected1,list(li))
3712         li=mesh1.getCoordinatesOfNode(4)
3713         self.assertEqual(2,len(li))
3714         self.assertAlmostEqual(0.2,li[0],13);
3715         self.assertAlmostEqual(0.2,li[1],13);
3716         li=mesh1.getCoords().getValuesAsTuple()
3717         self.assertEqual(9,len(li))
3718         li2=mesh1.getNodalConnectivityIndex().getValuesAsTuple()
3719         self.assertEqual(6,len(li2))
3720         pass
3721
3722     def testGetEdgeRatioField1(self):
3723         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3724         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
3725         f1=m1.getEdgeRatioField();
3726         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
3727         self.assertEqual("us",f1.getTimeUnit())
3728         self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3729         self.assertEqual(5,f1.getNumberOfTuples());
3730         self.assertEqual(1,f1.getNumberOfComponents());
3731         expected1=[1.,1.4142135623730951, 1.4142135623730951,1.,1.]
3732         for i in xrange(5):
3733             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),14);
3734             pass
3735         #
3736         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
3737         f1=m1.getEdgeRatioField();
3738         self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3739         self.assertEqual(5,f1.getNumberOfTuples());
3740         self.assertEqual(1,f1.getNumberOfComponents());
3741         expected2=[1.4142135623730951, 1.7320508075688772, 1.7320508075688772, 1.4142135623730951, 1.4142135623730951]
3742         for i in xrange(5):
3743             self.assertAlmostEqual(expected2[i],f1.getIJ(i,0),14);
3744             pass
3745         pass
3746
3747     def testFillFromAnalytic3(self):
3748         m=MEDCouplingDataForTest.build2DTargetMesh_1()
3749         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME)
3750         self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"y+x");
3751         f1.setMesh(m)
3752         f1.setName("myField");
3753         f1.fillFromAnalytic(1,"y+x");
3754         f1.checkCoherency();
3755         self.assertEqual(f1.getName(),"myField");
3756         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
3757         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3758         self.assertEqual(1,f1.getNumberOfComponents());
3759         self.assertEqual(5,f1.getNumberOfTuples());
3760         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
3761         tmp=f1.getArray().getValues();
3762         self.assertEqual(len(values1),len(tmp))
3763         for i in xrange(len(values1)):
3764             self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
3765             pass
3766         #
3767         f1=MEDCouplingFieldDouble.New(ON_NODES,CONST_ON_TIME_INTERVAL)
3768         f1.setMesh(m)
3769         f1.fillFromAnalytic(1,"y+2*x");
3770         f1.setEndTime(1.2,3,4);
3771         f1.checkCoherency();
3772         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3773         self.assertEqual(f1.getTimeDiscretization(),CONST_ON_TIME_INTERVAL);
3774         self.assertEqual(1,f1.getNumberOfComponents());
3775         self.assertEqual(9,f1.getNumberOfTuples());
3776         values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3777         tmp=f1.getArray().getValues();
3778         self.assertEqual(len(values2),len(tmp))
3779         for i in xrange(len(values2)):
3780             self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
3781             pass
3782         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3783         f1.setMesh(m)
3784         f1.fillFromAnalytic(1,"2.*x+y");
3785         f1.setEndTime(1.2,3,4);
3786         f1.checkCoherency();
3787         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3788         self.assertEqual(f1.getTimeDiscretization(),LINEAR_TIME);
3789         self.assertEqual(1,f1.getNumberOfComponents());
3790         self.assertEqual(9,f1.getNumberOfTuples());
3791         tmp=f1.getArray().getValues();
3792         values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3793         self.assertEqual(len(values2Bis),len(tmp))
3794         for i in xrange(len(values2Bis)):
3795             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3796             pass
3797         tmp=f1.getEndArray().getValues();
3798         self.assertEqual(len(values2Bis),len(tmp))
3799         for i in xrange(len(values2Bis)):
3800             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3801             pass
3802         #
3803         f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3804         f1.setMesh(m)
3805         f1.fillFromAnalytic(2,"(x+y)*IVec+2*(x+y)*JVec");
3806         f1.checkCoherency();
3807         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3808         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3809         self.assertEqual(2,f1.getNumberOfComponents());
3810         self.assertEqual(9,f1.getNumberOfTuples());
3811         values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
3812         tmp=f1.getArray().getValues();
3813         self.assertEqual(len(values3),len(tmp))
3814         for i in xrange(len(values3)):
3815             self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
3816             pass
3817         values4=f1.accumulate();
3818         self.assertTrue(abs(3.6-values4[0])<1.e-12);
3819         self.assertTrue(abs(7.2-values4[1])<1.e-12);
3820         values4=f1.integral(True);
3821         self.assertTrue(abs(0.5-values4[0])<1.e-12);
3822         self.assertTrue(abs(1.-values4[1])<1.e-12);
3823         #
3824         f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
3825         f1.setMesh(m);
3826         self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"1./(x-0.2)");
3827         pass
3828
3829     def testFieldDoubleOpEqual1(self):
3830         m=MEDCouplingDataForTest.build2DTargetMesh_1();
3831         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3832         self.assertRaises(InterpKernelException,f1.assign,0.07);
3833         f1.setMesh(m);
3834         f1.assign(0.07);
3835         f1.checkCoherency();
3836         self.assertEqual(1,f1.getNumberOfComponents());
3837         self.assertEqual(5,f1.getNumberOfTuples());
3838         for i in xrange(5):
3839             self.assertAlmostEqual(0.07,f1.getIJ(i,0),16);
3840             pass
3841         f1.assign(0.09);
3842         f1.checkCoherency();
3843         self.assertEqual(1,f1.getNumberOfComponents());
3844         self.assertEqual(5,f1.getNumberOfTuples());
3845         for i in xrange(5):
3846             self.assertAlmostEqual(0.09,f1.getIJ(i,0),16);
3847             pass
3848         #
3849         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3850         f1.setEndTime(4.5,2,3);
3851         f1.setMesh(m);
3852         f1.assign(0.08);
3853         f1.checkCoherency();
3854         self.assertEqual(1,f1.getNumberOfComponents());
3855         self.assertEqual(9,f1.getNumberOfTuples());
3856         for i in xrange(9):
3857             self.assertAlmostEqual(0.08,f1.getIJ(i,0),16);
3858             pass
3859         self.assertEqual(1,f1.getEndArray().getNumberOfComponents());
3860         self.assertEqual(9,f1.getEndArray().getNumberOfTuples());
3861         for i in xrange(9):
3862             self.assertAlmostEqual(0.08,f1.getEndArray().getIJ(i,0),16);
3863             pass
3864         pass
3865
3866     def testAreaBary3D2(self):
3867         coordsForHexa8=[-75.45749305371, 180.95495078401, 39.515472018008,
3868                         -9.755591679144, 23.394927935279, 5.108794294848,
3869                         14.337630157832, 61.705351002702, 160.42422501908,
3870                         -27.273893776752, 167.567731083961, 192.830034145464,
3871                         99.857193154796,264.499264735586,-8.287335493412,
3872                         144.939882761126,156.38626563134,-31.896173894226,
3873                         161.34096835726,182.4654895809,73.832387065572,
3874                         132.680430393685,255.37973247196,96.15235602819];
3875         volHexa8=3258520.29637466;
3876         baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644]
3877         
3878         coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588,
3879                          8.461744647847,76.653979804423,165.00018874933,
3880                          -27.273893776752,167.567731083961,192.830034145464,
3881                          106.586501038965,262.629609408327,13.124533008813,
3882                          155.465082847275,197.414118382622,78.408350795821,
3883                          132.680430393685,255.37973247196,96.15235602819];
3884         volPenta6=944849.868507338;
3885         baryPenta6=[39.631002313543,182.692711783428,106.98540473964]
3886         
3887         coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819,
3888                         -27.273893776752,167.567731083961,192.830034145464,
3889                         8.461744647847,76.653979804423,165.00018874933,
3890                         155.465082847275,197.414118382622,78.408350795821,
3891                         -68.199829618726,178.938498373416,62.608505919588];
3892         volPyra5=756943.92980254;
3893         baryPyra5=[29.204294116618,172.540129749156,118.01035951483]
3894         mesh=MEDCouplingUMesh.New("Bary3D2",3);
3895         coo=DataArrayDouble.New();
3896         tmp=coordsForHexa8+coordsForPenta6+coordsForPyra5
3897         coo.setValues(tmp,19,3);
3898         mesh.setCoords(coo);
3899         #
3900         tmpConn=[0,1,2,3,4,5,6,7]
3901         mesh.allocateCells(3);
3902         self.assertRaises(InterpKernelException,mesh.insertNextCell,NORM_HEXA8,9,tmpConn[0:8])
3903         mesh.insertNextCell(NORM_HEXA8,tmpConn[0:8])
3904         mesh.insertNextCell(NORM_PENTA6,6,[i+8 for i in tmpConn])
3905         mesh.insertNextCell(NORM_PYRA5,5,[i+14 for i in tmpConn])
3906         mesh.finishInsertingCells();
3907         mesh.checkCoherency();
3908         mesh.mergeNodes(1e-7)
3909         self.assertEqual(12,mesh.getNumberOfNodes());
3910         vols=mesh.getMeasureField(True);
3911         self.assertEqual(3,vols.getNumberOfTuples());
3912         self.assertEqual(1,vols.getNumberOfComponents());
3913         self.assertAlmostEqual(volHexa8,vols.getIJ(0,0),6);
3914         self.assertAlmostEqual(volPenta6,vols.getIJ(1,0),7);
3915         self.assertAlmostEqual(volPyra5,vols.getIJ(2,0),7);
3916         bary=mesh.getBarycenterAndOwner();
3917         self.assertEqual(3,bary.getNumberOfTuples());
3918         self.assertEqual(3,bary.getNumberOfComponents());
3919         self.assertAlmostEqual(baryHexa8[0],bary.getIJ(0,0),11);
3920         self.assertAlmostEqual(baryHexa8[1],bary.getIJ(0,1),11);
3921         self.assertAlmostEqual(baryHexa8[2],bary.getIJ(0,2),11);
3922         self.assertAlmostEqual(baryPenta6[0],bary.getIJ(1,0),11);
3923         self.assertAlmostEqual(baryPenta6[1],bary.getIJ(1,1),11);
3924         self.assertAlmostEqual(baryPenta6[2],bary.getIJ(1,2),11);
3925         self.assertAlmostEqual(baryPyra5[0],bary.getIJ(2,0),11);
3926         self.assertAlmostEqual(baryPyra5[1],bary.getIJ(2,1),11);
3927         self.assertAlmostEqual(baryPyra5[2],bary.getIJ(2,2),11);
3928         pass
3929
3930     def testGetMeasureFieldCMesh1(self):
3931         m=MEDCouplingCMesh.New();
3932         da=DataArrayDouble.New();
3933         discX=[2.3,3.4,5.8,10.2]
3934         discY=[12.3,23.4,45.8]
3935         discZ=[-0.7,1.2,1.25,2.13,2.67]
3936         da.setValues(discX,4,1);
3937         m.setCoordsAt(0,da);
3938         m.checkCoherency();
3939         self.assertEqual(4,m.getNumberOfNodes());
3940         self.assertEqual(3,m.getNumberOfCells());
3941         self.assertEqual(1,m.getSpaceDimension());
3942         f=m.getMeasureField(True);
3943         self.assertEqual(3,f.getNumberOfTuples());
3944         self.assertEqual(1,f.getNumberOfComponents());
3945         expected1=[1.1,2.4,4.4]
3946         for i in xrange(3):
3947             self.assertAlmostEqual(expected1[i],f.getIJ(i,0),12);
3948             pass
3949         coords=m.getCoordinatesAndOwner();
3950         self.assertEqual(4,coords.getNumberOfTuples());
3951         self.assertEqual(1,coords.getNumberOfComponents());
3952         for i in xrange(4):
3953             self.assertAlmostEqual(discX[i],coords.getIJ(i,0),12);
3954             pass
3955         coords=m.getBarycenterAndOwner();
3956         self.assertEqual(3,coords.getNumberOfTuples());
3957         self.assertEqual(1,coords.getNumberOfComponents());
3958         expected1_3=[2.85,4.6,8.]
3959         for i in xrange(3):
3960             self.assertAlmostEqual(expected1_3[i],coords.getIJ(i,0),12);
3961             pass
3962         #
3963         da=DataArrayDouble.New();
3964         da.setValues(discY,3,1);
3965         m.setCoordsAt(1,da);
3966         m.checkCoherency();
3967         self.assertEqual(12,m.getNumberOfNodes());
3968         self.assertEqual(6,m.getNumberOfCells());
3969         self.assertEqual(2,m.getSpaceDimension());
3970         f=m.getMeasureField(True);
3971         self.assertEqual(6,f.getNumberOfTuples());
3972         self.assertEqual(1,f.getNumberOfComponents());
3973         expected2=[12.21,26.64,48.84,24.64,53.76,98.56]
3974         for i in xrange(6):
3975             self.assertAlmostEqual(expected2[i],f.getIJ(i,0),12);
3976             pass
3977         coords=m.getCoordinatesAndOwner();
3978         self.assertEqual(12,coords.getNumberOfTuples());
3979         self.assertEqual(2,coords.getNumberOfComponents());
3980         expected2_2=[2.3,12.3,3.4,12.3,5.8,12.3,10.2,12.3, 2.3,23.4,3.4,23.4,5.8,23.4,10.2,23.4, 2.3,45.8,3.4,45.8,5.8,45.8,10.2,45.8]
3981         for i in xrange(24):
3982             self.assertAlmostEqual(expected2_2[i],coords.getIJ(0,i),12);
3983             pass
3984         coords=m.getBarycenterAndOwner();
3985         self.assertEqual(6,coords.getNumberOfTuples());
3986         self.assertEqual(2,coords.getNumberOfComponents());
3987         expected2_3=[2.85,17.85,4.6,17.85,8.,17.85, 2.85,34.6,4.6,34.6,8.,34.6]
3988         for i in xrange(12):
3989             self.assertAlmostEqual(expected2_3[i],coords.getIJ(0,i),12);
3990             pass
3991         #
3992         da=DataArrayDouble.New();
3993         da.setValues(discZ,5,1);
3994         m.setCoordsAt(2,da);
3995         m.checkCoherency();
3996         self.assertEqual(60,m.getNumberOfNodes());
3997         self.assertEqual(24,m.getNumberOfCells());
3998         self.assertEqual(3,m.getSpaceDimension());
3999         f=m.getMeasureField(True);
4000         self.assertEqual(24,f.getNumberOfTuples());
4001         self.assertEqual(1,f.getNumberOfComponents());
4002         expected3=[23.199, 50.616, 92.796, 46.816, 102.144, 187.264, 0.6105, 1.332, 2.442, 1.232, 2.688, 4.928, 10.7448, 23.4432, 42.9792, 21.6832, 47.3088, 86.7328, 6.5934, 14.3856, 26.3736, 13.3056, 29.0304, 53.2224]
4003         for i in xrange(24):
4004             self.assertAlmostEqual(expected3[i],f.getIJ(i,0),12);
4005             pass
4006         coords=m.getCoordinatesAndOwner();
4007         self.assertEqual(60,coords.getNumberOfTuples());
4008         self.assertEqual(3,coords.getNumberOfComponents());
4009         expected3_2=[
4010             2.3,12.3,-0.7, 3.4,12.3,-0.7, 5.8,12.3,-0.7, 10.2,12.3,-0.7, 2.3,23.4,-0.7, 3.4,23.4,-0.7, 5.8,23.4,-0.7, 10.2,23.4,-0.7, 2.3,45.8,-0.7, 3.4,45.8,-0.7, 5.8,45.8,-0.7, 10.2,45.8,-0.7,
4011             2.3,12.3,1.2, 3.4,12.3,1.2, 5.8,12.3,1.2, 10.2,12.3,1.2, 2.3,23.4,1.2, 3.4,23.4,1.2, 5.8,23.4,1.2, 10.2,23.4,1.2, 2.3,45.8,1.2, 3.4,45.8,1.2, 5.8,45.8,1.2, 10.2,45.8,1.2,
4012             2.3,12.3,1.25, 3.4,12.3,1.25, 5.8,12.3,1.25, 10.2,12.3,1.25, 2.3,23.4,1.25, 3.4,23.4,1.25, 5.8,23.4,1.25, 10.2,23.4,1.25, 2.3,45.8,1.25, 3.4,45.8,1.25, 5.8,45.8,1.25, 10.2,45.8,1.25,
4013             2.3,12.3,2.13, 3.4,12.3,2.13, 5.8,12.3,2.13, 10.2,12.3,2.13, 2.3,23.4,2.13, 3.4,23.4,2.13, 5.8,23.4,2.13, 10.2,23.4,2.13, 2.3,45.8,2.13, 3.4,45.8,2.13, 5.8,45.8,2.13, 10.2,45.8,2.13,
4014             2.3,12.3,2.67, 3.4,12.3,2.67, 5.8,12.3,2.67, 10.2,12.3,2.67, 2.3,23.4,2.67, 3.4,23.4,2.67, 5.8,23.4,2.67, 10.2,23.4,2.67, 2.3,45.8,2.67, 3.4,45.8,2.67, 5.8,45.8,2.67, 10.2,45.8,2.67];
4015         for i in xrange(180):
4016             self.assertAlmostEqual(expected3_2[i],coords.getIJ(0,i),12);
4017             pass
4018         coords=m.getBarycenterAndOwner();
4019         self.assertEqual(24,coords.getNumberOfTuples());
4020         self.assertEqual(3,coords.getNumberOfComponents());
4021         expected3_3=[
4022             2.85,17.85,0.25,4.6,17.85,0.25,8.,17.85,0.25, 2.85,34.6,0.25,4.6,34.6,0.25,8.,34.6,0.25,
4023             2.85,17.85,1.225,4.6,17.85,1.225,8.,17.85,1.225, 2.85,34.6,1.225,4.6,34.6,1.225,8.,34.6,1.225,
4024             2.85,17.85,1.69,4.6,17.85,1.69,8.,17.85,1.69, 2.85,34.6,1.69,4.6,34.6,1.69,8.,34.6,1.69,
4025             2.85,17.85,2.4,4.6,17.85,2.4,8.,17.85,2.4, 2.85,34.6,2.4,4.6,34.6,2.4,8.,34.6,2.4];
4026         for i in xrange(72):
4027             self.assertAlmostEqual(expected3_3[i],coords.getIJ(0,i),12);
4028             pass
4029         pass
4030
4031     def testFieldDoubleZipCoords1(self):
4032         m=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
4033         f=m.fillFromAnalytic(ON_NODES,2,"x*2.");
4034         f.getArray().setInfoOnComponent(0,"titi");
4035         f.getArray().setInfoOnComponent(1,"tutu");
4036         f.checkCoherency();
4037         self.assertEqual(18,f.getNumberOfTuples());
4038         self.assertEqual(2,f.getNumberOfComponents());
4039         expected1=[-0.6, -0.6, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 0.4, 0.4]
4040         for i in xrange(36):
4041             self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4042             pass
4043         self.assertTrue(f.zipCoords());
4044         f.checkCoherency();
4045         expected2=[-0.6, -0.6, 1.4, 1.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 0.4, 0.4]
4046         for i in xrange(30):
4047             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4048             pass
4049         self.assertTrue(not f.zipCoords());
4050         f.checkCoherency();
4051         for i in xrange(30):
4052             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4053             pass
4054         self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4055         self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4056         pass
4057
4058     def testFieldDoubleZipConnectivity1(self):
4059         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4060         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
4061         cells1=[2,3,4]
4062         m3_1=m2.buildPartOfMySelf(cells1,True);
4063         m3=m3_1;
4064         m4=MEDCouplingDataForTest.build2DSourceMesh_1();
4065         m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
4066         m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
4067         #
4068         self.assertEqual(10,m6.getNumberOfCells());
4069         self.assertEqual(22,m6.getNumberOfNodes());
4070         arr,areNodesMerged,newNbOfNodes=m6.mergeNodes(1e-13);
4071         self.assertEqual(9,m6.getNumberOfNodes());
4072         f=m6.fillFromAnalytic(ON_CELLS,2,"x");
4073         f2=m6.fillFromAnalytic(ON_NODES,2,"x");
4074         self.assertEqual(10,f.getNumberOfTuples());
4075         self.assertEqual(2,f.getNumberOfComponents());
4076         expected1=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4077                    -0.05, -0.05, 0.45, 0.45, 0.53333333333333321, 0.53333333333333321, -0.05, -0.05, 0.45, 0.45,
4078                    0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4079         for i in xrange(20):
4080             self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4081             pass
4082         f.getArray().setInfoOnComponent(0,"titi");
4083         f.getArray().setInfoOnComponent(1,"tutu");
4084         f.checkCoherency();
4085         self.assertTrue(f.zipConnectivity(0));
4086         expected2=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4087                    -0.05, -0.05, 0.45, 0.45, 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4088         self.assertEqual(7,f.getNumberOfTuples());
4089         self.assertEqual(2,f.getNumberOfComponents());
4090         for i in xrange(14):
4091             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4092             pass
4093         self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4094         self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4095         self.assertTrue(not f.zipConnectivity(0));
4096         #
4097         expected3=[-0.3, -0.3, 0.2, 0.2, 0.7, 0.7, -0.3, -0.3, 0.2, 0.2, 0.7, 0.7,
4098                    -0.3, -0.3, 0.2, 0.2, 0.7, 0.7];
4099         self.assertEqual(9,f2.getNumberOfTuples());
4100         self.assertEqual(2,f2.getNumberOfComponents());
4101         for i in xrange(18):
4102             self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4103             pass
4104         self.assertTrue(f2.zipConnectivity(0));
4105         self.assertEqual(9,f2.getNumberOfTuples());
4106         self.assertEqual(2,f2.getNumberOfComponents());
4107         for i in xrange(18):
4108             self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4109             pass
4110         pass
4111
4112     def testDaDoubleRenumber1(self):
4113         a=DataArrayDouble.New();
4114         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4115         a.setValues(arr1,7,2);
4116         a.setInfoOnComponent(0,"toto");
4117         a.setInfoOnComponent(1,"tata");
4118         #
4119         arr2=[3,1,0,6,5,4,2]
4120         b=a.renumber(arr2);
4121         self.assertEqual(7,b.getNumberOfTuples());
4122         self.assertEqual(2,b.getNumberOfComponents());
4123         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4124         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4125         expected1=[3.1, 13.1, 2.1, 12.1, 7.1, 17.1, 1.1, 11.1, 6.1, 16.1, 5.1, 15.1, 4.1, 14.1]
4126         for i in xrange(14):
4127             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4128             pass
4129         #
4130         c=DataArrayInt.New();
4131         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4132         c.setValues(arr3,7,2);
4133         c.setInfoOnComponent(0,"toto");
4134         c.setInfoOnComponent(1,"tata");
4135         d=c.renumber(arr2);
4136         self.assertEqual(7,d.getNumberOfTuples());
4137         self.assertEqual(2,d.getNumberOfComponents());
4138         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4139         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4140         expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4141         for i in xrange(14):
4142             self.assertEqual(expected2[i],d.getIJ(0,i));
4143             pass
4144         pass
4145
4146     def testDaDoubleRenumberAndReduce1(self):
4147         a=DataArrayDouble.New();
4148         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4149         a.setValues(arr1,7,2);
4150         a.setInfoOnComponent(0,"toto");
4151         a.setInfoOnComponent(1,"tata");
4152         #
4153         arr2=[2,-1,1,-1,0,4,3]
4154         b=a.renumberAndReduce(arr2,5);
4155         self.assertEqual(5,b.getNumberOfTuples());
4156         self.assertEqual(2,b.getNumberOfComponents());
4157         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4158         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4159         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4160         for i in xrange(10):
4161             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4162             pass
4163         #
4164         c=DataArrayInt.New();
4165         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4166         c.setValues(arr3,7,2);
4167         c.setInfoOnComponent(0,"toto");
4168         c.setInfoOnComponent(1,"tata");
4169         d=c.renumberAndReduce(arr2,5);
4170         self.assertEqual(5,d.getNumberOfTuples());
4171         self.assertEqual(2,d.getNumberOfComponents());
4172         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4173         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4174         expected2=[5,15,3,13,1,11,7,17,6,16]
4175         for i in xrange(10):
4176             self.assertEqual(expected2[i],d.getIJ(0,i));
4177             pass
4178         pass
4179
4180     def testDaDoubleRenumberInPlace1(self):
4181         a=DataArrayDouble.New();
4182         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4183         a.setValues(arr1,7,2);
4184         #
4185         arr2=[3,1,0,6,5,4,2]
4186         a.renumberInPlace(arr2);
4187         self.assertEqual(7,a.getNumberOfTuples());
4188         self.assertEqual(2,a.getNumberOfComponents());
4189         expected1=[3.1, 13.1, 2.1, 12.1, 7.1, 17.1, 1.1, 11.1, 6.1, 16.1, 5.1, 15.1, 4.1, 14.1]
4190         for i in xrange(14):
4191             self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4192             pass
4193         #
4194         c=DataArrayInt.New();
4195         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4196         c.setValues(arr3,7,2);
4197         c.renumberInPlace(arr2);
4198         self.assertEqual(7,c.getNumberOfTuples());
4199         self.assertEqual(2,c.getNumberOfComponents());
4200         expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4201         for i in xrange(14):
4202             self.assertEqual(expected2[i],c.getIJ(0,i));
4203             pass
4204         pass
4205
4206     def testDaDoubleRenumberR1(self):
4207         a=DataArrayDouble.New();
4208         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4209         a.setValues(arr1,7,2);
4210         a.setInfoOnComponent(0,"toto");
4211         a.setInfoOnComponent(1,"tata");
4212         #
4213         arr2=[3,1,0,6,5,4,2]
4214         b=a.renumberR(arr2);
4215         self.assertEqual(7,b.getNumberOfTuples());
4216         self.assertEqual(2,b.getNumberOfComponents());
4217         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4218         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4219         expected1=[4.1, 14.1, 2.1, 12.1, 1.1, 11.1, 7.1, 17.1, 6.1, 16.1, 5.1, 15.1, 3.1, 13.1]
4220         for i in xrange(14):
4221             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4222             pass
4223         #
4224         c=DataArrayInt.New();
4225         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4226         c.setValues(arr3,7,2);
4227         c.setInfoOnComponent(0,"toto");
4228         c.setInfoOnComponent(1,"tata");
4229         d=c.renumberR(arr2);
4230         self.assertEqual(7,d.getNumberOfTuples());
4231         self.assertEqual(2,d.getNumberOfComponents());
4232         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4233         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4234         expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4235         for i in xrange(14):
4236             self.assertEqual(expected2[i],d.getIJ(0,i));
4237             pass
4238         pass
4239
4240     def testDaDoubleRenumberInPlaceR1(self):
4241         a=DataArrayDouble.New();
4242         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4243         a.setValues(arr1,7,2);
4244         #
4245         arr2=[3,1,0,6,5,4,2]
4246         a.renumberInPlaceR(arr2);
4247         self.assertEqual(7,a.getNumberOfTuples());
4248         self.assertEqual(2,a.getNumberOfComponents());
4249         expected1=[4.1, 14.1, 2.1, 12.1, 1.1, 11.1, 7.1, 17.1, 6.1, 16.1, 5.1, 15.1, 3.1, 13.1]
4250         for i in xrange(14):
4251             self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4252             pass
4253         #
4254         c=DataArrayInt.New();
4255         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4256         c.setValues(arr3,7,2);
4257         c.renumberInPlaceR(arr2);
4258         self.assertEqual(7,c.getNumberOfTuples());
4259         self.assertEqual(2,c.getNumberOfComponents());
4260         expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4261         for i in xrange(14):
4262             self.assertEqual(expected2[i],c.getIJ(0,i));
4263             pass
4264         pass
4265
4266     def testDaDoubleSelectByTupleId1(self):
4267         a=DataArrayDouble.New();
4268         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4269         a.setValues(arr1,7,2);
4270         a.setInfoOnComponent(0,"toto");
4271         a.setInfoOnComponent(1,"tata");
4272         #
4273         arr2=[4,2,0,6,5]
4274         b=a.selectByTupleId(arr2);
4275         self.assertEqual(5,b.getNumberOfTuples());
4276         self.assertEqual(2,b.getNumberOfComponents());
4277         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4278         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4279         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4280         for i in xrange(10):
4281             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4282             pass
4283         #
4284         c=DataArrayInt.New();
4285         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4286         c.setValues(arr3,7,2);
4287         c.setInfoOnComponent(0,"toto");
4288         c.setInfoOnComponent(1,"tata");
4289         d=c.selectByTupleId(arr2);
4290         self.assertEqual(5,d.getNumberOfTuples());
4291         self.assertEqual(2,d.getNumberOfComponents());
4292         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4293         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4294         expected2=[5,15,3,13,1,11,7,17,6,16]
4295         for i in xrange(10):
4296             self.assertEqual(expected2[i],d.getIJ(0,i));
4297             pass
4298         pass
4299
4300     def testDaDoubleGetMinMaxValues1(self):
4301         a=DataArrayDouble.New();
4302         arr1=[2.34,4.56,-6.77,4.55,4.56,2.24,2.34,1.02,4.56]
4303         a.setValues(arr1,9,1);
4304         m,where=a.getMaxValue();
4305         self.assertEqual(1,where);
4306         self.assertAlmostEqual(4.56,m,12);
4307         m,ws=a.getMaxValue2();
4308         self.assertAlmostEqual(4.56,m,12);
4309         self.assertEqual(3,ws.getNumberOfTuples());
4310         self.assertEqual(1,ws.getNumberOfComponents());
4311         expected1=[1,4,8]
4312         for i in xrange(3):
4313             self.assertEqual(expected1[i],ws.getIJ(i,0));
4314             pass
4315         a=DataArrayDouble.New();
4316         arr2=[-2.34,-4.56,6.77,-4.55,-4.56,-2.24,-2.34,-1.02,-4.56]
4317         a.setValues(arr2,9,1);
4318         m,where=a.getMinValue();
4319         self.assertEqual(1,where);
4320         self.assertAlmostEqual(-4.56,m,12);
4321         m,ws=a.getMinValue2();
4322         self.assertAlmostEqual(-4.56,m,12);
4323         self.assertEqual(3,ws.getNumberOfTuples());
4324         self.assertEqual(1,ws.getNumberOfComponents());
4325         for i in xrange(3):
4326             self.assertEqual(expected1[i],ws.getIJ(i,0));
4327             pass
4328         pass
4329
4330     def testFieldDoubleGetMinMaxValues2(self):
4331         m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
4332         self.assertEqual(18,m2.getNumberOfCells());
4333         arr1=[8.71,4.53,-12.41,8.71,-8.71,8.7099,4.55,8.71,5.55,6.77,-1e-200,4.55,8.7099,0.,1.23,0.,2.22,8.71]
4334         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4335         a=DataArrayDouble.New();
4336         a.setValues(arr1,18,1);
4337         f.setArray(a);
4338         f.setMesh(m2);
4339         #
4340         f.checkCoherency();
4341         m=f.getMaxValue();
4342         self.assertAlmostEqual(8.71,m,12);
4343         m,ws=f.getMaxValue2();
4344         self.assertAlmostEqual(8.71,m,12);
4345         self.assertEqual(4,ws.getNumberOfTuples());
4346         self.assertEqual(1,ws.getNumberOfComponents());
4347         expected1=[0,3,7,17]
4348         for i in xrange(4):
4349             self.assertEqual(expected1[i],ws.getIJ(i,0));
4350             pass
4351         #
4352         arr2=[-8.71,-4.53,12.41,-8.71,8.71,-8.7099,-4.55,-8.71,-5.55,-6.77,1e-200,-4.55,-8.7099,0.,-1.23,0.,-2.22,-8.71]
4353         a.setValues(arr2,18,1);
4354         f.checkCoherency();
4355         m=f.getMinValue();
4356         self.assertAlmostEqual(-8.71,m,12);
4357         m,ws=f.getMinValue2();
4358         self.assertAlmostEqual(-8.71,m,12);
4359         self.assertEqual(4,ws.getNumberOfTuples());
4360         self.assertEqual(1,ws.getNumberOfComponents());
4361         for i in xrange(4):
4362             self.assertEqual(expected1[i],ws.getIJ(i,0));
4363             pass
4364         pass
4365
4366     def testBuildUnstructuredCMesh1(self):
4367         m=MEDCouplingCMesh.New();
4368         da=DataArrayDouble.New();
4369         discX=[2.3,3.4,5.8,10.2]
4370         discY=[12.3,23.4,45.8]
4371         discZ=[-0.7,1.2,1.25,2.13,2.67]
4372         da.setValues(discX,4,1);
4373         m.setCoordsAt(0,da);
4374         m.checkCoherency();
4375         self.assertEqual(0,m.getCellContainingPoint([2.4],1e-12));
4376         self.assertEqual(1,m.getCellContainingPoint([3.7],1e-12));
4377         self.assertEqual(2,m.getCellContainingPoint([5.9],1e-12));
4378         self.assertEqual(-1,m.getCellContainingPoint([10.3],1e-12));
4379         self.assertEqual(-1,m.getCellContainingPoint([1.3],1e-12));
4380         #
4381         m2=m.buildUnstructured();
4382         m2.checkCoherency();
4383         f1=m.getMeasureField(False);
4384         f2=m2.getMeasureField(False);
4385         self.assertTrue(isinstance(f1.getMesh(),MEDCouplingCMesh))
4386         self.assertEqual(f1.getNumberOfTuples(),3);
4387         self.assertEqual(f2.getNumberOfTuples(),3);
4388         self.assertEqual(1,m2.getMeshDimension());
4389         self.assertEqual(1,m2.getSpaceDimension());
4390         for i in xrange(3):
4391             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4392             pass
4393         da=DataArrayDouble.New();
4394         da.setValues(discY,3,1);
4395         m.setCoordsAt(1,da);
4396         #
4397         m2=m.buildUnstructured();
4398         m2.checkCoherency();
4399         f1=m.getMeasureField(False);
4400         f2=m2.getMeasureField(False);
4401         self.assertEqual(f1.getNumberOfTuples(),6);
4402         self.assertEqual(f2.getNumberOfTuples(),6);
4403         self.assertEqual(2,m2.getMeshDimension());
4404         self.assertEqual(2,m2.getSpaceDimension());
4405         for i in xrange(6):
4406             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4407             pass
4408         #
4409         da=DataArrayDouble.New();
4410         da.setValues(discZ,5,1);
4411         m.setCoordsAt(2,da);
4412         m2=m.buildUnstructured();
4413         m2.checkCoherency();
4414         f1=m.getMeasureField(False);
4415         f2=m2.getMeasureField(False);
4416         self.assertEqual(f1.getNumberOfTuples(),24);
4417         self.assertEqual(f2.getNumberOfTuples(),24);
4418         self.assertEqual(3,m2.getMeshDimension());
4419         self.assertEqual(3,m2.getSpaceDimension());
4420         for i in xrange(24):
4421             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4422             pass
4423         #
4424         pos1=[5.,30.,2.]
4425         self.assertEqual(16,m.getCellContainingPoint(pos1,1e-12));
4426         #
4427         elems=m2.getCellsInBoundingBox([3.5,6.,12.2,25.,0.,1.5],1e-7)
4428         self.assertEqual([1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17],elems.getValues())
4429         #
4430         pt=[2.4,12.7,-3.4]
4431         m.scale(pt,3.7);
4432         m3=m.buildUnstructured();
4433         m2.scale(pt,3.7);
4434         self.assertTrue(m3.isEqual(m2,1e-12));
4435         pass
4436
4437     def testDataArrayIntInvertO2NNO21(self):
4438         arr1=[2,0,4,1,5,3]
4439         da=DataArrayInt.New();
4440         da.setValues(arr1,6,1);
4441         da2=da.invertArrayO2N2N2O(6);
4442         self.assertEqual(6,da2.getNumberOfTuples());
4443         self.assertEqual(1,da2.getNumberOfComponents());
4444         expected1=[1,3,0,5,2,4]
4445         for i in xrange(6):
4446             self.assertEqual(expected1[i],da2.getIJ(i,0));
4447             pass
4448         da3=da2.invertArrayN2O2O2N(6);
4449         for i in xrange(6):
4450             self.assertEqual(arr1[i],da3.getIJ(i,0));
4451             pass
4452         #
4453         arr2=[3,-1,5,4,-1,0,-1,1,2,-1]
4454         da=DataArrayInt.New();
4455         da.setValues(arr2,10,1);
4456         da2=da.invertArrayO2N2N2O(6);
4457         self.assertEqual(6,da2.getNumberOfTuples());
4458         self.assertEqual(1,da2.getNumberOfComponents());
4459         expected2=[5,7,8,0,3,2]
4460         for i in xrange(6):
4461             self.assertEqual(expected2[i],da2.getIJ(i,0));
4462             pass
4463         da3=da2.invertArrayN2O2O2N(10);
4464         for i in xrange(10):
4465             self.assertEqual(arr2[i],da3.getIJ(i,0));
4466             pass
4467         pass
4468     
4469     def testKeepSetSelectedComponent1(self):
4470         arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4471         a1=DataArrayDouble.New();
4472         a1.setValues(arr1,5,4);
4473         expp=[21.,22.,23.,24.]
4474         self.assertEqual(4,len(a1.getTuple(2)));
4475         for i in xrange(4):
4476             self.assertAlmostEqual(expp[i],a1.getTuple(2)[i],12)
4477             pass
4478         a1.setInfoOnComponent(0,"aaaa");
4479         a1.setInfoOnComponent(1,"bbbb");
4480         a1.setInfoOnComponent(2,"cccc");
4481         a1.setInfoOnComponent(3,"dddd");
4482         arr2V=[1,2,1,2,0,0]
4483         a2=a1.keepSelectedComponents(arr2V);
4484         self.assertEqual(6,a2.getNumberOfComponents());
4485         self.assertEqual(5,a2.getNumberOfTuples());
4486         self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4487         self.assertTrue(a2.getInfoOnComponent(1)=="cccc");
4488         self.assertTrue(a2.getInfoOnComponent(2)=="bbbb");
4489         self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4490         self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4491         self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4492         expected1=[2.,3.,2.,3.,1.,1., 12.,13.,12.,13.,11.,11., 22.,23.,22.,23.,21.,21., 32.,33.,32.,33.,31.,31., 42.,43.,42.,43.,41.,41.]
4493         for i in xrange(30):
4494             self.assertAlmostEqual(expected1[i],a2.getIJ(0,i),14);
4495             pass
4496         a3=a1.convertToIntArr();
4497         self.assertEqual([21,22,23,24],a3.getTuple(2))
4498         a4=a3.keepSelectedComponents(arr2V);
4499         self.assertEqual(6,a4.getNumberOfComponents());
4500         self.assertEqual(5,a4.getNumberOfTuples());
4501         self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4502         self.assertTrue(a4.getInfoOnComponent(1)=="cccc");
4503         self.assertTrue(a4.getInfoOnComponent(2)=="bbbb");
4504         self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4505         self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4506         self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4507         for i in xrange(30):
4508             self.assertEqual(int(expected1[i]),a4.getIJ(0,i));
4509             pass
4510         # setSelectedComponents
4511         arr3V=[3,2]
4512         a5=a1.keepSelectedComponents(arr3V);
4513         a5.setInfoOnComponent(0,"eeee");
4514         a5.setInfoOnComponent(1,"ffff");
4515         arr4V=[1,2]
4516         a2.setSelectedComponents(a5,arr4V);
4517         self.assertEqual(6,a2.getNumberOfComponents());
4518         self.assertEqual(5,a2.getNumberOfTuples());
4519         self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4520         self.assertTrue(a2.getInfoOnComponent(1)=="eeee");
4521         self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
4522         self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4523         self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4524         self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4525         expected2=[2.,4.,3.,3.,1.,1., 12.,14.,13.,13.,11.,11., 22.,24.,23.,23.,21.,21., 32.,34.,33.,33.,31.,31., 42.,44.,43.,43.,41.,41.]
4526         for i in xrange(30):
4527             self.assertAlmostEqual(expected2[i],a2.getIJ(0,i),14);
4528             pass
4529         a6=a5.convertToIntArr();
4530         a6.setInfoOnComponent(0,"eeee");
4531         a6.setInfoOnComponent(1,"ffff");
4532         a4.setSelectedComponents(a6,arr4V);
4533         self.assertEqual(6,a4.getNumberOfComponents());
4534         self.assertEqual(5,a4.getNumberOfTuples());
4535         self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4536         self.assertTrue(a4.getInfoOnComponent(1)=="eeee");
4537         self.assertTrue(a4.getInfoOnComponent(2)=="ffff");
4538         self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4539         self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4540         self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4541         for i in xrange(30):
4542             self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
4543             pass
4544         # test of throw
4545         arr5V=[2,3,6]
4546         arr6V=[2,7,5]
4547         arr7V=[2,1,4,6]
4548         self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr5V);
4549         self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr6V);
4550         self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4551         arr7V=arr7V[0:3]
4552         self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4553         #
4554         pass
4555
4556     def testKeepSetSelectedComponent2(self):
4557         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4558         arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4559         a1=DataArrayDouble.New();
4560         a1.setValues(arr1,5,4);
4561         a1.setInfoOnComponent(0,"aaaa");
4562         a1.setInfoOnComponent(1,"bbbb");
4563         a1.setInfoOnComponent(2,"cccc");
4564         a1.setInfoOnComponent(3,"dddd");
4565         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4566         f1.setTime(2.3,4,5);
4567         f1.setMesh(m1);
4568         f1.setName("f1");
4569         f1.setArray(a1);
4570         f1.checkCoherency();
4571         #
4572         arr2V=[1,2,1,2,0,0]
4573         f2=f1.keepSelectedComponents(arr2V);
4574         self.assertTrue(f2.getTimeDiscretization()==ONE_TIME);
4575         t,dt,it=f2.getTime()
4576         self.assertAlmostEqual(2.3,t,13);
4577         self.assertEqual(4,dt);
4578         self.assertEqual(5,it);
4579         f2.checkCoherency();
4580         self.assertEqual(6,f2.getNumberOfComponents());
4581         self.assertEqual(5,f2.getNumberOfTuples());
4582         self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4583         self.assertTrue(f2.getArray().getInfoOnComponent(1)=="cccc");
4584         self.assertTrue(f2.getArray().getInfoOnComponent(2)=="bbbb");
4585         self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4586         self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4587         self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4588         expected1=[2.,3.,2.,3.,1.,1., 12.,13.,12.,13.,11.,11., 22.,23.,22.,23.,21.,21., 32.,33.,32.,33.,31.,31., 42.,43.,42.,43.,41.,41.]
4589         for i in xrange(30):
4590             self.assertAlmostEqual(expected1[i],f2.getIJ(0,i),14);
4591             pass
4592         #setSelectedComponents
4593         arr3V=[3,2]
4594         f5=f1.keepSelectedComponents(arr3V);
4595         f5.setTime(6.7,8,9);
4596         f5.getArray().setInfoOnComponent(0,"eeee");
4597         f5.getArray().setInfoOnComponent(1,"ffff");
4598         f5.checkCoherency();
4599         arr4V=[1,2]
4600         f2.setSelectedComponents(f5,arr4V);
4601         self.assertEqual(6,f2.getNumberOfComponents());
4602         self.assertEqual(5,f2.getNumberOfTuples());
4603         f2.checkCoherency();
4604         t,dt,it=f2.getTime()
4605         self.assertAlmostEqual(2.3,t,13);
4606         self.assertEqual(4,dt);
4607         self.assertEqual(5,it);
4608         self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4609         self.assertTrue(f2.getArray().getInfoOnComponent(1)=="eeee");
4610         self.assertTrue(f2.getArray().getInfoOnComponent(2)=="ffff");
4611         self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4612         self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4613         self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4614         expected2=[2.,4.,3.,3.,1.,1., 12.,14.,13.,13.,11.,11., 22.,24.,23.,23.,21.,21., 32.,34.,33.,33.,31.,31., 42.,44.,43.,43.,41.,41.]
4615         for i in xrange(30):
4616             self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),14);
4617             pass
4618         #
4619         pass
4620     
4621     def testElementaryDAThrowAndSpecialCases(self):
4622         da=DataArrayInt.New();
4623         self.assertRaises(InterpKernelException, da.checkAllocated);
4624         self.assertRaises(InterpKernelException, da.fillWithValue, 1);
4625         self.assertRaises(InterpKernelException, da.iota, 1);
4626         da.alloc(7,1);
4627         da.fillWithValue(11); #11,11,11,11...
4628         da.iota(10); #10,11,12,13...
4629         
4630         db=DataArrayInt.New();
4631         db.alloc(7,2);
4632         
4633         dbl2=DataArrayDouble.New();
4634         dbl2.alloc(7,2);
4635         self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15);
4636         self.assertRaises(InterpKernelException, dbl2.sort);
4637         self.assertRaises(InterpKernelException, dbl2.iota, 10.);
4638         
4639         dbl=DataArrayDouble.New();
4640         #DataArrayDouble not allocated yet
4641         self.assertRaises(InterpKernelException, dbl.iota, 10.);
4642         self.assertRaises(InterpKernelException, dbl.isUniform, 10., 1e-15);
4643         self.assertRaises(InterpKernelException, dbl.sort);
4644         self.assertRaises(InterpKernelException, dbl.fromNoInterlace);
4645         self.assertRaises(InterpKernelException, dbl.toNoInterlace);
4646         
4647         dbl.alloc(7,1);
4648         dbl.iota(10.);
4649         self.assertTrue(not dbl.isUniform(10.,1e-15));
4650         dbl.sort();
4651         self.assertTrue(dbl.isMonotonic(True, .99));
4652         self.assertTrue(dbl.isMonotonic(True, -.99));
4653         self.assertTrue(not dbl.isMonotonic(True, 1.1));
4654         self.assertTrue(not dbl.isMonotonic(True, -1.1));
4655         dbl.reverse();
4656         self.assertTrue(dbl.isMonotonic(False, .99));
4657         self.assertTrue(not dbl.isMonotonic(False, 1.1));
4658         self.assertTrue(not dbl.isMonotonic(False, -1.1));
4659         
4660         dc=DataArrayInt.New();
4661         dc.alloc(14,1);
4662         
4663         dd=DataArrayDouble.New();
4664         self.assertRaises(InterpKernelException, dd.checkAllocated);
4665         self.assertRaises(InterpKernelException, dd.fillWithValue, 1.);
4666         self.assertRaises(InterpKernelException, dd.iota, 1.);
4667         self.assertTrue(not ((dd.repr().find("No data"))==-1));
4668         
4669         dd.alloc(0,1); #Allocated but nbOfElements==0!
4670         self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1));
4671         self.assertTrue(not ((dd.repr().find("Empty Data"))==-1));
4672         dd.fillWithValue(11); #?!...ok
4673         dd.iota(10); #?!...ok
4674         self.assertTrue(dd.isMonotonic(True, 1.));  #nothing is monotonic
4675         self.assertTrue(dd.isMonotonic(False, 1.));
4676         
4677         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4678         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4679         cIds=[2,2]
4680         self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4681         cIds[0]=1;
4682         cIds[0]=-1;
4683         self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4684         
4685         info=["infoOfOneComponent"]*2;
4686         self.assertRaises(InterpKernelException, da.setInfoOnComponents, info);
4687         self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]);
4688         db.setInfoOnComponents(info);
4689         
4690         self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1);
4691         self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2);
4692         self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0));
4693         self.assertRaises(InterpKernelException, db.getVarOnComponent, -1);
4694         self.assertRaises(InterpKernelException, db.getVarOnComponent, 2);
4695         self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1);
4696         self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2);
4697         
4698         self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit ");
4699         self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit[");
4700         self.assertTrue(da.GetVarNameFromInfo("[unit]")=="");
4701         self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname");
4702         
4703         self.assertTrue(da.GetUnitFromInfo("varname unit ")=="");
4704         self.assertTrue(da.GetUnitFromInfo("varname]unit[")=="");
4705         self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit");
4706         self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit");
4707         
4708         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow");
4709         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4710         self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4711         
4712         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow");
4713         da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow");
4714         
4715         self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow");
4716         db.checkNbOfElems(7*2,"theMessageInThrow");
4717         
4718         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow");
4719         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow");
4720         self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow"));
4721         self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow"));
4722         self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow"));
4723         
4724         self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1));
4725         self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1));
4726         self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1));
4727         
4728         self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1));
4729         self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1));
4730         self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1));
4731         
4732         self.assertRaises(InterpKernelException, dbl.selectByTupleId2, 0, 1, -1);
4733         self.assertRaises(InterpKernelException, dbl.substr, -1, 1);
4734         self.assertRaises(InterpKernelException, dbl.substr, 8, 1);
4735         self.assertRaises(InterpKernelException, dbl.substr, 0, 8);
4736         self.assertRaises(InterpKernelException, dbl.meldWith, dd);
4737         
4738         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components
4739         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da);  #da tuple selector DataArrayInt instance not have exactly 2 components
4740         
4741         dbl3=DataArrayDouble.New();
4742         dbl3.alloc(6,2);
4743         dbl3.fillWithValue(11.);
4744         #bad number of components
4745         self.assertRaises(InterpKernelException, dbl3.getMaxValue);
4746         self.assertRaises(InterpKernelException, dd.getMaxValue);
4747         self.assertRaises(InterpKernelException, dbl3.getMinValue);
4748         self.assertRaises(InterpKernelException, dd.getMinValue);
4749         self.assertRaises(InterpKernelException, dbl3.getAverageValue);
4750         self.assertRaises(InterpKernelException, dd.getAverageValue);
4751         self.assertRaises(InterpKernelException, dd.accumulate, 100);
4752         self.assertRaises(InterpKernelException, dbl.fromPolarToCart);
4753         self.assertRaises(InterpKernelException, dbl3.fromCylToCart);
4754         self.assertRaises(InterpKernelException, dbl3.fromSpherToCart);
4755         self.assertRaises(InterpKernelException, dbl3.doublyContractedProduct);
4756         self.assertRaises(InterpKernelException, dbl3.determinant);
4757         self.assertRaises(InterpKernelException, dbl3.eigenValues);
4758         self.assertRaises(InterpKernelException, dbl3.eigenVectors);
4759         self.assertRaises(InterpKernelException, dbl3.inverse);
4760         self.assertRaises(InterpKernelException, dbl3.trace);
4761         self.assertRaises(InterpKernelException, dbl3.deviator);
4762         
4763         dbl3.setIJ(5,1,12.);
4764         self.assertTrue(dbl3.getMaxValueInArray()==12.);
4765         self.assertTrue(dbl3.getMinValueInArray()==11.);
4766         
4767         db.fillWithValue(100); #bad Ids
4768         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4769         db.fillWithValue(-1); #bad Ids
4770         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4771         db.fillWithValue(6); #bad Ids for dbl3
4772         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4773         
4774         dbl3.checkNoNullValues();
4775         dbl3.setIJ(5,0,0.);
4776         self.assertRaises(InterpKernelException, dbl3.checkNoNullValues);
4777         self.assertRaises(InterpKernelException, dbl3.applyInv, 1.);  #div by zero
4778         self.assertRaises(InterpKernelException, dbl2.getIdsInRange, 1., 2.);
4779         a=[]
4780         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4781         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4782         
4783         a=[dbl2,dbl]; #Nb of components mismatch
4784         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4785         
4786         self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl);
4787         
4788         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch
4789         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3
4790         dbl4=DataArrayDouble.New();
4791         dbl4.alloc(6,3);
4792         dbl5=DataArrayDouble.New();
4793         dbl5.alloc(7,3);
4794         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch
4795         
4796         a[0]=dbl4; #Nb of tuple mismatch
4797         a[1]=dbl5; #Nb of tuple mismatch
4798         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4799         self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl4, dbl5);
4800         pass
4801
4802     def testDAIGetIdsEqual1(self):
4803         tab1=[5,-2,-4,-2,3,2,-2];
4804         da=DataArrayInt.New();
4805         da.setValues(tab1,7,1);
4806         da2=da.getIdsEqual(-2);
4807         self.assertEqual(3,da2.getNumberOfTuples());
4808         self.assertEqual(1,da2.getNumberOfComponents());
4809         expected1=[1,3,6];
4810         self.assertEqual(expected1,da2.getValues());
4811         pass
4812
4813     def testDAIGetIdsEqualList1(self):
4814         tab1=[5,-2,-4,-2,3,2,-2];
4815         da=DataArrayInt.New();
4816         da.setValues(tab1,7,1);
4817         da2=da.getIdsEqualList([3,-2,0]);
4818         self.assertEqual(4,da2.getNumberOfTuples());
4819         self.assertEqual(1,da2.getNumberOfComponents());
4820         expected1=[1,3,4,6];
4821         self.assertEqual(expected1,da2.getValues());
4822         pass
4823
4824     def testDAFromNoInterlace1(self):
4825         tab1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4826         da=DataArrayInt.New();
4827         da.setValues(tab1,5,3);
4828         da2=da.fromNoInterlace();
4829         expected1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4830         self.assertEqual(5,da2.getNumberOfTuples());
4831         self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4832         self.assertEqual(expected1,da2.getValues());
4833         da3=da.convertToDblArr();
4834         da4=da3.fromNoInterlace();
4835         self.assertEqual(5,da4.getNumberOfTuples());
4836         self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4837         for i in xrange(15):
4838             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4839             pass
4840         pass
4841     
4842     def testDAToNoInterlace1(self):
4843         tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4844         da=DataArrayInt.New();
4845         da.setValues(tab1,5,3);
4846         da2=da.toNoInterlace();
4847         expected1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4848         self.assertEqual(5,da2.getNumberOfTuples());
4849         self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4850         self.assertEqual(expected1,da2.getValues());
4851         da3=da.convertToDblArr();
4852         da4=da3.toNoInterlace();
4853         self.assertEqual(5,da4.getNumberOfTuples());
4854         self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4855         for i in xrange(15):
4856             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4857             pass
4858         pass
4859     
4860     def testDAIsUniform1(self):
4861         tab1=[1,1,1,1,1]
4862         da=DataArrayInt.New();
4863         da.setValues(tab1,5,1);
4864         self.assertTrue(da.isUniform(1));
4865         da.setIJ(2,0,2);
4866         self.assertTrue(not da.isUniform(1));
4867         da.setIJ(2,0,1);
4868         self.assertTrue(da.isUniform(1));
4869         da2=da.convertToDblArr();
4870         self.assertTrue(da2.isUniform(1.,1.e-12));
4871         da2.setIJ(1,0,1.+1.e-13);
4872         self.assertTrue(da2.isUniform(1.,1.e-12));
4873         da2.setIJ(1,0,1.+1.e-11);
4874         self.assertTrue(not da2.isUniform(1.,1.e-12));
4875         pass
4876     
4877     def testDADFromPolarToCart1(self):
4878         tab1=[2.,0.2,2.5,0.7]
4879         da=DataArrayDouble.New();
4880         da.setValues(tab1,2,2);
4881         da2=da.fromPolarToCart();
4882         expected1=[1.9601331556824833,0.39733866159012243, 1.9121054682112213,1.6105442180942275]
4883         for i in xrange(4):
4884             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4885             pass
4886         pass
4887     
4888     def testDADFromCylToCart1(self):
4889         tab1=[2.,0.2,4.,2.5,0.7,9.]
4890         da=DataArrayDouble.New();
4891         da.setValues(tab1,2,3);
4892         da2=da.fromCylToCart();
4893         expected1=[1.9601331556824833,0.39733866159012243,4., 1.9121054682112213,1.6105442180942275,9.]
4894         for i in xrange(6):
4895             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4896             pass
4897         pass
4898     
4899     def testDADFromSpherToCart1(self):
4900         tab1=[2.,0.2,0.3,2.5,0.7,0.8]
4901         da=DataArrayDouble.New();
4902         da.setValues(tab1,2,3);
4903         da2=da.fromSpherToCart();
4904         expected1=[0.37959212195737485,0.11742160338765303,1.9601331556824833, 1.1220769624465328,1.1553337045129035,1.9121054682112213]
4905         for i in xrange(6):
4906             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4907             pass
4908         pass
4909
4910     def testUnPolyze1(self):
4911         elts=[0,1,2,3,4,5,6,7]
4912         eltsV=elts;
4913         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4914         mesh.convertToPolyTypes(eltsV);
4915         mesh.unPolyze();
4916         mesh2=MEDCouplingDataForTest.build3DTargetMesh_1();
4917         mesh.checkCoherency();
4918         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4919         mesh.convertToPolyTypes(eltsV);
4920         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4921         mesh.getNodalConnectivity().setIJ(0,6,10);
4922         mesh.getNodalConnectivity().setIJ(0,7,9);
4923         mesh.getNodalConnectivity().setIJ(0,8,12);
4924         mesh.getNodalConnectivity().setIJ(0,9,13);
4925         mesh.unPolyze();
4926         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4927         mesh.convertToPolyTypes(eltsV);
4928         mesh.getNodalConnectivity().setIJ(0,6,12);
4929         mesh.getNodalConnectivity().setIJ(0,7,13);
4930         mesh.getNodalConnectivity().setIJ(0,8,10);
4931         mesh.getNodalConnectivity().setIJ(0,9,9);
4932         mesh.unPolyze();
4933         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4934         mesh.convertToPolyTypes(eltsV);
4935         mesh.getNodalConnectivity().setIJ(0,6,12);
4936         mesh.getNodalConnectivity().setIJ(0,7,10);
4937         mesh.getNodalConnectivity().setIJ(0,8,13);
4938         mesh.getNodalConnectivity().setIJ(0,9,9);
4939         mesh.unPolyze();
4940         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4941         # Test for 2D mesh
4942         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4943         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
4944         eltsV=eltsV[:5];
4945         mesh.convertToPolyTypes(eltsV);
4946         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4947         mesh.unPolyze();
4948         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4949         pass
4950
4951     def testConvertDegeneratedCells1(self):
4952         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4953         conn=[0,1,3,3,9,10,12,12, 0,1,3,4,9,9,9,9, 1,1,1,1,10,12,9,10, 10,11,12,9,1,1,1,1]
4954         mesh.allocateCells(4);
4955         mesh.insertNextCell(NORM_HEXA8,8,conn[0:8])
4956         mesh.insertNextCell(NORM_HEXA8,8,conn[8:16])
4957         mesh.insertNextCell(NORM_HEXA8,8,conn[16:24])
4958         mesh.insertNextCell(NORM_HEXA8,8,conn[24:32])
4959         mesh.finishInsertingCells();
4960         mesh.checkCoherency();
4961         self.assertEqual(4,mesh.getNumberOfCells());
4962         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(0));
4963         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(1));
4964         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(2));
4965         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(3));
4966         f1=mesh.getMeasureField(True);
4967         mesh.convertDegeneratedCells();
4968         mesh.checkCoherency();
4969         f2=mesh.getMeasureField(True);
4970         self.assertEqual(4,mesh.getNumberOfCells());
4971         self.assertEqual(NORM_PENTA6,mesh.getTypeOfCell(0));
4972         self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(1));
4973         self.assertEqual(NORM_TETRA4,mesh.getTypeOfCell(2));
4974         self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(3));
4975         for i in xrange(4):
4976             self.assertAlmostEqual(f1.getArray().getIJ(0,i),f2.getArray().getIJ(0,i),5);
4977             pass
4978         pass
4979
4980     def testGetNodeIdsNearPoints1(self):
4981         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4982         coords=mesh.getCoords();
4983         tmp=DataArrayDouble.New();
4984         vals=[0.2,0.2,0.1,0.2,0.2,0.2]
4985         tmp.setValues(vals,3,2);
4986         tmp2=DataArrayDouble.Aggregate(coords,tmp);
4987         mesh.setCoords(tmp2);
4988         pts=[0.2,0.2,0.1,0.3,-0.3,0.7]
4989         c=mesh.getNodeIdsNearPoint(pts[:2],1e-7);
4990         self.assertEqual([4,9,11],c.getValues());
4991         c,cI=mesh.getNodeIdsNearPoints(pts,3,1e-7);
4992         self.assertEqual([0,3,3,4],cI.getValues());
4993         self.assertEqual([4,9,11,6],c.getValues());
4994         c,cI=mesh.getNodeIdsNearPoints(pts,1e-7);
4995         self.assertEqual([0,3,3,4],cI.getValues());
4996         self.assertEqual([4,9,11,6],c.getValues());
4997         c,cI=mesh.getNodeIdsNearPoints(DataArrayDouble.New(pts,3,2),1e-7);
4998         self.assertEqual([0,3,3,4],cI.getValues());
4999         self.assertEqual([4,9,11,6],c.getValues());
5000         self.assertRaises(InterpKernelException,mesh.getNodeIdsNearPoints,DataArrayDouble.New(pts,2,3),1e-7);
5001         pass
5002
5003     def testFieldCopyTinyAttrFrom1(self):
5004         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5005         f1.setName("f1");
5006         f1.setTimeTolerance(1.e-5);
5007         f1.setDescription("f1Desc");
5008         f1.setTime(1.23,4,5);
5009         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5010         f2.setName("f2");
5011         f2.setDescription("f2Desc");
5012         f2.setTime(6.78,9,10);
5013         f2.setTimeTolerance(4.556e-12);
5014         #
5015         f1.copyTinyAttrFrom(f2);
5016         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5017         t,dt,it=f1.getTime()
5018         self.assertAlmostEqual(6.78,t,12);
5019         self.assertEqual(9,dt);
5020         self.assertEqual(10,it);
5021         self.assertTrue(f1.getName()=="f1");#name unchanged
5022         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5023         #
5024         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
5025         f1.setName("f1");
5026         f1.setTimeTolerance(1.e-5);
5027         f1.setDescription("f1Desc");
5028         f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
5029         f2.setName("f2");
5030         f2.setDescription("f2Desc");
5031         f2.setTimeTolerance(4.556e-12);
5032         #
5033         f1.copyTinyAttrFrom(f2);
5034         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5035         self.assertTrue(f1.getName()=="f1");#name unchanged
5036         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5037         #
5038         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
5039         f1.setName("f1");
5040         f1.setTimeTolerance(1.e-5);
5041         f1.setDescription("f1Desc");
5042         f1.setTime(1.23,4,5);
5043         f1.setEndTime(5.43,2,1);
5044         f2=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
5045         f2.setName("f2");
5046         f2.setDescription("f2Desc");
5047         f2.setTimeTolerance(4.556e-12);
5048         f2.setTime(6.78,9,10);
5049         f2.setEndTime(10.98,7,6);
5050         #
5051         f1.copyTinyAttrFrom(f2);
5052         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5053         self.assertTrue(f1.getName()=="f1");#name unchanged
5054         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5055         t,dt,it=f1.getTime()
5056         self.assertAlmostEqual(6.78,t,12);
5057         self.assertEqual(9,dt);
5058         self.assertEqual(10,it);
5059         t,dt,it=f1.getEndTime()
5060         self.assertAlmostEqual(10.98,t,12);
5061         self.assertEqual(7,dt);
5062         self.assertEqual(6,it);
5063         #
5064         f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
5065         f1.setName("f1");
5066         f1.setTimeTolerance(1.e-5);
5067         f1.setDescription("f1Desc");
5068         f1.setTime(1.23,4,5);
5069         f1.setEndTime(5.43,2,1);
5070         f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
5071         f2.setName("f2");
5072         f2.setDescription("f2Desc");
5073         f2.setTimeTolerance(4.556e-12);
5074         f2.setTime(6.78,9,10);
5075         f2.setEndTime(10.98,7,6);
5076         #
5077         f1.copyTinyAttrFrom(f2);
5078         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5079         self.assertTrue(f1.getName()=="f1");#name unchanged
5080         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5081         t,dt,it=f1.getTime()
5082         self.assertAlmostEqual(6.78,t,12);
5083         self.assertEqual(9,dt);
5084         self.assertEqual(10,it);
5085         t,dt,it=f1.getEndTime()
5086         self.assertAlmostEqual(10.98,t,12);
5087         self.assertEqual(7,dt);
5088         self.assertEqual(6,it);
5089         pass
5090
5091     def testExtrudedMesh5(self):
5092         coo1=[0.,1.,2.,3.5]
5093         a=DataArrayDouble.New();
5094         a.setValues(coo1,4,1);
5095         b=MEDCouplingCMesh.New();
5096         b.setCoordsAt(0,a);
5097         c=b.buildUnstructured();
5098         self.assertEqual(1,c.getSpaceDimension());
5099         c.changeSpaceDimension(2);
5100         #
5101         d=DataArrayDouble.New();
5102         d.alloc(13,1);
5103         d.iota();
5104         e=MEDCouplingCMesh.New();
5105         e.setCoordsAt(0,d);
5106         f=e.buildUnstructured();
5107         g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5108         self.assertRaises(InterpKernelException,f.getCoords().applyFunc,2,"3.5*IVec+x/6*3.14159265359*KVec"); # KVec refers to component #2 and there is only 2 components !
5109         h=g.fromPolarToCart();
5110         f.setCoords(h);
5111         i=c.buildExtrudedMesh(f,1);
5112         self.assertEqual(52,i.getNumberOfNodes());
5113         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5114         self.assertTrue(tmp2);
5115         self.assertEqual(37,tmp3);
5116         i.convertDegeneratedCells();
5117         i.checkCoherency();
5118         self.assertEqual(36,i.getNumberOfCells());
5119         self.assertEqual(37,i.getNumberOfNodes());
5120         self.assertEqual(12,i.getNumberOfCellsWithType(NORM_TRI3));
5121         self.assertEqual(24,i.getNumberOfCellsWithType(NORM_QUAD4));
5122         expected1=[0.25,0.75,2.0625]
5123         j=i.getMeasureField(True);
5124         for ii in xrange(12):
5125             for k in xrange(3):
5126                 self.assertAlmostEqual(expected1[k],j.getIJ(0,ii*3+k),10);
5127                 pass
5128             pass
5129         expected2=[0.62200846792814113, 0.16666666666681595, 1.4513530918323276, 0.38888888888923495, 2.6293994326053212, 0.7045454545460802, 0.45534180126145435, 0.45534180126150181, 1.0624642029433926, 1.0624642029435025, 1.9248539780597826, 1.9248539780599816, 0.16666666666661334, 0.62200846792815856, 0.38888888888876294, 1.4513530918323678, 0.70454545454522521, 2.629399432605394, -0.16666666666674007, 0.62200846792812436, -0.38888888888906142, 1.4513530918322881, -0.70454545454576778, 2.6293994326052488, -0.45534180126154766, 0.45534180126140844, -1.0624642029436118, 1.0624642029432834, -1.9248539780601803, 1.9248539780595841, -0.62200846792817499, 0.1666666666665495, -1.451353091832408, 0.388888888888613, -2.6293994326054668, 0.70454545454495332, -0.62200846792810593, -0.16666666666680507, -1.451353091832247, -0.38888888888921297, -2.6293994326051746, -0.70454545454604123, -0.45534180126135926, -0.45534180126159562, -1.0624642029431723, -1.0624642029437235, -1.9248539780593836, -1.9248539780603811, -0.1666666666664828, -0.62200846792819242, -0.38888888888846079, -1.4513530918324489, -0.70454545454467987, -2.6293994326055397, 0.16666666666687083, -0.62200846792808862, 0.38888888888936374, -1.4513530918322073, 0.70454545454631357, -2.6293994326051022, 0.45534180126164348, -0.45534180126131207, 1.0624642029438327, -1.0624642029430627, 1.9248539780605791, -1.9248539780591853, 0.62200846792821063, -0.16666666666641802, 1.4513530918324888, -0.38888888888831086, 2.6293994326056125, -0.70454545454440853]
5130         m=i.getBarycenterAndOwner();
5131         for i in xrange(72):
5132             self.assertAlmostEqual(expected2[i],m.getIJ(0,i),10);
5133             pass
5134         #
5135         pass
5136
5137     def testExtrudedMesh6(self):
5138         coo1=[0.,1.,2.,3.5]
5139         a=DataArrayDouble.New();
5140         a.setValues(coo1,4,1);
5141         b=MEDCouplingCMesh.New();
5142         b.setCoordsAt(0,a);
5143         c=b.buildUnstructured();
5144         self.assertEqual(1,c.getSpaceDimension());
5145         c.changeSpaceDimension(2);
5146         #
5147         d=DataArrayDouble.New();
5148         d.alloc(5);
5149         d.iota();
5150         e=MEDCouplingCMesh.New();
5151         e.setCoordsAt(0,d);
5152         f=e.buildUnstructured();
5153         d2=f.getCoords().applyFunc("x*x/2");
5154         f.setCoords(d2);
5155         f.changeSpaceDimension(2);
5156         #
5157         center=[0.,0.]
5158         f.rotate(center,None,pi/3);
5159         g=c.buildExtrudedMesh(f,0);
5160         g.checkCoherency();
5161         expected1=[ 0.4330127018922193, 0.4330127018922193, 0.649519052838329, 1.2990381056766578, 1.299038105676658, 1.948557158514987, 2.1650635094610955, 2.1650635094610964, 3.2475952641916446, 3.031088913245533, 3.0310889132455352, 4.546633369868303 ]
5162         f1=g.getMeasureField(True);
5163         for i in xrange(12):
5164             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),12);
5165             pass
5166         expected2=[0.625, 0.21650635094610962, 1.625, 0.21650635094610959, 2.8750000000000004, 0.21650635094610965, 1.1250000000000002, 1.0825317547305482, 2.125, 1.0825317547305482, 3.3750000000000004, 1.0825317547305484, 2.125, 2.8145825622994254, 3.125, 2.8145825622994254, 4.375, 2.8145825622994254, 3.6250000000000009, 5.4126587736527414, 4.625, 5.4126587736527414, 5.875, 5.4126587736527414]
5167         f2=g.getBarycenterAndOwner();
5168         for i in xrange(24):
5169             self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),12);
5170             pass
5171         pass
5172
5173     def testExtrudedMesh7(self):
5174         coo1=[0.,1.,2.,3.5]
5175         a=DataArrayDouble.New();
5176         a.setValues(coo1,4,1);
5177         b=MEDCouplingCMesh.New();
5178         b.setCoordsAt(0,a);
5179         c=b.buildUnstructured();
5180         self.assertEqual(1,c.getSpaceDimension());
5181         c.changeSpaceDimension(2);
5182         #
5183         d=DataArrayDouble.New();
5184         d.alloc(13,1);
5185         d.iota();
5186         e=MEDCouplingCMesh.New();
5187         e.setCoordsAt(0,d);
5188         f=e.buildUnstructured();
5189         g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5190         h=g.fromPolarToCart();
5191         f.setCoords(h);
5192         i=c.buildExtrudedMesh(f,1);
5193         self.assertEqual(52,i.getNumberOfNodes());
5194         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5195         self.assertTrue(tmp2);
5196         self.assertEqual(37,tmp3);
5197         i.convertDegeneratedCells();
5198         vec1=[10.,0]
5199         i.translate(vec1);
5200         g2=h.applyFunc(3,"13.5/3.5*x*IVec+0*JVec+13.5/3.5*y*KVec");
5201         f.setCoords(g2);
5202         i.changeSpaceDimension(3);
5203         i3=i.buildExtrudedMesh(f,1);
5204         f2=i3.getMeasureField(True);
5205         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5206         self.assertTrue(tmp2);
5207         self.assertEqual(444,tmp3);
5208         expected1=[1.327751058489274, 4.2942574094314701, 13.024068164857139, 1.3069177251569044, 4.1484240761012954, 12.297505664866796, 1.270833333332571, 3.8958333333309674, 11.039062499993179, 1.2291666666659207, 3.6041666666644425, 9.585937499993932, 1.1930822748415895, 3.3515759238941376, 8.3274943351204556, 1.1722489415082769, 3.2057425905609289, 7.6009318351210622, 1.1722489415082862, 3.2057425905609884, 7.6009318351213713, 1.1930822748416161, 3.3515759238943001, 8.3274943351212727, 1.2291666666659564, 3.6041666666646734, 9.5859374999950777, 1.2708333333326081, 3.8958333333311868, 11.039062499994293, 1.3069177251569224, 4.1484240761014384, 12.297505664867627, 1.3277510584902354, 4.2942574094346071, 13.024068164866796]
5209         for ii in xrange(12):
5210             for jj in xrange(36):
5211                 self.assertAlmostEqual(expected1[jj],f2.getIJ(0,ii*36+jj),9);
5212                 pass
5213         #
5214         pass
5215
5216     def testSimplexize1(self):
5217         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5218         m.convertToPolyTypes([3]);
5219         da=m.simplexize(0);
5220         self.assertEqual(7,da.getNumberOfTuples());
5221         self.assertEqual(1,da.getNumberOfComponents());
5222         expected2=[0,0,1,2,3,4,4]
5223         for i in xrange(7):
5224             self.assertEqual(expected2[i],da.getIJ(i,0));
5225             pass
5226         m.checkCoherency();
5227         self.assertEqual(7,m.getNumberOfCells());
5228         self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5229         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5230         self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5231         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5232         self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5233         self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5234         self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5235         expected1=[0.125,0.125,0.125,0.125,0.25,0.125,0.125]
5236         f=m.getMeasureField(False);
5237         for i in xrange(7):
5238             self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5239             pass
5240         types=m.getAllGeoTypes();
5241         self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5242         #
5243         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5244         m.convertToPolyTypes([3]);
5245         da=m.simplexize(1);
5246         self.assertEqual(7,da.getNumberOfTuples());
5247         self.assertEqual(1,da.getNumberOfComponents());
5248         for i in xrange(7):
5249             self.assertEqual(expected2[i],da.getIJ(i,0));
5250             pass
5251         m.checkCoherency();
5252         types=m.getAllGeoTypes();
5253         self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5254         self.assertEqual(7,m.getNumberOfCells());
5255         self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5256         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5257         self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5258         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5259         self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5260         self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5261         self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5262         f=m.getMeasureField(False);
5263         for i in xrange(7):
5264             self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5265             pass
5266         pass
5267
5268     def testSimplexize2(self):
5269         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5270         m.convertToPolyTypes([3]);
5271         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5272         f1.setMesh(m);
5273         arr=DataArrayDouble.New();
5274         arr1=[10.,110.,20.,120.,30.,130.,40.,140.,50.,150.]
5275         arr.setValues(arr1,5,2);
5276         f1.setArray(arr);
5277         #
5278         f1.checkCoherency();
5279         self.assertTrue(f1.simplexize(0));
5280         f1.checkCoherency();
5281         expected1=[10.,110.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.,50.,150.]
5282         for i in xrange(14):
5283             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5284             pass
5285         self.assertTrue(not f1.simplexize(0));
5286         for i in xrange(14):
5287             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5288             pass
5289         #
5290         pass
5291
5292     def testDAMeld1(self):
5293         da1=DataArrayDouble.New();
5294         da1.alloc(7,2);
5295         da2=DataArrayDouble.New();
5296         da2.alloc(7,1);
5297         #
5298         da1.fillWithValue(7.);
5299         da2.iota(0.);
5300         da3=da2.applyFunc(3,"10*x*IVec+100*x*JVec+1000*x*KVec");
5301         #
5302         da1.setInfoOnComponent(0,"c0da1");
5303         da1.setInfoOnComponent(1,"c1da1");
5304         da3.setInfoOnComponent(0,"c0da3");
5305         da3.setInfoOnComponent(1,"c1da3");
5306         da3.setInfoOnComponent(2,"c2da3");
5307         #
5308         da1C=da1.deepCpy();
5309         da1.meldWith(da3);
5310         self.assertEqual(5,da1.getNumberOfComponents());
5311         self.assertEqual(7,da1.getNumberOfTuples());
5312         self.assertTrue(da1.getInfoOnComponent(0)=="c0da1");
5313         self.assertTrue(da1.getInfoOnComponent(1)=="c1da1");
5314         self.assertTrue(da1.getInfoOnComponent(2)=="c0da3");
5315         self.assertTrue(da1.getInfoOnComponent(3)=="c1da3");
5316         self.assertTrue(da1.getInfoOnComponent(4)=="c2da3");
5317         #
5318         expected1=[7.,7.,0.,0.,0., 7.,7.,10.,100.,1000., 7.,7.,20.,200.,2000., 7.,7.,30.,300.,3000., 7.,7.,40.,400.,4000.,7.,7.,50.,500.,5000.,7.,7.,60.,600.,6000.]
5319         for i in xrange(35):
5320             self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),10);
5321             pass
5322         #
5323         dai1=da1C.convertToIntArr();
5324         dai3=da3.convertToIntArr();
5325         dai1.meldWith(dai3);
5326         self.assertEqual(5,dai1.getNumberOfComponents());
5327         self.assertEqual(7,dai1.getNumberOfTuples());
5328         self.assertTrue(dai1.getInfoOnComponent(0)=="c0da1");
5329         self.assertTrue(dai1.getInfoOnComponent(1)=="c1da1");
5330         self.assertTrue(dai1.getInfoOnComponent(2)=="c0da3");
5331         self.assertTrue(dai1.getInfoOnComponent(3)=="c1da3");
5332         self.assertTrue(dai1.getInfoOnComponent(4)=="c2da3");
5333         for i in xrange(35):
5334             self.assertEqual(int(expected1[i]),dai1.getIJ(0,i));
5335             pass
5336         # test of static method DataArrayDouble::meld
5337         da4=DataArrayDouble.Meld(da1C,da3);
5338         tmp=DataArrayDouble.Meld([da1C,da3]);
5339         self.assertTrue(da4.isEqual(tmp,1e-10))
5340         self.assertEqual(5,da4.getNumberOfComponents());
5341         self.assertEqual(7,da4.getNumberOfTuples());
5342         self.assertTrue(da4.getInfoOnComponent(0)=="c0da1");
5343         self.assertTrue(da4.getInfoOnComponent(1)=="c1da1");
5344         self.assertTrue(da4.getInfoOnComponent(2)=="c0da3");
5345         self.assertTrue(da4.getInfoOnComponent(3)=="c1da3");
5346         self.assertTrue(da4.getInfoOnComponent(4)=="c2da3");
5347         for i in xrange(35):
5348             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),10);
5349             pass
5350         # test of static method DataArrayInt::meld
5351         dai1=da1C.convertToIntArr();
5352         dai4=DataArrayInt.Meld(dai1,dai3);
5353         tmp=DataArrayInt.Meld([dai1,dai3]);
5354         self.assertTrue(dai4.isEqual(tmp))
5355         self.assertEqual(5,dai4.getNumberOfComponents());
5356         self.assertEqual(7,dai4.getNumberOfTuples());
5357         self.assertTrue(dai4.getInfoOnComponent(0)=="c0da1");
5358         self.assertTrue(dai4.getInfoOnComponent(1)=="c1da1");
5359         self.assertTrue(dai4.getInfoOnComponent(2)=="c0da3");
5360         self.assertTrue(dai4.getInfoOnComponent(3)=="c1da3");
5361         self.assertTrue(dai4.getInfoOnComponent(4)=="c2da3");
5362         for i in xrange(35):
5363             self.assertEqual(int(expected1[i]),dai4.getIJ(0,i));
5364             pass
5365         pass
5366
5367     def testFieldMeld1(self):
5368         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5369         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5370         f1.setMesh(m);
5371         da1=DataArrayDouble.New();
5372         arr1=[12.,23.,34.,45.,56.]
5373         da1.setValues(arr1,5,1);
5374         da1.setInfoOnComponent(0,"aaa");
5375         f1.setArray(da1);
5376         f1.setTime(3.4,2,1);
5377         f1.checkCoherency();
5378         #
5379         f2=f1.deepCpy();
5380         f2.setMesh(f1.getMesh());
5381         f2.checkCoherency();
5382         f2.changeNbOfComponents(2,5.);
5383         f2.assign(5.);
5384         f2.getArray().setInfoOnComponent(0,"bbb");
5385         f2.getArray().setInfoOnComponent(1,"ccc");
5386         f2.checkCoherency();
5387         #
5388         f3=MEDCouplingFieldDouble.MeldFields(f2,f1);
5389         f3.checkCoherency();
5390         self.assertEqual(5,f3.getNumberOfTuples());
5391         self.assertEqual(3,f3.getNumberOfComponents());
5392         self.assertTrue(f3.getArray().getInfoOnComponent(0)=="bbb");
5393         self.assertTrue(f3.getArray().getInfoOnComponent(1)=="ccc");
5394         self.assertTrue(f3.getArray().getInfoOnComponent(2)=="aaa");
5395         expected1=[5.,5.,12.,5.,5.,23.,5.,5.,34.,5.,5.,45.,5.,5.,56.]
5396         for i in xrange(15):
5397             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),12);
5398             pass
5399         time,dt,it=f3.getTime();
5400         self.assertAlmostEqual(3.4,time,14);
5401         self.assertEqual(2,dt);
5402         self.assertEqual(1,it);
5403         #
5404         f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
5405         f5=f1.buildNewTimeReprFromThis(NO_TIME,False);
5406         f6=MEDCouplingFieldDouble.MeldFields(f4,f5);
5407         f6.checkCoherency();
5408         self.assertEqual(5,f6.getNumberOfTuples());
5409         self.assertEqual(3,f6.getNumberOfComponents());
5410         self.assertTrue(f6.getArray().getInfoOnComponent(0)=="bbb");
5411         self.assertTrue(f6.getArray().getInfoOnComponent(1)=="ccc");
5412         self.assertTrue(f6.getArray().getInfoOnComponent(2)=="aaa");
5413         for i in xrange(15):
5414             self.assertAlmostEqual(expected1[i],f6.getIJ(0,i),12);
5415             pass
5416         #
5417         pass
5418
5419     def testMergeNodes2(self):
5420         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5421         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
5422         vec=[0.002,0.]
5423         m2.translate(vec);
5424         #
5425         m3=MEDCouplingUMesh.MergeUMeshes([m1,m2]);
5426         da,b,newNbOfNodes=m3.mergeNodes2(0.01);
5427         self.assertEqual(9,m3.getNumberOfNodes());
5428         expected1=[-0.299,-0.3, 0.201,-0.3, 0.701,-0.3, -0.299,0.2, 0.201,0.2, 0.701,0.2, -0.299,0.7, 0.201,0.7, 0.701,0.7]
5429         for i in xrange(18):
5430             self.assertAlmostEqual(expected1[i],m3.getCoords().getIJ(0,i),13);
5431             pass
5432         #
5433         pass
5434
5435     def testMergeField2(self):
5436         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5437         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5438         f1.setMesh(m);
5439         arr=DataArrayDouble.New();
5440         arr.alloc(5,2);
5441         arr.fillWithValue(2.);
5442         f1.setArray(arr);
5443         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5444         f2.setMesh(m);
5445         arr=DataArrayDouble.New();
5446         arr.alloc(5,2);
5447         arr.fillWithValue(5.);
5448         f2.setArray(arr);
5449         f3=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5450         f3.setMesh(m);
5451         arr=DataArrayDouble.New();
5452         arr.alloc(5,2);
5453         arr.fillWithValue(7.);
5454         f3.setArray(arr);
5455         #
5456         f4=MEDCouplingFieldDouble.MergeFields([f1,f2,f3]);
5457         self.assertEqual(15,f4.getMesh().getNumberOfCells());
5458         expected1=[2.,2.,2.,2.,2.,2.,2.,2.,2.,2., 5.,5.,5.,5.,5.,5.,5.,5.,5.,5., 7.,7.,7.,7.,7.,7.,7.,7.,7.,7.]
5459         for i in xrange(30):
5460             self.assertAlmostEqual(expected1[i],f4.getIJ(0,i),13);
5461             pass
5462         #
5463         pass
5464
5465     def testDAIBuildComplement1(self):
5466         a=DataArrayInt.New();
5467         tab=[3,1,7,8]
5468         a.setValues(tab,4,1);
5469         b=a.buildComplement(12);
5470         self.assertEqual(8,b.getNumberOfTuples());
5471         self.assertEqual(1,b.getNumberOfComponents());
5472         expected1=[0,2,4,5,6,9,10,11]
5473         for i in xrange(8):
5474             self.assertEqual(expected1[i],b.getIJ(0,i));
5475             pass
5476         pass
5477
5478     def testDAIBuildUnion1(self):
5479         a=DataArrayInt.New();
5480         tab1=[3,1,7,8]
5481         a.setValues(tab1,4,1);
5482         c=DataArrayInt.New();
5483         tab2=[5,3,0,18,8]
5484         c.setValues(tab2,5,1);
5485         b=a.buildUnion(c);
5486         self.assertEqual(7,b.getNumberOfTuples());
5487         self.assertEqual(1,b.getNumberOfComponents());
5488         expected1=[0,1,3,5,7,8,18]
5489         for i in xrange(7):
5490             self.assertEqual(expected1[i],b.getIJ(0,i));
5491             pass
5492         b=DataArrayInt.BuildUnion([a,c]);
5493         self.assertEqual(7,b.getNumberOfTuples());
5494         self.assertEqual(1,b.getNumberOfComponents());
5495         expected1=[0,1,3,5,7,8,18]
5496         for i in xrange(7):
5497             self.assertEqual(expected1[i],b.getIJ(0,i));
5498             pass
5499         pass
5500
5501     def testDAIBuildIntersection1(self):
5502         a=DataArrayInt.New();
5503         tab1=[3,1,7,8]
5504         a.setValues(tab1,4,1);
5505         c=DataArrayInt.New();
5506         tab2=[5,3,0,18,8]
5507         c.setValues(tab2,5,1);
5508         b=a.buildIntersection(c);
5509         self.assertEqual(2,b.getNumberOfTuples());
5510         self.assertEqual(1,b.getNumberOfComponents());
5511         expected1=[3,8]
5512         for i in xrange(2):
5513             self.assertEqual(expected1[i],b.getIJ(0,i));
5514             pass
5515         b=DataArrayInt.BuildIntersection([a,c]);
5516         self.assertEqual(2,b.getNumberOfTuples());
5517         self.assertEqual(1,b.getNumberOfComponents());
5518         expected1=[3,8]
5519         for i in xrange(2):
5520             self.assertEqual(expected1[i],b.getIJ(0,i));
5521             pass
5522         pass
5523
5524     def testDAIDeltaShiftIndex1(self):
5525         a=DataArrayInt.New();
5526         tab=[1,3,6,7,7,9,15]
5527         a.setValues(tab,7,1);
5528         b=a.deltaShiftIndex();
5529         self.assertEqual(6,b.getNumberOfTuples());
5530         self.assertEqual(1,b.getNumberOfComponents());
5531         expected1=[2,3,1,0,2,6]
5532         for i in xrange(6):
5533             self.assertEqual(expected1[i],b.getIJ(0,i));
5534             pass
5535         pass
5536
5537     def testDaDoubleSelectByTupleIdSafe1(self):
5538         a=DataArrayDouble.New();
5539         arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
5540         a.setValues(arr1,7,2);
5541         a.setInfoOnComponent(0,"toto");
5542         a.setInfoOnComponent(1,"tata");
5543         #
5544         arr2=[4,2,0,6,5]
5545         b=a.selectByTupleIdSafe(arr2);
5546         self.assertEqual(5,b.getNumberOfTuples());
5547         self.assertEqual(2,b.getNumberOfComponents());
5548         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5549         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5550         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
5551         for i in xrange(10):
5552             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5553             pass
5554         arr4=[4,-1,0,6,5]
5555         self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr4);
5556         arr5=[4,2,0,6,7]
5557         self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr5);
5558         #
5559         c=DataArrayInt.New();
5560         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5561         c.setValues(arr3,7,2);
5562         c.setInfoOnComponent(0,"toto");
5563         c.setInfoOnComponent(1,"tata");
5564         d=c.selectByTupleIdSafe(arr2);
5565         self.assertEqual(5,d.getNumberOfTuples());
5566         self.assertEqual(2,d.getNumberOfComponents());
5567         self.assertTrue(d.getInfoOnComponent(0)=="toto");
5568         self.assertTrue(d.getInfoOnComponent(1)=="tata");
5569         expected2=[5,15,3,13,1,11,7,17,6,16]
5570         for i in xrange(10):
5571             self.assertEqual(expected2[i],d.getIJ(0,i));
5572             pass
5573         self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr4);
5574         self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr5);
5575         pass
5576
5577     def testAreCellsIncludedIn1(self):
5578         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5579         pt=[1,3]
5580         m2=m.buildPartOfMySelf(pt,True);
5581         ret,tmp=m.areCellsIncludedIn(m2,0)
5582         self.assertTrue(ret);
5583         self.assertEqual(2,tmp.getNumberOfTuples());
5584         self.assertEqual(1,tmp.getNumberOfComponents());
5585         self.assertEqual(pt[0],tmp.getIJ(0,0));
5586         self.assertEqual(pt[1],tmp.getIJ(0,1));
5587         ret,tmp=m2.areCellsIncludedIn(m,0)
5588         self.assertTrue(not ret);
5589         m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m,m2)
5590         c,cI=m3.findCommonCells(2,m.getNumberOfCells())
5591         self.assertTrue(c.isEqual(DataArrayInt([1,5,3,6])))
5592         self.assertTrue(cI.isEqual(DataArrayInt([0,2,4])))
5593         pass
5594
5595     def testSwigErrorProtection1(self):
5596         m=MEDCouplingDataForTest.build3DTargetMesh_1();
5597         m.rotate([0.,0.,0.],[0.3,0.6,1.2],0.37)
5598         m.rotate([0.,0.,0.],[0.3,6,1.2],0.37)
5599         self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],(0.3,6,"1.2"),0.37)
5600         self.assertRaises(InterpKernelException,m.rotate,[0.,"0.",0.],[0.3,0.6,1.2],0.37)
5601         self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],[0.3,'0.6',1.2],0.37)
5602         m2=m.buildPartOfMySelf([2,5],True)
5603         m3=m.buildPartOfMySelf((2,5),True)
5604         self.assertTrue(m2.isEqual(m3,1e-12))
5605         self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[2,5.],True)
5606         da1=m.getCoords().keepSelectedComponents([1])
5607         da2=m.getCoords().keepSelectedComponents((1,))
5608         self.assertTrue(da1.isEqual(da2,1e-12))
5609         self.assertRaises(InterpKernelException,m.getCoords().keepSelectedComponents,["1"])
5610         pass
5611
5612     def testDAIBuildSubstraction1(self):
5613         a=DataArrayInt.New()
5614         aa=[2,3,6,8,9]
5615         a.setValues(aa,5,1)
5616         b=DataArrayInt.New()
5617         bb=[1,3,5,9,11]
5618         b.setValues(bb,5,1)
5619         self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
5620         pass
5621
5622     def testBuildOrthogonalField2(self):
5623         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5624         d1=DataArrayInt.New();
5625         d2=DataArrayInt.New();
5626         d3=DataArrayInt.New();
5627         d4=DataArrayInt.New();
5628         m1=m.buildDescendingConnectivity(d1,d2,d3,d4);
5629         #
5630         f1=m1.buildOrthogonalField();
5631         da1=f1.getArray();
5632         self.assertEqual(2,da1.getNumberOfComponents());
5633         self.assertEqual(13,da1.getNumberOfTuples());
5634         #
5635         expected1=[-1.,0.,0.,1.,1.,0.,0.,-1.,0.707106781186548,0.707106781186548,0.,-1.,0.,1.,1.,0.,0.,1.,1.,0.,-1.,0.,0.,1.,1.,0.];
5636         for i in xrange(26):
5637             self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),14);
5638             pass
5639         pass
5640
5641     def testSwigErrorProtection2(self):
5642         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5643         coo=m.getCoords()
5644         c=m.getNodalConnectivity()
5645         ci=m.getNodalConnectivityIndex()
5646         del m
5647         self.assertEqual(2,coo.getNumberOfComponents());
5648         self.assertEqual(6,ci.getNumberOfTuples());
5649         self.assertEqual(23,c.getNumberOfTuples());
5650         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5651         f=m.getMeasureField(True)
5652         c=f.getArray()
5653         del f
5654         self.assertEqual(1,c.getNumberOfComponents());
5655         m=MEDCouplingCMesh.New()
5656         x=DataArrayDouble.New()
5657         x.setValues([1.,2.,4.],3,1)
5658         m.setCoordsAt(0,x)
5659         del x
5660         xx=m.getCoordsAt(0)
5661         del m
5662         self.assertEqual(3,xx.getNumberOfTuples());
5663         #
5664         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5665         f=m.getMeasureField(True)
5666         m2=f.getMesh()
5667         del m
5668         del f
5669         self.assertEqual(5,m2.getNumberOfCells());
5670         pass
5671
5672     def testUMInsertNextCell1(self):
5673         targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ]
5674         targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
5675         targetMesh=MEDCouplingUMesh.New();
5676         targetMesh.allocateCells(5);
5677         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_QUAD4,4,targetConn[0:4])
5678         targetMesh.setMeshDimension(2);
5679         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
5680         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_TETRA4,4,targetConn[0:4])
5681         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_SEG2,2,targetConn[0:2])
5682         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_POINT1,1,targetConn[0:1])
5683         targetMesh.insertNextCell(NORM_TRI3,3,targetConn[4:7])
5684         targetMesh.insertNextCell(NORM_TRI3,3,targetConn[7:10])
5685         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
5686         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
5687         targetMesh.finishInsertingCells();
5688         myCoords=DataArrayDouble.New();
5689         myCoords.setValues(targetCoords,9,2);
5690         targetMesh.setCoords(myCoords);
5691         targetMesh.checkCoherency();
5692         pass
5693
5694     def testFieldOperatorDivDiffComp1(self):
5695         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5696         m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
5697         #
5698         f1=m1.buildOrthogonalField();
5699         arr1=[2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.]
5700         arr=DataArrayDouble.New();
5701         arr.setValues(arr1,13,1);
5702         f2=MEDCouplingFieldDouble.New(ON_CELLS);
5703         f2.setArray(arr);
5704         f2.setMesh(m1);
5705         f2.checkCoherency();
5706         #
5707         f3=f1/f2;
5708         self.assertRaises(InterpKernelException,f2.__div__,f1)
5709         f3.checkCoherency();
5710         f1/=f2;
5711         #self.assertRaises(InterpKernelException,f2.__idiv__,f1) # mem leaks
5712         self.assertTrue(f1.isEqual(f3,1e-10,1e-10));
5713         expected1=[-0.5, 0.0, 0.0, 0.33333333333333331, 0.25, 0.0, 0.0, -0.20000000000000001, 0.117851130197758, 0.117851130197758, 0.0, -0.14285714285714285, 0.0, 0.125, 0.1111111111111111, 0.0, 0.0, 0.10000000000000001, 0.090909090909090912, 0.0, -0.083333333333333329, 0.0, 0.0, 0.076923076923076927, 0.071428571428571425, 0.0]
5714         for i in xrange(26):
5715             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),10);
5716             pass
5717         pass
5718
5719     def testDARearrange1(self):
5720         da1=DataArrayInt.New();
5721         da1.alloc(12,1);
5722         da1.iota(0);
5723         #
5724         self.assertEqual(12,da1.getNbOfElems());
5725         self.assertEqual(1,da1.getNumberOfComponents());
5726         self.assertEqual(12,da1.getNumberOfTuples());
5727         da1.rearrange(4);
5728         self.assertEqual(12,da1.getNbOfElems());
5729         self.assertEqual(4,da1.getNumberOfComponents());
5730         self.assertEqual(3,da1.getNumberOfTuples());
5731         for i in xrange(12):
5732             self.assertEqual(i,da1.getIJ(0,i));
5733         #
5734         da1.rearrange(6);
5735         self.assertEqual(12,da1.getNbOfElems());
5736         self.assertEqual(6,da1.getNumberOfComponents());
5737         self.assertEqual(2,da1.getNumberOfTuples());
5738         for i in xrange(12):
5739             self.assertEqual(i,da1.getIJ(0,i));
5740         #
5741         self.assertRaises(InterpKernelException,da1.rearrange,7);
5742         #
5743         da1.rearrange(12);
5744         self.assertEqual(12,da1.getNbOfElems());
5745         self.assertEqual(12,da1.getNumberOfComponents());
5746         self.assertEqual(1,da1.getNumberOfTuples());
5747         for i in xrange(12):
5748             self.assertEqual(i,da1.getIJ(0,i));
5749         #
5750         da1.rearrange(3);
5751         self.assertEqual(12,da1.getNbOfElems());
5752         self.assertEqual(3,da1.getNumberOfComponents());
5753         self.assertEqual(4,da1.getNumberOfTuples());
5754         for i in xrange(12):
5755             self.assertEqual(i,da1.getIJ(0,i));
5756         #double
5757         da2=da1.convertToDblArr();
5758         st=da2.getHiddenCppPointer()
5759         #
5760         self.assertEqual(12,da2.getNbOfElems());
5761         self.assertEqual(3,da2.getNumberOfComponents());
5762         self.assertEqual(4,da2.getNumberOfTuples());
5763         da2.rearrange(4);
5764         self.assertEqual(12,da2.getNbOfElems());
5765         self.assertEqual(4,da2.getNumberOfComponents());
5766         self.assertEqual(3,da2.getNumberOfTuples());
5767         for i in xrange(12):
5768             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5769         #
5770         da2.rearrange(6);
5771         self.assertEqual(12,da2.getNbOfElems());
5772         self.assertEqual(6,da2.getNumberOfComponents());
5773         self.assertEqual(2,da2.getNumberOfTuples());
5774         for i in xrange(12):
5775             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5776         #
5777         self.assertRaises(InterpKernelException,da2.rearrange,7);
5778         #
5779         da2.rearrange(1);
5780         self.assertEqual(st,da2.getHiddenCppPointer())
5781         self.assertEqual(12,da2.getNbOfElems());
5782         self.assertEqual(1,da2.getNumberOfComponents());
5783         self.assertEqual(12,da2.getNumberOfTuples());
5784         for i in xrange(12):
5785             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5786         #
5787         da2.rearrange(3);
5788         self.assertEqual(12,da2.getNbOfElems());
5789         self.assertEqual(3,da2.getNumberOfComponents());
5790         self.assertEqual(4,da2.getNumberOfTuples());
5791         for i in xrange(12):
5792             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5793         pass
5794
5795     def testDARearrange2(self):
5796         da1=DataArrayInt.New();
5797         arr=[1,2,3,2,2,3,5,1,5,5,2,2]
5798         da1.setValues(arr,4,3);
5799         s=da1.getDifferentValues();
5800         expected1=DataArrayInt([1,2,3,5])
5801         self.assertTrue(expected1.isEqual(s));
5802         pass
5803
5804     def testSwigErrorProtection3(self):
5805         da=DataArrayInt.New()
5806         da.setValues([1,2,3,4,0,0,0,0,0,0,0,0],4,3)
5807         self.assertEqual([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0],da.getValues())
5808         self.assertEqual(3,da.getNumberOfComponents());
5809         self.assertEqual(4,da.getNumberOfTuples());
5810         da=DataArrayInt.New()
5811         da.setValues(((1,2,3),(4,4,3),(0,0,0),(0,0,0)),4,3)
5812         self.assertEqual([1, 2, 3, 4, 4, 3, 0, 0, 0, 0, 0, 0],da.getValues())
5813         self.assertEqual(3,da.getNumberOfComponents());
5814         self.assertEqual(4,da.getNumberOfTuples());
5815         da.setValues((10*[1]+290*[2])[:12],4,3)
5816         self.assertEqual(10*[1]+[2,2],da.getValues())
5817         self.assertEqual(3,da.getNumberOfComponents());
5818         self.assertEqual(4,da.getNumberOfTuples());
5819         #
5820         da=DataArrayDouble.New()
5821         da.setValues([1,2,3.,4,0,0,0,0,0,0,0,0],4,3)
5822         self.assertEqual([1., 2., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0.],da.getValues())
5823         self.assertEqual(3,da.getNumberOfComponents());
5824         self.assertEqual(4,da.getNumberOfTuples());
5825         da=DataArrayDouble.New()
5826         da.setValues(((1,2,3),(4.,4,3),(0,0,0),(0,0,0)),4,3)
5827         self.assertEqual([1., 2., 3., 4., 4., 3., 0., 0., 0., 0., 0., 0.],da.getValues())
5828         self.assertEqual(3,da.getNumberOfComponents());
5829         self.assertEqual(4,da.getNumberOfTuples());
5830         da.setValues((10*[1]+290*[2])[:12],4,3)
5831         self.assertEqual(10*[1.]+[2.,2.],da.getValues())
5832         self.assertEqual(3,da.getNumberOfComponents());
5833         self.assertEqual(4,da.getNumberOfTuples());
5834         pass
5835
5836     def testDAIBuildPermutationArr1(self):
5837         a=DataArrayInt.New()
5838         a.setValues([4,5,6,7,8],5,1)
5839         b=DataArrayInt.New()
5840         b.setValues([5,4,8,6,7],5,1)
5841         c=a.buildPermutationArr(b)
5842         self.assertEqual([1,0,4,2,3],c.getValues())
5843         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5844         b.setIJ(0,0,9)
5845         self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
5846         self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
5847         a.setIJ(3,0,4)
5848         b.setIJ(0,0,5)
5849         b.setIJ(4,0,4)#a==[4,5,6,4,8] and b==[5,4,8,6,4]
5850         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5851         c=a.buildPermutationArr(b)
5852         self.assertEqual([1,3,4,2,3],c.getValues())
5853         d=b.convertToDblArr()
5854         expect3=[4,4,5,6,8]
5855         b.sort()
5856         self.assertEqual(expect3,b.getValues())
5857         d.sort()
5858         self.assertEqual(5,d.getNumberOfTuples());
5859         self.assertEqual(1,d.getNumberOfComponents());
5860         for i in xrange(5):
5861             self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
5862             pass
5863         pass
5864
5865     def testAreCellsIncludedIn2(self):
5866         myName="Vitoo";
5867         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5868         m2=m.buildPartOfMySelf([],True);
5869         self.assertEqual(0,m2.getNumberOfCells());
5870         self.assertEqual(3,m2.getSpaceDimension());
5871         self.assertEqual(2,m2.getMeshDimension());
5872         m2.setName(myName);
5873         test,tmp=m.areCellsIncludedIn(m2,0)
5874         self.assertTrue(test);
5875         self.assertEqual(myName,tmp.getName());
5876         self.assertEqual(0,tmp.getNumberOfTuples())
5877         self.assertEqual(1,tmp.getNumberOfComponents())
5878         pass
5879
5880     def testUMeshGetPartBarycenterAndOwner1(self):
5881         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5882         part1=[1,0,4];
5883         part=DataArrayInt.New();
5884         part.setValues(part1,3,1);
5885         b=m1.getPartBarycenterAndOwner(part);
5886         self.assertEqual(2,b.getNumberOfComponents());
5887         self.assertEqual(3,b.getNumberOfTuples());
5888         expected1=[0.36666666666666665,-0.13333333333333333,-0.05,-0.05,0.45,0.45];
5889         for i in xrange(6):
5890             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5891             pass
5892         pass
5893
5894     def testUMeshGetPartMeasureField1(self):
5895         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5896         part1=[1,0,4];
5897         part=DataArrayInt.New();
5898         part.setValues(part1,3,1);
5899         b=m1.getPartMeasureField(True,part);
5900         self.assertEqual(1,b.getNumberOfComponents());
5901         self.assertEqual(3,b.getNumberOfTuples());
5902         expected1=[0.125,0.25,0.25];
5903         for i in xrange(3):
5904             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5905             pass
5906         pass
5907
5908     def testUMeshBuildPartOrthogonalField1(self):
5909         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5910         m1.changeSpaceDimension(3);
5911         part1=[1,0,4];
5912         part=DataArrayInt.New();
5913         part.setValues(part1,3,1);
5914         b=m1.buildPartOrthogonalField(part);
5915         self.assertEqual(3,b.getArray().getNumberOfComponents());
5916         self.assertEqual(3,b.getArray().getNumberOfTuples());
5917         expected1=[0.,0.,-1.,0.,0.,-1.,0.,0.,-1.];
5918         for i in xrange(9):
5919             self.assertAlmostEqual(expected1[i],b.getArray().getIJ(0,i),14);
5920             pass
5921         pass
5922
5923     def testUMeshGetTypesOfPart1(self):
5924         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5925         part1=[0,3,4];
5926         p1=DataArrayInt.New()
5927         p1.setValues(part1,3,1)
5928         s=m1.getTypesOfPart(p1);
5929         self.assertEqual([NORM_QUAD4],s);
5930         part2=[2,2,2,1];
5931         p2=DataArrayInt.New()
5932         p2.setValues(part2,4,1)
5933         s=m1.getTypesOfPart(p2);
5934         self.assertEqual([NORM_TRI3],s);
5935         part3=[3,2,1];
5936         p3=DataArrayInt.New()
5937         p3.setValues(part3,3,1)
5938         s=m1.getTypesOfPart(p3);
5939         self.assertEqual(s,[NORM_TRI3,NORM_QUAD4]);
5940         pass
5941
5942     def testUMeshKeepCellIdsByType1(self):
5943         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5944         part1=[0,3,4]
5945         p1=DataArrayInt.New()
5946         p1.setValues(part1,3,1)
5947         p1.setName("p1")
5948         a=m1.keepCellIdsByType(NORM_TRI3,p1);
5949         self.assertEqual("p1",a.getName())
5950         self.assertEqual(1,a.getNumberOfComponents());
5951         self.assertEqual(0,a.getNumberOfTuples());
5952         #
5953         part2=[3,2,0,2,4]
5954         p2=DataArrayInt.New()
5955         p2.setValues(part2,5,1)
5956         p2.setName("p2")
5957         a=m1.keepCellIdsByType(NORM_TRI3,p2);
5958         self.assertEqual("p2",a.getName())
5959         self.assertEqual(1,a.getNumberOfComponents());
5960         self.assertEqual(2,a.getNumberOfTuples());
5961         self.assertEqual(2,a.getIJ(0,0));
5962         self.assertEqual(2,a.getIJ(1,0));
5963         #
5964         a=m1.keepCellIdsByType(NORM_QUAD4,p2);
5965         self.assertEqual("p2",a.getName())
5966         self.assertEqual(1,a.getNumberOfComponents());
5967         self.assertEqual(3,a.getNumberOfTuples());
5968         self.assertEqual(3,a.getIJ(0,0));
5969         self.assertEqual(0,a.getIJ(1,0));
5970         self.assertEqual(4,a.getIJ(2,0));
5971         pass
5972     
5973     def testSwigErrorDaIntSelectByTupleId1(self):
5974         a=DataArrayInt.New();
5975         arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5976         a.setValues(arr1,7,2);
5977         a.setInfoOnComponent(0,"toto");
5978         a.setInfoOnComponent(1,"tata");
5979         #
5980         arr2=[4,2,0,6,5]
5981         b=a.selectByTupleId(arr2);
5982         self.assertEqual(5,b.getNumberOfTuples());
5983         self.assertEqual(2,b.getNumberOfComponents());
5984         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5985         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5986         expected1=[5,15,3,13,1,11,7,17,6,16]
5987         self.assertEqual(expected1,b.getValues())
5988         #
5989         a2=DataArrayInt.New()
5990         a2.setValues(arr2,5,1)
5991         b=a.selectByTupleId(a2);
5992         self.assertEqual(5,b.getNumberOfTuples());
5993         self.assertEqual(2,b.getNumberOfComponents());
5994         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5995         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5996         expected1=[5,15,3,13,1,11,7,17,6,16]
5997         self.assertEqual(expected1,b.getValues())
5998         pass
5999
6000     def testSwigErrorRenum(self):
6001         da=DataArrayDouble.New()
6002         da.setValues([7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.],10,2)
6003         d=DataArrayInt.New()
6004         d.setValues([0,2,3,1,4,5,6,8,7,9],10,1)
6005         da.renumberInPlace(d)
6006         da.renumber(d)
6007         pass
6008
6009     def testSwigGetItem1(self):
6010         da=DataArrayInt.New()
6011         da.alloc(16,3)
6012         da.rearrange(1)
6013         da.iota(7)
6014         da.rearrange(3)
6015         da.setInfoOnComponent(0,"X [m]")
6016         da.setInfoOnComponent(1,"Y [m]")
6017         da.setInfoOnComponent(2,"Z [km]")
6018         da2=da[5:-1]
6019         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())
6020         da2=da[4]
6021         self.assertEqual([19, 20, 21],da2.getValues())
6022         try:
6023             da2=da[4:17]
6024         except InterpKernelException as e:
6025             self.assertTrue(True)
6026         else:
6027             self.assertTrue(False)
6028             pass
6029         da2=da[5:-2,2]
6030         self.assertEqual([24, 27, 30, 33, 36, 39, 42, 45, 48],da2.getValues())
6031         da2=da[5:8,:]
6032         self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30],da2.getValues())
6033         da2=da[:]
6034         self.assertTrue(da2.isEqual(da))
6035         da2=da[:,:]
6036         self.assertTrue(da2.isEqual(da))
6037         try:
6038             da2=da[:,:,:]
6039         except InterpKernelException as e:
6040             self.assertTrue(True)
6041         else:
6042             self.assertTrue(False)
6043             pass
6044         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayInt([23,26,29])))
6045         da2=da[5:8,:-2]
6046         self.assertEqual([22, 25, 28],da2.getValues())
6047         try:
6048             da2=da[5:-18,2]
6049         except InterpKernelException as e:
6050             self.assertTrue(True)
6051         else:
6052             self.assertTrue(False)
6053             pass
6054         da2=da[5:5,2]
6055         self.assertEqual([],da2.getValues())
6056         pass
6057
6058     def testSwigGetItem2(self):
6059         da=DataArrayDouble.New()
6060         da.alloc(16,3)
6061         da.rearrange(1)
6062         da.iota(7)
6063         da.rearrange(3)
6064         da.setInfoOnComponent(0,"X [m]")
6065         da.setInfoOnComponent(1,"Y [m]")
6066         da.setInfoOnComponent(2,"Z [km]")
6067         da2=da[5:-1]
6068         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())
6069         da2=da[4]
6070         self.assertEqual([19., 20., 21],da2.getValues())
6071         try:
6072             da2=da[4:17]
6073         except InterpKernelException as e:
6074             self.assertTrue(True)
6075         else:
6076             self.assertTrue(False)
6077             pass
6078         da2=da[5:-2,2]
6079         self.assertEqual([24., 27., 30., 33., 36., 39., 42., 45., 48.],da2.getValues())
6080         da2=da[5:8,:]
6081         self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30.],da2.getValues())
6082         da2=da[:]
6083         self.assertTrue(da2.isEqual(da,1e-12))
6084         da2=da[:,:]
6085         self.assertTrue(da2.isEqual(da,1e-12))
6086         try:
6087             da2=da[:,:,:]
6088         except InterpKernelException as e:
6089             self.assertTrue(True)
6090         else:
6091             self.assertTrue(False)
6092             pass
6093         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayDouble([23.,26.,29.]),1e-12))
6094         da2=da[5:8,:-2]
6095         self.assertEqual([22., 25., 28.],da2.getValues())
6096         try:
6097             da2=da[5:-18,2]
6098         except InterpKernelException as e:
6099             self.assertTrue(True)
6100         else:
6101             self.assertTrue(False)
6102             pass
6103         da2=da[5:5,2]
6104         self.assertEqual([],da2.getValues())
6105         pass
6106
6107     def testSwigSetItem1(self):
6108         da=DataArrayInt.New()
6109         da.alloc(20,1)
6110         da.iota(7)
6111         da.rearrange(5)
6112         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6113         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
6114         da[:,2]=3
6115         self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues())
6116         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6117         da[2]=3
6118         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3, 3, 3, 3, 3, 22, 23, 24, 25, 26],da.getValues())
6119         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6120         da[[0,3]]=-1
6121         self.assertEqual([-1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1],da.getValues())
6122         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6123         da[:,[1,3,4]]=-3
6124         self.assertEqual([7, -3, 9, -3, -3, 12, -3, 14, -3, -3, 17, -3, 19, -3, -3, 22, -3, 24, -3, -3],da.getValues())
6125         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6126         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6127         da[da2]=-7
6128         self.assertEqual([-7, -7, -7, -7, -7, 12, 13, 14, 15, 16, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7],da.getValues())
6129         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6130         da[da2,-2:]=-7
6131         self.assertEqual([7, 8, 9, -7, -7, 12, 13, 14, 15, 16, 17, 18, 19, -7, -7, 22, 23, 24, -7, -7],da.getValues())
6132         # Let's test with DAI right hand side
6133         da1=DataArrayInt.New()
6134         da1.setValues([25,26,27,125,126,127],2,3)
6135         #
6136         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6137         da[-2:,1:4]=da1
6138         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 21, 22, 125, 126, 127, 26],da.getValues())
6139         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6140         da[1:,3]=[225,226,227]
6141         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 225, 16, 17, 18, 19, 226, 21, 22, 23, 24, 227, 26],da.getValues())
6142         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6143         da[1,2:]=[225,226,227]
6144         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 225, 226, 227, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],da.getValues())
6145         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6146         da[da2,-2:]=[88,99,1010,1111,1212,1313]
6147         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6148         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6149         da3=DataArrayInt.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6150         da[da2,-2:]=da3
6151         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6152         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6153         da[da2,[0,2]]=da3
6154         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6155         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6156         da[da2,0:3:2]=da3
6157         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6158         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6159         da[da2,0:3:2]=-8
6160         self.assertEqual([-8, 8, -8, 10, 11, 12, 13, 14, 15, 16, -8, 18, -8, 20, 21, -8, 23, -8, 25, 26],da.getValues())
6161         pass
6162
6163     def testSwigSetItem2(self):
6164         da=DataArrayDouble.New()
6165         da.alloc(20,1)
6166         da.iota(7)
6167         da.rearrange(5)
6168         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6169         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
6170         da[:,2]=3.
6171         self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues())
6172         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6173         da[2]=3.
6174         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 3., 3., 3., 3., 3., 22., 23., 24., 25., 26.],da.getValues())
6175         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6176         da[[0,3]]=-1.
6177         self.assertEqual([-1., -1., -1., -1., -1., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., -1., -1., -1., -1., -1.],da.getValues())
6178         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6179         da[:,[1,3,4]]=-3.
6180         self.assertEqual([7., -3., 9., -3., -3., 12., -3., 14., -3., -3., 17., -3., 19., -3., -3., 22., -3., 24., -3., -3.],da.getValues())
6181         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6182         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6183         da[da2]=-7.
6184         self.assertEqual([-7., -7., -7., -7., -7., 12., 13., 14., 15., 16., -7., -7., -7., -7., -7., -7., -7., -7., -7., -7.],da.getValues())
6185         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6186         da[da2,-2:]=-7
6187         self.assertEqual([7., 8., 9., -7., -7., 12., 13., 14., 15., 16., 17., 18., 19., -7., -7., 22., 23., 24., -7., -7.],da.getValues())
6188         # Let's test with DAI right hand side
6189         da1=DataArrayDouble.New()
6190         da1.setValues([25,26,27,125,126,127],2,3)
6191         #
6192         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6193         da[-2:,1:4]=da1
6194         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 25., 26., 27., 21., 22., 125., 126., 127., 26.],da.getValues())
6195         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6196         da[1:,3]=[225.,226.,227.]
6197         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 225., 16., 17., 18., 19., 226., 21., 22., 23., 24., 227., 26.],da.getValues())
6198         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6199         da[1,2:]=[225,226,227]
6200         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 225., 226., 227., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26.],da.getValues())
6201         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6202         da[da2,-2:]=[88,99,1010,1111,1212,1313]
6203         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6204         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6205         da3=DataArrayDouble.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6206         da[da2,-2:]=da3
6207         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6208         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6209         da[da2,[0,2]]=da3
6210         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6211         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6212         da[da2,0:3:2]=da3
6213         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6214         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6215         da[da2,0:3:2]=-8.
6216         self.assertEqual([-8., 8., -8., 10., 11., 12., 13., 14., 15., 16., -8., 18., -8., 20., 21., -8., 23., -8., 25., 26.],da.getValues())
6217         pass
6218
6219     def testSwigDADOp(self):
6220         da=DataArrayDouble.New()
6221         da.alloc(12,1)
6222         da.iota(7.)
6223         da1=DataArrayDouble.New()
6224         da1.alloc(12,1)
6225         da1.iota(8.)
6226         da2=da+da1
6227         self.assertEqual([15., 17., 19., 21., 23., 25., 27., 29., 31., 33., 35., 37.],da2.getValues())
6228         da2=da+3
6229         da3=3+da
6230         self.assertTrue(da2.isEqual(da3,1e-12))
6231         da2=da-1.
6232         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())
6233         da2=1-da
6234         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())
6235         da2=da*3
6236         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())
6237         da2=3.*da
6238         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())
6239         da2=da*da1
6240         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())
6241         da2=da/4.
6242         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())
6243         da3=4./da
6244         da4=da3*da2
6245         self.assertTrue(da4.isUniform(1.,1e-12))
6246         st1=da.getHiddenCppPointer()
6247         da+=1
6248         st2=da.getHiddenCppPointer()
6249         self.assertEqual(st1,st2)
6250         self.assertTrue(da.isEqual(da1,1e-12))
6251         da-=8
6252         st2=da.getHiddenCppPointer()
6253         self.assertEqual(st1,st2)
6254         self.assertEqual(range(12),da.getValues())
6255         da+=da1
6256         st2=da.getHiddenCppPointer()
6257         self.assertEqual(st1,st2)
6258         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())
6259         da*=0.5
6260         st2=da.getHiddenCppPointer()
6261         self.assertEqual(st1,st2)
6262         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())
6263         da*=da1
6264         st2=da.getHiddenCppPointer()
6265         self.assertEqual(st1,st2)
6266         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())
6267         da/=da1
6268         self.assertEqual(st1,st2)
6269         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())
6270         da/=2
6271         st2=da.getHiddenCppPointer()
6272         self.assertEqual(st1,st2)
6273         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())
6274         da.rearrange(3)
6275         da5=DataArrayDouble.New()
6276         da5.setValues([5.,4.,3.,2.],4,1)
6277         da*=da5 # it works with unmathing number of compo
6278         st2=da.getHiddenCppPointer()
6279         self.assertEqual(st1,st2)
6280         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())
6281         #
6282         da.alloc(30,1)
6283         da.iota(7.)
6284         da.rearrange(3)
6285         ids=DataArrayInt.New()
6286         ids.setValues([3,4,7],3,1)
6287         da[ids,:]=[5.,8.,9.]
6288         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())
6289         #
6290         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6291         da[ids,[1,2]]=[5,8]
6292         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())
6293         pass
6294
6295     def testSwigDAIOp(self):
6296         da=DataArrayInt.New()
6297         da.alloc(12,1)
6298         da.iota(7)
6299         da1=DataArrayInt.New()
6300         da1.alloc(12,1)
6301         da1.iota(8)
6302         da2=da+da1
6303         self.assertEqual([15,17,19,21,23,25,27,29,31,33,35,37],da2.getValues())
6304         da2=da+3
6305         da3=3+da
6306         self.assertTrue(da2.isEqual(da3))
6307         da2=da-1
6308         self.assertEqual([6,7,8,9,10,11,12,13,14,15,16,17],da2.getValues())
6309         da2=1-da
6310         self.assertEqual([-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17],da2.getValues())
6311         da2=da*3
6312         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6313         da2=3*da
6314         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6315         da2=da*da1
6316         self.assertEqual([56,72,90,110,132,156,182,210,240,272,306,342.0],da2.getValues())
6317         da2=da/4
6318         self.assertEqual([1,2,2,2,2,3,3,3,3,4,4,4],da2.getValues())
6319         da3=4/da
6320         da4=da3*da2
6321         self.assertTrue(da4.isUniform(0))
6322         st1=da.getHiddenCppPointer()
6323         da+=1
6324         st2=da.getHiddenCppPointer()
6325         self.assertEqual(st1,st2)
6326         self.assertTrue(da.isEqual(da1))
6327         da-=8
6328         st2=da.getHiddenCppPointer()
6329         self.assertEqual(st1,st2)
6330         self.assertEqual(range(12),da.getValues())
6331         da+=da1
6332         st2=da.getHiddenCppPointer()
6333         self.assertEqual(st1,st2)
6334         self.assertEqual([8,10,12,14,16,18,20,22,24,26,28,30],da.getValues())
6335         da/=2
6336         st2=da.getHiddenCppPointer()
6337         self.assertEqual(st1,st2)
6338         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6339         da*=da1
6340         st2=da.getHiddenCppPointer()
6341         self.assertEqual(st1,st2)
6342         self.assertEqual([32,45,60,77,96,117,140,165,192,221,252,285],da.getValues())
6343         da/=da1
6344         self.assertEqual(st1,st2)
6345         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6346         da/=2
6347         st2=da.getHiddenCppPointer()
6348         self.assertEqual(st1,st2)
6349         self.assertEqual([2,2, 3,3, 4,4, 5,5, 6,6, 7,7],da.getValues())
6350         da.rearrange(3)
6351         da5=DataArrayInt.New()
6352         da5.setValues([5,4,3,2],4,1)
6353         da*=da5 # it works with unmathing number of compo
6354         st2=da.getHiddenCppPointer()
6355         self.assertEqual(st1,st2)
6356         self.assertEqual([10,10, 15,12,16,16,15,15, 18,12,14,14],da.getValues())
6357         da%=6
6358         st2=da.getHiddenCppPointer()
6359         self.assertEqual(st1,st2)
6360         self.assertEqual([4,4,3,0,4,4,3,3,0,0,2,2],da.getValues())
6361         #
6362         da.alloc(30,1)
6363         da.iota(7)
6364         da.rearrange(3)
6365         ids=DataArrayInt.New()
6366         ids.setValues([3,4,7],3,1)
6367         da[ids,:]=[5,8,9]
6368         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())
6369         #
6370         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6371         da[ids,[1,2]]=[5,8]
6372         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())
6373         pass
6374
6375     def testSwigDAIOp2(self):
6376         da=DataArrayInt.New()
6377         st=da.getHiddenCppPointer()
6378         da.alloc(10,3)
6379         da.rearrange(1)
6380         da.iota(0)
6381         da.rearrange(3)
6382         da[:,1]+=4
6383         da[-2:,2]+=10
6384         da[-2:,2]+=10
6385         da[:,2]+=da[:,0]
6386         da[da[0],:]=7
6387         self.assertEqual(st,da.getHiddenCppPointer())
6388         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])
6389         pass
6390
6391     def testSwigDAIOp3(self):
6392         da=DataArrayInt.New()
6393         self.assertRaises(InterpKernelException,da.__len__)
6394         self.assertRaises(InterpKernelException,da.__int__)
6395         for elt in da:
6396             self.assertTrue(False)
6397             pass
6398         da.alloc(12,3)
6399         da.rearrange(1) ; da.fillWithZero()
6400         l1=list(da)
6401         self.assertEqual(36,len(da));
6402         da.rearrange(3)
6403         tmp=da[0]
6404         self.assertRaises(InterpKernelException,tmp.__int__)
6405         self.assertEqual(12,len(da));
6406         l=list(da)
6407         for elt in enumerate(l):
6408             elt[1][2]=elt[0]
6409             pass
6410         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]
6411         self.assertEqual(ref,da.getValues());
6412         da.rearrange(1)
6413         l=[int(elt) for elt in l1]
6414         self.assertEqual(ref,da.getValues());
6415         self.assertEqual(11,int(da[-1:]))
6416         pass
6417
6418     def testSwigDADOp3(self):
6419         da=DataArrayDouble.New()
6420         self.assertRaises(InterpKernelException,da.__len__)
6421         self.assertRaises(InterpKernelException,da.__float__)
6422         for elt in da:
6423             self.assertTrue(False)
6424             pass
6425         da.alloc(12,3)
6426         da.rearrange(1) ; da.fillWithZero()
6427         l1=list(da)
6428         self.assertEqual(36,len(da));
6429         da.rearrange(3)
6430         tmp=da[0]
6431         self.assertRaises(InterpKernelException,tmp.__float__)
6432         self.assertEqual(12,len(da));
6433         l=list(da)
6434         for elt in enumerate(l):
6435             elt[1][2]=elt[0]
6436             pass
6437         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.]
6438         self.assertEqual(ref,da.getValues());
6439         da.rearrange(1)
6440         l=[float(elt) for elt in l1]
6441         self.assertEqual(ref,da.getValues());
6442         self.assertEqual(11.,float(da[-1:]))
6443         pass
6444
6445     def testSwigDataArrayIntIterator1(self):
6446         da=DataArrayInt.New()
6447         da.alloc(12,1)
6448         da.iota(2)
6449         da.rearrange(3)
6450         # __getitem__ testing
6451         li=[]
6452         for it in da:
6453             li+=it[1:]
6454             pass
6455         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6456         li=[]
6457         for it in da:
6458             li+=[it[-1]]
6459             pass
6460         self.assertEqual([4, 7, 10, 13],li)
6461         li=[]
6462         for it in da:
6463             li+=it[[2,1,0]]
6464             pass
6465         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6466         # __setitem__ testing
6467         da3=da.deepCpy()
6468         da2=DataArrayInt.New()
6469         da2.alloc(12,1)
6470         da2.iota(2002)
6471         da2.rearrange(3)
6472         it2=da2.__iter__()
6473         i=0
6474         for it in da:
6475             pt=it2.next()
6476             it[:]=pt
6477             pass
6478         self.assertTrue(da.isEqual(da2))
6479         da=da3
6480         da3=da.deepCpy()
6481         #
6482         for it in da:
6483             it[:]=5
6484             pass
6485         da.rearrange(1)
6486         self.assertTrue(da.isUniform(5))
6487         da=da3
6488         da3=da.deepCpy()
6489         #
6490         for it in da:
6491             it[:]=[8,9,12]
6492             pass
6493         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6494         da=da3
6495         da3=da.deepCpy()
6496         #
6497         for it in da:
6498             it[2]=[7]
6499             pass
6500         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6501         pass
6502
6503     def testSwigDataArrayDoubleIterator1(self):
6504         da=DataArrayDouble.New()
6505         da.alloc(12,1)
6506         da.iota(2)
6507         da.rearrange(3)
6508         # __getitem__ testing
6509         li=[]
6510         for it in da:
6511             li+=it[1:]
6512             pass
6513         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6514         li=[]
6515         for it in da:
6516             li+=[it[-1]]
6517             pass
6518         self.assertEqual([4, 7, 10, 13],li)
6519         li=[]
6520         for it in da:
6521             li+=it[[2,1,0]]
6522             pass
6523         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6524         # __setitem__ testing
6525         da3=da.deepCpy()
6526         da2=DataArrayDouble.New()
6527         da2.alloc(12,1)
6528         da2.iota(2002)
6529         da2.rearrange(3)
6530         it2=da2.__iter__()
6531         i=0
6532         for it in da:
6533             pt=it2.next()
6534             it[:]=pt
6535             pass
6536         self.assertTrue(da.isEqual(da2,1e-12))
6537         da=da3
6538         da3=da.deepCpy()
6539         #
6540         for it in da:
6541             it[:]=5
6542             pass
6543         da.rearrange(1)
6544         self.assertTrue(da.isUniform(5,1e-12))
6545         da=da3
6546         da3=da.deepCpy()
6547         #
6548         for it in da:
6549             it[:]=[8,9,12]
6550             pass
6551         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6552         da=da3
6553         da3=da.deepCpy()
6554         #
6555         for it in da:
6556             it[2]=[7]
6557             pass
6558         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6559         pass
6560
6561     def testSwigUMeshIterator1(self):
6562         m=MEDCouplingDataForTest.build2DTargetMesh_1()
6563         li1=[]
6564         li2=[]
6565         for cell in m:
6566             li1+=cell.getAllConn()[1:]
6567             li2+=[cell.getType()]
6568             pass
6569         self.assertEqual(li1,[0, 3, 4, 1, 1, 4, 2, 4, 5, 2, 6, 7, 4, 3, 7, 8, 5, 4])
6570         self.assertEqual(li2,[4, 3, 3, 4, 4])
6571         pass
6572
6573     def testSwigUMeshIterator2(self):
6574         m=MEDCouplingDataForTest.build2DTargetMesh_1()
6575         self.assertRaises(InterpKernelException,m.cellsByType);
6576         m.rearrange2ConsecutiveCellTypes()
6577         li1=[]
6578         li2=[]
6579         li3=[]
6580         for cellsByType in m.cellsByType():
6581             li1.append(cellsByType.getType())
6582             li2.append(cellsByType.getNumberOfElems())
6583             temp=[]
6584             for cell in cellsByType:
6585                 t=[None,None]
6586                 t[0]=cell.getType()
6587                 t[1]=cell.getAllConn()[1:]
6588                 temp.append(t)
6589                 pass
6590             li3.append(temp)
6591             pass
6592         self.assertEqual(li1,[4, 3])
6593         self.assertEqual(li2,[3, 2])
6594         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)]]])
6595         pass
6596
6597     def testDAIAggregateMulti1(self):
6598         a=DataArrayInt.New()
6599         a.setValues(range(4),2,2)
6600         a.setName("aa")
6601         b=DataArrayInt.New()
6602         b.setValues(range(6),3,2)
6603         c=DataArrayInt.Aggregate([a,b])
6604         self.assertEqual(range(4)+range(6),c.getValues())
6605         self.assertEqual("aa",c.getName())
6606         self.assertEqual(5,c.getNumberOfTuples())
6607         self.assertEqual(2,c.getNumberOfComponents())
6608         pass
6609
6610     def testMergeUMeshes2(self):
6611         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6612         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6613         m3=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6614         #
6615         vec1=[0,2,3]
6616         m2_2=m2.buildPartOfMySelf(vec1,False);
6617         vec2=[1,1]
6618         m3_2=m3.buildPartOfMySelf(vec2,False);
6619         #
6620         ms=[m1,m2_2,m3_2];
6621         #
6622         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[None]);
6623         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[3.4])
6624         m4=MEDCouplingUMesh.MergeUMeshes(ms);
6625         m4.checkCoherency();
6626         self.assertEqual(10,m4.getNumberOfCells());
6627         self.assertEqual(20,m4.getNumberOfNodes());
6628         self.assertEqual(45,m4.getMeshLength());
6629         m4bis=MEDCouplingMesh.MergeMeshes(ms);
6630         self.assertTrue(m4.isEqual(m4bis,1e-12))
6631         del m4bis
6632         #
6633         vec3=[0,1,2,3,4]
6634         m4_1=m4.buildPartOfMySelf(vec3,False);
6635         m4_1.setName(m1.getName());
6636         self.assertTrue(m4_1.isEqual(m1,1e-12));
6637         #
6638         vec4=[5,6,7]
6639         m4_2=m4.buildPartOfMySelf(vec4,False);
6640         cellCor,nodeCor=m4_2.checkGeoEquivalWith(m2_2,10,1e-12);
6641         #
6642         vec5=[8,9]
6643         m4_3=m4.buildPartOfMySelf(vec5,False);
6644         self.assertEqual(2,m4_3.getNumberOfCells());
6645         self.assertEqual(3,m4_3.getNumberOfNodes());
6646         m3_2.zipCoords();
6647         m4_3.setName(m3_2.getName());
6648         self.assertTrue(m4_3.isEqual(m3_2,1e-12));
6649         #
6650         pass
6651
6652     def testBuild0DMeshFromCoords1(self):
6653         sourceCoords=[-0.3,-0.3,0., 0.7,-0.3,0., -0.3,0.7,0., 0.7,0.7,0.]
6654         coo=DataArrayDouble.New();
6655         coo.setValues(sourceCoords,4,3);
6656         coo.setName("My0D");
6657         m=MEDCouplingUMesh.Build0DMeshFromCoords(coo);
6658         m.checkCoherency();
6659         self.assertEqual(4,m.getNumberOfNodes());
6660         self.assertEqual(4,m.getNumberOfCells());
6661         self.assertEqual(3,m.getSpaceDimension());
6662         self.assertEqual(0,m.getMeshDimension());
6663         types1=m.getAllGeoTypes();
6664         self.assertEqual([NORM_POINT1],types1);
6665         for i in xrange(4):
6666             conn=m.getNodeIdsOfCell(i);
6667             self.assertEqual([i],conn);
6668             self.assertTrue(NORM_POINT1==m.getTypeOfCell(i));
6669             pass
6670         self.assertEqual(m.getName(),"My0D");
6671         pass
6672
6673     def testDescriptionInMeshTimeUnit1(self):
6674         text1="totoTTEDD";
6675         m=MEDCouplingDataForTest.build2DTargetMesh_1();
6676         m.setDescription(text1);
6677         self.assertEqual(m.getDescription(),text1);
6678         m2=m.deepCpy();
6679         self.assertTrue(m.isEqual(m2,1e-12));
6680         self.assertEqual(m2.getDescription(),text1);
6681         m2.setDescription("ggg");
6682         self.assertTrue(not m.isEqual(m2,1e-12));
6683         #
6684         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6685         f.setTimeUnit(text1);
6686         self.assertEqual(f.getTimeUnit(),text1);
6687         f2=f.deepCpy();
6688         self.assertEqual(f2.getTimeUnit(),text1);
6689         #
6690         pass
6691
6692     def testMultiFields1(self):
6693         mfs=MEDCouplingDataForTest.buildMultiFields_1();
6694         ms=mfs.getMeshes();
6695         dms,refs=mfs.getDifferentMeshes()
6696         das=mfs.getArrays();
6697         das2,refs2=mfs.getDifferentArrays()
6698         self.assertEqual(5,len(mfs.getFields()))
6699         self.assertEqual(1,len(mfs.getFields()[0].getArrays()));
6700         self.assertEqual(2,len(mfs.getFields()[1].getArrays()));
6701         self.assertEqual(1,len(mfs.getFields()[2].getArrays()));
6702         self.assertEqual(1,len(mfs.getFields()[3].getArrays()));
6703         self.assertEqual(1,len(mfs.getFields()[4].getArrays()));
6704         self.assertEqual(5,len(ms));
6705         self.assertEqual(2,len(dms));
6706         self.assertEqual(6,len(das));
6707         self.assertEqual(5,len(das2));
6708         mfs2=mfs.deepCpy();
6709         self.assertTrue(mfs.isEqual(mfs2,1e-12,1e-12))
6710         pass
6711
6712     def testFieldOverTime1(self):
6713         fs=MEDCouplingDataForTest.buildMultiFields_2();
6714         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6715         f4bis=fs[4].buildNewTimeReprFromThis(ONE_TIME,False);
6716         fs[4]=f4bis;
6717         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6718         f4bis.setTime(2.7,20,21);
6719         fot=MEDCouplingFieldOverTime.New(fs);
6720         dt=fot.getDefinitionTimeZone();
6721         hs=dt.getHotSpotsTime();
6722         self.assertEqual(6,len(hs));
6723         expected1=[0.2,0.7,1.2,1.35,1.7,2.7]
6724         for i in xrange(6):
6725             self.assertAlmostEqual(expected1[i],hs[i],12);
6726             pass
6727         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.2);
6728         self.assertEqual(0,meshId);
6729         self.assertEqual(0,arrId);
6730         self.assertEqual(0,arrIdInField);
6731         self.assertEqual(0,fieldId);
6732         #
6733         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.7);
6734         self.assertEqual(0,meshId);
6735         self.assertEqual(1,arrId);
6736         self.assertEqual(0,arrIdInField);
6737         self.assertEqual(1,fieldId);
6738         #
6739         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeLeft(1.2);#**** WARNING left here
6740         self.assertEqual(0,meshId);
6741         self.assertEqual(2,arrId);
6742         self.assertEqual(1,arrIdInField);
6743         self.assertEqual(1,fieldId);
6744         #
6745         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.2);#**** WARNING right again here
6746         self.assertEqual(1,meshId);
6747         self.assertEqual(3,arrId);
6748         self.assertEqual(0,arrIdInField);
6749         self.assertEqual(2,fieldId);
6750         #
6751         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.35);
6752         self.assertEqual(1,meshId);
6753         self.assertEqual(3,arrId);
6754         self.assertEqual(0,arrIdInField);
6755         self.assertEqual(2,fieldId);
6756         #
6757         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.7);
6758         self.assertEqual(0,meshId);
6759         self.assertEqual(3,arrId);
6760         self.assertEqual(0,arrIdInField);
6761         self.assertEqual(3,fieldId);
6762         #
6763         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(2.7);
6764         self.assertEqual(1,meshId);
6765         self.assertEqual(4,arrId);
6766         self.assertEqual(0,arrIdInField);
6767         self.assertEqual(4,fieldId);
6768         #
6769         dt2=MEDCouplingDefinitionTime();
6770         self.assertTrue(not dt2.isEqual(dt));
6771         dt2.assign(dt);
6772         dt2.assign(dt);#to check memory management
6773         self.assertTrue(dt2.isEqual(dt));
6774         #
6775         dt3=MEDCouplingDefinitionTime();
6776         #
6777         pass
6778
6779     def testDAICheckAndPreparePermutation1(self):
6780         vals1=[9,10,0,6,4,11,3,7];
6781         expect1=[5,6,0,3,2,7,1,4];
6782         vals2=[9,10,0,6,10,11,3,7];
6783         da=DataArrayInt.New();
6784         da.setValues(vals1,8,1);
6785         da2=da.checkAndPreparePermutation();
6786         self.assertEqual(8,da2.getNumberOfTuples());
6787         self.assertEqual(1,da2.getNumberOfComponents());
6788         for i in xrange(8):
6789             self.assertEqual(expect1[i],da2.getIJ(i,0));
6790             pass
6791         #
6792         da=DataArrayInt.New();
6793         da.alloc(8,1);
6794         da.iota(0);
6795         da2=da.checkAndPreparePermutation();
6796         self.assertEqual(8,da2.getNumberOfTuples());
6797         self.assertEqual(1,da2.getNumberOfComponents());
6798         self.assertTrue(da2.isIdentity());
6799         #
6800         da=DataArrayInt.New();
6801         da.alloc(8,1);
6802         da.setValues(vals2,8,1);
6803         self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
6804         pass
6805
6806     def testDAIChangeSurjectiveFormat1(self):
6807         vals1=[0,3,2,3,2,2,1,2]
6808         expected1=[0,1,2,6,8]
6809         expected2=[0,  6,  2,4,5,7,  1,3]
6810         da=DataArrayInt.New();
6811         da.setValues(vals1,8,1);
6812         #
6813         da2,da2I=da.changeSurjectiveFormat(4);
6814         self.assertEqual(5,da2I.getNumberOfTuples());
6815         self.assertEqual(8,da2.getNumberOfTuples());
6816         self.assertEqual(expected1,da2I.getValues());
6817         self.assertEqual(expected2,da2.getValues());
6818         #
6819         self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
6820         #
6821         pass
6822
6823     def testUMeshGetCellIdsLyingOnNodes1(self):
6824         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6825         nodeIds1=[1,2,3,4,6]
6826         nodeIds2=[6,7]
6827         da=m.getCellIdsLyingOnNodes(nodeIds1,True);
6828         self.assertEqual(1,da.getNumberOfTuples());
6829         self.assertEqual(1,da.getNumberOfComponents());
6830         self.assertEqual(1,da.getIJ(0,0));
6831         da2=DataArrayInt.New()
6832         da2.setValues(nodeIds2,2,1)
6833         da=m.getCellIdsLyingOnNodes(da2,False);
6834         self.assertEqual(2,da.getNumberOfTuples());
6835         self.assertEqual(1,da.getNumberOfComponents());
6836         self.assertEqual(3,da.getIJ(0,0));
6837         self.assertEqual(4,da.getIJ(1,0));
6838         pass
6839
6840     def testUMeshFindCellIdsOnBoundary1(self):
6841         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6842         da5=m.findCellIdsOnBoundary();
6843         self.assertEqual(5,da5.getNumberOfTuples());
6844         self.assertTrue(da5.isIdentity());
6845         pass
6846
6847     def testMeshSetTime1(self):
6848         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6849         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6850         #
6851         self.assertTrue(m1.isEqual(m2,1e-12));
6852         m1.setTime(3.14,6,7);
6853         tmp3,tmp1,tmp2=m1.getTime();
6854         self.assertEqual(6,tmp1);
6855         self.assertEqual(7,tmp2);
6856         self.assertAlmostEqual(3.14,tmp3,12);
6857         self.assertTrue(not m1.isEqual(m2,1e-12));
6858         m2.setTime(3.14,6,7);
6859         self.assertTrue(m1.isEqual(m2,1e-12));
6860         m1.setTimeUnit("ms");
6861         self.assertTrue(m1.getTimeUnit()=="ms");
6862         m1.setTimeUnit("us");
6863         self.assertTrue(m1.getTimeUnit()=="us");
6864         self.assertTrue(not m1.isEqual(m2,1e-12));
6865         m2.setTimeUnit("us");
6866         self.assertTrue(m1.isEqual(m2,1e-12));
6867         m2.setTime(3.14,6,8);
6868         self.assertTrue(not m1.isEqual(m2,1e-12));
6869         m2.setTime(3.14,7,7);
6870         self.assertTrue(not m1.isEqual(m2,1e-12));
6871         m2.setTime(3.15,6,7);
6872         self.assertTrue(not m1.isEqual(m2,1e-12));
6873         #
6874         m1.setTime(10.34,55,12);
6875         m3=m1.deepCpy();
6876         self.assertTrue(m1.isEqual(m3,1e-12));
6877         tmp3,tmp1,tmp2=m3.getTime();
6878         self.assertEqual(55,tmp1);
6879         self.assertEqual(12,tmp2);
6880         self.assertAlmostEqual(10.34,tmp3,12);
6881         #
6882         # testing CMesh
6883         coo1=[0.,1.,2.,3.5]
6884         a=DataArrayDouble.New();
6885         a.setValues(coo1,4,1);
6886         b=MEDCouplingCMesh.New();
6887         b.setCoordsAt(0,a);
6888         #
6889         b.setTime(5.67,8,100);
6890         tmp3,tmp1,tmp2=b.getTime();
6891         self.assertEqual(8,tmp1);
6892         self.assertEqual(100,tmp2);
6893         self.assertAlmostEqual(5.67,tmp3,12);
6894         c=b.deepCpy();
6895         self.assertTrue(c.isEqual(b,1e-12));
6896         tmp3,tmp1,tmp2=c.getTime();
6897         self.assertEqual(8,tmp1);
6898         self.assertEqual(100,tmp2);
6899         self.assertAlmostEqual(5.67,tmp3,12);
6900         pass
6901
6902     def testApplyFuncTwo1(self):
6903         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6904         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6905         f1.setMesh(m1);
6906         #
6907         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6908         da=DataArrayDouble.New();
6909         da.setValues(vals,5,3);
6910         f1.setArray(da);
6911         #
6912         self.assertRaises(InterpKernelException,da.applyFunc2,1,"y+z");
6913         da.setInfoOnComponent(0,"x [m]");
6914         da.setInfoOnComponent(1,"y [mm]");
6915         da.setInfoOnComponent(2,"z [km]");
6916         
6917         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x+y+zz+zzz");
6918         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "toto(x+y)");
6919         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x/0");
6920         
6921         da2=da.applyFunc2(1,"y+z");
6922         self.assertEqual(1,da2.getNumberOfComponents());
6923         self.assertEqual(5,da2.getNumberOfTuples());
6924         expected1=[32.,34.,36.,38.,40.]
6925         for i in xrange(5):
6926             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6927             pass
6928         da2=da.applyFunc(1,"y+z");
6929         expected2=[12.,14.,16.,18.,20.]
6930         for i in xrange(5):
6931             self.assertAlmostEqual(expected2[i],da2.getIJ(0,i),12);
6932             pass
6933         #
6934         self.assertEqual(3,f1.getNumberOfComponents());
6935         self.assertEqual(5,f1.getNumberOfTuples());
6936         f1.applyFunc2(1,"y+z");
6937         self.assertEqual(1,f1.getNumberOfComponents());
6938         self.assertEqual(5,f1.getNumberOfTuples());
6939         for i in xrange(5):
6940             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6941             pass
6942         #
6943         pass
6944
6945     def testApplyFuncThree1(self):
6946         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6947         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6948         f1.setMesh(m1);
6949         #
6950         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6951         da=DataArrayDouble.New();
6952         da.setValues(vals,5,3);
6953         f1.setArray(da);
6954         #
6955         vs=3*[None];
6956         vs[0]="x"; vs[1]="Y"; vs[2]="z";
6957         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "y+z");
6958         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x+Y+z+zz+zzz");
6959         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x/0");
6960         vs[1]="y";
6961         da2=da.applyFunc3(1,vs,"y+z");
6962         expected1=[32.,34.,36.,38.,40.]
6963         for i in xrange(5):
6964             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6965             pass
6966         self.assertRaises(InterpKernelException, da.applyFunc3, 1, ["x","y","z","a"],"x+a")
6967         f1.setArray(da);
6968         self.assertEqual(3,f1.getNumberOfComponents());
6969         self.assertEqual(5,f1.getNumberOfTuples());
6970         f1.applyFunc3(1,vs,"y+z");
6971         self.assertEqual(1,f1.getNumberOfComponents());
6972         self.assertEqual(5,f1.getNumberOfTuples());
6973         for i in xrange(5):
6974             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6975             pass
6976         pass
6977
6978     def testFillFromAnalyticTwo1(self):
6979         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6980         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
6981         self.assertRaises(InterpKernelException,m1.fillFromAnalytic2,ON_NODES,1,"y+z");
6982         m1.getCoords().setInfoOnComponent(0,"x [m]");
6983         m1.getCoords().setInfoOnComponent(1,"y");
6984         m1.getCoords().setInfoOnComponent(2,"z");
6985         f1=m1.fillFromAnalytic2(ON_NODES,1,"y+z");
6986         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
6987         self.assertEqual("us",f1.getTimeUnit())
6988         self.assertEqual(1,f1.getNumberOfComponents());
6989         self.assertEqual(9,f1.getNumberOfTuples());
6990         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6991         for i in xrange(9):
6992             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6993             pass
6994         pass
6995
6996     def testFillFromAnalyticThree1(self):
6997         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6998         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
6999         vs=3*[None];
7000         vs[0]="x"; vs[1]="Y"; vs[2]="z";
7001         self.assertRaises(InterpKernelException,m1.fillFromAnalytic3,ON_NODES,1,vs,"y+z");
7002         vs[1]="y";
7003         f1=m1.fillFromAnalytic3(ON_NODES,1,vs,"y+z");
7004         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
7005         self.assertEqual("us",f1.getTimeUnit())
7006         self.assertEqual(1,f1.getNumberOfComponents());
7007         self.assertEqual(9,f1.getNumberOfTuples());
7008         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
7009         for i in xrange(9):
7010             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
7011             pass
7012         pass
7013
7014     def testDAUnitVar1(self):
7015         da=DataArrayDouble.New();
7016         da.alloc(1,3);
7017         da.setInfoOnComponent(0,"XPS [m]");
7018         st1=da.getVarOnComponent(0);
7019         self.assertTrue(st1=="XPS");
7020         st2=da.getUnitOnComponent(0);
7021         self.assertTrue(st2=="m");
7022         #
7023         da.setInfoOnComponent(0,"XPS         [m]");
7024         st1=da.getVarOnComponent(0);
7025         self.assertTrue(st1=="XPS");
7026         st2=da.getUnitOnComponent(0);
7027         self.assertTrue(st2=="m");
7028         #
7029         da.setInfoOnComponent(0,"XPP         [m]");
7030         st1=da.getVarOnComponent(0);
7031         self.assertTrue(st1=="XPP");
7032         st2=da.getUnitOnComponent(0);
7033         self.assertTrue(st2=="m");
7034         #
7035         da.setInfoOnComponent(0,"XPP kdep  kefer   [ m  ]");
7036         st1=da.getVarOnComponent(0);
7037         self.assertTrue(st1=="XPP kdep  kefer");
7038         st2=da.getUnitOnComponent(0);
7039         self.assertTrue(st2==" m  ");
7040         #
7041         da.setInfoOnComponent(0,"     XPP k[  dep  k]efer   [ m^ 2/s^3*kJ  ]");
7042         st1=da.getVarOnComponent(0);
7043         self.assertTrue(st1=="     XPP k[  dep  k]efer");
7044         st2=da.getUnitOnComponent(0);
7045         self.assertTrue(st2==" m^ 2/s^3*kJ  ");
7046         #
7047         da.setInfoOnComponent(0,"     XPP kefer   ");
7048         st1=da.getVarOnComponent(0);
7049         self.assertTrue(st1=="     XPP kefer   ");
7050         st2=da.getUnitOnComponent(0);
7051         self.assertTrue(st2=="");
7052         #
7053         da.setInfoOnComponent(0,"temperature( bof)");
7054         st1=da.getVarOnComponent(0);
7055         self.assertTrue(st1=="temperature( bof)");
7056         st2=da.getUnitOnComponent(0);
7057         self.assertTrue(st2=="");
7058         #
7059         da.setInfoOnComponent(0,"kkk [m]");
7060         da.setInfoOnComponent(1,"ppp   [m^2/kJ]");
7061         da.setInfoOnComponent(2,"abcde   [MW/s]");
7062         #
7063         vs=da.getVarsOnComponent();
7064         self.assertEqual(3,len(vs));
7065         self.assertTrue(vs[0]=="kkk");
7066         self.assertTrue(vs[1]=="ppp");
7067         self.assertTrue(vs[2]=="abcde");
7068         vs=da.getUnitsOnComponent();
7069         self.assertEqual(3,len(vs));
7070         self.assertTrue(vs[0]=="m");
7071         self.assertTrue(vs[1]=="m^2/kJ");
7072         self.assertTrue(vs[2]=="MW/s");
7073         pass
7074
7075     def testGaussCoordinates1(self):
7076         #Testing 1D cell types
7077         m1=MEDCouplingDataForTest.build1DMultiTypes_1();
7078         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7079         f.setMesh(m1);
7080         wg1=[0.3];
7081         gsCoo1=[0.2];
7082         refCoo1=[-1.0,1.0];
7083         f.setGaussLocalizationOnType(NORM_SEG2,refCoo1,gsCoo1,wg1);
7084         wg2=wg1;
7085         gsCoo2=[0.2];
7086         refCoo2=[-1.0,1.0,0.0];
7087         f.setGaussLocalizationOnType(NORM_SEG3,refCoo2,gsCoo2,wg2);
7088         #
7089         resToTest=f.getLocalizationOfDiscr();
7090         self.assertEqual(3,resToTest.getNumberOfComponents());
7091         self.assertEqual(2,resToTest.getNumberOfTuples());
7092         expected1=[0.6,0.6,0.6, 0.6,0.6,0.6]
7093         for i in xrange(6):
7094             self.assertAlmostEqual(expected1[i],resToTest.getIJ(0,i),14);
7095             pass
7096         #
7097         #Testing 2D cell types
7098         m2=MEDCouplingDataForTest.build2DMultiTypes_1();
7099         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7100         f.setMesh(m2);
7101         wg3=[0.3,0.3];
7102         tria3CooGauss=[ 0.1, 0.8, 0.2, 0.7 ]
7103         gsCoo3=tria3CooGauss
7104         tria3CooRef=[ 0.0, 0.0, 1.0 , 0.0, 0.0, 1.0 ]
7105         refCoo3=tria3CooRef;
7106         f.setGaussLocalizationOnType(NORM_TRI3,refCoo3,gsCoo3,wg3);
7107         wg4=[0.3,0.3,0.3];
7108         tria6CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4 ]
7109         gsCoo4=tria6CooGauss;
7110         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]
7111         refCoo4=tria6CooRef;
7112         f.setGaussLocalizationOnType(NORM_TRI6,refCoo4,gsCoo4,wg4);
7113         wg5=[0.3,0.3,0.3,0.3];
7114         quad4CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4, 0.15, 0.27 ]
7115         gsCoo5=quad4CooGauss;
7116         quad4CooRef=[-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0]
7117         refCoo5=quad4CooRef;
7118         f.setGaussLocalizationOnType(NORM_QUAD4,refCoo5,gsCoo5,wg5);
7119         wg6=[0.3,0.3,0.3,0.3];
7120         quad8CooGauss=[ 0.34, 0.16, 0.21, 0.3, 0.23, 0.4, 0.14, 0.37 ]
7121         gsCoo6=quad8CooGauss;
7122         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]
7123         refCoo6=quad8CooRef;
7124         f.setGaussLocalizationOnType(NORM_QUAD8,refCoo6,gsCoo6,wg6);
7125         #
7126         resToTest=f.getLocalizationOfDiscr();
7127         self.assertEqual(3,resToTest.getNumberOfComponents());
7128         self.assertEqual(13,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7129         expected2=[5.1,1.55,0.0, 4.7,1.65,0.0,
7130                    2.32,1.52,0.0, 1.6,1.32,0.0, 3.52,1.26,0.0,#TRI6
7131                    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
7132                    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
7133         for i in xrange(39):
7134             self.assertAlmostEqual(expected2[i],resToTest.getIJ(0,i),14);
7135             pass
7136         #
7137         #Testing 3D cell types
7138         m3=MEDCouplingDataForTest.build3DMultiTypes_1();
7139         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7140         f.setMesh(m3);
7141         #
7142         wg7=[0.3];
7143         tetra4CooGauss=[0.34, 0.16, 0.21]
7144         gsCoo7=tetra4CooGauss;
7145         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]
7146         refCoo7=tetra4CooRef;
7147         f.setGaussLocalizationOnType(NORM_TETRA4,refCoo7,gsCoo7,wg7);
7148         wg8=[0.3];
7149         tetra10CooGauss=[0.2, 0.3, 0.1]
7150         gsCoo8=tetra10CooGauss;
7151         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]
7152         refCoo8=tetra10CooRef;
7153         f.setGaussLocalizationOnType(NORM_TETRA10,refCoo8,gsCoo8,wg8);
7154         wg9=[0.3];
7155         pyra5CooGauss=[0.2, 0.3, 0.1]
7156         gsCoo9=pyra5CooGauss;
7157         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]
7158         refCoo9=pyra5CooRef;
7159         f.setGaussLocalizationOnType(NORM_PYRA5,refCoo9,gsCoo9,wg9);
7160         wg10=[0.3];
7161         pyra13CooGauss=[0.1, 0.2, 0.7]
7162         gsCoo10=pyra13CooGauss;
7163         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]
7164         refCoo10=pyra13CooRef;
7165         f.setGaussLocalizationOnType(NORM_PYRA13,refCoo10,gsCoo10,wg10);
7166         wg11=[0.3];
7167         penta6CooGauss=[0.2, 0.3, 0.1]
7168         gsCoo11=penta6CooGauss;
7169         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]
7170         refCoo11=penta6CooRef;
7171         f.setGaussLocalizationOnType(NORM_PENTA6,refCoo11,gsCoo11,wg11);
7172         wg12=[0.3];
7173         penta15CooGauss=[0.2, 0.3,0.15]
7174         gsCoo12=penta15CooGauss;
7175         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]
7176         refCoo12=penta15CooRef;
7177         f.setGaussLocalizationOnType(NORM_PENTA15,refCoo12,gsCoo12,wg12);
7178         wg13=[0.3];
7179         hexa8CooGauss=[0.2,0.3,0.15]
7180         gsCoo13=hexa8CooGauss;
7181         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]
7182         refCoo13=hexa8CooRef;
7183         f.setGaussLocalizationOnType(NORM_HEXA8,refCoo13,gsCoo13,wg13);
7184         wg14=[0.3];
7185         hexa20CooGauss=[0.11,0.3,0.55]
7186         gsCoo14=hexa20CooGauss;
7187         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]
7188         refCoo14=hexa20CooRef;
7189         f.setGaussLocalizationOnType(NORM_HEXA20,refCoo14,gsCoo14,wg14);
7190         #
7191         resToTest=f.getLocalizationOfDiscr();
7192         self.assertEqual(3,resToTest.getNumberOfComponents());
7193         self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7194         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]
7195         for i in xrange(24):
7196             self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14);
7197             pass
7198         #
7199         pass
7200
7201     def testP2Localization1(self):
7202         m=MEDCouplingUMesh.New("testP2",2);
7203         coords=[0.,2.,3.5,0.,4.5,1.5,1.2,0.32,3.4,1.,2.1,2.4]
7204         conn=[0,1,2,3,4,5]
7205         coo=DataArrayDouble.New();
7206         coo.setValues(coords,6,2);
7207         m.setCoords(coo);
7208         m.allocateCells(1);
7209         m.insertNextCell(NORM_TRI6,6,conn[0:6])
7210         m.finishInsertingCells();
7211         #
7212         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7213         f.setMesh(m);
7214         da=DataArrayDouble.New();
7215         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]
7216         da.setValues(vals1,6,3);
7217         f.setArray(da);
7218         #
7219         loc=[2.27,1.3]
7220         locs=f.getValueOnMulti(loc);
7221         expected1=[6.0921164547752236, 7.1921164547752232, 8.2921164547752255]
7222         for i in xrange(3):
7223             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7224             pass
7225         pass
7226
7227     def testP2Localization2(self):
7228         m=MEDCouplingUMesh.New("testP2_2",3);
7229         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]
7230         conn=[0,1,2,3,4,5,6,7,8,9]
7231         coo=DataArrayDouble.New();
7232         coo.setValues(coords,10,3);
7233         m.setCoords(coo);
7234         m.allocateCells(1);
7235         m.insertNextCell(NORM_TETRA10,10,conn[0:10])
7236         m.finishInsertingCells();
7237         #
7238         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7239         f.setMesh(m);
7240         da=DataArrayDouble.New();
7241         vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2]
7242         da.setValues(vals1,10,1);
7243         f.setArray(da);
7244         #
7245         loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748]
7246         locs=f.getValueOnMulti(loc);
7247         expected1=[10.0844021968047]
7248         for i in xrange(1):
7249             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7250             pass
7251         pass
7252
7253     def testGetValueOn2(self):
7254         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7255         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
7256         f.setMesh(m);
7257         arr=DataArrayDouble.New();
7258         nbOfCells=m.getNumberOfCells();
7259         f.setArray(arr);
7260         values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
7261         arr.setValues(values1,nbOfCells,3);
7262         loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
7263         f.checkCoherency();
7264         locs=f.getValueOnMulti(loc);
7265         self.assertEqual(5,locs.getNumberOfTuples());
7266         self.assertEqual(3,locs.getNumberOfComponents());
7267         for j in xrange(15):
7268             self.assertAlmostEqual(values1[j],locs.getIJ(0,j),12);
7269             pass
7270         # Testing ON_NODES
7271         f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
7272         f.setMesh(m);
7273         arr=DataArrayDouble.New();
7274         nbOfNodes=m.getNumberOfNodes();
7275         f.setArray(arr);
7276         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.]
7277         arr.setValues(values2,nbOfNodes,3);
7278         loc2=[0.5432,-0.2432, 0.5478,0.1528, 0.5432,-0.2432, 0.5432,-0.2432]
7279         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]
7280         f.checkCoherency();
7281         loc3=DataArrayDouble.New()
7282         loc3.setValues(loc2,4,2);
7283         locs=f.getValueOnMulti(loc3);
7284         self.assertEqual(4,locs.getNumberOfTuples());
7285         self.assertEqual(3,locs.getNumberOfComponents());
7286         for i in xrange(12):
7287             self.assertAlmostEqual(expected2[i],locs.getIJ(0,i),12);
7288             pass
7289         #
7290         pass
7291
7292     def testDAIGetIdsNotEqual1(self):
7293         d=DataArrayInt.New();
7294         vals1=[2,3,5,6,8,5,5,6,1,-5]
7295         d.setValues(vals1,10,1);
7296         d2=d.getIdsNotEqual(5);
7297         self.assertEqual(7,d2.getNumberOfTuples());
7298         self.assertEqual(1,d2.getNumberOfComponents());
7299         expected1=[0,1,3,4,7,8,9]
7300         for i in xrange(7):
7301             self.assertEqual(expected1[i],d2.getIJ(0,i));
7302             pass
7303         d.rearrange(2);
7304         self.assertRaises(InterpKernelException,d.getIdsNotEqual,5);
7305         vals2=[-4,5,6]
7306         vals3=vals2;
7307         d.rearrange(1);
7308         d3=d.getIdsNotEqualList(vals3);
7309         self.assertEqual(5,d3.getNumberOfTuples());
7310         self.assertEqual(1,d3.getNumberOfComponents());
7311         expected2=[0,1,4,8,9]
7312         for i in xrange(5):
7313             self.assertEqual(expected2[i],d3.getIJ(0,i));
7314             pass
7315         pass
7316
7317     def testDAIComputeOffsets1(self):
7318         d=DataArrayInt.New();
7319         vals1=[3,5,1,2,0,8]
7320         expected1=[0,3,8,9,11,11]
7321         d.setValues(vals1,6,1);
7322         d.computeOffsets();
7323         self.assertEqual(6,d.getNumberOfTuples());
7324         self.assertEqual(1,d.getNumberOfComponents());
7325         for i in xrange(6):
7326             self.assertEqual(expected1[i],d.getIJ(0,i));
7327             pass
7328         pass
7329
7330     def testUMeshHexagonPrism1(self):
7331         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,
7332                 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];
7333         conn=[1,2,3,4,5,0,7,8,9,10,11,6]
7334         mesh=MEDCouplingUMesh.New("MyFirstHexagonalPrism",3);
7335         coo=DataArrayDouble.New();
7336         coo.setValues(coords,12,3);
7337         mesh.setCoords(coo);
7338         mesh.allocateCells(1);
7339         mesh.insertNextCell(NORM_HEXGP12,12,conn[0:12])
7340         mesh.finishInsertingCells();
7341         #
7342         mesh.checkCoherency();
7343         vols=mesh.getMeasureField(False);
7344         self.assertEqual(1,vols.getNumberOfTuples());
7345         self.assertEqual(1,vols.getNumberOfComponents());
7346         self.assertAlmostEqual(-5.196152422706632,vols.getIJ(0,0),12);
7347         bary=mesh.getBarycenterAndOwner();
7348         self.assertEqual(1,bary.getNumberOfTuples());
7349         self.assertEqual(3,bary.getNumberOfComponents());
7350         expected1=[0.,0.,1.]
7351         for i in xrange(3):
7352             self.assertAlmostEqual(expected1[i],bary.getIJ(0,i),12);
7353             pass
7354         d1=DataArrayInt.New();
7355         d2=DataArrayInt.New();
7356         d3=DataArrayInt.New();
7357         d4=DataArrayInt.New();
7358         m2=mesh.buildDescendingConnectivity(d1,d2,d3,d4);
7359         self.assertEqual(8,m2.getNumberOfCells());
7360         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]];
7361         expected2=[NORM_POLYGON, NORM_POLYGON, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4];
7362         expected3=[6,6,4,4,4,4,4,4]
7363         for i in xrange(8):
7364             self.assertTrue(m2.getTypeOfCell(i)==expected2[i]);
7365             v=m2.getNodeIdsOfCell(i);
7366             self.assertTrue(len(v)==expected3[i]);
7367             self.assertEqual(expected4[i],v);
7368         #
7369         mesh.convertAllToPoly();
7370         self.assertTrue(NORM_POLYHED==mesh.getTypeOfCell(0));
7371         mesh.unPolyze();
7372         self.assertTrue(NORM_HEXGP12==mesh.getTypeOfCell(0));
7373         self.assertEqual(13,mesh.getMeshLength());
7374         #
7375         pass
7376
7377     def testDADCheckIsMonotonic(self):
7378         da=DataArrayDouble.New();
7379         da.setValues([-1.,1.01,2.03,6.],2,2);
7380         self.assertRaises(InterpKernelException,da.isMonotonic,True,1e-12);
7381         da.rearrange(1);
7382         self.assertTrue(da.isMonotonic(True,1e-12));
7383         da.checkMonotonic(True,1e-12);
7384         da.setIJ(2,0,6.1);
7385         self.assertTrue(not da.isMonotonic(True,1e-12));
7386         self.assertRaises(InterpKernelException,da.checkMonotonic,True,1e-12);
7387         da.setIJ(2,0,5.99);
7388         self.assertTrue(da.isMonotonic(True,1e-12));
7389         self.assertTrue(not da.isMonotonic(True,1e-1));
7390         pass
7391
7392     def testCheckCoherencyDeeper1(self):
7393         m=MEDCouplingDataForTest.build3DSourceMesh_1();
7394         m.checkCoherency();
7395         m.checkCoherency1();
7396         m.getNodalConnectivity().setIJ(8,0,-1);
7397         m.checkCoherency();
7398         self.assertRaises(InterpKernelException,m.checkCoherency1);
7399         m.getNodalConnectivity().setIJ(8,0,-6);
7400         m.checkCoherency();
7401         self.assertRaises(InterpKernelException,m.checkCoherency1);
7402         m.getNodalConnectivity().setIJ(8,0,9);#9>=NbOfNodes
7403         m.checkCoherency();
7404         self.assertRaises(InterpKernelException,m.checkCoherency1);
7405         m.getNodalConnectivity().setIJ(8,0,8);#OK
7406         m.checkCoherency();
7407         m.checkCoherency1();
7408         elts=[1,5]
7409         m.convertToPolyTypes(elts);
7410         m.checkCoherency();
7411         m.checkCoherency1();
7412         m.getNodalConnectivity().setIJ(2,0,9);#9>=NbOfNodes
7413         m.checkCoherency();
7414         self.assertRaises(InterpKernelException,m.checkCoherency1);
7415         m.getNodalConnectivity().setIJ(2,0,-3);
7416         m.checkCoherency();
7417         self.assertRaises(InterpKernelException,m.checkCoherency1);
7418         m.getNodalConnectivity().setIJ(2,0,-1);
7419         m.checkCoherency();
7420         self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw because cell#0 is not a polyhedron
7421         m.getNodalConnectivity().setIJ(2,0,4);
7422         m.checkCoherency();
7423         m.checkCoherency1();
7424         m.getNodalConnectivity().setIJ(7,0,-1);
7425         m.checkCoherency();
7426         m.checkCoherency1();#OK because we are in polyhedron connec
7427         m.getNodalConnectivity().setIJ(36,0,14);
7428         m.checkCoherency();
7429         self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
7430         pass
7431
7432     def testUnPolyze2(self):
7433         m=MEDCouplingUMesh.New("jjj",3);
7434         coo=DataArrayDouble.New();
7435         coo.alloc(4,3);
7436         coo.rearrange(1);
7437         coo.iota(0);
7438         coo.rearrange(3);
7439         m.setCoords(coo);
7440         m.allocateCells(2);
7441         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7442         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7443         m.finishInsertingCells();
7444         m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(4*[m]);
7445         m2.convertToPolyTypes([2]);
7446         m2.unPolyze();
7447         self.assertEqual(NORM_TETRA4,m2.getTypeOfCell(2));
7448         self.assertEqual(40,m2.getMeshLength());
7449         temp2=m2.getNodeIdsOfCell(2);
7450         self.assertEqual(temp2,[0,1,2,3]);
7451         m2.checkCoherency1();
7452         m3=m2.deepCpy();
7453         m2.unPolyze();
7454         self.assertTrue(m3.isEqual(m2,1e-12));
7455         pass
7456
7457     def testDACpyFrom1(self):
7458         d=DataArrayDouble.New();
7459         d.alloc(12,1);
7460         d.iota(14.);
7461         d.rearrange(3);
7462         d.setName("Toto");
7463         d.setInfoOnComponent(0,"X [m]");
7464         d.setInfoOnComponent(1,"Y [m]");
7465         d.setInfoOnComponent(2,"Z [m]");
7466         #
7467         d1=DataArrayDouble.New();
7468         self.assertTrue(not d.isEqual(d1,1e-12));
7469         d1.cpyFrom(d);
7470         self.assertTrue(d.isEqual(d1,1e-12));
7471         d1.cpyFrom(d);
7472         self.assertTrue(d.isEqual(d1,1e-12));
7473         d1.rearrange(2);
7474         self.assertTrue(not d.isEqual(d1,1e-12));
7475         d1.cpyFrom(d);
7476         self.assertTrue(d.isEqual(d1,1e-12));
7477         #
7478         d2=d.convertToIntArr();
7479         d4=DataArrayInt.New();
7480         self.assertTrue(not d2.isEqual(d4));
7481         d4.cpyFrom(d2);
7482         self.assertTrue(d2.isEqual(d4));
7483         d4.cpyFrom(d2);
7484         self.assertTrue(d2.isEqual(d4));
7485         d4.rearrange(2);
7486         self.assertTrue(not d2.isEqual(d4));
7487         d4.cpyFrom(d2);
7488         self.assertTrue(d2.isEqual(d4));
7489         pass
7490
7491     def testDAITransformWithIndArr1(self):
7492         tab1=[17,18,22,19]
7493         tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
7494         expected=[17,18,18,19,19,17,18,19,22,22,19,17]
7495         d=DataArrayInt.New();
7496         d.setValues(tab1,4,1);
7497         d1=DataArrayInt.New();
7498         d1.setValues(tab2,12,1);
7499         d2=d1[:]
7500         #
7501         d1.transformWithIndArr(d);
7502         self.assertEqual(12,d1.getNumberOfTuples());
7503         self.assertEqual(1,d1.getNumberOfComponents());
7504         for i in xrange(12):
7505             self.assertEqual(expected[i],d1.getIJ(i,0));
7506             pass
7507         #
7508         d1=d2
7509         d1.transformWithIndArr(tab1)
7510         self.assertEqual(12,d1.getNumberOfTuples());
7511         self.assertEqual(1,d1.getNumberOfComponents());
7512         for i in xrange(12):
7513             self.assertEqual(expected[i],d1.getIJ(i,0));
7514             pass
7515         pass
7516
7517     def testDAIBuildPermArrPerLevel1(self):
7518         arr=[2,0,1,1,0,1,2,0,1,1,0,0]
7519         expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
7520         da=DataArrayInt.New();
7521         da.setValues(arr,12,1);
7522         da2=da.buildPermArrPerLevel();
7523         self.assertEqual(12,da2.getNumberOfTuples());
7524         self.assertEqual(1,da2.getNumberOfComponents());
7525         for i in xrange(12):
7526             self.assertEqual(expected1[i],da2.getIJ(i,0));
7527             pass
7528         pass
7529
7530     def testDAIOperations1(self):
7531         arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
7532         da=DataArrayInt.New();
7533         da.setValues(arr1,4,3);
7534         da1=DataArrayInt.New();
7535         da1.alloc(12,1);
7536         da1.iota(2);
7537         self.assertRaises(InterpKernelException,DataArrayInt.Add,da,da1);#not same number of tuples/Components
7538         da1.rearrange(3);
7539         da2=DataArrayInt.Add(da,da1);
7540         self.assertEqual(4,da2.getNumberOfTuples());
7541         self.assertEqual(3,da2.getNumberOfComponents());
7542         expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
7543         for i in xrange(12):
7544             self.assertEqual(expected1[i],da2.getIJ(0,i));
7545             pass
7546         da1.substractEqual(da);
7547         expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
7548         for i in xrange(12):
7549             self.assertEqual(expected2[i],da1.getIJ(0,i));
7550             pass
7551         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7552         da1.addEqual(da);
7553         for i in xrange(12):
7554             self.assertEqual(expected1[i],da1.getIJ(0,i));
7555             pass
7556         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7557         da2=DataArrayInt.Multiply(da,da1);
7558         self.assertEqual(4,da2.getNumberOfTuples());
7559         self.assertEqual(3,da2.getNumberOfComponents());
7560         expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
7561         for i in xrange(12):
7562             self.assertEqual(expected3[i],da2.getIJ(0,i));
7563             pass
7564         da.divideEqual(da1);
7565         self.assertEqual(4,da.getNumberOfTuples());
7566         self.assertEqual(3,da.getNumberOfComponents());
7567         expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
7568         for i in xrange(12):
7569             self.assertEqual(expected4[i],da.getIJ(0,i));
7570             pass
7571         da.setValues(arr1,4,3);
7572         da1.multiplyEqual(da);
7573         self.assertEqual(4,da1.getNumberOfTuples());
7574         self.assertEqual(3,da1.getNumberOfComponents());
7575         for i in xrange(12):
7576             self.assertEqual(expected3[i],da1.getIJ(0,i));
7577             pass
7578         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7579         da2=DataArrayInt.Divide(da,da1);
7580         self.assertEqual(4,da2.getNumberOfTuples());
7581         self.assertEqual(3,da2.getNumberOfComponents());
7582         for i in xrange(12):
7583             self.assertEqual(expected4[i],da2.getIJ(0,i));
7584             pass
7585         da1.applyInv(321);
7586         self.assertEqual(4,da1.getNumberOfTuples());
7587         self.assertEqual(3,da1.getNumberOfComponents());
7588         expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
7589         for i in xrange(12):
7590             self.assertEqual(expected5[i],da1.getIJ(0,i));
7591             pass
7592         da1.applyDivideBy(2);
7593         self.assertEqual(4,da1.getNumberOfTuples());
7594         self.assertEqual(3,da1.getNumberOfComponents());
7595         expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
7596         for i in xrange(12):
7597             self.assertEqual(expected6[i],da1.getIJ(0,i));
7598             pass
7599         expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
7600         da1.applyModulus(7);
7601         for i in xrange(12):
7602             self.assertEqual(expected7[i],da1.getIJ(0,i));
7603             pass
7604         da1.applyLin(1,1);
7605         expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
7606         da1.applyRModulus(3);
7607         for i in xrange(12):
7608             self.assertEqual(expected8[i],da1.getIJ(0,i));
7609             pass
7610         pass
7611
7612     def testEmulateMEDMEMBDC1(self):
7613         m,m1=MEDCouplingDataForTest.buildPointe_1();
7614         m2,da1,da2,da3,da4,da5,da0=m.emulateMEDMEMBDC(m1)
7615         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]
7616         expected1=[1,32,29,23,41,36]
7617         self.assertEqual(47,da0.getNumberOfTuples());
7618         self.assertEqual(1,da0.getNumberOfComponents());
7619         for i in xrange(47):
7620             self.assertEqual(expected0[i],da0.getIJ(0,i));
7621             pass
7622         self.assertEqual(6,da5.getNumberOfTuples());
7623         self.assertEqual(1,da5.getNumberOfComponents());
7624         for i in xrange(6):
7625             self.assertEqual(expected1[i],da5.getIJ(0,i));
7626             pass
7627         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]
7628         self.assertEqual(70,da1.getNumberOfTuples());
7629         self.assertEqual(1,da1.getNumberOfComponents());
7630         for i in xrange(70):
7631             self.assertEqual(expected2[i],da1.getIJ(0,i));
7632             pass
7633         expected3=[0,4,8,12,16,20,24,28,32,36,40,44,48,53,58,64,70]
7634         self.assertEqual(17,da2.getNumberOfTuples());
7635         self.assertEqual(1,da2.getNumberOfComponents());
7636         for i in xrange(17):
7637             self.assertEqual(expected3[i],da2.getIJ(0,i));
7638             pass
7639         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]
7640         #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];
7641         self.assertEqual(48,da4.getNumberOfTuples());
7642         self.assertEqual(1,da4.getNumberOfComponents());
7643         for i in xrange(48):
7644             self.assertEqual(expected4[i],da4.getIJ(0,i));
7645             pass
7646         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]
7647         self.assertEqual(70,da3.getNumberOfTuples());
7648         self.assertEqual(1,da3.getNumberOfComponents());
7649         for i in xrange(70):
7650             self.assertEqual(expected5[i],da3.getIJ(0,i));
7651             pass
7652         pass
7653
7654     def testGetLevArrPerCellTypes1(self):
7655         m,m1=MEDCouplingDataForTest.buildPointe_1();
7656         m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
7657         order=[NORM_TRI3,NORM_QUAD4];
7658         da0,da1=m1.getLevArrPerCellTypes(order);
7659         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]
7660         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]
7661         self.assertEqual(47,da0.getNumberOfTuples());
7662         self.assertEqual(1,da0.getNumberOfComponents());
7663         for i in xrange(47):
7664             self.assertEqual(expected0[i],da0.getIJ(0,i));
7665             pass
7666         self.assertEqual(2,da1.getNumberOfTuples());
7667         self.assertEqual(1,da1.getNumberOfComponents());
7668         self.assertEqual(36,da1.getIJ(0,0));#36 TRI3
7669         self.assertEqual(11,da1.getIJ(1,0));#11 QUAD4
7670         #
7671         da2=da0.buildPermArrPerLevel();
7672         #
7673         self.assertEqual(47,da2.getNumberOfTuples());
7674         self.assertEqual(1,da2.getNumberOfComponents());
7675         for i in xrange(47):
7676             self.assertEqual(expected1[i],da2.getIJ(0,i));
7677             pass
7678         pass
7679
7680     def testSortCellsInMEDFileFrmt1(self):
7681         m,m1=MEDCouplingDataForTest.buildPointe_1();
7682         m2=m.deepCpy()
7683         da=DataArrayInt.New()
7684         da.setValues([0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13],16,1)
7685         daa=da.invertArrayN2O2O2N(16)
7686         m.renumberCells(daa,False)
7687         da2=m.sortCellsInMEDFileFrmt()
7688         self.assertEqual(da2.getValues(),[0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13])
7689         self.assertTrue(m.isEqual(m2,1e-12))
7690         self.assertTrue(da.isEqual(da2))
7691         pass
7692
7693     def testBuildPartAndReduceNodes1(self):
7694         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7695         arr=[1,0]
7696         m2,da=m.buildPartAndReduceNodes(arr);
7697         self.assertEqual(5,m2.getNumberOfNodes());
7698         self.assertEqual(2,m2.getNumberOfCells());
7699         f=m2.getMeasureField(True);
7700         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7701         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7702         #
7703         arr2=DataArrayInt.New()
7704         arr2.setValues(arr,2,1)
7705         m2,da=m.buildPartAndReduceNodes(arr2);
7706         self.assertEqual(5,m2.getNumberOfNodes());
7707         self.assertEqual(2,m2.getNumberOfCells());
7708         f=m2.getMeasureField(True);
7709         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7710         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7711         pass
7712
7713     def testDAITransformWithIndArrR1(self):
7714         tab1=[2,4,5,3,6,7]
7715         tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
7716         expected=[0,3,1,2,4,5]
7717         d=DataArrayInt.New();
7718         d.setValues(tab1,6,1);
7719         d1=DataArrayInt.New();
7720         d1.setValues(tab2,12,1);
7721         d2=d1[:]
7722         #
7723         d3=d.transformWithIndArrR(d1);
7724         self.assertEqual(6,d3.getNumberOfTuples());
7725         self.assertEqual(1,d3.getNumberOfComponents());
7726         for i in xrange(6):
7727             self.assertEqual(expected[i],d3.getIJ(i,0));
7728             pass
7729         #
7730         d1=d2
7731         d3=d.transformWithIndArrR(tab2)
7732         self.assertEqual(6,d3.getNumberOfTuples());
7733         self.assertEqual(1,d3.getNumberOfComponents());
7734         for i in xrange(6):
7735             self.assertEqual(expected[i],d3.getIJ(i,0));
7736             pass
7737         pass
7738
7739     def testDAISplitByValueRange1(self):
7740         val1=[6,5,0,3,2,7,8,1,4]
7741         val2=[0,4,9]
7742         d=DataArrayInt.New();
7743         d.setValues(val1,9,1);
7744         e,f,g=d.splitByValueRange(val2);
7745         self.assertEqual(9,e.getNumberOfTuples());
7746         self.assertEqual(1,e.getNumberOfComponents());
7747         self.assertEqual(9,f.getNumberOfTuples());
7748         self.assertEqual(1,f.getNumberOfComponents());
7749         self.assertEqual(2,g.getNumberOfTuples());
7750         self.assertEqual(1,g.getNumberOfComponents());
7751         #
7752         expected1=[1,1,0,0,0,1,1,0,1]
7753         expected2=[2,1,0,3,2,3,4,1,0]
7754         for i in xrange(9):
7755             self.assertEqual(expected1[i],e.getIJ(i,0));
7756             self.assertEqual(expected2[i],f.getIJ(i,0));
7757             pass
7758         self.assertEqual(0,g.getIJ(0,0));
7759         self.assertEqual(1,g.getIJ(1,0));
7760         #
7761         d.setIJ(6,0,9);
7762         self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
7763         pass
7764
7765     def testUMeshSplitProfilePerType1(self):
7766         val0=[2,0,1,3,4]
7767         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7768         m.renumberCells(val0,False);
7769         #
7770         val1=[0,2,3]
7771         d=DataArrayInt.New();
7772         d.setValues(val1,3,1);
7773         d.setName("sup")
7774         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7775         self.assertEqual(2,len(code));
7776         self.assertEqual(2,len(idsInPflPerType));
7777         expected1=[[3,1,0], [4,2,1]]
7778         self.assertEqual(expected1,code)
7779         self.assertEqual(2,len(idsInPflPerType));
7780         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7781         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7782         self.assertEqual(2,idsInPflPerType[1].getNumberOfTuples());
7783         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7784         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7785         #
7786         self.assertEqual(2,len(pfls));
7787         self.assertEqual("sup",pfls[0].getName())
7788         self.assertEqual(1,pfls[0].getNumberOfTuples());
7789         self.assertEqual(0,pfls[0].getIJ(0,0));
7790         self.assertEqual("sup",pfls[1].getName())
7791         self.assertEqual(2,pfls[1].getNumberOfTuples());
7792         self.assertEqual(0,pfls[1].getIJ(0,0));
7793         self.assertEqual(1,pfls[1].getIJ(1,0));
7794         #
7795         val2=[0,2,3,4]
7796         d=DataArrayInt.New();
7797         d.setValues(val2,4,1);
7798         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7799         self.assertEqual(2,len(code));
7800         self.assertEqual(2,len(idsInPflPerType));
7801         expected2=[[3,1,0], [4,3,-1]]
7802         self.assertEqual(expected2,code);
7803         self.assertEqual(2,len(idsInPflPerType));
7804         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7805         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7806         self.assertEqual(3,idsInPflPerType[1].getNumberOfTuples());
7807         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7808         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7809         self.assertEqual(3,idsInPflPerType[1].getIJ(2,0));
7810         #
7811         self.assertEqual(1,len(pfls));
7812         self.assertEqual(1,pfls[0].getNumberOfTuples());
7813         self.assertEqual(0,pfls[0].getIJ(0,0));
7814         #
7815         val3=[1,0,2]
7816         d=DataArrayInt.New();
7817         d.setValues(val3,3,1);
7818         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7819         self.assertEqual(2,len(code));
7820         self.assertEqual(2,len(idsInPflPerType));
7821         expected3=[[3,2,0], [4,1,1]]
7822         self.assertEqual(expected3,code);
7823         self.assertEqual(2,len(idsInPflPerType));
7824         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7825         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7826         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7827         self.assertEqual(1,idsInPflPerType[1].getNumberOfTuples());
7828         self.assertEqual(2,idsInPflPerType[1].getIJ(0,0));
7829         #
7830         self.assertEqual(2,len(pfls));
7831         self.assertEqual(2,pfls[0].getNumberOfTuples());
7832         self.assertEqual(1,pfls[0].getIJ(0,0));
7833         self.assertEqual(0,pfls[0].getIJ(1,0));
7834         self.assertEqual(0,pfls[1].getIJ(0,0));
7835         #
7836         val4=[3,4]
7837         d=DataArrayInt.New();
7838         d.setValues(val4,2,1);
7839         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7840         self.assertEqual(1,len(code));
7841         self.assertEqual(1,len(idsInPflPerType));
7842         expected4=[[4,2,0]]
7843         self.assertEqual(expected4,code);
7844         self.assertEqual(1,len(idsInPflPerType));
7845         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7846         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7847         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7848         #
7849         self.assertEqual(1,len(pfls));
7850         self.assertEqual(2,pfls[0].getNumberOfTuples());
7851         self.assertEqual(1,pfls[0].getIJ(0,0));
7852         self.assertEqual(2,pfls[0].getIJ(1,0));
7853         pass
7854
7855     def testDAIBuildExplicitArrByRanges1(self):
7856         d=DataArrayInt.New();
7857         vals1=[0,2,3]
7858         d.setValues(vals1,3,1);
7859         e=DataArrayInt.New();
7860         vals2=[0,3,6,10,14,20]
7861         e.setValues(vals2,6,1);
7862         #
7863         f=d.buildExplicitArrByRanges(e);
7864         self.assertEqual(11,f.getNumberOfTuples());
7865         self.assertEqual(1,f.getNumberOfComponents());
7866         expected1=[0,1,2,6,7,8,9,10,11,12,13]
7867         for i in xrange(11):
7868             self.assertEqual(expected1[i],f.getIJ(i,0));
7869             pass
7870         pass
7871
7872     def testDAIComputeOffsets2(self):
7873         d=DataArrayInt.New();
7874         vals1=[3,5,1,2,0,8]
7875         expected1=[0,3,8,9,11,11,19]
7876         d.setValues(vals1,6,1);
7877         d.computeOffsets2();
7878         self.assertEqual(7,d.getNumberOfTuples());
7879         self.assertEqual(1,d.getNumberOfComponents());
7880         for i in xrange(7):
7881             self.assertEqual(expected1[i],d.getIJ(0,i));
7882             pass
7883         pass
7884
7885     def testMergeField3(self):
7886         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7887         m.getCoords().setInfoOnComponent(0,"x [m]");
7888         m.getCoords().setInfoOnComponent(1,"z [km]");
7889         m.setName("m");
7890         m.setDescription("desc");
7891         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7892         f1.setName("f1");
7893         f1.setMesh(m);
7894         arr=DataArrayDouble.New();
7895         arr.alloc(5,2);
7896         arr.setInfoOnComponent(0,"X [m]");
7897         arr.setInfoOnComponent(1,"YY [mm]");
7898         arr.fillWithValue(2.);
7899         f1.setArray(arr);
7900         #
7901         f2=MEDCouplingFieldDouble.MergeFields([f1]);
7902         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
7903         #
7904         pass
7905     
7906     def testGetDistributionOfTypes1(self):
7907         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7908         tab1=[2,0,1,3,4]
7909         self.assertRaises(InterpKernelException,m.getDistributionOfTypes);
7910         m.renumberCells(tab1,False);
7911         code=m.getDistributionOfTypes();
7912         self.assertEqual(2,len(code));
7913         self.assertEqual(3,code[0][0]);
7914         self.assertEqual(2,code[0][1]);
7915         self.assertEqual(-1,code[0][2]);
7916         self.assertEqual(4,code[1][0]);
7917         self.assertEqual(3,code[1][1]);
7918         self.assertEqual(-1,code[1][2]);
7919         pass
7920
7921     def testNorm2_1(self):
7922         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7923         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7924         f.setMesh(m);
7925         #
7926         d=DataArrayDouble.New();
7927         tab=[1.2,1.3,2.2,2.3,3.2,3.3,4.2,4.3,5.2,5.3]
7928         d.setValues(tab,5,2);
7929         f.setArray(d);
7930         f.checkCoherency();
7931         #
7932         self.assertAlmostEqual(11.209371079592289,f.norm2(),14);
7933         #
7934         pass
7935
7936     def testNormMax1(self):
7937         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7938         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7939         f.setMesh(m);
7940         #
7941         d=DataArrayDouble.New();
7942         tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
7943         d.setValues(tab,5,2);
7944         f.setArray(d);
7945         f.checkCoherency();
7946         #
7947         self.assertAlmostEqual(7.8,f.normMax(),14);
7948         #
7949         pass
7950
7951     def testFindAndCorrectBadOriented3DExtrudedCells1(self):
7952         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];
7953         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]
7954         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]
7955         invalidCells=[2,3,6,7]
7956         m=MEDCouplingUMesh.New("Example",3);
7957         coo=DataArrayDouble.New();
7958         coo.setValues(coords,38,3);
7959         m.setCoords(coo);
7960         m.allocateCells(8);
7961         m.insertNextCell(NORM_PENTA6,6,conn[0:6])
7962         m.insertNextCell(NORM_PENTA6,6,conn[6:12])
7963         m.insertNextCell(NORM_PENTA6,6,conn[12:18])
7964         m.insertNextCell(NORM_PENTA6,6,conn[18:24])
7965         m.insertNextCell(NORM_HEXA8,8,conn[24:32])
7966         m.insertNextCell(NORM_HEXA8,8,conn[32:40])
7967         m.insertNextCell(NORM_HEXA8,8,conn[40:48])
7968         m.insertNextCell(NORM_HEXA8,8,conn[48:56])
7969         m.finishInsertingCells();
7970         #
7971         v=m.findAndCorrectBadOriented3DExtrudedCells();
7972         self.assertEqual(4,len(v));
7973         self.assertEqual(v.getValues(),invalidCells);
7974         self.assertEqual(connExp,m.getNodalConnectivity().getValues());
7975         self.assertTrue(m.findAndCorrectBadOriented3DExtrudedCells().empty())
7976         #
7977         pass
7978
7979     def testConvertExtrudedPolyhedra1(self):
7980         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]
7981         m=MEDCouplingUMesh.New("Example",3);
7982         coo=DataArrayDouble.New();
7983         coo.alloc(73,3);
7984         coo.rearrange(1); coo.iota(0); coo.rearrange(3);
7985         m.setCoords(coo);
7986         m.allocateCells(9);
7987         m.insertNextCell(NORM_TETRA4,4,conn[0:4])
7988         m.insertNextCell(NORM_HEXA8,8,conn[4:12])
7989         m.insertNextCell(NORM_TETRA4,4,conn[12:16])
7990         m.insertNextCell(NORM_POLYHED,6,conn[16:22])
7991         m.insertNextCell(NORM_PENTA6,6,conn[22:28])
7992         m.insertNextCell(NORM_POLYHED,10,conn[28:38])
7993         m.insertNextCell(NORM_HEXA8,8,conn[38:46])
7994         m.insertNextCell(NORM_HEXGP12,12,conn[46:58])
7995         m.insertNextCell(NORM_POLYHED,14,conn[58:72])
7996         m.finishInsertingCells();
7997         #
7998         m.convertExtrudedPolyhedra();
7999         da=m.getNodalConnectivity();
8000         dai=m.getNodalConnectivityIndex();
8001         self.assertEqual(10,dai.getNbOfElems());
8002         self.assertEqual(159,da.getNbOfElems());
8003         #
8004         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];
8005         expected2=[0,5,14,19,42,49,86,95,108,159]
8006         self.assertEqual(expected1,da.getValues());
8007         self.assertEqual(expected2,dai.getValues());
8008         m.checkCoherency2()
8009         pass
8010
8011     def testNonRegressionCopyTinyStrings(self):
8012         m=MEDCouplingDataForTest.build2DTargetMesh_1()
8013         f1=m.getMeasureField(True)
8014         f1.getArray().setInfoOnComponent(0,"P [N/m^2]")
8015         bary=m.getBarycenterAndOwner()
8016         f2=f1.buildNewTimeReprFromThis(NO_TIME,False)
8017         f2.setArray(bary)
8018         self.assertRaises(InterpKernelException,f1.copyTinyAttrFrom,f2)
8019         pass
8020
8021     def testDaDSetPartOfValuesAdv1(self):
8022         tab1=[3.,4.,5., 13.,14.,15., 23.,24.,25., 33.,34.,35., 43.,44.,45., 53.,54.,55.]
8023         tab2=[6.,7.,8., 16.,17.,18., 26.,27.,28.]
8024         tab3=[4,1, 2,2, 3,0]
8025         a=DataArrayDouble.New();
8026         a.setValues(tab1,6,3);
8027         b=DataArrayDouble.New();
8028         b.setValues(tab2,3,3);
8029         c=DataArrayInt.New();
8030         c.setValues(tab3,3,2);
8031         #
8032         a.setPartOfValuesAdv(b,c);
8033         expected1=[3.,4.,5., 13.,14.,15., 26.,27.,28., 6.,7.,8., 16.,17.,18., 53.,54.,55.]
8034         self.assertEqual(expected1,a.getValues());
8035         pass
8036
8037     def testUMeshBuildSetInstanceFromThis1(self):
8038         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
8039         m2=m.buildSetInstanceFromThis(3);
8040         self.assertTrue(m.isEqual(m2,1e-12));
8041         #
8042         m=MEDCouplingUMesh.New("toto",2);
8043         m2=m.buildSetInstanceFromThis(3);
8044         self.assertEqual(0,m2.getNumberOfNodes());
8045         self.assertEqual(0,m2.getNumberOfCells());
8046         pass
8047
8048     def testUMeshMergeMeshesCVW1(self):
8049         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
8050         m2=MEDCouplingUMesh.New("toto",2);
8051         m3=MEDCouplingUMesh.MergeUMeshes([m,m2]);
8052         m3.setName(m.getName());
8053         self.assertTrue(m.isEqual(m3,1e-12));
8054         pass
8055     
8056     def testChangeUnderlyingMeshWithCMesh1(self):
8057         mesh=MEDCouplingCMesh.New();
8058         coordsX=DataArrayDouble.New();
8059         arrX=[ -1., 1., 2., 4. ]
8060         coordsX.setValues(arrX,4,1);
8061         coordsY=DataArrayDouble.New();
8062         arrY=[ -2., 2., 4., 8. ]
8063         coordsY.setValues(arrY,4,1);
8064         coordsZ=DataArrayDouble.New();
8065         arrZ=[ -3., 3., 6., 12. ]
8066         coordsZ.setValues(arrZ,4,1);
8067         mesh.setCoords(coordsX,coordsY,coordsZ);
8068         f=mesh.getMeasureField(True)
8069         mesh2=mesh.deepCpy()
8070         for myId in [0,1,2,10,11,12,20,21,22]:
8071             f=mesh.getMeasureField(True)
8072             f.changeUnderlyingMesh(mesh2,myId,1e-12);
8073             pass
8074         mesh2.setName("uuuu")
8075         for myId in [1,2,10,11,12,20,21,22]:
8076             f=mesh.getMeasureField(True)
8077             f.changeUnderlyingMesh(mesh2,myId,1e-12);
8078             pass
8079         pass
8080
8081     def testDADFindCommonTuples1(self):
8082         da=DataArrayDouble.New();
8083         # nbOftuples=1
8084         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8085         da.setValues(array1,6,1)
8086         c,cI=da.findCommonTuples(1e-2);
8087         expected1=[0,3,4]
8088         expected2=[0,3]
8089         self.assertEqual(3,c.getNbOfElems());
8090         self.assertEqual(2,cI.getNbOfElems());
8091         self.assertEqual(expected1,c.getValues())
8092         self.assertEqual(expected2,cI.getValues())
8093         c,cI=da.findCommonTuples(2e-1)
8094         expected3=[0,3,4,1,2]
8095         expected4=[0,3,5]
8096         self.assertEqual(5,c.getNbOfElems());
8097         self.assertEqual(3,cI.getNbOfElems());
8098         self.assertEqual(expected3,c.getValues())
8099         self.assertEqual(expected4,cI.getValues())
8100         # nbOftuples=2
8101         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]
8102         da.setValues(array2,6,2)
8103         c,cI=da.findCommonTuples(1e-2);
8104         self.assertEqual(3,c.getNbOfElems());
8105         self.assertEqual(2,cI.getNbOfElems());
8106         self.assertEqual(expected1,c.getValues())
8107         self.assertEqual(expected2,cI.getValues())
8108         c,cI=da.findCommonTuples(2e-1)
8109         self.assertEqual(5,c.getNbOfElems());
8110         self.assertEqual(3,cI.getNbOfElems());
8111         self.assertEqual(expected3,c.getValues())
8112         self.assertEqual(expected4,cI.getValues())
8113         # nbOftuples=3
8114         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]
8115         da.setValues(array3,6,3)
8116         c,cI=da.findCommonTuples(1e-2);
8117         self.assertEqual(3,c.getNbOfElems());
8118         self.assertEqual(2,cI.getNbOfElems());
8119         self.assertEqual(expected1,c.getValues())
8120         self.assertEqual(expected2,cI.getValues())
8121         c,cI=da.findCommonTuples(2e-1)
8122         self.assertEqual(5,c.getNbOfElems());
8123         self.assertEqual(3,cI.getNbOfElems());
8124         self.assertEqual(expected3,c.getValues())
8125         self.assertEqual(expected4,cI.getValues())
8126         # nbOftuples=1, no common groups
8127         array11=[2.3,1.2,1.3,2.4,2.5,0.8]
8128         da.setValues(array11,6,1)
8129         c,cI=da.findCommonTuples(1e-2);
8130         self.assertEqual(0,c.getNbOfElems());
8131         self.assertEqual(1,cI.getNbOfElems());
8132         self.assertEqual([0],cI.getValues())
8133         
8134         array12=[0.]*(6*5)
8135         da.setValues(array12,6,5) #bad NumberOfComponents
8136         self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2);
8137         pass
8138
8139     def testDABack1(self):
8140         da=DataArrayDouble.New();
8141         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8142         da.setValues(array1,6,1);
8143         self.assertAlmostEqual(0.8,da.back(),14);
8144         da.rearrange(2);
8145         self.assertRaises(InterpKernelException,da.back);
8146         da.alloc(0,1);
8147         self.assertRaises(InterpKernelException,da.back);
8148         #
8149         da=DataArrayInt.New();
8150         array2=[4,7,8,2]
8151         da.setValues(array2,4,1);
8152         self.assertEqual(2,da.back());
8153         da.rearrange(2);
8154         self.assertRaises(InterpKernelException,da.back);
8155         da.alloc(0,1);
8156         self.assertRaises(InterpKernelException,da.back);
8157         pass
8158
8159     def testDADGetDifferentValues1(self):
8160         da=DataArrayDouble.New();
8161         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8162         da.setValues(array1,6,1)
8163         #
8164         expected1=[2.301,1.2,1.3,0.8]
8165         dv=da.getDifferentValues(1e-2);
8166         self.assertEqual(4,dv.getNbOfElems());
8167         for i in xrange(4):
8168             self.assertAlmostEqual(expected1[i],dv.getIJ(i,0),14);
8169             pass
8170         #
8171         dv=da.getDifferentValues(2e-1);
8172         expected2=[2.301,1.3,0.8]
8173         self.assertEqual(3,dv.getNbOfElems());
8174         for i in xrange(3):
8175             self.assertAlmostEqual(expected2[i],dv.getIJ(i,0),14);
8176             pass
8177         pass
8178
8179     def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
8180         arr=[0,3, 5,7,9]
8181         arrI=[0,2,5]
8182         a=DataArrayInt.New();
8183         a.setValues(arr,5,1);
8184         b=DataArrayInt.New();
8185         b.setValues(arrI,3,1);
8186         ret,newNbTuple=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(10,a,b);
8187         expected=[0,1,2,0,3,4,5,4,6,4]
8188         self.assertEqual(10,ret.getNbOfElems());
8189         self.assertEqual(7,newNbTuple);
8190         self.assertEqual(1,ret.getNumberOfComponents());
8191         self.assertEqual(expected,ret.getValues());
8192         self.assertRaises(InterpKernelException,DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2,9,a,b);
8193         pass
8194
8195     def testDADIReverse1(self):
8196         arr=[0,3,5,7,9,2]
8197         a=DataArrayInt.New();
8198         a.setValues(arr,6,1);
8199         self.assertEqual(2,a.back());
8200         a.reverse();
8201         for i in xrange(6):
8202             self.assertEqual(arr[5-i],a.getIJ(i,0));
8203             pass
8204         a.setValues(arr[:-1],5,1);
8205         a.reverse();
8206         for i in xrange(5):
8207             self.assertEqual(arr[4-i],a.getIJ(i,0));
8208             pass
8209         #
8210         arr2=[0.,3.,5.,7.,9.,2.]
8211         b=DataArrayDouble.New();
8212         b.setValues(arr2,6,1);
8213         b.reverse();
8214         for i in xrange(6):
8215             self.assertAlmostEqual(arr2[5-i],b.getIJ(i,0),14);
8216             pass
8217         b.setValues(arr2[:5],5,1);
8218         self.assertAlmostEqual(9.,b.back(),14)
8219         b.reverse();
8220         for i in xrange(5):
8221             self.assertAlmostEqual(arr2[4-i],b.getIJ(i,0),14);
8222             pass
8223         pass
8224
8225     def testGetNodeIdsInUse1(self):
8226         m0=MEDCouplingDataForTest.build2DTargetMesh_1();
8227         CellIds=[1,2]
8228         m1=m0.buildPartOfMySelf(CellIds,True);
8229         arr,newNbOfNodes=m1.getNodeIdsInUse();
8230         expected=[-1,0,1,-1,2,3,-1,-1,-1]
8231         self.assertEqual(4,newNbOfNodes);
8232         self.assertEqual(9,arr.getNbOfElems());
8233         self.assertEqual(expected,arr.getValues());
8234         arr2=arr.invertArrayO2N2N2O(newNbOfNodes);
8235         self.assertEqual(4,arr2.getNbOfElems());
8236         expected2=[1,2,4,5]
8237         self.assertEqual(expected2,arr2.getValues());
8238         pass
8239
8240     def testBuildDescendingConnec2(self):
8241         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8242         #
8243         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8244         mesh2.checkCoherency();
8245         self.assertEqual(1,mesh2.getMeshDimension());
8246         self.assertEqual(13,mesh2.getNumberOfCells());
8247         self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
8248         self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
8249         self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
8250         self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
8251         expected1=[1,2,3,4,-3,5,6, 7,8,-5,9,10,-2,11, 12,13,-7,-10]
8252         self.assertEqual(expected1,desc.getValues());
8253         expected2=[0,4,7,10,14,18]
8254         self.assertEqual(expected2,descIndx.getValues());
8255         expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18]
8256         self.assertEqual(expected3,revDescIndx.getValues());
8257         expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4]
8258         self.assertEqual(expected4,revDesc.getValues());
8259         conn=mesh2.getNodalConnectivity();
8260         connIndex=mesh2.getNodalConnectivityIndex();
8261         expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39]
8262         self.assertEqual(expected5,connIndex.getValues());
8263         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]
8264         self.assertEqual(expected6,conn.getValues());
8265         pass
8266
8267     def testIntersect2DMeshesTmp1(self):
8268         m1c=MEDCouplingCMesh.New();
8269         coordsX=DataArrayDouble.New();
8270         arrX=[ -1., 1., 2., 4. ]
8271         coordsX.setValues(arrX,4,1);
8272         m1c.setCoordsAt(0,coordsX);
8273         coordsY=DataArrayDouble.New();
8274         arrY=[ -2., 2., 4., 8. ]
8275         coordsY.setValues(arrY,4,1);
8276         m1c.setCoordsAt(1,coordsY);
8277         m1=m1c.buildUnstructured()
8278         m1bis=m1.buildPartOfMySelf([3,4,5],False)
8279         m2=m1.deepCpy()
8280         m2=m2.buildPartOfMySelf([0,1,2],False)
8281         m2.translate([0.5,0.5])
8282         #
8283         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1bis,m2,1e-10)
8284         expected1=[0,0,1,1,1,2,2,2]
8285         expected2=[0,-1,0,1,-1,1,2,-1]
8286         self.assertEqual(8,d1.getNumberOfTuples());
8287         self.assertEqual(8,d2.getNumberOfTuples());
8288         self.assertEqual(8,m3.getNumberOfCells());
8289         self.assertEqual(22,m3.getNumberOfNodes());
8290         self.assertEqual(2,m3.getSpaceDimension());
8291         self.assertEqual(expected1,d1.getValues());
8292         self.assertEqual(expected2,d2.getValues());
8293         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]
8294         expected4=[0,5,12,17,22,28,33,38,44]
8295         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]
8296         self.assertEqual(44,m3.getNodalConnectivity().getNumberOfTuples());
8297         self.assertEqual(9,m3.getNodalConnectivityIndex().getNumberOfTuples());
8298         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8299         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8300         for i in xrange(44):
8301             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8302             pass
8303         pass
8304
8305     def testFindNodesOnLine1(self):
8306         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8307         pt=[-0.3,-0.3]
8308         pt2=[0.,0.,0.]
8309         pt3=[-0.3,0.,0.]
8310         vec=[0.,1.]
8311         vec2=[1.,0.,0.]
8312         vec3=[0.,1.,1.]
8313         expected1=[0,3,6]
8314         res=mesh.findNodesOnLine(pt,vec,1e-12);
8315         self.assertEqual(3,len(res));
8316         self.assertEqual(expected1,res.getValues());
8317         #
8318         mesh.changeSpaceDimension(3);
8319         mesh.rotate(pt2,vec2,pi/4.);
8320         res=mesh.findNodesOnLine(pt3,vec3,1e-12);
8321         self.assertEqual(3,len(res));
8322         self.assertEqual(expected1,res.getValues());
8323         pass
8324
8325     def testIntersect2DMeshesTmp2(self):
8326         m1c=MEDCouplingCMesh.New();
8327         coordsX1=DataArrayDouble.New();
8328         arrX1=[ 0., 1., 1.5, 2. ]
8329         coordsX1.setValues(arrX1,4,1);
8330         m1c.setCoordsAt(0,coordsX1);
8331         coordsY1=DataArrayDouble.New();
8332         arrY1=[ 0., 1.5, 3.]
8333         coordsY1.setValues(arrY1,3,1);
8334         m1c.setCoordsAt(1,coordsY1);
8335         m1=m1c.buildUnstructured();
8336         m2c=MEDCouplingCMesh.New();
8337         coordsX2=DataArrayDouble.New();
8338         arrX2=[ 0., 1., 2. ]
8339         coordsX2.setValues(arrX2,3,1);
8340         m2c.setCoordsAt(0,coordsX2);
8341         coordsY2=DataArrayDouble.New();
8342         arrY2=[ 0., 1., 3.]
8343         coordsY2.setValues(arrY2,3,1);
8344         m2c.setCoordsAt(1,coordsY2);
8345         m2=m2c.buildUnstructured();
8346         #
8347         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8348         #
8349         expected1=[0,0,1,1,2,2,3,4,5]
8350         expected2=[0,2,1,3,1,3,2,3,3]
8351         self.assertEqual(9,d1.getNumberOfTuples());
8352         self.assertEqual(9,d2.getNumberOfTuples());
8353         self.assertEqual(9,m3.getNumberOfCells());
8354         self.assertEqual(22,m3.getNumberOfNodes());
8355         self.assertEqual(2,m3.getSpaceDimension());
8356         self.assertEqual(expected1,d1.getValues());
8357         self.assertEqual(expected2,d2.getValues());
8358         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]
8359         expected4=[0,5,10,15,20,25,30,35,40,45]
8360         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]
8361         self.assertEqual(45,m3.getNodalConnectivity().getNumberOfTuples());
8362         self.assertEqual(10,m3.getNodalConnectivityIndex().getNumberOfTuples());
8363         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8364         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8365         for i in xrange(44):
8366             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8367             pass
8368         pass
8369     
8370     def testBuildPartOfMySelfSafe1(self):
8371         mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
8372         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True)
8373         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,4,5,4],True)
8374         pass
8375
8376     def testIntersect2DMeshesTmp3(self):
8377         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];
8378         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];
8379         m1=MEDCouplingUMesh.New();
8380         m1.setMeshDimension(2);
8381         m1.allocateCells(8);
8382         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8383         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8384         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8385         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8386         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8387         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8388         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8389         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8390         m1.finishInsertingCells();
8391         myCoords1=DataArrayDouble.New();
8392         myCoords1.setValues(m1Coords,25,2);
8393         m1.setCoords(myCoords1);
8394         #
8395         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.]
8396         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]
8397         m2=MEDCouplingUMesh.New();
8398         m2.setMeshDimension(2);
8399         m2.allocateCells(8);
8400         for i in xrange(8):
8401             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8402             pass
8403         m2.finishInsertingCells();
8404         myCoords2=DataArrayDouble.New();
8405         myCoords2.setValues(m2Coords,15,2);
8406         m2.setCoords(myCoords2);
8407         #
8408         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8409         m3.unPolyze()
8410         #
8411         expected1=[0,1,1,1,2,3,3,3,4,5,5,5,6,7,7,7]
8412         expected2=[0,0,1,-1,2,2,3,-1,4,4,5,-1,6,6,7,-1]
8413         self.assertEqual(16,d1.getNumberOfTuples());
8414         self.assertEqual(16,d2.getNumberOfTuples());
8415         self.assertEqual(16,m3.getNumberOfCells());
8416         self.assertEqual(104,m3.getNumberOfNodes());
8417         self.assertEqual(2,m3.getSpaceDimension());
8418         self.assertEqual(expected1,d1.getValues());
8419         self.assertEqual(expected2,d2.getValues());
8420         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]
8421         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8422         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]
8423         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8424         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8425         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8426         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8427         for i in xrange(208):
8428             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8429             pass
8430         pass
8431
8432     def testUMeshTessellate2D1(self):
8433         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];
8434         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];
8435         m1=MEDCouplingUMesh.New();
8436         m1.setMeshDimension(2);
8437         m1.allocateCells(8);
8438         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8439         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8440         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8441         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8442         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8443         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8444         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8445         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8446         m1.finishInsertingCells();
8447         myCoords1=DataArrayDouble.New();
8448         myCoords1.setValues(m1Coords,25,2);
8449         m1.setCoords(myCoords1);
8450         #
8451         m11=m1.deepCpy();
8452         m11.tessellate2D(1.);
8453         self.assertTrue(m11.getCoords().isEqual(m11.getCoords(),1e-12));
8454         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]
8455         expected2=[0,5,12,17,24,29,36,41,48]
8456         self.assertEqual(48,m11.getNodalConnectivity().getNumberOfTuples());
8457         self.assertEqual(9,m11.getNodalConnectivityIndex().getNumberOfTuples());
8458         self.assertEqual(expected1,m11.getNodalConnectivity().getValues());
8459         self.assertEqual(expected2,m11.getNodalConnectivityIndex().getValues());
8460         #
8461         m12=m1.deepCpy();
8462         m12.tessellate2D(0.5);
8463         self.assertEqual(41,m12.getNumberOfNodes());
8464         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]
8465         expected4=[0,6,15,21,30,36,45,51,60]
8466         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]
8467         for i in xrange(82):
8468             self.assertAlmostEqual(expected5[i],m12.getCoords().getIJ(0,i),12);
8469             pass
8470         self.assertEqual(60,m12.getNodalConnectivity().getNumberOfTuples());
8471         self.assertEqual(9,m12.getNodalConnectivityIndex().getNumberOfTuples());
8472         self.assertEqual(expected3,m12.getNodalConnectivity().getValues());
8473         self.assertEqual(expected4,m12.getNodalConnectivityIndex().getValues());
8474         pass
8475
8476     def testUMeshTessellate2DCurve1(self):
8477         # A quarter of circle:
8478         mcoords = [0.4,0.0,   0.0,-0.4,   0.283,-0.283]
8479         mconnec = [0,1,2]
8480
8481         m1 = MEDCouplingUMesh.New()
8482         m1.setMeshDimension(1)
8483         m1.allocateCells(1)
8484         m1.insertNextCell(NORM_SEG3, mconnec)
8485
8486         myCoords = DataArrayDouble.New(mcoords, 3, 2)
8487         m1.setCoords(myCoords)
8488         
8489         m2 = m1.deepCpy()
8490         m2.tessellate2DCurve(0.1)
8491         # If the following raises, the test will fail automatically:
8492         m2.checkCoherency1(0.0) # eps param not used
8493
8494     def testIntersect2DMeshesTmp4(self):
8495         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];
8496         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];
8497         m1=MEDCouplingUMesh.New();
8498         m1.setMeshDimension(2);
8499         m1.allocateCells(8);
8500         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8501         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8502         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8503         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8504         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8505         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8506         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8507         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8508         m1.finishInsertingCells();
8509         myCoords1=DataArrayDouble.New();
8510         myCoords1.setValues(m1Coords,25,2);
8511         m1.setCoords(myCoords1);
8512         #
8513         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.]
8514         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]
8515         m2=MEDCouplingUMesh.New();
8516         m2.setMeshDimension(2);
8517         m2.allocateCells(8);
8518         for i in xrange(8):
8519             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8520             pass
8521         m2.finishInsertingCells();
8522         myCoords2=DataArrayDouble.New();
8523         myCoords2.setValues(m2Coords,15,2);
8524         m2.setCoords(myCoords2);
8525         #
8526         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10)
8527         m3.unPolyze()
8528         #
8529         expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
8530         expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1]
8531         self.assertEqual(16,d1.getNumberOfTuples());
8532         self.assertEqual(16,d2.getNumberOfTuples());
8533         self.assertEqual(16,m3.getNumberOfCells());
8534         self.assertEqual(104,m3.getNumberOfNodes());
8535         self.assertEqual(2,m3.getSpaceDimension());
8536         self.assertEqual(expected1,d1.getValues());
8537         self.assertEqual(expected2,d2.getValues());
8538         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]
8539         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8540         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]
8541         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8542         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8543         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8544         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8545         for i in xrange(208):
8546             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8547             pass
8548         pass
8549
8550     def testGetCellIdsCrossingPlane1(self):
8551         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8552         vec=[-0.07,1.,0.07]
8553         origin=[1.524,1.4552,1.74768]
8554         ids1=mesh3D.getCellIdsCrossingPlane(origin,vec,1e-10)
8555         self.assertEqual([1,3,4,7,9,10,13,15,16],ids1.getValues())
8556         vec2=[0.,0.,1.]
8557         ids2=mesh3D.getCellIdsCrossingPlane(origin,vec2,1e-10)
8558         self.assertEqual([6,7,8,9,10,11],ids2.getValues())
8559         pass
8560
8561     def testBuildSlice3D1(self):
8562         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8563         vec1=[-0.07,1.,0.07]
8564         origin1=[1.524,1.4552,1.74768]
8565         slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
8566         expected1=[1,3,4,7,9,10,13,15,16]
8567         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]
8568         expected3=[0,6,11,17,22,27,32,37,42,47]
8569         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.]
8570         self.assertEqual(2,slice1.getMeshDimension());
8571         self.assertEqual(3,slice1.getSpaceDimension());
8572         self.assertEqual(57,slice1.getNumberOfNodes());
8573         self.assertEqual(9,slice1.getNumberOfCells());
8574         self.assertEqual(9,ids.getNumberOfTuples());
8575         self.assertEqual(47,slice1.getNodalConnectivity().getNumberOfTuples());
8576         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8577         self.assertEqual(expected1,ids.getValues());
8578         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8579         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8580         for i in xrange(171):
8581             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8582             pass
8583         # 2nd slice based on already existing nodes of mesh3D.
8584         vec2=[0.,3.,1.]
8585         origin2=[2.5,1.,3.]
8586         slice1,ids=mesh3D.buildSlice3D(origin2,vec2,1e-10);
8587         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]
8588         expected6=[0,5,10,15,21,26,32,38,43,49]
8589         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]
8590         self.assertEqual(2,slice1.getMeshDimension());
8591         self.assertEqual(3,slice1.getSpaceDimension());
8592         self.assertEqual(60,slice1.getNumberOfNodes());
8593         self.assertEqual(9,slice1.getNumberOfCells());
8594         self.assertEqual(9,ids.getNumberOfTuples());
8595         self.assertEqual(49,slice1.getNodalConnectivity().getNumberOfTuples());
8596         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8597         self.assertEqual(expected1,ids.getValues());
8598         self.assertEqual(expected5,slice1.getNodalConnectivity().getValues());
8599         self.assertEqual(expected6,slice1.getNodalConnectivityIndex().getValues());
8600         for i in xrange(180):
8601             self.assertAlmostEqual(expected7[i],slice1.getCoords().getIJ(0,i),12);
8602             pass
8603         # 3rd slice based on shared face of mesh3D.
8604         vec3=[0.,0.,1.]
8605         origin3=[2.5,1.,2.]
8606         slice1,ids=mesh3D.buildSlice3D(origin3,vec3,1e-10);
8607         expected8=[6,7,8,9,10,11,12,13,14,15,16,17]
8608         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]
8609         expected10=[0,5,12,17,22,29,34,39,46,51,56,63,68]
8610         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.]
8611         self.assertEqual(2,slice1.getMeshDimension());
8612         self.assertEqual(3,slice1.getSpaceDimension());
8613         self.assertEqual(45,slice1.getNumberOfNodes());
8614         self.assertEqual(12,slice1.getNumberOfCells());
8615         self.assertEqual(12,ids.getNumberOfTuples());
8616         self.assertEqual(68,slice1.getNodalConnectivity().getNumberOfTuples());
8617         self.assertEqual(13,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8618         self.assertEqual(expected8,ids.getValues());
8619         self.assertEqual(expected9,slice1.getNodalConnectivity().getValues());
8620         self.assertEqual(expected10,slice1.getNodalConnectivityIndex().getValues());
8621         for i in xrange(135):
8622             self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12);
8623             pass
8624         pass
8625
8626     def testBuildSlice3DSurf1(self):
8627         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8628         mesh2D=mesh3D.buildDescendingConnectivity()[0];
8629         vec1=[-0.07,1.,0.07]
8630         origin1=[1.524,1.4552,1.74768]
8631         slice1,ids=mesh2D.buildSlice3DSurf(origin1,vec1,1e-10);
8632         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]
8633         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]
8634         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];
8635         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.]
8636         self.assertEqual(1,slice1.getMeshDimension());
8637         self.assertEqual(3,slice1.getSpaceDimension());
8638         self.assertEqual(57,slice1.getNumberOfNodes());
8639         self.assertEqual(25,slice1.getNumberOfCells());
8640         self.assertEqual(25,ids.getNumberOfTuples());
8641         self.assertEqual(75,slice1.getNodalConnectivity().getNumberOfTuples());
8642         self.assertEqual(26,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8643         self.assertEqual(expected1,ids.getValues());
8644         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8645         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8646         for i in xrange(171):
8647             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8648             pass
8649         #
8650         vec2=[0.,0.,1.]
8651         origin2=[2.5,1.,2.]
8652         slice1,ids=mesh2D.buildSlice3DSurf(origin2,vec2,1e-10);
8653         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]
8654         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]
8655         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];
8656         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.]
8657         self.assertEqual(1,slice1.getMeshDimension());
8658         self.assertEqual(3,slice1.getSpaceDimension());
8659         self.assertEqual(45,slice1.getNumberOfNodes());
8660         self.assertEqual(68,slice1.getNumberOfCells());
8661         self.assertEqual(68,ids.getNumberOfTuples());
8662         self.assertEqual(204,slice1.getNodalConnectivity().getNumberOfTuples());
8663         self.assertEqual(69,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8664         self.assertEqual(expected5,ids.getValues());
8665         self.assertEqual(expected6,slice1.getNodalConnectivity().getValues());
8666         self.assertEqual(expected7,slice1.getNodalConnectivityIndex().getValues());
8667         for i in xrange(135):
8668             self.assertAlmostEqual(expected8[i],slice1.getCoords().getIJ(0,i),12);
8669             pass
8670         pass
8671
8672     def testDataArrayDoubleAdvSetting1(self):
8673         data1=[1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.]
8674         data2=[8.,38.,9.,39.,0.,30.,11.,41.,12.,42.]
8675         compsCpp=["comp1","comp2"]
8676         da=DataArrayDouble.New();
8677         da.setInfoAndChangeNbOfCompo(compsCpp);
8678         da.setName("da");
8679         da.alloc(7,2);
8680         compsCpp=compsCpp[:-1]
8681         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8682         da.setValues(data1,7,2)
8683         #
8684         p=[(0,3),(3,5),(5,7)]
8685         tmp=da.selectByTupleRanges(p);
8686         self.assertTrue(tmp.isEqual(da,1e-14));
8687         p=[(0,2),(3,4),(5,7)]
8688         tmp=da.selectByTupleRanges(p);
8689         expected1=[1.,11.,2.,12.,4.,14.,6.,16.,7.,17.]
8690         self.assertEqual(5,tmp.getNumberOfTuples());
8691         self.assertEqual(2,tmp.getNumberOfComponents());
8692         for i in xrange(10):
8693             self.assertAlmostEqual(expected1[i],tmp.getIJ(0,i),14);
8694             pass
8695         p=[(0,2),(0,2),(5,6)]
8696         tmp=da.selectByTupleRanges(p);
8697         expected2=[1.,11.,2.,12.,1.,11.,2.,12.,6.,16.]
8698         self.assertEqual(5,tmp.getNumberOfTuples());
8699         self.assertEqual(2,tmp.getNumberOfComponents());
8700         for i in xrange(10):
8701             self.assertAlmostEqual(expected2[i],tmp.getIJ(0,i),14);
8702             pass
8703         p=[(0,2),(-1,2),(5,6)]
8704         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8705         p=[(0,2),(0,2),(5,8)]
8706         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8707         #
8708         da2=DataArrayDouble.New();
8709         da2.setValues(data2,5,2);
8710         #
8711         dac=da.deepCpy();
8712         dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8713         expected3=[1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.]
8714         for i in xrange(14):
8715             self.assertAlmostEqual(expected3[i],dac.getIJ(0,i),14);
8716             pass
8717         #
8718         dac=da.deepCpy();
8719         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8720         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8721         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8722         dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8723         expected4=[1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.]
8724         for i in xrange(14):
8725             self.assertAlmostEqual(expected4[i],dac.getIJ(0,i),14);
8726             pass
8727         #
8728         ids=DataArrayInt.New();
8729         ids.alloc(3,1);
8730         dac=da.deepCpy();
8731         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8732         dac.setContigPartOfSelectedValues(2,da2,ids);
8733         expected5=[1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.]
8734         for i in xrange(14):
8735             self.assertAlmostEqual(expected5[i],dac.getIJ(0,i),14);
8736             pass
8737         #
8738         dac=da.deepCpy();
8739         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8740         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8741         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8742         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8743         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8744         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8745         #
8746         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8747         dac=da.deepCpy();
8748         dac.setContigPartOfSelectedValues(4,da2,ids);
8749         expected6=[1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.]
8750         for i in xrange(14):
8751             self.assertAlmostEqual(expected6[i],dac.getIJ(0,i),14);
8752             pass
8753         pass
8754
8755     def testDataArrayIntAdvSetting1(self):
8756         data1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
8757         data2=[8,38,9,39,0,30,11,41,12,42]
8758         compsCpp=["comp1","comp2"]
8759         da=DataArrayInt.New();
8760         da.setInfoAndChangeNbOfCompo(compsCpp);
8761         da.setName("da");
8762         da.alloc(7,2);
8763         compsCpp=compsCpp[:-1]
8764         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8765         da.setValues(data1,7,2)
8766         #
8767         p=[(0,3),(3,5),(5,7)]
8768         tmp=da.selectByTupleRanges(p);
8769         self.assertTrue(tmp.isEqual(da));
8770         p=[(0,2),(3,4),(5,7)]
8771         tmp=da.selectByTupleRanges(p);
8772         expected1=[1,11,2,12,4,14,6,16,7,17]
8773         self.assertEqual(5,tmp.getNumberOfTuples());
8774         self.assertEqual(2,tmp.getNumberOfComponents());
8775         for i in xrange(10):
8776             self.assertEqual(expected1[i],tmp.getIJ(0,i));
8777             pass
8778         p=[(0,2),(0,2),(5,6)]
8779         tmp=da.selectByTupleRanges(p);
8780         expected2=[1,11,2,12,1,11,2,12,6,16]
8781         self.assertEqual(5,tmp.getNumberOfTuples());
8782         self.assertEqual(2,tmp.getNumberOfComponents());
8783         for i in xrange(10):
8784             self.assertEqual(expected2[i],tmp.getIJ(0,i));
8785             pass
8786         p=[(0,2),(-1,2),(5,6)]
8787         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8788         p=[(0,2),(0,2),(5,8)]
8789         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8790         #
8791         da2=DataArrayInt.New();
8792         da2.setValues(data2,5,2);
8793         #
8794         dac=da.deepCpy();
8795         dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8796         expected3=[1,11,0,30,11,41,4,14,5,15,6,16,7,17]
8797         for i in xrange(14):
8798             self.assertEqual(expected3[i],dac.getIJ(0,i));
8799             pass
8800         #
8801         dac=da.deepCpy();
8802         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8803         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8804         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8805         dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8806         expected4=[1,11,2,12,3,13,9,39,0,30,11,41,12,42]
8807         for i in xrange(14):
8808             self.assertEqual(expected4[i],dac.getIJ(0,i));
8809             pass
8810         #
8811         ids=DataArrayInt.New();
8812         ids.alloc(3,1);
8813         dac=da.deepCpy();
8814         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8815         dac.setContigPartOfSelectedValues(2,da2,ids);
8816         expected5=[1,11,2,12,0,30,8,38,12,42,6,16,7,17]
8817         for i in xrange(14):
8818             self.assertEqual(expected5[i],dac.getIJ(0,i));
8819             pass
8820         #
8821         dac=da.deepCpy();
8822         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8823         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8824         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8825         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8826         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8827         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8828         #
8829         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8830         dac=da.deepCpy();
8831         dac.setContigPartOfSelectedValues(4,da2,ids);
8832         expected6=[1,11,2,12,3,13,4,14,0,30,0,30,9,39]
8833         for i in xrange(14):
8834             self.assertEqual(expected6[i],dac.getIJ(0,i));
8835             pass
8836         pass
8837
8838     def testBuildDescendingConnec2Of3DMesh1(self):
8839         mesh=MEDCouplingDataForTest.build3DSourceMesh_1();
8840         #
8841         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8842         mesh2.checkCoherency();
8843         self.assertEqual(2,mesh2.getMeshDimension());
8844         self.assertEqual(30,mesh2.getNumberOfCells());
8845         self.assertEqual(31,revDescIndx.getNbOfElems()); self.assertEqual(31,revDescIndx.getNumberOfTuples());
8846         self.assertEqual(13,descIndx.getNbOfElems()); self.assertEqual(13,descIndx.getNumberOfTuples());
8847         self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
8848         self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
8849         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]
8850         self.assertEqual(expected1,desc.getValues());
8851         expected2=[0,4,8,12,16,20,24,28,32,36,40,44,48]
8852         self.assertEqual(expected2,descIndx.getValues());
8853         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]
8854         self.assertEqual(expected3,revDescIndx.getValues());
8855         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]
8856         self.assertEqual(expected4,revDesc.getValues());
8857         conn=mesh2.getNodalConnectivity();
8858         connIndex=mesh2.getNodalConnectivityIndex();
8859         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]
8860         self.assertEqual(expected5,connIndex.getValues());
8861         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]
8862         self.assertEqual(expected6,conn.getValues());
8863         pass
8864
8865     def testAre2DCellsNotCorrectlyOriented1(self):
8866         m1Coords=[1.,1.,-1.,-1.,-1.,-1.,1.,-1.]
8867         m1Conn=[0,3,1,2]
8868         m1=MEDCouplingUMesh.New();
8869         m1.setMeshDimension(2);
8870         m1.allocateCells(1);
8871         m1.insertNextCell(NORM_QUAD4,4,m1Conn[0:4])
8872         m1.finishInsertingCells();
8873         myCoords1=DataArrayDouble.New();
8874         myCoords1.setValues(m1Coords,4,2);
8875         m1.setCoords(myCoords1);
8876         #
8877         vec1=[0.,0.,1.]
8878         for i in xrange(18):
8879             vec2=[3.*cos(pi/9.*i),3.*sin(pi/9.*i)];
8880             m1Cpy=m1.deepCpy();
8881             m1Cpy.translate(vec2);
8882             self.assertRaises(InterpKernelException,m1Cpy.are2DCellsNotCorrectlyOriented,vec1,False);
8883             m1Cpy.changeSpaceDimension(3);
8884             res=m1Cpy.are2DCellsNotCorrectlyOriented(vec1,False)
8885             self.assertEqual([0],res.getValues());
8886             pass
8887         pass
8888
8889     def testDataArrayAbs1(self):
8890         d1=DataArrayDouble.New();
8891         val1=[2.,-3.,-5.,6.,-7.,-8.,9.,10.,-11.,-12.,-13.,-15.]
8892         expected1=[2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.]
8893         d1.setValues(val1,6,2);
8894         d2=d1.convertToIntArr();
8895         #
8896         d1.abs();
8897         for i in xrange(12):
8898             self.assertAlmostEqual(expected1[i],d1.getIJ(0,i),14);
8899             pass
8900         #
8901         expected2=[2,3,5,6,7,8,9,10,11,12,13,15]
8902         d2.abs();
8903         for i in xrange(12):
8904             self.assertEqual(expected2[i],d2.getIJ(0,i));
8905             pass
8906         #
8907         pass
8908
8909     # test on 1D
8910     def testGetValueOn3(self):
8911         v=[0.,1.,1.5,2.]
8912         v2=[0.7,1.25,0.,2.,1.5]
8913         disp=[5.,50.,500.,6.,60.,600.,7.,70.,700.,8.,80.,800.]
8914         m=MEDCouplingUMesh.New("myMesh",1)
8915         nbNodes=len(v)
8916         nbCells=nbNodes-1
8917         m.allocateCells(nbCells)
8918         coords=DataArrayDouble.New() ; coords.setValues(v,nbNodes,1)
8919         m.setCoords(coords)
8920         m.insertNextCell(NORM_SEG2,2,[0,1])
8921         m.insertNextCell(NORM_SEG2,2,[2,1])
8922         m.insertNextCell(NORM_SEG2,2,[2,3])
8923         m.finishInsertingCells()
8924         f=MEDCouplingFieldDouble.New(ON_NODES)
8925         f.setMesh(m)
8926         array=DataArrayDouble.New(); array.setValues(disp,m.getNumberOfNodes(),3)
8927         f.setArray(array)
8928         arr1=f.getValueOnMulti(v2)
8929         self.assertEqual(5,arr1.getNumberOfTuples());
8930         self.assertEqual(3,arr1.getNumberOfComponents());
8931         expected1=[5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.]
8932         for i in xrange(15):
8933             self.assertAlmostEqual(expected1[i],arr1.getIJ(0,i),14);
8934             pass
8935         pass
8936
8937     def testGetNodeIdsOfCell2(self):
8938         m1c=MEDCouplingCMesh.New();
8939         coordsX=DataArrayDouble.New();
8940         arrX=[ -1., 1., 2., 4., 4.5 ]
8941         coordsX.setValues(arrX,5,1);
8942         coordsY=DataArrayDouble.New();
8943         arrY=[ -2., 2., 4., 8.]
8944         coordsY.setValues(arrY,4,1);
8945         coordsZ=DataArrayDouble.New();
8946         arrZ=[ -2., 2., 4.]
8947         coordsZ.setValues(arrZ,3,1);
8948         # test in 1D
8949         m1c.setCoordsAt(0,coordsX);
8950         expected1=[[0,1],[1,2],[2,3],[3,4]]
8951         self.assertEqual(4,m1c.getNumberOfCells())
8952         for i in xrange(m1c.getNumberOfCells()):
8953             self.assertEqual(expected1[i],m1c.getNodeIdsOfCell(i))
8954             pass
8955         # test in 2D
8956         m1c.setCoordsAt(1,coordsY);
8957         self.assertEqual(12,m1c.getNumberOfCells())
8958         self.assertEqual(20,m1c.getNumberOfNodes())
8959         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]]
8960         for i in xrange(m1c.getNumberOfCells()):
8961             self.assertEqual(expected2[i],m1c.getNodeIdsOfCell(i))
8962             pass
8963         # test in 3D
8964         m1c.setCoordsAt(2,coordsZ);
8965         self.assertEqual(24,m1c.getNumberOfCells())
8966         self.assertEqual(60,m1c.getNumberOfNodes())
8967         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]]
8968         self.assertEqual(24,m1c.getNumberOfCells())
8969         for i in xrange(m1c.getNumberOfCells()):
8970             self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i))
8971             pass
8972         pass
8973     
8974     def testSwigDADOp4(self):
8975         da=DataArrayDouble.New(range(6,30),12,2)
8976         self.assertEqual(12,da.getNumberOfTuples());
8977         self.assertEqual(2,da.getNumberOfComponents());
8978         for i in xrange(24):
8979             self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8980             pass
8981         # operator transpose
8982         da.transpose()
8983         self.assertEqual(2,da.getNumberOfTuples());
8984         self.assertEqual(12,da.getNumberOfComponents());
8985         for i in xrange(24):
8986             self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8987             pass
8988         da.transpose()
8989         # operator __neg__
8990         da2=DataArrayDouble.New(12,1)
8991         da2.iota(0.)
8992         dabis=-da
8993         for i in xrange(24):
8994             self.assertAlmostEqual(dabis.getIJ(0,i),-float(i+6),13)
8995             pass
8996         # operator+=
8997         da+=da2
8998         expected1=[6.,7.,9.,10.,12.,13.,15.,16.,18.,19.,21.,22.,24.,25.,27.,28.,30.,31.,33.,34.,36.,37.,39.,40.]
8999         for i in xrange(24):
9000             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9001             pass
9002         da=-dabis
9003         da+=[100.,101.]
9004         expected2=[106.,108.,108.,110.,110.,112.,112.,114.,114.,116.,116.,118.,118.,120.,120.,122.,122.,124.,124.,126.,126.,128.,128.,130.]
9005         self.assertEqual(12,da.getNumberOfTuples());
9006         self.assertEqual(2,da.getNumberOfComponents());
9007         for i in xrange(24):
9008             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9009             pass
9010         for pos,elt in enumerate(dabis):
9011             da[pos]+=elt
9012             pass
9013         self.assertEqual(12,da.getNumberOfTuples());
9014         self.assertEqual(2,da.getNumberOfComponents());
9015         for elt in da:
9016             li=elt[:]
9017             self.assertAlmostEqual(li[0],100.,13) ; self.assertAlmostEqual(li[1],101.,13)
9018             pass
9019         # operator-=
9020         da=DataArrayDouble.New(range(6,30),12,2)
9021         da2=DataArrayDouble.New(range(12),12,1)
9022         dabis=-da
9023         da-=da2
9024         expected1=[6.,7.,7.,8.,8.,9.,9.,10.,10.,11.,11.,12.,12.,13.,13.,14.,14.,15.,15.,16.,16.,17.,17.,18.]
9025         for i in xrange(24):
9026             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9027             pass
9028         da=-dabis
9029         da-=[100.,101.]
9030         expected2=[-94.,-94.,-92.,-92.,-90.,-90.,-88.,-88.,-86.,-86.,-84.,-84.,-82.,-82.,-80.,-80.,-78.,-78.,-76.,-76.,-74.,-74.,-72.,-72.]
9031         self.assertEqual(12,da.getNumberOfTuples());
9032         self.assertEqual(2,da.getNumberOfComponents());
9033         for i in xrange(24):
9034             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9035             pass
9036         for pos,elt in enumerate(dabis):
9037             da[pos]-=elt
9038             pass
9039         self.assertEqual(12,da.getNumberOfTuples());
9040         self.assertEqual(2,da.getNumberOfComponents());
9041         expected3=[-88.,-87.,-84.,-83.,-80.,-79.,-76.,-75.,-72.,-71.,-68.,-67.,-64.,-63.,-60.,-59.,-56.,-55.,-52.,-51.,-48.,-47.,-44.,-43.]
9042         for i in xrange(24):
9043             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9044             pass
9045         # operator*=
9046         da=DataArrayDouble.New(range(6,30),12,2)
9047         da2=DataArrayDouble.New(range(12),12,1)
9048         dabis=-da
9049         da*=da2
9050         expected1=[0.,0.,8.,9.,20.,22.,36.,39.,56.,60.,80.,85.,108.,114.,140.,147.,176.,184.,216.,225.,260.,270.,308.,319.]
9051         for i in xrange(24):
9052             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9053             pass
9054         da=-dabis
9055         da*=[100.,101.]
9056         expected2=[600.,707.,800.,909.,1000.,1111.,1200.,1313.,1400.,1515.,1600.,1717.,1800.,1919.,2000.,2121.,2200.,2323.,2400.,2525.,2600.,2727.,2800.,2929.]
9057         self.assertEqual(12,da.getNumberOfTuples());
9058         self.assertEqual(2,da.getNumberOfComponents());
9059         for i in xrange(24):
9060             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9061             pass
9062         for pos,elt in enumerate(dabis):
9063             da[pos]*=elt
9064             pass
9065         self.assertEqual(12,da.getNumberOfTuples());
9066         self.assertEqual(2,da.getNumberOfComponents());
9067         expected3=[-3600.,-4949.,-6400.,-8181.,-10000.,-12221.,-14400.,-17069.,-19600.,-22725.,-25600.,-29189.,-32400.,-36461.,-40000.,-44541.,-48400.,-53429.,-57600.,-63125.,-67600.,-73629.,-78400.,-84941.0]
9068         for i in xrange(24):
9069             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9070             pass
9071         # operator/=
9072         da=DataArrayDouble.New(range(6,30),12,2)
9073         da2=DataArrayDouble.New(range(1,13),12,1)
9074         dabis=-da
9075         da/=da2
9076         expected1=[6.0,7.0,4.0,4.5,3.3333333333333335,3.6666666666666665,3.0,3.25,2.8,3.0,2.6666666666666665,2.8333333333333335,2.5714285714285716,2.7142857142857144,2.5,2.625,2.4444444444444446,2.5555555555555554,2.4,2.5,2.3636363636363638,2.4545454545454546,2.3333333333333335,2.4166666666666665]
9077         for i in xrange(24):
9078             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9079             pass
9080         da=-dabis
9081         da/=[100.,101.]
9082         expected2=[0.06,0.06930693069306931,0.08,0.0891089108910891,0.1,0.10891089108910891,0.12,0.12871287128712872,0.14,0.1485148514851485,0.16,0.16831683168316833,0.18,0.18811881188118812,0.2,0.2079207920792079,0.22,0.22772277227722773,0.24,0.24752475247524752,0.26,0.26732673267326734,0.28,0.2871287128712871]
9083         self.assertEqual(12,da.getNumberOfTuples());
9084         self.assertEqual(2,da.getNumberOfComponents());
9085         for i in xrange(24):
9086             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9087             pass
9088         for pos,elt in enumerate(dabis):
9089             da[pos]/=elt
9090             pass
9091         self.assertEqual(12,da.getNumberOfTuples());
9092         self.assertEqual(2,da.getNumberOfComponents());
9093         expected3=[-0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.0099009900990099]
9094         for i in xrange(24):
9095             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9096             pass
9097         pass
9098
9099     def testSwigDAIOp4(self):
9100         da=DataArrayInt.New(range(6,30),12,2)
9101         self.assertEqual(12,da.getNumberOfTuples());
9102         self.assertEqual(2,da.getNumberOfComponents());
9103         for i in xrange(24):
9104             self.assertEqual(da.getIJ(0,i),i+6)
9105             pass
9106         # operator transpose
9107         da.transpose()
9108         self.assertEqual(2,da.getNumberOfTuples());
9109         self.assertEqual(12,da.getNumberOfComponents());
9110         for i in xrange(24):
9111             self.assertEqual(da.getIJ(0,i),i+6)
9112             pass
9113         da.transpose()
9114         # operator __neg__
9115         da2=DataArrayInt.New(12,1)
9116         da2.iota(0)
9117         dabis=-da
9118         for i in xrange(24):
9119             self.assertEqual(dabis.getIJ(0,i),-(i+6))
9120             pass
9121         # operator+=
9122         da+=da2
9123         expected1=[6,7,9,10,12,13,15,16,18,19,21,22,24,25,27,28,30,31,33,34,36,37,39,40]
9124         for i in xrange(24):
9125             self.assertEqual(da.getIJ(0,i),expected1[i])
9126             pass
9127         da=-dabis
9128         da+=[100,101]
9129         expected2=[106,108,108,110,110,112,112,114,114,116,116,118,118,120,120,122,122,124,124,126,126,128,128,130]
9130         self.assertEqual(12,da.getNumberOfTuples());
9131         self.assertEqual(2,da.getNumberOfComponents());
9132         for i in xrange(24):
9133             self.assertEqual(da.getIJ(0,i),expected2[i])
9134             pass
9135         for pos,elt in enumerate(dabis):
9136             da[pos]+=elt
9137             pass
9138         self.assertEqual(12,da.getNumberOfTuples());
9139         self.assertEqual(2,da.getNumberOfComponents());
9140         for elt in da:
9141             li=elt[:]
9142             self.assertEqual(li[0],100) ; self.assertEqual(li[1],101)
9143             pass
9144         # operator-=
9145         da=DataArrayInt.New(range(6,30),12,2)
9146         da2=DataArrayInt.New(range(12),12,1)
9147         dabis=-da
9148         da-=da2
9149         expected1=[6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18]
9150         for i in xrange(24):
9151             self.assertEqual(da.getIJ(0,i),expected1[i])
9152             pass
9153         da=-dabis
9154         da-=[100,101]
9155         expected2=[-94,-94,-92,-92,-90,-90,-88,-88,-86,-86,-84,-84,-82,-82,-80,-80,-78,-78,-76,-76,-74,-74,-72,-72]
9156         self.assertEqual(12,da.getNumberOfTuples());
9157         self.assertEqual(2,da.getNumberOfComponents());
9158         for i in xrange(24):
9159             self.assertEqual(da.getIJ(0,i),expected2[i])
9160             pass
9161         for pos,elt in enumerate(dabis):
9162             da[pos]-=elt
9163             pass
9164         self.assertEqual(12,da.getNumberOfTuples());
9165         self.assertEqual(2,da.getNumberOfComponents());
9166         expected3=[-88,-87,-84,-83,-80,-79,-76,-75,-72,-71,-68,-67,-64,-63,-60,-59,-56,-55,-52,-51,-48,-47,-44,-43]
9167         for i in xrange(24):
9168             self.assertEqual(da.getIJ(0,i),expected3[i])
9169             pass
9170         # operator*=
9171         da=DataArrayInt.New(range(6,30),12,2)
9172         da2=DataArrayInt.New(range(12),12,1)
9173         dabis=-da
9174         da*=da2
9175         expected1=[0,0,8,9,20,22,36,39,56,60,80,85,108,114,140,147,176,184,216,225,260,270,308,319]
9176         for i in xrange(24):
9177             self.assertEqual(da.getIJ(0,i),expected1[i])
9178             pass
9179         da=-dabis
9180         da*=[100,101]
9181         expected2=[600,707,800,909,1000,1111,1200,1313,1400,1515,1600,1717,1800,1919,2000,2121,2200,2323,2400,2525,2600,2727,2800,2929]
9182         self.assertEqual(12,da.getNumberOfTuples());
9183         self.assertEqual(2,da.getNumberOfComponents());
9184         for i in xrange(24):
9185             self.assertEqual(da.getIJ(0,i),expected2[i])
9186             pass
9187         for pos,elt in enumerate(dabis):
9188             da[pos]*=elt
9189             pass
9190         self.assertEqual(12,da.getNumberOfTuples());
9191         self.assertEqual(2,da.getNumberOfComponents());
9192         expected3=[-3600,-4949,-6400,-8181,-10000,-12221,-14400,-17069,-19600,-22725,-25600,-29189,-32400,-36461,-40000,-44541,-48400,-53429,-57600,-63125,-67600,-73629,-78400,-84941.0]
9193         for i in xrange(24):
9194             self.assertEqual(da.getIJ(0,i),expected3[i])
9195             pass
9196         # operator/=
9197         da=DataArrayInt.New(range(6,30),12,2)
9198         da2=DataArrayInt.New(range(1,13),12,1)
9199         dabis=-da
9200         da/=da2
9201         expected1=[6,7,4,4,3,3,3,3,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
9202         for i in xrange(24):
9203             self.assertEqual(da.getIJ(0,i),expected1[i])
9204             pass
9205         da=-dabis
9206         da/=DataArrayInt.New([2,3],1,2)
9207         self.assertEqual(12,da.getNumberOfTuples());
9208         self.assertEqual(2,da.getNumberOfComponents());
9209         expected2=[3,2,4,3,5,3,6,4,7,5,8,5,9,6,10,7,11,7,12,8,13,9,14,9]
9210         for i in xrange(24):
9211             self.assertEqual(da.getIJ(0,i),expected2[i])
9212             pass
9213         pass
9214
9215     def testSwigDADOp5(self):
9216         da=DataArrayDouble.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9217         da.rearrange(3)
9218         da2=DataArrayDouble.New([5.,8.,10.,12])
9219         self.assertEqual(4,da2.getNumberOfTuples());
9220         self.assertEqual(1,da2.getNumberOfComponents());
9221         da3=da+da2
9222         self.assertEqual(4,da3.getNumberOfTuples());
9223         self.assertEqual(3,da3.getNumberOfComponents());
9224         expected1=[10.,11.,12.,16.,17.,14.,17.,8.,13.,21.,20.,22.]
9225         for i in xrange(12):
9226             self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9227             pass
9228         da3=da2+da
9229         self.assertEqual(4,da3.getNumberOfTuples());
9230         self.assertEqual(3,da3.getNumberOfComponents());
9231         for i in xrange(12):
9232             self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9233             pass
9234         # Test new API of classmethod DataArrayDouble.New
9235         vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9236         da=DataArrayDouble.New(vals)
9237         self.assertEqual(12,da.getNumberOfTuples());
9238         self.assertEqual(1,da.getNumberOfComponents());
9239         for i in xrange(12):
9240             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9241             pass
9242         da=DataArrayDouble.New(vals,12)
9243         self.assertEqual(12,da.getNumberOfTuples());
9244         self.assertEqual(1,da.getNumberOfComponents());
9245         for i in xrange(12):
9246             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9247             pass
9248         da=DataArrayDouble.New(vals,1,12)
9249         self.assertEqual(1,da.getNumberOfTuples());
9250         self.assertEqual(12,da.getNumberOfComponents());
9251         for i in xrange(12):
9252             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9253             pass
9254         da=DataArrayDouble.New(vals,6,2)
9255         self.assertEqual(6,da.getNumberOfTuples());
9256         self.assertEqual(2,da.getNumberOfComponents());
9257         for i in xrange(12):
9258             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9259             pass
9260         da=DataArrayDouble.New(vals,4,3)
9261         self.assertEqual(4,da.getNumberOfTuples());
9262         self.assertEqual(3,da.getNumberOfComponents());
9263         for i in xrange(12):
9264             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9265             pass
9266         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9267         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9268         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9269         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9270         pass
9271
9272     def testSwigDADOp6(self):
9273         da=DataArrayInt.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9274         da.rearrange(3)
9275         da2=DataArrayInt.New([5,8,10,12])
9276         self.assertEqual(4,da2.getNumberOfTuples());
9277         self.assertEqual(1,da2.getNumberOfComponents());
9278         da3=da+da2
9279         self.assertEqual(4,da3.getNumberOfTuples());
9280         self.assertEqual(3,da3.getNumberOfComponents());
9281         expected1=[10,11,12,16,17,14,17,8,13,21,20,22]
9282         for i in xrange(12):
9283             self.assertEqual(da3.getIJ(0,i),expected1[i])
9284             pass
9285         da3=da2+da
9286         self.assertEqual(4,da3.getNumberOfTuples());
9287         self.assertEqual(3,da3.getNumberOfComponents());
9288         for i in xrange(12):
9289             self.assertEqual(da3.getIJ(0,i),expected1[i])
9290             pass
9291         da3=da+DataArrayInt.New(da2.getValues())
9292         # Test new API of classmethod DataArrayInt.New
9293         vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9294         da=DataArrayDouble.New(vals)
9295         self.assertEqual(12,da.getNumberOfTuples());
9296         self.assertEqual(1,da.getNumberOfComponents());
9297         for i in xrange(12):
9298             self.assertEqual(da.getIJ(0,i),vals[i])
9299             pass
9300         da=DataArrayDouble.New(vals,12)
9301         self.assertEqual(12,da.getNumberOfTuples());
9302         self.assertEqual(1,da.getNumberOfComponents());
9303         for i in xrange(12):
9304             self.assertEqual(da.getIJ(0,i),vals[i])
9305             pass
9306         da=DataArrayDouble.New(vals,1,12)
9307         self.assertEqual(1,da.getNumberOfTuples());
9308         self.assertEqual(12,da.getNumberOfComponents());
9309         for i in xrange(12):
9310             self.assertEqual(da.getIJ(0,i),vals[i])
9311             pass
9312         da=DataArrayDouble.New(vals,6,2)
9313         self.assertEqual(6,da.getNumberOfTuples());
9314         self.assertEqual(2,da.getNumberOfComponents());
9315         for i in xrange(12):
9316             self.assertEqual(da.getIJ(0,i),vals[i])
9317             pass
9318         da=DataArrayDouble.New(vals,4,3)
9319         self.assertEqual(4,da.getNumberOfTuples());
9320         self.assertEqual(3,da.getNumberOfComponents());
9321         for i in xrange(12):
9322             self.assertEqual(da.getIJ(0,i),vals[i])
9323             pass
9324         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9325         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9326         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9327         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9328         pass
9329
9330     def testSwigDADOp9(self):
9331         l1=[(1.,2.,3),(4.,5.,6.),(7.,8.,9.),[10.,11.,12.]]
9332         da1=DataArrayDouble(l1,4,3)
9333         self.assertEqual(4,da1.getNumberOfTuples());
9334         self.assertEqual(3,da1.getNumberOfComponents());
9335         da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9336         self.assertTrue(da2.isEqual(da1,1e-12))
9337         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9338         da3=DataArrayDouble(l1,4)
9339         self.assertTrue(da3.isEqual(da1,1e-12))
9340         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9341         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9342         l1=[(1.,2.,3),(4.,(5.),((6.))),(7.,8.,9.),[10.,11.,12.]]
9343         da1=DataArrayDouble(l1,4,3)
9344         self.assertEqual(4,da1.getNumberOfTuples());
9345         self.assertEqual(3,da1.getNumberOfComponents());
9346         da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9347         self.assertTrue(da2.isEqual(da1,1e-12))
9348         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9349         da3=DataArrayDouble(l1,4)
9350         self.assertTrue(da3.isEqual(da1,1e-12))
9351         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9352         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9353         #
9354         l1=[(1,2,3),(4,5,6),(7,8,9),[10,11,12]]
9355         da1=DataArrayInt(l1,4,3)
9356         self.assertEqual(4,da1.getNumberOfTuples());
9357         self.assertEqual(3,da1.getNumberOfComponents());
9358         da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9359         self.assertTrue(da2.isEqual(da1))
9360         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9361         da3=DataArrayInt(l1,4)
9362         self.assertTrue(da3.isEqual(da1))
9363         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9364         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9365         l1=[(1,[2],3),(4,[(5)],6),((([7])),8,9),[10,11,12]]
9366         da1=DataArrayInt(l1,4,3)
9367         self.assertEqual(4,da1.getNumberOfTuples());
9368         self.assertEqual(3,da1.getNumberOfComponents());
9369         da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9370         self.assertTrue(da2.isEqual(da1))
9371         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9372         da3=DataArrayInt(l1,4)
9373         self.assertTrue(da3.isEqual(da1))
9374         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9375         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9376         pass
9377
9378     def testRenumberNodesInConn1(self):
9379         mesh2DCoords=[-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ]
9380         mesh2DConn=[1,4,2, 4,5,2, 0,3,4,1, 6,7,4,3, 7,8,5,4]
9381         mesh2D=MEDCouplingUMesh.New("mesh",2);
9382         mesh2D.allocateCells(5);
9383         mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[0:3])
9384         mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[3:6])
9385         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[6:10])
9386         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[10:14])
9387         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[14:18])
9388         mesh2D.finishInsertingCells();
9389         myCoords=DataArrayDouble.New(mesh2DCoords,9,3);
9390         mesh2D.setCoords(myCoords);
9391         mesh2D.checkCoherency();
9392         #
9393         mesh3DCoords=[-0.3,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.2,-0.3,0., -0.3,-0.3,1., -0.3,0.2,1., 0.2,0.2,1., 0.2,-0.3,1. ]
9394         mesh3DConn=[0,1,2,3,4,5,6,7]
9395         mesh3D=MEDCouplingUMesh.New("mesh",3);
9396         mesh3D.allocateCells(1);
9397         mesh3D.insertNextCell(NORM_HEXA8,8,mesh3DConn[:])
9398         mesh3D.finishInsertingCells();
9399         myCoords3D=DataArrayDouble.New(mesh3DCoords,8,3);
9400         mesh3D.setCoords(myCoords3D);
9401         mesh3D.checkCoherency();
9402         #
9403         mesh3D_2=mesh3D.deepCpy();
9404         mesh2D_2=mesh2D.deepCpy();
9405         mesh3D_4=mesh3D.deepCpy();
9406         mesh2D_4=mesh2D.deepCpy();
9407         oldNbOf3DNodes=mesh3D.getNumberOfNodes();
9408         renumNodes=DataArrayInt.New();
9409         renumNodes.alloc(mesh2D.getNumberOfNodes(),1);
9410         renumNodes.iota(oldNbOf3DNodes);
9411         coo=DataArrayDouble.Aggregate(mesh3D.getCoords(),mesh2D.getCoords());
9412         mesh3D.setCoords(coo);
9413         mesh2D.setCoords(coo);
9414         mesh2DCpy=mesh2D.deepCpy()
9415         mesh2D_3=mesh2D.deepCpy();
9416         mesh2D_3.shiftNodeNumbersInConn(oldNbOf3DNodes);
9417         mesh2D.renumberNodesInConn(renumNodes);
9418         mesh2DCpy.renumberNodesInConn(renumNodes.getValues());
9419         self.assertTrue(mesh2D.isEqual(mesh2DCpy,1e-12))
9420         self.assertTrue(mesh2D.isEqual(mesh2D_3,1e-12))
9421         #
9422         da1,da2=mesh3D.checkGeoEquivalWith(mesh3D_2,10,1e-12);
9423         self.assertTrue(da1==None);
9424         self.assertEqual(8,da2.getNumberOfTuples());
9425         self.assertEqual(1,da2.getNumberOfComponents());
9426         expected1=[8,11,12,9,4,5,6,7]
9427         for i in xrange(8):
9428             self.assertEqual(expected1[i],da2.getIJ(i,0));
9429             pass
9430         #
9431         da1,da2=mesh2D.checkGeoEquivalWith(mesh2D_2,10,1e-12);
9432         self.assertTrue(da1==None);
9433         self.assertEqual(9,da2.getNumberOfTuples());
9434         self.assertEqual(1,da2.getNumberOfComponents());
9435         for i in xrange(9):
9436             self.assertEqual(8+i,da2.getIJ(i,0));
9437             pass
9438         #
9439         mesh2D_5=mesh2D_4.deepCpy();
9440         mesh2D_5.translate([1.,0.,0.]);
9441         meshes=[mesh3D_4,mesh2D_4,mesh2D_5];
9442         MEDCouplingUMesh.PutUMeshesOnSameAggregatedCoords(meshes);
9443         self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9444         self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9445         mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9446         self.assertEqual(26,mesh3D_4.getNumberOfNodes());
9447         self.assertEqual(3,mesh3D_4.getSpaceDimension());
9448         self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9449         self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9450         self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9451         expected2=[18,0,1,2,3,4,5,6,7]
9452         expected3=[3,9,12,10, 3,12,13,10, 4,8,11,12,9, 4,14,15,12,11, 4,15,16,13,12]
9453         expected4=[3,18,21,19, 3,21,22,19, 4,17,20,21,18, 4,23,24,21,20, 4,24,25,22,21]
9454         expected5=[-0.3,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.2,-0.3,0., -0.3,-0.3,1., -0.3,0.2,1., 0.2,0.2,1., 0.2,-0.3,1., -0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0., 0.7, -0.3, 0.0, 1.2, -0.3, 0.0, 1.7, -0.3, 0.0, 0.7, 0.2, 0.0, 1.2, 0.2, 0.0, 1.7, 0.2, 0.0, 0.7, 0.7, 0.0, 1.2, 0.7, 0.0, 1.7, 0.7, 0.0]
9455         self.assertEqual(expected2,mesh3D_4.getNodalConnectivity().getValues());
9456         self.assertEqual(expected3,mesh2D_4.getNodalConnectivity().getValues());
9457         self.assertEqual(expected4,mesh2D_5.getNodalConnectivity().getValues());
9458         for i in xrange(78):
9459             self.assertAlmostEqual(expected5[i],mesh3D_4.getCoords().getIJ(0,i),12);
9460             pass
9461         #
9462         MEDCouplingUMesh.MergeNodesOnUMeshesSharingSameCoords(meshes,1e-12);
9463         mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9464         self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9465         self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9466         self.assertEqual(19,mesh3D_4.getNumberOfNodes());
9467         self.assertEqual(3,mesh3D_4.getSpaceDimension());
9468         self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9469         self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9470         self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9471         expected6=[18,0,1,2,3,4,5,6,7]
9472         expected7=[3,3,2,8, 3,2,9,8, 4,0,1,2,3, 4,10,11,2,1, 4,11,12,9,2]
9473         expected8=[3,13,15,14, 3,15,16,14, 4,8,9,15,13, 4,12,17,15,9, 4,17,18,16,15]
9474         expected9=[-0.3, -0.3, 0., -0.3, 0.2, 0., 0.2, 0.2, 0., 0.2, -0.3, 0., -0.3, -0.3, 1., -0.3, 0.2, 1.,
9475                     0.2, 0.2, 1., 0.2, -0.3, 1., 0.7, -0.3, 0., 0.7, 0.2, 0., -0.3, 0.7, 0., 0.2, 0.7, 0.,
9476                     0.7, 0.7, 0., 1.2, -0.3, 0., 1.7, -0.3, 0., 1.2, 0.2, 0., 1.7, 0.2, 0., 1.2, 0.7, 0., 1.7, 0.7, 0.]
9477         self.assertEqual(expected6,mesh3D_4.getNodalConnectivity().getValues());
9478         self.assertEqual(expected7,mesh2D_4.getNodalConnectivity().getValues());
9479         self.assertEqual(expected8,mesh2D_5.getNodalConnectivity().getValues());
9480         for i in xrange(57):
9481             self.assertAlmostEqual(expected9[i],mesh3D_4.getCoords().getIJ(0,i),12);
9482             pass
9483         #
9484         pass
9485     
9486     def testComputeNeighborsOfCells1(self):
9487         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9488         d1,d2=m.computeNeighborsOfCells();
9489         self.assertEqual(6,d2.getNumberOfTuples());
9490         self.assertEqual(10,d1.getNumberOfTuples());
9491         expected1=[0,2,4,6,8,10]
9492         expected2=[3,1,0,2,4,1,4,0,2,3]
9493         self.assertEqual(expected1,d2.getValues());
9494         self.assertEqual(expected2,d1.getValues());
9495         pass
9496
9497     def testCheckButterflyCellsBug1(self):
9498         mesh2DCoords=[323.85,120.983748908684,317.5,131.982271536747,336.55,120.983748908686,330.2,131.982271536751,323.85,142.98079416481]
9499         mesh2DConn=[4,1,0,2,3]
9500         mesh2D=MEDCouplingUMesh.New("mesh",2);
9501         mesh2D.allocateCells(1);
9502         mesh2D.insertNextCell(NORM_POLYGON,5,mesh2DConn[0:5])
9503         mesh2D.finishInsertingCells();
9504         myCoords=DataArrayDouble.New(mesh2DCoords,5,2);
9505         mesh2D.setCoords(myCoords);
9506         mesh2D.checkCoherency();
9507         #
9508         v=mesh2D.checkButterflyCells();
9509         self.assertTrue(v.empty());
9510         pass
9511
9512     def testDataArrayIntRange1(self):
9513         d=DataArrayInt.Range(2,17,7);
9514         expected1=[2,9,16]
9515         self.assertEqual(3,d.getNumberOfTuples());
9516         self.assertEqual(1,d.getNumberOfComponents());
9517         self.assertEqual(expected1,d.getValues());
9518         #
9519         d=DataArrayInt.Range(2,23,7);
9520         self.assertEqual(3,d.getNumberOfTuples());
9521         self.assertEqual(1,d.getNumberOfComponents());
9522         self.assertEqual(expected1,d.getValues());
9523         #
9524         d=DataArrayInt.Range(2,24,7);
9525         expected2=[2,9,16,23]
9526         self.assertEqual(4,d.getNumberOfTuples());
9527         self.assertEqual(1,d.getNumberOfComponents());
9528         self.assertEqual(expected2,d.getValues());
9529         #
9530         d=DataArrayInt.Range(24,2,-7);
9531         expected3=[24,17,10,3]
9532         self.assertEqual(4,d.getNumberOfTuples());
9533         self.assertEqual(1,d.getNumberOfComponents());
9534         self.assertEqual(expected3,d.getValues());
9535         #
9536         d=DataArrayInt.Range(23,2,-7);
9537         expected4=[23,16,9]
9538         self.assertEqual(3,d.getNumberOfTuples());
9539         self.assertEqual(1,d.getNumberOfComponents());
9540         self.assertEqual(expected4,d.getValues());
9541         #
9542         d=DataArrayInt.Range(23,22,-7);
9543         self.assertEqual(1,d.getNumberOfTuples());
9544         self.assertEqual(1,d.getNumberOfComponents());
9545         self.assertEqual(23,d.getIJ(0,0));
9546         #
9547         d=DataArrayInt.Range(22,23,7);
9548         self.assertEqual(1,d.getNumberOfTuples());
9549         self.assertEqual(1,d.getNumberOfComponents());
9550         self.assertEqual(22,d.getIJ(0,0));
9551         #
9552         d=DataArrayInt.Range(22,22,7);
9553         self.assertEqual(0,d.getNumberOfTuples());
9554         self.assertEqual(1,d.getNumberOfComponents());
9555         #
9556         d=DataArrayInt.Range(22,22,-7);
9557         self.assertEqual(0,d.getNumberOfTuples());
9558         self.assertEqual(1,d.getNumberOfComponents());
9559         #
9560         self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,-7);
9561         self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,7);
9562         self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,0);
9563         self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,0);
9564         pass
9565
9566     def testSwigUMeshGetItem1(self):
9567         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9568         subMesh=m.buildPartOfMySelf([1,3],True);
9569         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
9570         m1=m[[1,3]]
9571         self.assertTrue(isinstance(m1,MEDCouplingUMesh))
9572         m2=m[(1,3)]
9573         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9574         m3=m[1::2]
9575         self.assertTrue(isinstance(m3,MEDCouplingUMesh))
9576         m4=m[DataArrayInt.New([1,3])]
9577         m5_1=m[1]
9578         self.assertTrue(isinstance(m5_1,MEDCouplingUMesh))
9579         m5_2=m[3]
9580         self.assertTrue(isinstance(m5_2,MEDCouplingUMesh))
9581         m5=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m5_1,m5_2]);
9582         m5.setName(subMesh.getName())
9583         self.assertTrue(isinstance(m4,MEDCouplingUMesh))
9584         self.assertTrue(subMesh.isEqual(m1,1e-12))
9585         self.assertTrue(subMesh.isEqual(m2,1e-12))
9586         self.assertTrue(subMesh.isEqual(m3,1e-12))
9587         self.assertTrue(subMesh.isEqual(m4,1e-12))
9588         self.assertTrue(subMesh.isEqual(m5,1e-12))
9589         self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[1,5],True);
9590         pass
9591     
9592     def testSwigGetItem3(self):
9593         da=DataArrayInt.New([4,5,6])
9594         self.assertEqual(5,da[1])
9595         self.assertEqual(6,da[-1])
9596         self.assertRaises(InterpKernelException,da.__getitem__,3)
9597         da=DataArrayInt.New([4,5,6,7,8,9],2,3)
9598         self.assertEqual(9,da[1,2])
9599         da=DataArrayDouble.New([4.1,5.2,6.3])
9600         self.assertAlmostEqual(5.2,da[1],12)
9601         self.assertAlmostEqual(6.3,da[-1],12)
9602         self.assertRaises(InterpKernelException,da.__getitem__,3)
9603         da=DataArrayDouble.New([4.12,5.12,6.12,7.12,8.12,9.12],2,3)
9604         self.assertAlmostEqual(9.12,da[1,2],12)
9605         pass
9606
9607     def testSwigDADISub1(self):
9608         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
9609         bary=mesh3D.getBarycenterAndOwner()
9610         bary=bary[:,:2]
9611         pts=bary.getDifferentValues(1e-12)
9612         expected=[[0,6,12],[1,7,13],[2,8,14],[3,9,15],[4,10,16],[5,11,17]]
9613         for pos,pt in enumerate(pts):
9614             bary2=bary[:,:2]
9615             bary2[:]-=pt
9616             norm=bary2.magnitude()
9617             self.assertEqual(expected[pos],norm.getIdsInRange(-1.,1e-5).getValues())
9618             pass
9619         expected2=[[3.,54.],[-141.,180.],[21.,54.],[39.,72.],[-15.,90.],[21.,90.]]
9620         for pos,pt in enumerate(pts):
9621             bary2=bary[:,:2]
9622             bary2[:]+=pt
9623             self.assertAlmostEqual(expected2[pos][0],bary2.accumulate()[0],12);
9624             self.assertAlmostEqual(expected2[pos][1],bary2.accumulate()[1],12);
9625             pass
9626         expected3=[[-3.,22.5],[45.,337.5],[-9., 22.5],[-15.,67.5],[3.,112.5],[-9.,112.5]]
9627         for pos,pt in enumerate(pts):
9628             bary2=bary[:,:2]
9629             bary2[:]*=pt
9630             self.assertAlmostEqual(expected3[pos][0],bary2.accumulate()[0],12);
9631             self.assertAlmostEqual(expected3[pos][1],bary2.accumulate()[1],12);
9632             pass
9633         expected4=[[-12.,90.],[0.8,6.],[-4,90.],[-2.4,30.],[12.,18],[-4,18.]]
9634         for pos,pt in enumerate(pts):
9635             bary2=bary[:,:2]
9636             bary2[:]/=pt
9637             self.assertAlmostEqual(expected4[pos][0],bary2.accumulate()[0],12);
9638             self.assertAlmostEqual(expected4[pos][1],bary2.accumulate()[1],12);
9639             pass
9640         #
9641         d=DataArrayInt.New([1,2,0,1,0,2],3,2)
9642         e=DataArrayInt.New([1,11,101,2,12,102,3,13,103,4,14,104],4,3)
9643         expected5=[[1,11,101,77,77,77,77,77,77,4,14,104],[77,77,77,77,77,77,3,13,103,4,14,104],[77,77,77,2,12,102,77,77,77,4,14,104]]
9644         expected6=[[1,77,77,2,77,77,3,77,77,4,77,77],[77,77,101,77,77,102,77,77,103,77,77,104],[77,11,77,77,12,77,77,13,77,77,14,77]]
9645         for pos,tup in enumerate(d):
9646             f=e[:]
9647             self.assertTrue(isinstance(f,DataArrayInt))
9648             f[tup]=77
9649             self.assertEqual(expected5[pos],f.getValues())
9650             self.assertEqual(6*[77],f[tup].getValues())
9651             f=e[:]
9652             f[:,tup]=77
9653             self.assertEqual(expected6[pos],f.getValues())
9654             self.assertEqual(8*[77],f[:,tup].getValues())
9655             pass
9656         #
9657         e=e.convertToDblArr()
9658         for pos,tup in enumerate(d):
9659             f=e[:]
9660             self.assertTrue(isinstance(f,DataArrayDouble))
9661             f[tup]=77.
9662             self.assertEqual(expected5[pos],f.convertToIntArr().getValues())
9663             self.assertEqual(6*[77],f[tup].convertToIntArr().getValues())
9664             f=e[:]
9665             f[:,tup]=77.
9666             self.assertEqual(expected6[pos],f.convertToIntArr().getValues())
9667             self.assertEqual(8*[77],f[:,tup].convertToIntArr().getValues())
9668             pass
9669         pass
9670
9671     def testDataArrayDoubleGetMinMaxPerComponent1(self):
9672         values1=[1.,2.,3.,-0.9,2.1,3.,1.3,1.7,3.,1.,1.8,3.]
9673         d1=DataArrayDouble.New();
9674         self.assertRaises(InterpKernelException,d1.getMinMaxPerComponent)
9675         d1=DataArrayDouble.New(values1,4,3);
9676         res=d1.getMinMaxPerComponent();
9677         self.assertTrue(isinstance(res,list))
9678         self.assertEqual(3,len(res))
9679         for i in xrange(3):
9680             self.assertTrue(isinstance(res[i],tuple))
9681             self.assertEqual(2,len(res[i]))
9682             pass
9683         expected1=[-0.9,1.3,1.7,2.1,3.,3.]
9684         for i in xrange(6):
9685             self.assertAlmostEqual(expected1[i],res[i/2][i%2],14)
9686             pass
9687         #
9688         d1.rearrange(2);
9689         res=d1.getMinMaxPerComponent();
9690         self.assertTrue(isinstance(res,list))
9691         self.assertEqual(2,len(res))
9692         for i in xrange(2):
9693             self.assertTrue(isinstance(res[i],tuple))
9694             self.assertEqual(2,len(res[i]))
9695             pass
9696         expected2=[1.,3.,-0.9,3.]
9697         for i in xrange(4):
9698             self.assertAlmostEqual(expected2[i],res[i/2][i%2],14)
9699             pass
9700         #
9701         d1.rearrange(1);
9702         res=d1.getMinMaxPerComponent();
9703         self.assertTrue(isinstance(res,list))
9704         self.assertEqual(1,len(res))
9705         for i in xrange(1):
9706             self.assertTrue(isinstance(res[i],tuple))
9707             self.assertEqual(2,len(res[i]))
9708             pass
9709         expected3=[-0.9,3.]
9710         for i in xrange(2):
9711             self.assertAlmostEqual(expected3[i],res[i/2][i%2],14)
9712             pass
9713         pass
9714
9715     def testDataArrayIntGetHashCode1(self):
9716         d1=DataArrayInt.New(range(3545))
9717         d2=DataArrayInt.New(range(3545))
9718         self.assertEqual(d2.getHashCode(),d1.getHashCode())
9719         self.assertEqual(232341068,d1.getHashCode())
9720         d1[886]=6
9721         self.assertEqual(232340188,d1.getHashCode())
9722         pass
9723
9724     def testZipConnectivityPol1(self):
9725         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
9726         cells1=[2,3,4]
9727         m2_1=m1.buildPartOfMySelf(cells1,True);
9728         m2=m2_1
9729         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9730         # no permutation policy 0
9731         isOk,arr=m1.areCellsIncludedIn(m2,0)
9732         self.assertTrue(isOk);
9733         self.assertEqual(3,arr.getNumberOfTuples());
9734         self.assertEqual(1,arr.getNumberOfComponents());
9735         self.assertEqual(cells1,arr.getValues())
9736         # no permutation policy 1
9737         isOk,arr=m1.areCellsIncludedIn(m2,1)
9738         self.assertTrue(isOk);
9739         self.assertEqual(3,arr.getNumberOfTuples());
9740         self.assertEqual(1,arr.getNumberOfComponents());
9741         self.assertEqual(cells1,arr.getValues())
9742         # no permutation policy 2
9743         isOk,arr=m1.areCellsIncludedIn(m2,2)
9744         self.assertTrue(isOk);
9745         self.assertEqual(3,arr.getNumberOfTuples());
9746         self.assertEqual(1,arr.getNumberOfComponents());
9747         self.assertEqual(cells1,arr.getValues())
9748         # some modification into m2
9749         modif1=[2,4,5]
9750         m2.getNodalConnectivity()[1:4]=modif1
9751         #policy 0 fails because cell0 in m2 has same orientation be not same connectivity
9752         expected1=[5,3,4]
9753         isOk,arr=m1.areCellsIncludedIn(m2,0)
9754         self.assertTrue(not isOk);
9755         self.assertEqual(3,arr.getNumberOfTuples());
9756         self.assertEqual(1,arr.getNumberOfComponents());
9757         self.assertEqual(expected1,arr.getValues())
9758         #policy 1 succeeds because cell0 in m2 has not exactly the same conn
9759         isOk,arr=m1.areCellsIncludedIn(m2,1)
9760         self.assertTrue(isOk);
9761         self.assertEqual(3,arr.getNumberOfTuples());
9762         self.assertEqual(1,arr.getNumberOfComponents());
9763         self.assertEqual(cells1,arr.getValues())
9764         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9765         isOk,arr=m1.areCellsIncludedIn(m2,2)
9766         self.assertTrue(isOk);
9767         self.assertEqual(3,arr.getNumberOfTuples());
9768         self.assertEqual(1,arr.getNumberOfComponents());
9769         self.assertEqual(cells1,arr.getValues())
9770         #some new modification into m2
9771         modif2=[2,5,4]
9772         m2.getNodalConnectivity()[1:4]=modif2
9773         #policy 0 fails because cell0 in m2 has not exactly the same conn
9774         isOk,arr=m1.areCellsIncludedIn(m2,0)
9775         self.assertTrue(not isOk);
9776         self.assertEqual(3,arr.getNumberOfTuples());
9777         self.assertEqual(1,arr.getNumberOfComponents());
9778         self.assertEqual(expected1,arr.getValues())
9779         #policy 1 fails too because cell0 in m2 has not same orientation
9780         isOk,arr=m1.areCellsIncludedIn(m2,1)
9781         self.assertTrue(not isOk);
9782         self.assertEqual(3,arr.getNumberOfTuples());
9783         self.assertEqual(1,arr.getNumberOfComponents());
9784         self.assertEqual(expected1,arr.getValues())
9785         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9786         isOk,arr=m1.areCellsIncludedIn(m2,2)
9787         self.assertTrue(isOk);
9788         self.assertEqual(3,arr.getNumberOfTuples());
9789         self.assertEqual(1,arr.getNumberOfComponents());
9790         self.assertEqual(cells1,arr.getValues())
9791         # Now 1D
9792         cells2=[3,2]
9793         m1=MEDCouplingDataForTest.build1DSourceMesh_2();
9794         m2_1=m1.buildPartOfMySelf(cells2,True);
9795         m2=m2_1
9796         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9797         # no permutation policy 0
9798         isOk,arr=m1.areCellsIncludedIn(m2,0)
9799         self.assertTrue(isOk);
9800         self.assertEqual(2,arr.getNumberOfTuples());
9801         self.assertEqual(1,arr.getNumberOfComponents());
9802         self.assertEqual(cells2,arr.getValues())
9803         # no permutation policy 1
9804         isOk,arr=m1.areCellsIncludedIn(m2,1)
9805         self.assertTrue(isOk);
9806         self.assertEqual(2,arr.getNumberOfTuples());
9807         self.assertEqual(1,arr.getNumberOfComponents());
9808         self.assertEqual(cells2,arr.getValues())
9809         # no permutation policy 2
9810         isOk,arr=m1.areCellsIncludedIn(m2,2)
9811         self.assertTrue(isOk);
9812         self.assertEqual(2,arr.getNumberOfTuples());
9813         self.assertEqual(1,arr.getNumberOfComponents());
9814         self.assertEqual(cells2,arr.getValues())
9815         # some modification into m2
9816         modif3=[4,3]
9817         m2.getNodalConnectivity()[1:3]=modif3
9818         #policy 0 fails because cell0 in m2 has not exactly the same conn
9819         expected2=[4,2]
9820         isOk,arr=m1.areCellsIncludedIn(m2,0)
9821         self.assertTrue(not isOk);
9822         self.assertEqual(2,arr.getNumberOfTuples());
9823         self.assertEqual(1,arr.getNumberOfComponents());
9824         self.assertEqual(expected2,arr.getValues())
9825         #policy 1 fails too because cell0 in m2 has not same orientation
9826         isOk,arr=m1.areCellsIncludedIn(m2,1)
9827         self.assertTrue(not isOk);
9828         self.assertEqual(2,arr.getNumberOfTuples());
9829         self.assertEqual(1,arr.getNumberOfComponents());
9830         self.assertEqual(expected2,arr.getValues())
9831         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9832         isOk,arr=m1.areCellsIncludedIn(m2,2)
9833         self.assertTrue(isOk);
9834         self.assertEqual(2,arr.getNumberOfTuples());
9835         self.assertEqual(1,arr.getNumberOfComponents());
9836         self.assertEqual(cells2,arr.getValues())
9837         pass
9838
9839     def toSeeIfDaIIopsAreOK(self,d):
9840         d+=5
9841         d*=6
9842         d/=3
9843         d-=2
9844         d%=7
9845         pass
9846         
9847     def testSwigDAIOp5(self):
9848         d=DataArrayInt.New([4,5,6,10,3,-1],2,3)
9849         self.toSeeIfDaIIopsAreOK(d)
9850         dExp=DataArrayInt.New([2,4,6,0,0,6],2,3)
9851         self.assertTrue(d.isEqual(dExp));
9852         pass
9853     
9854     def toSeeIfDaDIopsAreOK(self,d):
9855         d+=5
9856         d*=6
9857         d/=3
9858         d-=2
9859         pass
9860
9861     def testSwigDADOp7(self):
9862         d=DataArrayDouble.New([4.,5.,6.,10.,3.,-1.],2,3)
9863         self.toSeeIfDaDIopsAreOK(d)
9864         dExp=DataArrayDouble.New([16.,18.,20.,28.,14.,6.],2,3)
9865         self.assertTrue(d.isEqual(dExp,1e-14));
9866         pass
9867
9868     def testConvexEnvelop2D1(self):
9869         coords=[7.54758495819e-14,-1.12270326253e-12,8.43143594193,-1.02835845055e-12,4.21571797096,7.30183771609,-4.21571797097,7.30183771609,-8.43143594193,-1.09439981894e-12,-4.21571797097,-7.30183771609,4.21571797097,-7.30183771609,16.8628718839,-1.02835845055e-12,12.6471539129,7.30183771609,8.43143594193,14.6036754322,2.26427548746e-13,14.6036754322,-8.43143594193,14.6036754322,-12.6471539129,7.30183771609,-16.8628718839,-1.39630321727e-12,-12.6471539129,-7.30183771609,-8.43143594193,-14.6036754322,3.7737924791e-14,-14.6036754322,8.43143594193,-14.6036754322,12.6471539129,-7.30183771609,25.2943078258,-1.07553085654e-12,21.0785898548,7.30183771609,16.8628718839,14.6036754322,12.6471539129,21.9055131483,4.21571797096,21.9055131483,-4.21571797097,21.9055131483,-12.6471539129,21.9055131483,-16.8628718839,14.6036754322,-21.0785898548,7.30183771609,-25.2943078258,-1.02835845055e-12,-21.0785898548,-7.30183771609,-16.8628718839,-14.6036754322,-12.6471539129,-21.9055131483,-4.21571797097,-21.9055131483,4.21571797097,-21.9055131483,12.6471539129,-21.9055131483,16.8628718839,-14.6036754322,21.0785898548,-7.30183771609,33.7257437677,-7.45324014622e-13,29.5100257968,7.30183771609,25.2943078258,14.6036754322,21.0785898548,21.9055131483,16.8628718839,29.2073508644,8.43143594193,29.2073508644,-1.20761359331e-12,29.2073508644,-8.43143594193,29.2073508644,-16.8628718839,29.2073508644,-21.0785898548,21.9055131483,-25.2943078258,14.6036754322,-29.5100257968,7.30183771609,-33.7257437677,-7.26455052226e-13,-29.5100257968,-7.30183771609,-25.2943078258,-14.6036754322,-21.0785898548,-21.9055131483,-16.8628718839,-29.2073508644,-8.43143594193,-29.2073508644,4.15117172701e-13,-29.2073508644,8.43143594193,-29.2073508644,16.8628718839,-29.2073508644,21.0785898548,-21.9055131483,25.2943078258,-14.6036754322,29.5100257968,-7.30183771609,42.1571797097,-1.86802727715e-12,37.9414617387,7.30183771609,33.7257437677,14.6036754322,29.5100257968,21.9055131483,25.2943078258,29.2073508644,21.0785898548,36.5091885805,12.6471539129,36.5091885805,4.21571797096,36.5091885805,-4.21571797096,36.5091885805,-12.6471539129,36.5091885805,-21.0785898548,36.5091885805,-25.2943078258,29.2073508644,-29.5100257968,21.9055131483,-33.7257437677,14.6036754322,-37.9414617387,7.30183771609,-42.1571797097,-9.81186044565e-13,-37.9414617387,-7.30183771609,-33.7257437677,-14.6036754322,-29.5100257968,-21.9055131483,-25.2943078258,-29.2073508644,-21.0785898548,-36.5091885805,-12.6471539129,-36.5091885805,-4.21571797097,-36.5091885805,4.21571797097,-36.5091885805,12.6471539129,-36.5091885805,21.0785898548,-36.5091885805,25.2943078258,-29.2073508644,29.5100257968,-21.9055131483,33.7257437677,-14.6036754322,37.9414617387,-7.30183771609,50.5886156516,-6.98151608633e-13,46.3728976806,7.30183771609,42.1571797097,14.6036754322,37.9414617387,21.9055131483,33.7257437677,29.2073508644,29.5100257968,36.5091885805,25.2943078258,43.8110262966,16.8628718839,43.8110262966,8.43143594193,43.8110262966,-1.84915831476e-12,43.8110262966,-8.43143594193,43.8110262966,-16.8628718839,43.8110262966,-25.2943078258,43.8110262966,-29.5100257968,36.5091885805,-33.7257437677,29.2073508644,-37.9414617387,21.9055131483,-42.1571797097,14.6036754322,-46.3728976806,7.30183771609,-50.5886156516,-1.47177906685e-12,-46.3728976806,-7.30183771609,-42.1571797097,-14.6036754322,-37.9414617387,-21.9055131483,-33.7257437677,-29.2073508644,-29.5100257968,-36.5091885805,-25.2943078258,-43.8110262966,-16.8628718839,-43.8110262966,-8.43143594193,-43.8110262966,7.54758495819e-14,-43.8110262966,8.43143594193,-43.8110262966,16.8628718839,-43.8110262966,25.2943078258,-43.8110262966,29.5100257968,-36.5091885805,33.7257437677,-29.2073508644,37.9414617387,-21.9055131483,42.1571797097,-14.6036754322,46.3728976806,-7.30183771609,59.0200515935,-7.9249642061e-13,54.8043336225,7.30183771609,50.5886156516,14.6036754322,46.3728976806,21.9055131483,42.1571797097,29.2073508644,37.9414617387,36.5091885805,33.7257437677,43.8110262966,29.5100257968,51.1128640127,21.0785898548,51.1128640127,12.6471539129,51.1128640127,4.21571797096,51.1128640127,-4.21571797096,51.1128640127,-12.6471539129,51.1128640127,-21.0785898548,51.1128640127,-29.5100257968,51.1128640127,-33.7257437677,43.8110262966,-37.9414617387,36.5091885805,-42.1571797097,29.2073508644,-46.3728976806,21.9055131483,-50.5886156516,14.6036754322,-54.8043336226,7.30183771609,-59.0200515935,-1.31139288649e-12,-54.8043336226,-7.30183771609,-50.5886156516,-14.6036754322,-46.3728976806,-21.9055131483,-42.1571797097,-29.2073508644,-37.9414617387,-36.5091885805,-33.7257437677,-43.8110262966,-29.5100257968,-51.1128640127,-21.0785898548,-51.1128640127,-12.6471539129,-51.1128640127,-4.21571797097,-51.1128640127,4.21571797097,-51.1128640127,12.6471539129,-51.1128640127,21.0785898548,-51.1128640127,29.5100257968,-51.1128640127,33.7257437677,-43.8110262966,37.9414617387,-36.5091885805,42.1571797097,-29.2073508644,46.3728976806,-21.9055131483,50.5886156516,-14.6036754322,54.8043336225,-7.30183771609,67.4514875354,-2.14162723189e-12,63.2357695645,7.30183771609,59.0200515935,14.6036754322,54.8043336226,21.9055131483,50.5886156516,29.2073508644,46.3728976806,36.5091885805,42.1571797097,43.8110262966,37.9414617387,51.1128640127,33.7257437677,58.4147017287,25.2943078258,58.4147017287,16.8628718839,58.4147017287,8.43143594193,58.4147017287,6.79282646237e-13,58.4147017287,-8.43143594193,58.4147017287,-16.8628718839,58.4147017287,-25.2943078258,58.4147017287,-33.7257437677,58.4147017287,-37.9414617387,51.1128640127,-42.1571797097,43.8110262966,-46.3728976806,36.5091885805,-50.5886156516,29.2073508644,-54.8043336226,21.9055131483,-59.0200515935,14.6036754322,-63.2357695645,7.30183771609,-67.4514875354,-1.16044118732e-12,-63.2357695645,-7.30183771609,-59.0200515935,-14.6036754322,-54.8043336226,-21.9055131483,-50.5886156516,-29.2073508644,-46.3728976806,-36.5091885805,-42.1571797097,-43.8110262966,-37.9414617387,-51.1128640127,-33.7257437677,-58.4147017287,-25.2943078258,-58.4147017287,-16.8628718839,-58.4147017287,-8.43143594193,-58.4147017287,-5.66068871864e-14,-58.4147017287,8.43143594193,-58.4147017287,16.8628718839,-58.4147017287,25.2943078258,-58.4147017287,33.7257437677,-58.4147017287,37.9414617387,-51.1128640127,42.1571797097,-43.8110262966,46.3728976806,-36.5091885805,50.5886156516,-29.2073508644,54.8043336226,-21.9055131483,59.0200515935,-14.6036754322,63.2357695645,-7.30183771609,75.8829234774,-2.29257893105e-12,71.6672055064,7.30183771609,67.4514875354,14.6036754322,63.2357695645,21.9055131483,59.0200515935,29.2073508644,54.8043336226,36.5091885805,50.5886156516,43.8110262966,46.3728976806,51.1128640127,42.1571797097,58.4147017287,37.9414617387,65.7165394448,29.5100257968,65.7165394448,21.0785898548,65.7165394448,12.6471539129,65.7165394448,4.21571797097,65.7165394448,-4.21571797096,65.7165394448,-12.6471539129,65.7165394448,-21.0785898548,65.7165394448,-29.5100257968,65.7165394448,-37.9414617387,65.7165394448,-42.1571797097,58.4147017287,-46.3728976806,51.1128640127,-50.5886156516,43.8110262966,-54.8043336226,36.5091885805,-59.0200515935,29.2073508644,-63.2357695645,21.9055131483,-67.4514875354,14.6036754322,-71.6672055064,7.30183771609,-75.8829234774,-1.31139288649e-12,-71.6672055064,-7.30183771609,-67.4514875354,-14.6036754322,-63.2357695645,-21.9055131483,-59.0200515935,-29.2073508644,-54.8043336226,-36.5091885805,-50.5886156516,-43.8110262966,-46.3728976806,-51.1128640127,-42.1571797097,-58.4147017287,-37.9414617387,-65.7165394448,-29.5100257968,-65.7165394448,-21.0785898548,-65.7165394448,-12.6471539129,-65.7165394448,-4.21571797097,-65.7165394448,4.21571797097,-65.7165394448,12.6471539129,-65.7165394448,21.0785898548,-65.7165394448,29.5100257968,-65.7165394448,37.9414617387,-65.7165394448,42.1571797097,-58.4147017287,46.3728976806,-51.1128640127,50.5886156516,-43.8110262966,54.8043336226,-36.5091885805,59.0200515935,-29.2073508644,63.2357695645,-21.9055131483,67.4514875354,-14.6036754322,71.6672055064,-7.30183771609,84.3143594193,-1.49064802924e-12,80.0986414483,7.30183771609,75.8829234774,14.6036754322,71.6672055064,21.9055131483,67.4514875354,29.2073508644,63.2357695645,36.5091885805,59.0200515935,43.8110262966,54.8043336226,51.1128640127,50.5886156516,58.4147017287,46.3728976806,65.7165394448,42.1571797097,73.0183771609,33.7257437677,73.0183771609,25.2943078258,73.0183771609,16.8628718839,73.0183771609,8.43143594193,73.0183771609,2.0755858635e-12,73.0183771609,-8.43143594193,73.0183771609,-16.8628718839,73.0183771609,-25.2943078258,73.0183771609,-33.7257437677,73.0183771609,-42.1571797097,73.0183771609,-46.3728976806,65.7165394448,-50.5886156516,58.4147017287,-54.8043336226,51.1128640127,-59.0200515935,43.8110262966,-63.2357695645,36.5091885805,-67.4514875354,29.2073508644,-71.6672055064,21.9055131483,-75.8829234774,14.6036754322,-80.0986414483,7.30183771609,-84.3143594193,-1.11326878133e-12,-80.0986414483,-7.30183771609,-75.8829234774,-14.6036754322,-71.6672055064,-21.9055131483,-67.4514875354,-29.2073508644,-63.2357695645,-36.5091885805,-59.0200515935,-43.8110262966,-54.8043336226,-51.1128640127,-50.5886156516,-58.4147017287,-46.3728976806,-65.7165394448,-42.1571797097,-73.0183771609,-33.7257437677,-73.0183771609,-25.2943078258,-73.0183771609,-16.8628718839,-73.0183771609,-8.43143594193,-73.0183771609,-5.66068871864e-14,-73.0183771609,8.43143594193,-73.0183771609,16.8628718839,-73.0183771609,25.2943078258,-73.0183771609,33.7257437677,-73.0183771609,42.1571797097,-73.0183771609,46.3728976806,-65.7165394448,50.5886156516,-58.4147017287,54.8043336226,-51.1128640127,59.0200515935,-43.8110262966,63.2357695645,-36.5091885805,67.4514875354,-29.2073508644,71.6672055064,-21.9055131483,75.8829234774,-14.6036754322,80.0986414483,-7.3018377161]
9870         conn=[0,2,3,4,5,6,1,1,8,2,0,6,18,7,2,9,10,3,0,1,8,3,10,11,12,4,0,2,4,3,12,13,14,5,0,5,0,4,14,15,16,6,6,1,0,5,16,17,18,7,20,8,1,18,36,19,8,21,9,2,1,7,20,9,22,23,10,2,8,21,10,23,24,11,3,2,9,11,24,25,26,12,3,10,12,11,26,27,13,4,3,13,12,27,28,29,14,4,14,4,13,29,30,15,5,15,5,14,30,31,32,16,16,6,5,15,32,33,17,17,18,6,16,33,34,35,18,7,1,6,17,35,36,19,38,20,7,36,60,37,20,39,21,8,7,19,38,21,40,22,9,8,20,39,22,41,42,23,9,21,40,23,42,43,24,10,9,22,24,43,44,25,11,10,23,25,44,45,46,26,11,24,26,25,46,47,27,12,11,27,26,47,48,28,13,12,28,27,48,49,50,29,13,29,13,28,50,51,30,14,30,14,29,51,52,31,15,31,15,30,52,53,54,32,32,16,15,31,54,55,33,33,17,16,32,55,56,34,34,35,17,33,56,57,58,35,36,18,17,34,58,59,36,19,7,18,35,59,60,37,62,38,19,60,90,61,38,63,39,20,19,37,62,39,64,40,21,20,38,63,40,65,41,22,21,39,64,41,66,67,42,22,40,65,42,67,68,43,23,22,41,43,68,69,44,24,23,42,44,69,70,45,25,24,43,45,70,71,72,46,25,44,46,45,72,73,47,26,25,47,46,73,74,48,27,26,48,47,74,75,49,28,27,49,48,75,76,77,50,28,50,28,49,77,78,51,29,51,29,50,78,79,52,30,52,30,51,79,80,53,31,53,31,52,80,81,82,54,54,32,31,53,82,83,55,55,33,32,54,83,84,56,56,34,33,55,84,85,57,57,58,34,56,85,86,87,58,59,35,34,57,87,88,59,60,36,35,58,88,89,60,37,19,36,59,89,90,61,92,62,37,90,126,91,62,93,63,38,37,61,92,63,94,64,39,38,62,93,64,95,65,40,39,63,94,65,96,66,41,40,64,95,66,97,98,67,41,65,96,67,98,99,68,42,41,66,68,99,100,69,43,42,67,69,100,101,70,44,43,68,70,101,102,71,45,44,69,71,102,103,104,72,45,70,72,71,104,105,73,46,45,73,72,105,106,74,47,46,74,73,106,107,75,48,47,75,74,107,108,76,49,48,76,75,108,109,110,77,49,77,49,76,110,111,78,50,78,50,77,111,112,79,51,79,51,78,112,113,80,52,80,52,79,113,114,81,53,81,53,80,114,115,116,82,82,54,53,81,116,117,83,83,55,54,82,117,118,84,84,56,55,83,118,119,85,85,57,56,84,119,120,86,86,87,57,85,120,121,122,87,88,58,57,86,122,123,88,89,59,58,87,123,124,89,90,60,59,88,124,125,90,61,37,60,89,125,126,91,128,92,61,126,168,127,92,129,93,62,61,91,128,93,130,94,63,62,92,129,94,131,95,64,63,93,130,95,132,96,65,64,94,131,96,133,97,66,65,95,132,97,134,135,98,66,96,133,98,135,136,99,67,66,97,99,136,137,100,68,67,98,100,137,138,101,69,68,99,101,138,139,102,70,69,100,102,139,140,103,71,70,101,103,140,141,142,104,71,102,104,103,142,143,105,72,71,105,104,143,144,106,73,72,106,105,144,145,107,74,73,107,106,145,146,108,75,74,108,107,146,147,109,76,75,109,108,147,148,149,110,76,110,76,109,149,150,111,77,111,77,110,150,151,112,78,112,78,111,151,152,113,79,113,79,112,152,153,114,80,114,80,113,153,154,115,81,115,81,114,154,155,156,116,116,82,81,115,156,157,117,117,83,82,116,157,158,118,118,84,83,117,158,159,119,119,85,84,118,159,160,120,120,86,85,119,160,161,121,121,122,86,120,161,162,163,122,123,87,86,121,163,164,123,124,88,87,122,164,165,124,125,89,88,123,165,166,125,126,90,89,124,166,167,126,91,61,90,125,167,168,127,170,128,91,168,216,169,128,171,129,92,91,127,170,129,172,130,93,92,128,171,130,173,131,94,93,129,172,131,174,132,95,94,130,173,132,175,133,96,95,131,174,133,176,134,97,96,132,175,134,177,178,135,97,133,176,135,178,179,136,98,97,134,136,179,180,137,99,98,135,137,180,181,138,100,99,136,138,181,182,139,101,100,137,139,182,183,140,102,101,138,140,183,184,141,103,102,139,141,184,185,186,142,103,140,142,141,186,187,143,104,103,143,142,187,188,144,105,104,144,143,188,189,145,106,105,145,144,189,190,146,107,106,146,145,190,191,147,108,107,147,146,191,192,148,109,108,148,147,192,193,194,149,109,149,109,148,194,195,150,110,150,110,149,195,196,151,111,151,111,150,196,197,152,112,152,112,151,197,198,153,113,153,113,152,198,199,154,114,154,114,153,199,200,155,115,155,115,154,200,201,202,156,156,116,115,155,202,203,157,157,117,116,156,203,204,158,158,118,117,157,204,205,159,159,119,118,158,205,206,160,160,120,119,159,206,207,161,161,121,120,160,207,208,162,162,163,121,161,208,209,210,163,164,122,121,162,210,211,164,165,123,122,163,211,212,165,166,124,123,164,212,213,166,167,125,124,165,213,214,167,168,126,125,166,214,215,168,127,91,126,167,215,216,169,218,170,127,216,270,217,170,219,171,128,127,169,218,171,220,172,129,128,170,219,172,221,173,130,129,171,220,173,222,174,131,130,172,221,174,223,175,132,131,173,222,175,224,176,133,132,174,223,176,225,177,134,133,175,224,177,226,227,178,134,176,225,178,227,228,179,135,134,177,179,228,229,180,136,135,178,180,229,230,181,137,136,179,181,230,231,182,138,137,180,182,231,232,183,139,138,181,183,232,233,184,140,139,182,184,233,234,185,141,140,183,185,234,235,236,186,141,184,186,185,236,237,187,142,141,187,186,237,238,188,143,142,188,187,238,239,189,144,143,189,188,239,240,190,145,144,190,189,240,241,191,146,145,191,190,241,242,192,147,146,192,191,242,243,193,148,147,193,192,243,244,245,194,148,194,148,193,245,246,195,149,195,149,194,246,247,196,150,196,150,195,247,248,197,151,197,151,196,248,249,198,152,198,152,197,249,250,199,153,199,153,198,250,251,200,154,200,154,199,251,252,201,155,201,155,200,252,253,254,202,202,156,155,201,254,255,203,203,157,156,202,255,256,204,204,158,157,203,256,257,205,205,159,158,204,257,258,206,206,160,159,205,258,259,207,207,161,160,206,259,260,208,208,162,161,207,260,261,209,209,210,162,208,261,262,263,210,211,163,162,209,263,264,211,212,164,163,210,264,265,212,213,165,164,211,265,266,213,214,166,165,212,266,267,214,215,167,166,213,267,268,215,216,168,167,214,268,269,216,169,127,168,215,269,270,217,272,218,169,270,330,271,218,273,219,170,169,217,272,219,274,220,171,170,218,273,220,275,221,172,171,219,274,221,276,222,173,172,220,275,222,277,223,174,173,221,276,223,278,224,175,174,222,277,224,279,225,176,175,223,278,225,280,226,177,176,224,279,226,281,282,227,177,225,280,227,282,283,228,178,177,226,228,283,284,229,179,178,227,229,284,285,230,180,179,228,230,285,286,231,181,180,229,231,286,287,232,182,181,230,232,287,288,233,183,182,231,233,288,289,234,184,183,232,234,289,290,235,185,184,233,235,290,291,292,236,185,234,236,235,292,293,237,186,185,237,236,293,294,238,187,186,238,237,294,295,239,188,187,239,238,295,296,240,189,188,240,239,296,297,241,190,189,241,240,297,298,242,191,190,242,241,298,299,243,192,191,243,242,299,300,244,193,192,244,243,300,301,302,245,193,245,193,244,302,303,246,194,246,194,245,303,304,247,195,247,195,246,304,305,248,196,248,196,247,305,306,249,197,249,197,248,306,307,250,198,250,198,249,307,308,251,199,251,199,250,308,309,252,200,252,200,251,309,310,253,201,253,201,252,310,311,312,254,254,202,201,253,312,313,255,255,203,202,254,313,314,256,256,204,203,255,314,315,257,257,205,204,256,315,316,258,258,206,205,257,316,317,259,259,207,206,258,317,318,260,260,208,207,259,318,319,261,261,209,208,260,319,320,262,262,263,209,261,320,321,322,263,264,210,209,262,322,323,264,265,211,210,263,323,324,265,266,212,211,264,324,325,266,267,213,212,265,325,326,267,268,214,213,266,326,327,268,269,215,214,267,327,328,269,270,216,215,268,328,329,270,217,169,216,269,329,330,271,272,217,330,273,218,217,271,274,219,218,272,275,220,219,273,276,221,220,274,277,222,221,275,278,223,222,276,279,224,223,277,280,225,224,278,281,226,225,279,281,282,226,280,283,227,226,281,284,228,227,282,285,229,228,283,286,230,229,284,287,231,230,285,288,232,231,286,289,233,232,287,290,234,233,288,291,235,234,289,291,292,235,290,291,293,236,235,292,294,237,236,293,295,238,237,294,296,239,238,295,297,240,239,296,298,241,240,297,299,242,241,298,300,243,242,299,301,244,243,301,300,302,244,244,301,303,245,245,302,304,246,246,303,305,247,247,304,306,248,248,305,307,249,249,306,308,250,250,307,309,251,251,308,310,252,252,309,311,253,311,253,310,312,254,253,311,313,255,254,312,314,256,255,313,315,257,256,314,316,258,257,315,317,259,258,316,318,260,259,317,319,261,260,318,320,262,261,319,321,321,322,262,320,323,263,262,321,324,264,263,322,325,265,264,323,326,266,265,324,327,267,266,325,328,268,267,326,329,269,268,327,330,270,269,328,271,217,270,329]
9871         connI=[0,7,14,21,28,35,42,49,56,63,70,77,84,91,98,105,112,119,126,133,140,147,154,161,168,175,182,189,196,203,210,217,224,231,238,245,252,259,266,273,280,287,294,301,308,315,322,329,336,343,350,357,364,371,378,385,392,399,406,413,420,427,434,441,448,455,462,469,476,483,490,497,504,511,518,525,532,539,546,553,560,567,574,581,588,595,602,609,616,623,630,637,644,651,658,665,672,679,686,693,700,707,714,721,728,735,742,749,756,763,770,777,784,791,798,805,812,819,826,833,840,847,854,861,868,875,882,889,896,903,910,917,924,931,938,945,952,959,966,973,980,987,994,1001,1008,1015,1022,1029,1036,1043,1050,1057,1064,1071,1078,1085,1092,1099,1106,1113,1120,1127,1134,1141,1148,1155,1162,1169,1176,1183,1190,1197,1204,1211,1218,1225,1232,1239,1246,1253,1260,1267,1274,1281,1288,1295,1302,1309,1316,1323,1330,1337,1344,1351,1358,1365,1372,1379,1386,1393,1400,1407,1414,1421,1428,1435,1442,1449,1456,1463,1470,1477,1484,1491,1498,1505,1512,1519,1526,1533,1540,1547,1554,1561,1568,1575,1582,1589,1596,1603,1610,1617,1624,1631,1638,1645,1652,1659,1666,1673,1680,1687,1694,1701,1708,1715,1722,1729,1736,1743,1750,1757,1764,1771,1778,1785,1792,1799,1806,1813,1820,1827,1834,1841,1848,1855,1862,1869,1876,1883,1890,1897,1901,1905,1909,1913,1917,1921,1925,1929,1933,1937,1941,1945,1949,1953,1957,1961,1965,1969,1973,1977,1981,1985,1989,1993,1997,2001,2005,2009,2013,2017,2021,2025,2029,2033,2037,2041,2045,2049,2053,2057,2061,2065,2069,2073,2077,2081,2085,2089,2093,2097,2101,2105,2109,2113,2117,2121,2125,2129,2133,2137]
9872         #
9873         m=MEDCouplingUMesh.New("convexhull",2);
9874         m.allocateCells(331);
9875         for i in xrange(331):
9876             m.insertNextCell(NORM_POLYGON,conn[connI[i]:connI[i+1]]);
9877             pass
9878         m.finishInsertingCells();
9879         coordsDa=DataArrayDouble.New(coords,331,2);
9880         m.setCoords(coordsDa);
9881         m.checkCoherency();
9882         #
9883         da=m.convexEnvelop2D();
9884         m.checkCoherency()
9885         self.assertEqual(coordsDa.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
9886         daC=da.buildComplement(m.getNumberOfCells());
9887         expected2=DataArrayInt.New([271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307,308,309,310,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330]);
9888         self.assertTrue(expected2.isEqual(daC));
9889         #
9890         vals=m.getMeasureField(ON_CELLS).getArray()
9891         ref=271*[184.69493088478035]+3*[-61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]+2*[61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]+[-61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]
9892         vals-=DataArrayDouble.New(ref)
9893         vals.abs()
9894         theTest=vals.getIdsInRange(-1.,1e-7)
9895         self.assertTrue(theTest.isIdentity())
9896         self.assertEqual(331,len(theTest))
9897         pass
9898
9899     def testSwigDAIOp8(self):
9900         da=DataArrayInt.New([7,5,6,7,8,9,9,10,12,13,47,15])
9901         self.assertTrue(7 in da)
9902         self.assertTrue(47 in da)
9903         self.assertTrue(15 in da)
9904         self.assertEqual(0,da.index(7))
9905         self.assertEqual(10,da.index(47))
9906         self.assertTrue(14 not in da)
9907         self.assertEqual(5,da.search([9,9]))
9908         self.assertEqual(-1,da.search([5,8]))
9909         da.rearrange(2)
9910         self.assertTrue([47,16] not in da)
9911         self.assertTrue([5,6] not in da)
9912         self.assertTrue([6,7] in da)
9913         self.assertEqual(4,da.index([12,13]))
9914         pass
9915
9916     def testDataArraySort1(self):
9917         arr=DataArrayInt.New();
9918         self.assertRaises(InterpKernelException,arr.sort,True)
9919         self.assertRaises(InterpKernelException,arr.sort,False)
9920         values=[2,1,6,5,4,7]
9921         arr.alloc(3,2);
9922         self.assertRaises(InterpKernelException,arr.sort,True)
9923         self.assertRaises(InterpKernelException,arr.sort,False)
9924         arr.rearrange(1);
9925         arr.setValues(values,6,1)
9926         arr1=arr.deepCpy();
9927         arr2=arr.deepCpy();
9928         arr1.sort(True);
9929         expected1=[1,2,4,5,6,7]
9930         self.assertEqual(6,arr1.getNumberOfTuples());
9931         self.assertEqual(1,arr1.getNumberOfComponents());
9932         self.assertEqual(expected1,arr1.getValues());
9933         arr2.sort(False);
9934         expected2=[7,6,5,4,2,1]
9935         self.assertEqual(6,arr2.getNumberOfTuples());
9936         self.assertEqual(1,arr2.getNumberOfComponents());
9937         self.assertTrue(expected2,arr2.getValues());
9938         #
9939         ard=DataArrayDouble.New();
9940         self.assertRaises(InterpKernelException,ard.sort,True)
9941         self.assertRaises(InterpKernelException,ard.sort,False)
9942         valuesD=[2.,1.,6.,5.,4.,7.]
9943         ard.alloc(3,2);
9944         self.assertRaises(InterpKernelException,ard.sort,True)
9945         self.assertRaises(InterpKernelException,ard.sort,False)
9946         ard.rearrange(1);
9947         ard.setValues(valuesD,6,1)
9948         ard1=ard.deepCpy();
9949         ard2=ard.deepCpy();
9950         ard1.sort(True);
9951         expected3=[1.,2.,4.,5.,6.,7.]
9952         self.assertEqual(6,ard1.getNumberOfTuples());
9953         self.assertEqual(1,ard1.getNumberOfComponents());
9954         for i in xrange(6):
9955             self.assertAlmostEqual(expected3[i],ard1.getIJ(i,0),12)
9956             pass
9957         ard2.sort(False);
9958         expected4=[7.,6.,5.,4.,2.,1.]
9959         self.assertEqual(6,ard2.getNumberOfTuples());
9960         self.assertEqual(1,ard2.getNumberOfComponents());
9961         for i in xrange(6):
9962             self.assertAlmostEqual(expected4[i],ard2.getIJ(i,0),12)
9963             pass
9964         pass
9965     
9966     def testPartitionBySpreadZone1(self):
9967         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9968         m4=MEDCouplingUMesh.MergeUMeshes([m,m[-3:],m[0:2]]);
9969         m4.renumberCells([5,2,9,6,4,7,0,1,3,8]);
9970         #
9971         v2=m4.partitionBySpreadZone();
9972         self.assertTrue(3,len(v2));
9973         self.assertTrue(v2[0].isEqual(DataArrayInt.New([0,1,7])))
9974         self.assertTrue(v2[1].isEqual(DataArrayInt.New([2,4,5,6,9])))
9975         self.assertTrue(v2[2].isEqual(DataArrayInt.New([3,8])))
9976         #
9977         m5=m4.buildSpreadZonesWithPoly();
9978         self.assertEqual(3,m5.getNumberOfCells());
9979         self.assertTrue(m5.getCoords().getHiddenCppPointer()==m4.getCoords().getHiddenCppPointer());
9980         self.assertEqual([5,15,16,17,14,11,13,12,5,2,1,0,3,6,7,8,5,5,18,21,22,20,19],m5.getNodalConnectivity().getValues())
9981         self.assertEqual([0,8,17,23],m5.getNodalConnectivityIndex().getValues())
9982         #
9983         pass
9984
9985     def testGiveCellsWithType1(self):
9986         expected0=[1,2]
9987         expected1=[0,3,4]
9988         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9989         da=m.giveCellsWithType(NORM_TRI3);
9990         self.assertEqual(2,da.getNumberOfTuples());
9991         self.assertEqual(1,da.getNumberOfComponents());
9992         self.assertEqual(expected0,da.getValues())
9993         #
9994         da=m.giveCellsWithType(NORM_QUAD4);
9995         self.assertEqual(3,da.getNumberOfTuples());
9996         self.assertEqual(1,da.getNumberOfComponents());
9997         self.assertEqual(expected1,da.getValues())
9998         #
9999         da=m.giveCellsWithType(NORM_TRI6);
10000         self.assertEqual(0,da.getNumberOfTuples());
10001         self.assertEqual(1,da.getNumberOfComponents());
10002         #
10003         self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_SEG2)
10004         self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_HEXA8)
10005         pass
10006
10007     def testSwigDAOp1(self):
10008         d=DataArrayDouble.New(5,2)
10009         d.rearrange(1) ; d.iota(2.) ; d.rearrange(2)
10010         d.setInfoOnComponents(["X [m]","Y [m]"])
10011         d.setName("AName")
10012         #
10013         d1=d+[8,9]
10014         self.assertTrue(d1.isEqualWithoutConsideringStr(DataArrayDouble.New([10.0,12.0,12.0,14.0,14.0,16.0,16.0,18.0,18.0,20.0]),1e-12))
10015         d1bis=DataArrayDouble.New([8,9],1,2)+d
10016         self.assertTrue(d1bis.isEqual(d1,1e-12))
10017         d1ter=[8,9]+d
10018         self.assertTrue(d1ter.isEqual(d1,1e-12))
10019         #
10020         d2=d1-[8,9]
10021         self.assertTrue(d2.isEqual(d,1e-12))
10022         self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])#[8,9]-d1
10023         #
10024         d3=d*[8,9]
10025         self.assertTrue(d3.isEqualWithoutConsideringStr(DataArrayDouble.New([16.0,27.0,32.0,45.0,48.0,63.0,64.0,81.0,80.0,99.0]),1e-12))
10026         d3bis=DataArrayDouble.New([8,9],1,2)*d
10027         self.assertTrue(d3bis.isEqual(d3,1e-12))
10028         d3ter=[8,9]*d
10029         self.assertTrue(d3ter.isEqual(d3,1e-12))
10030         #
10031         d4=d3/[8,9]
10032         self.assertTrue(d4.isEqual(d,1e-12))
10033         #
10034         d=DataArrayInt.New(5,2)
10035         d.rearrange(1) ; d.iota(2) ; d.rearrange(2)
10036         d.setInfoOnComponents(["X [m]","Y [m]"])
10037         d.setName("AName")
10038         #
10039         d1=d+[8,9]
10040         self.assertEqual(d1.getValues(),[10,12,12,14,14,16,16,18,18,20])
10041         d1bis=DataArrayInt.New([8,9],1,2)+d
10042         self.assertTrue(d1bis.isEqual(d1))
10043         d1ter=[8,9]+d
10044         self.assertTrue(d1ter.isEqual(d1))
10045         #
10046         d2=d1-[8,9]
10047         self.assertTrue(d2.isEqual(d))
10048         self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])
10049         #
10050         d3=d*[8,9]
10051         self.assertEqual(d3.getValues(),[16,27,32,45,48,63,64,81,80,99])
10052         d3bis=DataArrayInt.New([8,9],1,2)*d
10053         self.assertTrue(d3bis.isEqual(d3))
10054         d3ter=[8,9]*d
10055         self.assertTrue(d3ter.isEqual(d3))
10056         #
10057         d4=d3/[8,9]
10058         self.assertTrue(d4.isEqual(d))
10059         #
10060         d5=d%[4,5]
10061         self.assertEqual(d5.getValues(),[2,3,0,0,2,2,0,4,2,1])
10062         pass
10063
10064     def testSwigSelectTupleId2DAIBug1(self):
10065         da=DataArrayInt.New([0,1,2,3,12,13,4,5,6,7,14,15,8,9,10,11,16,17])
10066         self.assertEqual([2,6,10],da[2::6].getValues())
10067         self.assertEqual([0,4,8],da[::6].getValues())
10068         self.assertEqual([5,9],da[7::6].getValues())
10069         self.assertEqual([5],da[7:-5:6].getValues())
10070         pass
10071
10072     def testSwigCpp5Safe1(self):
10073         m=MEDCouplingUMesh.New("toto",2)
10074         coords=DataArrayDouble.New([0.,0.,1.,0.,1.,1.,0.,1.],4,2)
10075         m.setCoords(coords)
10076         vecs=DataArrayDouble.New([2.,3.,4.,5.,6.,7.],3,2)
10077         expected1=[[2.,3.,3.,3.,3.,4.,2.,4.0],[4.,5.,5.,5.,5.,6.,4.,6.0],[6.,7.,7.,7.,7.,8.,6.,8.0]]
10078         for pos,vec in enumerate(vecs):
10079             m2=m.deepCpy()
10080             m2.translate(vec)
10081             self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10082             pass
10083         for pos,vec in enumerate(vecs):
10084             m2=m.deepCpy()
10085             m2.translate(vec.buildDADouble())
10086             self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10087             pass
10088         pass
10089     
10090     def testSwigBugNonRegressionZipDA(self):
10091         angles=map(lambda x:pi/3*x,xrange(6))
10092         radius=3
10093         #
10094         dad=DataArrayDouble.New(6, 2)
10095         dad[:,0]=radius
10096         dad[:,1]=angles
10097         #
10098         dad2=dad.fromPolarToCart()
10099         dads=[dad2.deepCpy() for elt in 7*[None]]
10100         #
10101         translationToPerform=[[0.01,0.02],[3./2.*radius,-radius*sqrt(3.)/2],[3./2.*radius,radius*sqrt(3.)/2],[0.,radius*sqrt(3.)],[-3./2.*radius,radius*sqrt(3.)/2],[-3./2.*radius,-radius*sqrt(3.)/2],[0.,-radius*sqrt(3.)]]
10102         for d,t in zip(dads,translationToPerform):
10103             d+=t
10104             pass
10105         for elt in dads:
10106             self.assertTrue(not dad2.isEqual(elt,1e-12))
10107             pass
10108         for d,t in zip(dads,translationToPerform):
10109             d-=t
10110             pass
10111         for elt in dads:
10112             self.assertTrue(dad2.isEqual(elt,1e-12))
10113             pass
10114         pass
10115
10116     def testBuildSlice3D2(self):
10117         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
10118         vec1=[-0.07,1.,0.07]
10119         origin1=[1.524,1.4552,1.74768]
10120         slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
10121         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
10122         f.setTime(4.5,6,7) ; f.setMesh(mesh3D)
10123         arr=DataArrayDouble(mesh3D.getNumberOfCells(),2)
10124         arr.rearrange(1) ; arr.iota(2.) ; arr.rearrange(2)
10125         f.setArray(arr)
10126         f.checkCoherency()
10127         expected1=DataArrayInt([1,3,4,7,9,10,13,15,16])
10128         self.assertTrue(expected1.isEqual(ids))
10129         arr2=arr[expected1]
10130         #
10131         f2=f.extractSlice3D(origin1,vec1,1e-10)
10132         self.assertTrue(f2.getArray().isEqual(arr2,1e-12));
10133         self.assertTrue(slice1.isEqual(f2.getMesh(),1e-12))
10134         self.assertEqual(6,f2.getTime()[1]) ; self.assertEqual(7,f2.getTime()[2])
10135         self.assertAlmostEqual(4.5,f2.getTime()[0],12);
10136         pass
10137
10138     def testComputeTupleIdsToSelectFromCellIds1(self):
10139         m=MEDCouplingDataForTest.build2DTargetMesh_3()
10140         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
10141         f.setMesh(m);
10142         arr=DataArrayDouble(52,2) ; arr.rearrange(1) ; arr.iota(7.) ; arr.rearrange(2)
10143         f.setArray(arr)
10144         #
10145         f2=f.buildSubPart([1,5,9])
10146         f2.checkCoherency()
10147         cI=m.computeNbOfNodesPerCell()
10148         cI.computeOffsets2()
10149         sel=DataArrayInt([1,5,9])
10150         res=sel.buildExplicitArrByRanges(cI)
10151         arr2=arr[res]
10152         self.assertTrue(arr2.isEqual(DataArrayDouble([13,14,15,16,17,18,19,20,59,60,61,62,63,64,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],15,2),1e-12))
10153         self.assertTrue(arr2.isEqual(f2.getArray(),1e-12))
10154         pass
10155
10156     def testComputeSkin1(self):
10157         arrX=DataArrayDouble([2.,3.4,5.6,7.7,8.0]) ; arrY=DataArrayDouble([2.,3.4,5.6,7.7,9.0,14.2])
10158         cmesh=MEDCouplingCMesh() ; cmesh.setCoordsAt(0,arrX) ; cmesh.setCoordsAt(1,arrY)
10159         umesh=cmesh.buildUnstructured()
10160         #
10161         skin=umesh.computeSkin()
10162         self.assertEqual(18,skin.getNumberOfCells())
10163         self.assertEqual(1,skin.getMeshDimension())
10164         self.assertTrue(skin.getCoords().getHiddenCppPointer()==umesh.getCoords().getHiddenCppPointer())
10165         self.assertEqual([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54],skin.getNodalConnectivityIndex().getValues())
10166         self.assertEqual([1,1,0,1,0,5,1,2,1,1,3,2,1,4,3,1,9,4,1,5,10,1,14,9,1,10,15,1,19,14,1,15,20,1,24,19,1,20,25,1,25,26,1,26,27,1,27,28,1,28,29,1,29,24],skin.getNodalConnectivity().getValues())
10167         ids=skin.computeFetchedNodeIds()
10168         self.assertEqual([0,1,2,3,4,5,9,10,14,15,19,20,24,25,26,27,28,29],ids.getValues())
10169         part=umesh.buildFacePartOfMySelfNode(ids,True)
10170         part.setName(skin.getName());
10171         self.assertTrue(part.isEqual(skin,1e-12))
10172         part2=part[1::2]
10173         part[::2]=part2
10174         self.assertTrue(not part.isEqual(skin,1e-12))
10175         trad=part.zipConnectivityTraducer(0)
10176         self.assertEqual(9,part.getNumberOfCells())
10177         self.assertEqual([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8],trad.getValues())
10178         pass
10179
10180     def testUMeshSetPartOfMySelf2(self):
10181         # resize with explicit ids list
10182         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10183         self.assertEqual([3,4],m.getAllGeoTypes())
10184         part=m[[0,3,4]]
10185         part.simplexize(0)
10186         part2=part[[1,2,5]]
10187         m[[0,3,4]]=part2
10188         self.assertEqual([3,0,4,1,3,1,4,2,3,4,5,2,3,6,7,4,3,7,5,4],m.getNodalConnectivity().getValues())
10189         self.assertEqual([0,4,8,12,16,20],m.getNodalConnectivityIndex().getValues())
10190         self.assertEqual([3],m.getAllGeoTypes())
10191         # no resize with explicit ids list
10192         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10193         part=m[[0,3]]
10194         part.convertAllToPoly()
10195         m[[3,4]]=part
10196         self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10197         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10198         self.assertEqual([3,4,5],m.getAllGeoTypes())
10199         # resize with range ids
10200         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10201         part=m[3:]
10202         m[1:3]=part
10203         self.assertEqual([4,0,3,4,1,4,6,7,4,3,4,7,8,5,4,4,6,7,4,3,4,7,8,5,4],m.getNodalConnectivity().getValues())
10204         self.assertEqual([0,5,10,15,20,25],m.getNodalConnectivityIndex().getValues())
10205         self.assertEqual([4],m.getAllGeoTypes())
10206         # no resize with range ids
10207         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10208         part=m[0::3]
10209         part.convertAllToPoly()
10210         m[3:]=part
10211         self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10212         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10213         self.assertEqual([3,4,5],m.getAllGeoTypes())
10214         # no resize with range ids negative direction
10215         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10216         part=m[3::-3]
10217         part.convertAllToPoly()
10218         m[:-3:-1]=part
10219         self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10220         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10221         self.assertEqual([3,4,5],m.getAllGeoTypes())
10222         pass
10223
10224     def testUnPolyze3(self):
10225         coord=[0.0,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.0,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]
10226         conn=[1,2,5,4,-1,4,3,0,1,-1,2,0,3,5,-1,0,2,1,-1,4,5,3]
10227         m=MEDCouplingUMesh.New("a mesh",3);
10228         m.allocateCells(1);
10229         m.insertNextCell(NORM_POLYHED,22,conn[0:22])
10230         m.finishInsertingCells();
10231         coords=DataArrayDouble(coord,6,3);
10232         m.setCoords(coords);
10233         m.checkCoherency();
10234         #
10235         vol=m.getMeasureField(ON_CELLS);
10236         self.assertEqual(1,vol.getArray().getNumberOfTuples());
10237         self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10238         #
10239         m.unPolyze();
10240         #
10241         self.assertEqual([NORM_PENTA6],m.getAllGeoTypes())
10242         self.assertTrue(DataArrayInt([0,7]).isEqual(m.getNodalConnectivityIndex()))
10243         self.assertTrue(DataArrayInt([16,0,2,1,3,5,4]).isEqual(m.getNodalConnectivity()))
10244         #
10245         vol=m.getMeasureField(ON_CELLS);
10246         self.assertEqual(1,vol.getArray().getNumberOfTuples());
10247         self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10248         pass
10249
10250     def testKrSpatialDiscretization1(self):
10251         srcPointCoordsX=[0.8401877171547095, 0.7830992237586059, 0.9116473579367843, 0.335222755714889, 0.2777747108031878, 0.4773970518621602, 0.3647844727918433, 0.9522297251747128, 0.6357117279599009, 0.1416025553558034]
10252         srcFieldValsOnPoints=[2.129892434968836, 2.295320474540621, 1.931948594981134, 2.728013590937196, 2.715603240418478, 2.661778472822935, 2.695696990104364, 1.893710234970982, 2.529628016549284, 2.728432341300668]
10253         targetPointCoordsX=[-0.5,-0.45,-0.4,-0.35,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-6.93889390391e-17,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.05,1.1,1.15,1.2,1.25,1.3,1.35,1.4,1.45]
10254         targetFieldValsExpected=[2.975379475824351, 2.95613491917003, 2.936890362515361, 2.917645805861018, 2.898401249206574, 2.879156692552137, 2.859912135897732, 2.840667579243201, 2.821423022588731, 2.802178465934342, 2.78293390927989, 2.763689352625457, 2.744444795971001, 2.725209522098197, 2.709077577124666, 2.706677252549218, 2.727467797847971, 2.713338094723676, 2.671342424824244, 2.664877370146978, 2.653840141412181, 2.619607861392791, 2.569777214476479, 2.513263929794591, 2.450732752808528, 2.368313560985155, 2.250909795670307, 2.098194272085416, 1.954257891732065, 1.895040660973802, 1.865256788315972, 1.835475248687992, 1.80569370905998, 1.775912169431971, 1.746130629803976, 1.716349090175918, 1.686567550547855, 1.656786010919941, 1.627004471291988, 1.597222931663817]
10255         coeffsExpected=DataArrayDouble.New([52.238272642008695, 26.186513281350948, -173.42106377948534, 324.56733663875184, -104.64968873410248, 34.375030568158316, -256.12372208190425, 105.2292032463934, -16.239907618144965, 7.838025836978943, 2.621910745077291, -0.4902609628247241])
10256         #
10257         nbOfInputPoints=10;
10258         f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
10259         srcArrX=DataArrayDouble.New(srcPointCoordsX,nbOfInputPoints,1);
10260         cmesh=MEDCouplingCMesh.New("aMesh");
10261         cmesh.setCoordsAt(0,srcArrX);
10262         umesh=cmesh.buildUnstructured();
10263         f.setMesh(umesh);
10264         srcVals=DataArrayDouble.New(srcFieldValsOnPoints,nbOfInputPoints,1);
10265         f.setArray(srcVals);
10266         f.checkCoherency();
10267         #
10268         res0=f.getValueOn(targetPointCoordsX[:1]);
10269         self.assertAlmostEqual(targetFieldValsExpected[0],res0[0],10)
10270         #
10271         valuesToTest=f.getValueOnMulti(targetPointCoordsX);
10272         self.assertEqual(40,valuesToTest.getNumberOfTuples());
10273         self.assertEqual(1,valuesToTest.getNumberOfComponents());
10274         for i in xrange(40):
10275             self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
10276             pass
10277         fd=f.getDiscretization()
10278         del f
10279         self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
10280         coeffs,isDrift=fd.computeVectorOfCoefficients(umesh,srcVals)
10281         self.assertEqual(2,isDrift)
10282         self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
10283         #
10284         pass
10285
10286     def testDuplicateEachTupleNTimes1(self):
10287         d=DataArrayDouble.New([9.,8.,7.,6.],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10288         d2=d.duplicateEachTupleNTimes(3)
10289         self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayDouble.New([9.,9.,9.,8.,8.,8.,7.,7.,7.,6.,6.,6.],4*3,1),1e-14))
10290         self.assertEqual("aname",d2.getName())
10291         self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10292         #
10293         d=DataArrayInt.New([9,8,7,6],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10294         d2=d.duplicateEachTupleNTimes(3)
10295         self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayInt.New([9,9,9,8,8,8,7,7,7,6,6,6],4*3,1)))
10296         self.assertEqual("aname",d2.getName())
10297         self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10298         pass
10299
10300     def testSwigComputeTupleIdsNearTuples1(self):
10301         da=DataArrayDouble([5.,6.,-5.,-6.,5.,-6.,-5.,6.,5.,6.],5,2)
10302         arr,arrI=da.computeTupleIdsNearTuples(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2),1e-10)
10303         self.assertEqual([2,0,4,1],arr.getValues())
10304         self.assertEqual([0,1,3,4],arrI.getValues())
10305         arr,arrI=da.computeTupleIdsNearTuples([5.,-6.,5.,6.,-5.,-6.],1e-10)
10306         self.assertEqual([2,0,4,1],arr.getValues())
10307         self.assertEqual([0,1,3,4],arrI.getValues())
10308         expected0=[[2],[0,4],[1]]
10309         expected1=[[0,1],[0,2],[0,1]]
10310         for pos,it in enumerate(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2)):
10311             arr,arrI=da.computeTupleIdsNearTuples(it,1e-10)
10312             self.assertEqual(expected0[pos],arr.getValues())
10313             self.assertEqual(expected1[pos],arrI.getValues())
10314             pass
10315         pass
10316
10317     def testSwigDataTupleIOp1(self):
10318         d=DataArrayDouble(10,1)
10319         d.iota(7.)
10320         for elt in d:
10321             elt+=2.
10322             pass
10323         toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
10324         self.assertTrue(toTest.isEqual(d,1e-12))
10325         for elt in d:
10326             elt-=2.
10327             pass
10328         toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10329         self.assertTrue(toTest.isEqual(d,1e-12))
10330         for elt in d:
10331             elt*=2.
10332             pass
10333         toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
10334         self.assertTrue(toTest.isEqual(d,1e-12))
10335         for elt in d:
10336             elt/=2.
10337             pass
10338         toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10339         self.assertTrue(toTest.isEqual(d,1e-12))
10340         #
10341         d=DataArrayInt(10,1)
10342         d.iota(7)
10343         for elt in d:
10344             elt+=2
10345             pass
10346         self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
10347         for elt in d:
10348             elt-=2
10349             pass
10350         self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10351         for elt in d:
10352             elt*=2
10353             pass
10354         self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
10355         for elt in d:
10356             elt/=2
10357             pass
10358         self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10359         for elt in d:
10360             elt%=3
10361             pass
10362         self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
10363         pass
10364
10365     def testIntersect2DMeshesTmp5(self):
10366         coords=DataArrayDouble.New([41,0,42,0,0,42,0,41,41.5,0,29.698484809834998,29.698484809834994,0,41.5,28.991378028648452,28.991378028648445,-42,0,-41,0,-29.698484809834994,29.698484809834998,-41.5,0,-28.991378028648445,28.991378028648452,0,-42,0,-41,-29.698484809835001,-29.698484809834994,0,-41.5,-28.991378028648455,-28.991378028648445,29.698484809834987,-29.698484809835001,28.991378028648441,-28.991378028648455,43,0,0,43,42.5,0,30.405591591021544,30.40559159102154,0,42.5,-43,0,-30.40559159102154,30.405591591021544,-42.5,0,0,-43,-30.405591591021551,-30.40559159102154,0,-42.5,30.405591591021537,-30.405591591021551,44,0,0,44,43.5,0,31.112698372208094,31.112698372208087,0,43.5,-44,0,-31.112698372208087,31.112698372208094,-43.5,0,0,-44,-31.112698372208097,-31.112698372208087,0,-43.5,31.112698372208083,-31.112698372208097,45,0,0,45,44.5,0,31.81980515339464,31.819805153394636,0,44.5,-45,0,-31.819805153394636,31.81980515339464,-44.5,0,0,-45,-31.819805153394647,-31.819805153394636,0,-44.5,31.819805153394629,-31.819805153394647,47,0,0,47,46,0,33.234018715767739,33.234018715767732,0,46,-47,0,-33.234018715767732,33.234018715767739,-46,0,0,-47,-33.234018715767739,-33.234018715767732,0,-46,33.234018715767725,-33.234018715767739,49,0,0,49,48,0,34.648232278140831,34.648232278140824,0,48,-49,0,-34.648232278140824,34.648232278140831,-48,0,0,-49,-34.648232278140839,-34.648232278140824,0,-48,34.648232278140817,-34.648232278140839,51,0,0,51,50,0,36.062445840513924,36.062445840513924,0,50,-51,0,-36.062445840513924,36.062445840513924,-50,0,0,-51,-36.062445840513931,-36.062445840513924,0,-50,36.062445840513917,-36.062445840513931,53,0,0,53,52,0,37.476659402887023,37.476659402887016,0,52,-53,0,-37.476659402887016,37.476659402887023,-52,0,0,-53,-37.47665940288703,-37.476659402887016,0,-52,37.476659402887009,-37.47665940288703,55,0,0,55,54,0,38.890872965260115,38.890872965260108,0,54,-55,0,-38.890872965260108,38.890872965260115,-54,0,0,-55,-38.890872965260122,-38.890872965260108,0,-54,38.890872965260101,-38.890872965260122,59,0,0,59,57,0,41.719300090006307,41.7193000900063,0,57,-59,0,-41.7193000900063,41.719300090006307,-57,0,0,-59,-41.719300090006314,-41.7193000900063,0,-57,41.719300090006293,-41.719300090006314,63,0,0,63,61,0,44.547727214752499,44.547727214752491,0,61,-63,0,-44.547727214752491,44.547727214752499,-61,0,0,-63,-44.547727214752506,-44.547727214752491,0,-61,44.547727214752484,-44.547727214752506,67,0,0,67,65,0,47.37615433949869,47.376154339498683,0,65,-67,0,-47.376154339498683,47.37615433949869,-65,0,0,-67,-47.376154339498697,-47.376154339498683,0,-65,47.376154339498676,-47.376154339498697,71,0,0,71,69,0,50.204581464244875,50.204581464244868,0,69,-71,0,-50.204581464244868,50.204581464244875,-69,0,0,-71,-50.204581464244889,-50.204581464244868,0,-69,50.20458146424486,-50.204581464244889,75,0,0,75,73,0,53.033008588991066,53.033008588991059,0,73,-75,0,-53.033008588991059,53.033008588991066,-73,0,0,-75,-53.033008588991073,-53.033008588991059,0,-73,53.033008588991052,-53.033008588991073,80,0,0,80,77.5,0,56.568542494923804,56.568542494923797,0,77.5,-80,0,-56.568542494923797,56.568542494923804,-77.5,0,0,-80,-56.568542494923818,-56.568542494923797,0,-77.5,56.56854249492379,-56.568542494923818],188,2)
10367         conn=DataArrayInt.New([8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12,8,9,8,13,14,11,15,16,17,8,14,13,1,0,16,18,4,19,8,1,20,21,2,22,23,24,5,8,2,21,25,8,24,26,27,10,8,8,25,28,13,27,29,30,15,8,13,28,20,1,30,31,22,18,8,20,32,33,21,34,35,36,23,8,21,33,37,25,36,38,39,26,8,25,37,40,28,39,41,42,29,8,28,40,32,20,42,43,34,31,8,32,44,45,33,46,47,48,35,8,33,45,49,37,48,50,51,38,8,37,49,52,40,51,53,54,41,8,40,52,44,32,54,55,46,43,8,44,56,57,45,58,59,60,47,8,45,57,61,49,60,62,63,50,8,49,61,64,52,63,65,66,53,8,52,64,56,44,66,67,58,55,8,56,68,69,57,70,71,72,59,8,57,69,73,61,72,74,75,62,8,61,73,76,64,75,77,78,65,8,64,76,68,56,78,79,70,67,8,68,80,81,69,82,83,84,71,8,69,81,85,73,84,86,87,74,8,73,85,88,76,87,89,90,77,8,76,88,80,68,90,91,82,79,8,80,92,93,81,94,95,96,83,8,81,93,97,85,96,98,99,86,8,85,97,100,88,99,101,102,89,8,88,100,92,80,102,103,94,91,8,92,104,105,93,106,107,108,95,8,93,105,109,97,108,110,111,98,8,97,109,112,100,111,113,114,101,8,100,112,104,92,114,115,106,103,8,104,116,117,105,118,119,120,107,8,105,117,121,109,120,122,123,110,8,109,121,124,112,123,125,126,113,8,112,124,116,104,126,127,118,115,8,116,128,129,117,130,131,132,119,8,117,129,133,121,132,134,135,122,8,121,133,136,124,135,137,138,125,8,124,136,128,116,138,139,130,127,8,128,140,141,129,142,143,144,131,8,129,141,145,133,144,146,147,134,8,133,145,148,136,147,149,150,137,8,136,148,140,128,150,151,142,139,8,140,152,153,141,154,155,156,143,8,141,153,157,145,156,158,159,146,8,145,157,160,148,159,161,162,149,8,148,160,152,140,162,163,154,151,8,152,164,165,153,166,167,168,155,8,153,165,169,157,168,170,171,158,8,157,169,172,160,171,173,174,161,8,160,172,164,152,174,175,166,163,8,164,176,177,165,178,179,180,167,8,165,177,181,169,180,182,183,170,8,169,181,184,172,183,185,186,173,8,172,184,176,164,186,187,178,175],540)
10368         connI=DataArrayInt.New([0,9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144,153,162,171,180,189,198,207,216,225,234,243,252,261,270,279,288,297,306,315,324,333,342,351,360,369,378,387,396,405,414,423,432,441,450,459,468,477,486,495,504,513,522,531,540],61)
10369         #
10370         m1=MEDCouplingUMesh.New("Fix",2);
10371         m1.setCoords(coords);
10372         m1.setConnectivity(conn,connI,True);
10373         #
10374         coords=DataArrayDouble([46.5,-2.5,53.5,-2.5,53.5,2.5,46.5,2.5,50,-2.5,53.5,0,50,2.5,46.5,0,60.5,-2.5,60.5,2.5,57,-2.5,60.5,0,57,2.5,53.5,7.5,46.5,7.5,53.5,5,50,7.5,46.5,5,60.5,7.5,60.5,5,57,7.5,-2,47,2,47,2,53,-2,53,0,47,2,50,0,53,-2,50,6,47,6,53,4,47,6,50,4,53,2,59,-2,59,2,56,0,59,-2,56,6,59,6,56,4,59],42,2)
10375         # connectivity
10376         conn=DataArrayInt([8,0,1,2,3,4,5,6,7,8,1,8,9,2,10,11,12,5,8,3,2,13,14,6,15,16,17,8,2,9,18,13,12,19,20,15,8,21,22,23,24,25,26,27,28,8,22,29,30,23,31,32,33,26,8,24,23,34,35,27,36,37,38,8,23,30,39,34,33,40,41,36],72);
10377         conn.setName("");
10378         connI=DataArrayInt([0,9,18,27,36,45,54,63,72],9)
10379         m2=MEDCouplingUMesh.New("Mobile",2);
10380         m2.setCoords(coords);
10381         m2.setConnectivity(conn,connI,True);
10382         #
10383         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10384         self.assertEqual(105,m3.getNumberOfCells());
10385         self.assertEqual(105,d1.getNumberOfTuples());
10386         self.assertEqual(105,d2.getNumberOfTuples());
10387         self.assertEqual(704,m3.getNumberOfNodes());
10388         #
10389         areaExpected=[-65.18804756198824,-65.18804756198824,-65.18804756198824,-65.18804756198824,-66.75884388878285,-66.75884388878285,-66.7588438887833,-66.75884388878308,-68.32964021557768,-68.32964021557768,-68.32964021557814,-68.32964021557791,-69.9004365423732,-69.9004365423732,-69.90043654237297,-69.90043654237297,-1.194568659706448,-1.0869994447159463,-142.2316939607081,-144.51326206513068,-144.5132620651309,-1.1945686597064424,-143.3186934054243,-5.002264310862817,-10.0261332846393,-3.9727823117092953,-7.290862524642649,-124.504404940456,-3.9727823117093237,-146.82366506060032,-150.79644737231024,-5.002264310862776,-145.79418306144626,-5.00208651738126,-10.054764051268958,-4.001067863263231,-8.027932154428669,-129.99378209314813,-4.001067863263216,-153.07856481622616,-157.0796326794898,-5.0020865173811915,-152.07754616210832,-5.001928880064381,-10.050590216368969,-4.00098721602491,-8.025810856794209,-136.28350081741684,-4.000987216024939,-159.36183077064402,-163.36281798667005,-5.0019288800643285,-158.36088910660442,-1.2991516319851801,-3.702636830195414,-3.7815130030068254,-6.265364371195623,-0.02516260900254963,-0.6553944641345026,-3.975752765070567,-7.368528340442765,-142.57249927881398,-0.02516260900254963,-3.9757527650706095,-165.64508791977525,-169.64600329384803,-1.299151631985167,-3.7026368301953885,-164.6442148316677,-10.00321285677458,-20.08414323176165,-8.001644468035863,-16.042954878437143,-304.0096070742277,-8.00164446803587,-350.1399180412005,-358.1415625092368,-10.003212856774468,-348.13834965246224,-3.794150313030109,-8.65049239704272,-0.02260276689354157,-0.5885167811200915,-370.2185414798688,-0.022602766893559393,-383.2517009710623,-383.2743037379555,-3.7941503130300576,-379.48015342492505,-408.40704496667513,-408.4070449666742,-408.4070449666742,-408.4070449666742,-433.53978619538975,-433.5397861953902,-433.5397861953911,-433.53978619539066,-458.67252742410983,-458.6725274241094,-458.67252742410983,-458.6725274241089,-608.6835766330232,-608.6835766330232,-608.6835766330232,-608.6835766330241]
10390         expected1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,16,16,17,18,19,19,20,20,20,20,20,21,21,22,23,23,24,24,24,24,24,25,25,26,27,27,28,28,28,28,28,29,29,30,31,31,32,32,32,32,32,32,32,32,32,33,33,33,34,35,35,35,36,36,36,36,36,37,37,38,39,39,40,40,40,40,40,41,41,42,43,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]
10391         expected2=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,2,-1,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,1,2,3,4,5,6,7,-1,4,6,-1,-1,0,1,-1,1,3,6,7,-1,6,-1,-1,1,-1,1,3,6,7,-1,6,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]
10392         f3=m3.getMeasureField(ON_CELLS).getArray().getValues();
10393         for i in xrange(105):
10394             self.assertAlmostEqual(areaExpected[i],f3[i],10)
10395             pass
10396         self.assertEqual(expected1,d1.getValues())
10397         self.assertEqual(expected2,d2.getValues())
10398         pass
10399
10400     def testSwig2Intersect2DMeshesQuadra1(self):
10401         import cmath
10402         def createDiagCircle(lX, lY, R, cells=[0,1]):  
10403             """ A circle in a square box, cut along the diagonal. 
10404             """    
10405             c = []
10406             for i in range(8):
10407               c.append(cmath.rect(R, i*pi/4))
10408         
10409             coords = [0.0,0.0,          c[3].real,c[3].imag,       -lX/2.0, lY/2.0,
10410                       0.0, lY/2.0,      lX/2.0,lY/2.0,             lX/2.0,0.0,
10411                       #   6                  7                              8
10412                       lX/2.0,-lY/2.0,   c[7].real,c[7].imag,       c[1].real,c[1].imag,
10413                       #   9                  10                            11  
10414                       c[5].real,c[5].imag,   -lX/2.0,-lY/2.0,      0.0, -lY/2.0,
10415                       #   12                  13                            14
10416                       -lX/2.0,0.0,         0.0,0.0,                  0.0, 0.0]
10417             # Points 13 (reps. 14) are average of points (6,7) (resp (1,2))
10418             coords[13*2]   = 0.5*(coords[6*2]+coords[7*2])
10419             coords[13*2+1] = 0.5*(coords[6*2+1]+coords[7*2+1])
10420             coords[14*2]   = 0.5*(coords[1*2]+coords[2*2])
10421             coords[14*2+1] = 0.5*(coords[1*2+1]+coords[2*2+1])
10422             connec  = [1,7,8,0]      # half circle up right
10423             connec3 = [6,7,1,2,4,13,8,14,3,5]
10424             
10425             baseMesh = MEDCouplingUMesh.New("box_circle", 2)  
10426             baseMesh.allocateCells(2)
10427             meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
10428             meshCoords.setInfoOnComponents(["X [au]", "Y [au]"])
10429             baseMesh.setCoords(meshCoords)
10430             
10431             if 0 in cells:
10432               baseMesh.insertNextCell(NORM_QPOLYG, connec)  
10433             if 1 in cells: 
10434               baseMesh.insertNextCell(NORM_QPOLYG, connec3) 
10435             baseMesh.finishInsertingCells()  
10436             baseMesh.checkCoherency() 
10437             return baseMesh 
10438         
10439         eps = 1.0e-7
10440         m1 = createDiagCircle(1.0, 1.0, 0.5*0.90, cells=[0,1])  
10441         m2 = createDiagCircle(1.0, 1.0, 0.5*0.95, cells=[0])
10442         m3, _, _= MEDCouplingUMesh.Intersect2DMeshes(m1, m2, eps)
10443         m3.mergeNodes(eps)
10444         m3.convertDegeneratedCells()
10445         m3.zipCoords()        
10446         m4 = m3.deepCpy()
10447         m5, _, _ = MEDCouplingUMesh.Intersect2DMeshes(m3, m4, eps)
10448         m5.mergeNodes(eps)
10449         # Check coordinates:
10450         self.assertTrue(m3.getCoords().isEqual(m5.getCoords(), eps))
10451
10452     def testIntersect2DMeshesTmp7(self):
10453         eps = 1.0e-8
10454         coords = [-0.5,-0.5,   -0.5, 0.5, 0.5, 0.5,    0.5,-0.5]
10455         connec = range(4)
10456         m1 = MEDCouplingUMesh.New("box", 2)  
10457         m1.allocateCells(1)
10458         meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
10459         m1.setCoords(meshCoords)
10460         m1.insertNextCell(NORM_POLYGON, connec)
10461         m1.finishInsertingCells()  
10462      
10463         m2 = MEDCouplingDataForTest.buildCircle(0.25, 0.2, 0.4)
10464         # Was looping indefinitly:
10465         m_intersec, resToM1, resToM2 = MEDCouplingUMesh.Intersect2DMeshes(m1, m2, eps)
10466         m_intersec.zipCoords()
10467         coo_tgt = DataArrayDouble([-0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.03284271247461901, 0.4828427124746191, 
10468           -0.014575131106459124, 0.5000000000000001, 0.5, -0.11224989991991996, 0.24271243444677046, 0.5, 0.5, 0.19387505004004, 
10469           -0.04799910280454185, -0.06682678787499614, -0.023843325638122054, 0.4915644577163915, 0.5, -0.30612494995996, 0.0, -0.5, 
10470           -0.5, 0.0, -0.25728756555322957, 0.5, -0.023843325638122026, 0.49156445771639157, -0.04799910280454181, -0.06682678787499613], 17 ,2)
10471         conn_tgt = [32, 5, 2, 6, 4, 7, 8, 9, 10, 32, 6, 3, 0, 1, 5, 4, 11, 12, 13, 14, 15, 16]
10472         connI_tgt = [0, 9, 22]
10473         res1_tgt  = [0, 0]
10474         res2_tgt = [0, -1]
10475         self.assert_(coo_tgt.isEqualWithoutConsideringStr(m_intersec.getCoords(), 1e-12))
10476         self.assertEqual(conn_tgt, m_intersec.getNodalConnectivity().getValues())
10477         self.assertEqual(connI_tgt, m_intersec.getNodalConnectivityIndex().getValues())
10478         self.assertEqual(res1_tgt, resToM1.getValues())
10479         self.assertEqual(res2_tgt, resToM2.getValues())
10480         
10481     def testDAIBuildUnique1(self):
10482         d=DataArrayInt([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
10483         e=d.buildUnique()
10484         self.assertTrue(e.isEqual(DataArrayInt([1,2,3,4,5,7,19])))
10485         pass
10486
10487     def testDAIPartitionByDifferentValues1(self):
10488         d=DataArrayInt([1,0,1,2,0,2,2,-3,2])
10489         expected=[[-3,[7]],[0,[1,4]],[1,[0,2]],[2,[3,5,6,8]]]
10490         for i,elt in enumerate(zip(*d.partitionByDifferentValues())):
10491             self.assertEqual(expected[i][0],elt[1])
10492             self.assertEqual(expected[i][1],elt[0].getValues())
10493             pass
10494         pass
10495
10496     def testFieldGaussMultiDiscPerType1(self):
10497         coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
10498         mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
10499         mQ8.allocateCells(1)
10500         mQ8.insertNextCell(NORM_QUAD8,range(8))
10501         mQ8.finishInsertingCells()
10502         mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
10503         mQ4.allocateCells(1)
10504         mQ4.insertNextCell(NORM_QUAD4,range(4))
10505         mQ4.finishInsertingCells()
10506         mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
10507         mT3.allocateCells(1)
10508         mT3.insertNextCell(NORM_TRI3,range(3))
10509         mT3.finishInsertingCells()
10510         
10511         tr=[[0.,0.],[2.,0.], [0.,2.],[2.,2.],[4.,2.],[6.,2.],[8.,2.],[10.,2.],[12.,2.],[0.,4.],[2.,4.],[4.,4.],[6.,4.],[8.,4.],[10.,4.],[12.,4.],[14.,4.],[16.,4.],[18.,4.],[20.,4.],[22.,4.]]
10512         ms=2*[mQ4]+7*[mQ8]+11*[mT3]
10513         ms[:]=(elt.deepCpy() for elt in ms)
10514         for m,t in zip(ms,tr):
10515             d=m.getCoords() ; d+= t
10516             pass
10517         m=MEDCouplingUMesh.MergeUMeshes(ms)
10518         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME)
10519         f.setMesh(m)
10520         # throw because cell 0,1 are QUAD4 and cell 3 is QUAD8
10521         self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,[0,1,3],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10522         f.setGaussLocalizationOnCells([0,1],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10523         f.setGaussLocalizationOnCells([3,2,5],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.9,0.9],[0.8,0.05,0.15])
10524         f.setGaussLocalizationOnCells([4,6,8,7],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.9,0.9,-0.1,0.3],[0.7,0.05,0.15,0.1])
10525         f.setGaussLocalizationOnCells([9,10,11,12,13],[0.,0.,1.,0.,1.,1.],[0.4,0.4],[1.])
10526         f.setGaussLocalizationOnCells([14,15,16,17,18,19],[0.,0.,1.,0.,1.,1.],[0.4,0.4,0.14,0.16],[0.22,0.78])
10527         self.assertEqual(46,f.getNumberOfTuplesExpected())
10528         vals=DataArrayDouble.New(46*3,1) ; vals.iota(7.7) ; vals.rearrange(3)
10529         f.setArray(vals)
10530         f.checkCoherency()
10531         #f.getLocalizationOfDiscr()
10532         self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneType,NORM_QUAD8) #throw because several loc
10533         self.assertEqual([1,2],f.getGaussLocalizationIdsOfOneType(NORM_QUAD8))
10534         self.assertEqual([0,0,1,1,2,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4],f.getDiscretization().getArrayOfDiscIds().getValues())
10535         fc=f[[1,2,3,8]]
10536         fc.checkCoherency()
10537         self.assertTrue(DataArrayDouble([13.7,14.7,15.7,16.7,17.7,18.7,19.7,20.7,21.7,22.7,23.7,24.7,25.7,26.7,27.7,28.7,29.7,30.7,31.7,32.7,33.7,34.7,35.7,36.7,82.7,83.7,84.7,85.7,86.7,87.7,88.7,89.7,90.7,91.7,92.7,93.7],12,3).isEqual(fc.getArray(),1e-10))
10538         fc.renumberCells([3,2,0,1])
10539         self.assertTrue(DataArrayDouble([28.7, 29.7, 30.7, 31.7, 32.7, 33.7, 34.7, 35.7, 36.7, 82.7, 83.7, 84.7, 85.7, 86.7, 87.7, 88.7, 89.7, 90.7, 91.7, 92.7, 93.7, 19.7, 20.7, 21.7, 22.7, 23.7, 24.7, 25.7, 26.7, 27.7, 13.7, 14.7, 15.7, 16.7, 17.7, 18.7],12,3).isEqual(fc.getArray(),1e-10))
10540         fc.getArray()
10541         pass
10542
10543     def testSwigRotate(self):
10544         d=DataArrayDouble([1.,2.,3.,4.,6.,5.],2,3)
10545         MEDCouplingPointSet.Rotate3DAlg([0.,0.,0.],[0.,1.,0.],1.5707963267948966,d)
10546         self.assertTrue(d.isEqual(DataArrayDouble([3.,2.,-1.,5.,6.,-4.],2,3),1e-12))
10547         d=DataArrayDouble([1.,2.,3.,4.,6.,5.],3,2)
10548         MEDCouplingPointSet.Rotate2DAlg([0.,0.],1.5707963267948966,d)
10549         self.assertTrue(d.isEqual(DataArrayDouble([-2.,1.,-4.,3.,-5.,6.],3,2),1e-12))
10550         pass
10551
10552     def testSwigCMeshProtection(self):
10553         cm=MEDCouplingCMesh()
10554         self.assertRaises(InterpKernelException,cm.setCoordsAt,0,DataArrayDouble([4.,4.5,6.,7.],2,2))
10555         self.assertRaises(InterpKernelException,cm.setCoords,DataArrayDouble([4.,4.5,6.,7.],2,2))
10556         pass
10557
10558     def testSwigCellsInBoundingBox1(self):
10559         m3D=MEDCouplingDataForTest.build3DExtrudedUMesh_1()[0]
10560         self.assertTrue(m3D.getCellsInBoundingBox([(0,3),(0,3),(0,1)],-1e-12).isEqual(DataArrayInt([0,1,2,3,4,5])))
10561         self.assertRaises(InterpKernelException,m3D.getCellsInBoundingBox,[(0,3,0),(3,0,1)],-1e-12)
10562         pass
10563
10564     def testDAICheckMonotonic1(self):
10565         data1=[-1,0,2,2,4,5]
10566         data2=[6,2,0,-8,-9,-56]
10567         data3=[-1,0,3,2,4,6]
10568         data4=[7,5,2,3,0,-6]
10569         d=DataArrayInt.New(data1);
10570         self.assertTrue(d.isMonotonic(True));
10571         self.assertTrue(not d.isMonotonic(False));
10572         d.checkMonotonic(True);
10573         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10574         d=DataArrayInt.New(data2);
10575         self.assertTrue(d.isMonotonic(False));
10576         self.assertTrue(not d.isMonotonic(True));
10577         d.checkMonotonic(False);
10578         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10579         d=DataArrayInt.New(data3);
10580         self.assertTrue(not d.isMonotonic(False));
10581         self.assertTrue(not d.isMonotonic(True));
10582         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10583         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10584         d=DataArrayInt.New(data4);
10585         self.assertTrue(not d.isMonotonic(False));
10586         self.assertTrue(not d.isMonotonic(True));
10587         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10588         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10589         d=DataArrayInt.New(0,1)
10590         self.assertTrue(d.isMonotonic(True));
10591         self.assertTrue(d.isMonotonic(False));
10592         d.checkMonotonic(True);
10593         d.checkMonotonic(False);
10594         d=DataArrayInt.New(data4,3,2);#throw because nbComp!=1
10595         self.assertRaises(InterpKernelException,d.isMonotonic,True)
10596         self.assertRaises(InterpKernelException,d.isMonotonic,False)
10597         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10598         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10599         pass
10600
10601     def testSwigDASetItemOnEmpty1(self):
10602         d=DataArrayInt(0,1)
10603         isThrow=False
10604         try:
10605             d[0:1000:2]=4
10606         except InterpKernelException as e:
10607             isThrow=True
10608             pass
10609         self.assertTrue(isThrow)
10610         d[:]=4
10611         d[::2]=5
10612         #
10613         d=DataArrayDouble(0,1)
10614         isThrow=False
10615         try:
10616             d[0:1000:2]=4
10617         except InterpKernelException as e:
10618             isThrow=True
10619             pass
10620         self.assertTrue(isThrow)
10621         d[:]=4
10622         d[::2]=5
10623         d=DataArrayInt([],0,1)
10624         d2=DataArrayInt(0)
10625         self.assertTrue(d2.isEqual(d))
10626         d=DataArrayDouble([],0,1)
10627         d2=DataArrayDouble(0)
10628         self.assertTrue(d2.isEqual(d,1e-12))
10629         pass
10630
10631     def testSwigDAITransformWithIndArr1(self):
10632         arr=DataArrayInt([0,4,5,1])
10633         d=DataArrayInt([7,8,9,10])
10634         self.assertRaises(InterpKernelException,arr.transformWithIndArr,d)
10635         pass
10636
10637     def testIntersect2DMeshesTmp6(self):
10638         # coordinates
10639         coords=DataArrayDouble.New([2.7554552980815448e-15,45,-45,5.5109105961630896e-15,-31.819805153394636,31.81980515339464,2.8779199779962799e-15,47,2.8166876380389124e-15,46,-47,5.7558399559925599e-15,-33.234018715767732,33.234018715767739,-46,5.6333752760778247e-15],8,2);
10640         # connectivity
10641         conn=DataArrayInt.New([8,0,3,5,1,4,6,7,2])
10642         connI=DataArrayInt.New([0,9]);
10643         m1=MEDCouplingUMesh.New("Fixe",2);
10644         m1.setCoords(coords);
10645         m1.setConnectivity(conn,connI,True);
10646         #
10647         coords=DataArrayDouble.New([-7.3800475508445391,41.854329503018846,-3.7041190667754655,42.338274668899189,-3.7041190667754655,45.338274668899189,-7.3800475508445382,44.854329503018839,-5.5473631693521845,42.136406608386956,-3.7041190667754655,43.838274668899189,-5.5420833088100014,45.09630208595901,-7.3800475508445382,43.354329503018839,-3.7041190667754651,52.338274668899189,-7.3800475508445382,51.854329503018839,-3.7041190667754655,48.838274668899189,-5.5420833088100014,52.09630208595901,-7.3800475508445382,48.354329503018839],13,2);
10648         # connectivity
10649         conn=DataArrayInt.New([8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12]);
10650         connI=DataArrayInt.New([0,9,18]);
10651         #
10652         m2=MEDCouplingUMesh.New("Mobile",2);
10653         m2.setCoords(coords);
10654         m2.setConnectivity(conn,connI,True);
10655         #
10656         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10657         self.assertTrue(d1.isEqual(DataArrayInt([0,0,0,0])));
10658         self.assertTrue(d2.isEqual(DataArrayInt([0,1,-1,-1])));
10659         self.assertEqual(4,m3.getNumberOfCells());
10660         self.assertEqual(4,d1.getNumberOfTuples());
10661         self.assertEqual(4,d2.getNumberOfTuples());
10662         self.assertEqual(43,m3.getNumberOfNodes());
10663         dI,areMerged,newNbOfNodes=m3.mergeNodes(1e-12)
10664         self.assertEqual(35,m3.getNumberOfNodes());
10665         m3.zipCoords();
10666         self.assertEqual(23,m3.getNumberOfNodes());
10667         #
10668         f=m3.getMeasureField(True);
10669         valuesExpected=DataArrayDouble([1.6603638692585716,5.747555728471923,129.68907101754394,7.4162714498559694])
10670         self.assertTrue(f.getArray().isEqual(valuesExpected,1e-12))
10671         pass
10672
10673     def testDAPushBack(self):
10674         d=DataArrayDouble(0,1)
10675         for i in xrange(8):
10676             d.pushBackSilent(i)
10677             pass
10678         self.assertEqual(d.getNumberOfTuples(),8)
10679         self.assertEqual(d.getNbOfElemAllocated(),8)
10680         d.pushBackSilent(4.44)
10681         self.assertEqual(d.getNumberOfTuples(),9)
10682         self.assertEqual(d.getNbOfElemAllocated(),16)
10683         self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10684         e=d.deepCpy()
10685         self.assertEqual(e.getNumberOfTuples(),9)
10686         self.assertEqual(e.getNbOfElemAllocated(),9)
10687         self.assertTrue(e.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10688         self.assertAlmostEqual(d.popBackSilent(),4.44,12)
10689         self.assertEqual(d.getNumberOfTuples(),8)
10690         self.assertEqual(d.getNbOfElemAllocated(),16)
10691         self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.]),1e-12))
10692         f=DataArrayDouble()
10693         f.reserve(1000)
10694         f.pushBackSilent(4.)
10695         self.assertTrue(f.isEqual(DataArrayDouble([4.]),1e-12))
10696         self.assertEqual(f.getNumberOfTuples(),1)
10697         self.assertEqual(f.getNbOfElemAllocated(),1000)
10698         ff=f[:]
10699         self.assertTrue(ff.isEqual(DataArrayDouble([4.]),1e-12))
10700         self.assertEqual(ff.getNumberOfTuples(),1)
10701         self.assertEqual(ff.getNbOfElemAllocated(),1)
10702         d=DataArrayDouble()
10703         d.pushBackSilent(4.44)
10704         d.pushBackSilent(5.55)
10705         d.pushBackSilent(6.66)
10706         self.assertTrue(d.isEqual(DataArrayDouble([4.44,5.55,6.66]),1e-12))
10707         #
10708         d=DataArrayInt(0,1)
10709         for i in xrange(8):
10710             d.pushBackSilent(i)
10711             pass
10712         self.assertEqual(d.getNumberOfTuples(),8)
10713         self.assertEqual(d.getNbOfElemAllocated(),8)
10714         d.pushBackSilent(444)
10715         self.assertEqual(d.getNumberOfTuples(),9)
10716         self.assertEqual(d.getNbOfElemAllocated(),16)
10717         self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10718         e=d.deepCpy()
10719         self.assertEqual(e.getNumberOfTuples(),9)
10720         self.assertEqual(e.getNbOfElemAllocated(),9)
10721         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10722         self.assertEqual(d.popBackSilent(),444)
10723         self.assertEqual(d.getNumberOfTuples(),8)
10724         self.assertEqual(d.getNbOfElemAllocated(),16)
10725         self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
10726         f=DataArrayInt()
10727         f.reserve(1000)
10728         f.pushBackSilent(4)
10729         self.assertTrue(f.isEqual(DataArrayInt([4])))
10730         self.assertEqual(f.getNumberOfTuples(),1)
10731         self.assertEqual(f.getNbOfElemAllocated(),1000)
10732         ff=f[:]
10733         self.assertTrue(ff.isEqual(DataArrayInt([4])))
10734         self.assertEqual(ff.getNumberOfTuples(),1)
10735         self.assertEqual(ff.getNbOfElemAllocated(),1)
10736         d=DataArrayInt()
10737         d.pushBackSilent(444)
10738         d.pushBackSilent(555)
10739         d.pushBackSilent(666)
10740         self.assertTrue(d.isEqual(DataArrayInt([444,555,666])))
10741         #
10742         d=DataArrayInt()
10743         d.alloc(10,1)
10744         d.setInfoOnComponent(0,"ABC")
10745         d.setName("dEf")
10746         d.iota(7)
10747         e=DataArrayInt([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10748         self.assertEqual(10,d.getNbOfElemAllocated())
10749         d.pushBackSilent(55)
10750         e=DataArrayInt([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10751         self.assertEqual(20,d.getNbOfElemAllocated())
10752         d.reserve(4)
10753         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10754         self.assertEqual(4,d.getNbOfElemAllocated())
10755         d.pushBackSilent(5)
10756         e=DataArrayInt([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10757         self.assertEqual(8,d.getNbOfElemAllocated())
10758         self.assertEqual(5,d.popBackSilent())
10759         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10760         self.assertEqual(8,d.getNbOfElemAllocated())
10761         self.assertRaises(OverflowError,d.reserve,-1)
10762         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10763         self.assertEqual(8,d.getNbOfElemAllocated())
10764         d.reserve(0)
10765         e=DataArrayInt([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e))
10766         self.assertEqual(0,d.getNbOfElemAllocated())
10767         #
10768         d=DataArrayDouble()
10769         d.alloc(10,1)
10770         d.setInfoOnComponent(0,"ABC")
10771         d.setName("dEf")
10772         d.iota(7)
10773         e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10774         self.assertEqual(10,d.getNbOfElemAllocated())
10775         d.pushBackSilent(55)
10776         e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10777         self.assertEqual(20,d.getNbOfElemAllocated())
10778         d.reserve(4)
10779         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10780         self.assertEqual(4,d.getNbOfElemAllocated())
10781         d.pushBackSilent(5)
10782         e=DataArrayDouble([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10783         self.assertEqual(8,d.getNbOfElemAllocated())
10784         self.assertEqual(5.,d.popBackSilent())
10785         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10786         self.assertEqual(8,d.getNbOfElemAllocated())
10787         self.assertRaises(OverflowError,d.reserve,-1)
10788         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10789         self.assertEqual(8,d.getNbOfElemAllocated())
10790         d.reserve(0)
10791         e=DataArrayDouble([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e,1e-14))
10792         self.assertEqual(0,d.getNbOfElemAllocated())
10793         pass
10794
10795     def testDAIBuildSubstractionOptimized1(self):
10796         da1=DataArrayInt.New([1,3,5,6,7,9,13])
10797         da2=DataArrayInt.New([3,5,9])
10798         da3=DataArrayInt.New([1,3,5])
10799         da4=DataArrayInt.New([1,3,5,6,7,9,13])
10800         #
10801         a=da1.buildSubstractionOptimized(da2);
10802         self.assertTrue(a.isEqual(DataArrayInt([1,6,7,13])));
10803         #
10804         a=da1.buildSubstractionOptimized(da3);
10805         self.assertTrue(a.isEqual(DataArrayInt([6,7,9,13])));
10806         #
10807         a=da1.buildSubstractionOptimized(da4);
10808         self.assertTrue(a.isEqual(DataArrayInt([])));
10809         pass
10810
10811     def testDAIIsStrictlyMonotonic1(self):
10812         da1=DataArrayInt.New([1,3,5,6,7,9,13])
10813         self.assertTrue(da1.isStrictlyMonotonic(True));
10814         da1.checkStrictlyMonotonic(True);
10815         self.assertTrue(da1.isMonotonic(True));
10816         da1.checkMonotonic(True);
10817         self.assertTrue(not da1.isStrictlyMonotonic(False));
10818         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10819         self.assertTrue(not da1.isMonotonic(False));
10820         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10821         #
10822         da1=DataArrayInt.New([1,3,5,6,6,9,13])
10823         self.assertTrue(not da1.isStrictlyMonotonic(True));
10824         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10825         self.assertTrue(da1.isMonotonic(True));
10826         da1.checkMonotonic(True);
10827         self.assertTrue(not da1.isStrictlyMonotonic(False));
10828         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10829         self.assertTrue(not da1.isMonotonic(False));
10830         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10831         #
10832         da1=DataArrayInt.New([1,3,5,6,5,9,13])
10833         self.assertTrue(not da1.isStrictlyMonotonic(True));
10834         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10835         self.assertTrue(not da1.isMonotonic(True));
10836         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10837         self.assertTrue(not da1.isStrictlyMonotonic(False));
10838         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10839         self.assertTrue(not da1.isMonotonic(False));
10840         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10841         #
10842         da1=DataArrayInt.New([13,9,7,6,5,3,1])
10843         self.assertTrue(not da1.isStrictlyMonotonic(True));
10844         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10845         self.assertTrue(not da1.isMonotonic(True));
10846         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10847         self.assertTrue(da1.isStrictlyMonotonic(False));
10848         da1.checkStrictlyMonotonic(False);
10849         self.assertTrue(da1.isMonotonic(False));
10850         da1.checkMonotonic(False);
10851         #
10852         da1=DataArrayInt.New([13,9,6,6,5,3,1])
10853         self.assertTrue(not da1.isStrictlyMonotonic(True));
10854         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10855         self.assertTrue(not da1.isMonotonic(True));
10856         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10857         self.assertTrue(not da1.isStrictlyMonotonic(False));
10858         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10859         self.assertTrue(da1.isMonotonic(False));
10860         da1.checkMonotonic(False);
10861         #
10862         da1=DataArrayInt.New([13,9,5,6,5,3,1])
10863         self.assertTrue(not da1.isStrictlyMonotonic(True));
10864         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10865         self.assertTrue(not da1.isMonotonic(True));
10866         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10867         self.assertTrue(not da1.isStrictlyMonotonic(False));
10868         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10869         self.assertTrue(not da1.isMonotonic(False));
10870         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10871         #
10872         da1=DataArrayInt.New([])
10873         self.assertTrue(da1.isStrictlyMonotonic(True));
10874         da1.checkStrictlyMonotonic(True);
10875         self.assertTrue(da1.isMonotonic(True));
10876         da1.checkMonotonic(True);
10877         self.assertTrue(da1.isStrictlyMonotonic(False));
10878         da1.checkStrictlyMonotonic(False);
10879         self.assertTrue(da1.isMonotonic(False));
10880         da1.checkMonotonic(False);
10881         #
10882         da1=DataArrayInt.New([13])
10883         self.assertTrue(da1.isStrictlyMonotonic(True));
10884         da1.checkStrictlyMonotonic(True);
10885         self.assertTrue(da1.isMonotonic(True));
10886         da1.checkMonotonic(True);
10887         self.assertTrue(da1.isStrictlyMonotonic(False));
10888         da1.checkStrictlyMonotonic(False);
10889         self.assertTrue(da1.isMonotonic(False));
10890         da1.checkMonotonic(False);
10891         pass
10892
10893     def testFindAndCorrectBadOriented3DCells1(self):
10894         nbOfDisc=20
10895         vects=([0,0,-1],[0.3,0.7,0.2],[-0.3,0.7,0.2],[-0.3,-0.7,0.2])
10896         #
10897         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10898         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
10899         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
10900         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10901         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0)
10902         self.assertRaises(InterpKernelException,m4.insertNextCell,NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11,12]);
10903         m4.insertNextCell(NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11]); #Well oriented
10904         c0=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3) ; m0.setCoords(c0)
10905         c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.,0.,1.],5,3) ; m1.setCoords(c1)
10906         c2=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0., 0.,0.,1.,0.,1.,1.,1.,0.,1.],6,3) ; m2.setCoords(c2)
10907         c3=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.],8,3) ; m3.setCoords(c3)
10908         c4=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.8,0.,0.,0.45,0.,0.,   0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.,0.8,0.,1.,0.45,0.,1.],12,3) ; m4.setCoords(c4)
10909         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10910         expected1=DataArrayDouble([0.16666666666666666,0.3333333333333333,0.5,1.,1.])
10911         for v in vects:
10912             for i in xrange(nbOfDisc):
10913                 mm=m.deepCpy()
10914                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10915                 mm2=mm.deepCpy()
10916                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10917                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().empty())
10918                 self.assertTrue(mm.isEqual(mm2,1e-14))
10919                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10920                 mm.convertAllToPoly()
10921                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10922                 pass
10923             pass
10924         #
10925         mOK=m.deepCpy()
10926         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,2,1,3]); #Not well oriented
10927         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented 
10928         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
10929         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,3,2,1,4,7,6,5]); #Not well oriented
10930         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,[0,5,4,3,2,1,6,11,10,9,8,7]); #Not well oriented
10931         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10932         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10933         expected2=DataArrayDouble([-0.16666666666666666,0.3333333333333333,0.5,-1.,-1.])
10934         for v in vects:
10935             for i in xrange(nbOfDisc):
10936                 mm=m.deepCpy()
10937                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10938                 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10939                 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10940                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10941                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([0,3,4])))
10942                 mOK.setCoords(mm.getCoords())
10943                 self.assertTrue(mm.isEqual(mOK,1e-14))
10944                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10945                 mmm=mm.deepCpy()
10946                 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10947                 mm.convertAllToPoly()
10948                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10949                 pass
10950             pass
10951         #
10952         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10953         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,3,2,1,4]); #Not well oriented 
10954         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,2,1,3,5,4]); #Not well oriented 
10955         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10956         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,range(12)); #Well oriented
10957         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10958         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10959         expected3=DataArrayDouble([0.16666666666666666,-0.3333333333333333,-0.5,1.,1.])
10960         for v in vects:
10961             for i in xrange(nbOfDisc):
10962                 mm=m.deepCpy()
10963                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10964                 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10965                 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10966                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10967                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([1,2])))
10968                 mOK.setCoords(mm.getCoords())
10969                 self.assertTrue(mm.isEqual(mOK,1e-14))
10970                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10971                 mmm=mm.deepCpy()
10972                 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10973                 mm.convertAllToPoly()
10974                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10975                 pass
10976             pass
10977         pass
10978
10979     def testSwig2CellOrientation1(self):
10980         coords=DataArrayDouble([-0.21606,-0.10803,0.29999999999999999,-0.21606,-0.10803,0.37700000000000006,0,-0.10803,0.29999999999999999,0,-0.10803,0.37700000000000006,0,0.10803,0.29999999999999999,0,0.10803,0.37700000000000006,-0.21606,0.10803,0.29999999999999999,-0.21606,0.10803,0.37700000000000006,0,0.03601,0.29999999999999999,0,0.03601,0.37700000000000006,0,-0.03601,0.29999999999999999,0,-0.03601,0.37700000000000006],12,3)
10981         conn=[[0,2,10,8,4,6],[1,3,11,9,5,7],[0,1,3,2],[2,3,11,10],[10,11,9,8],[8,9,5,4],[4,5,7,6],[6,7,1,0]]
10982         for i in xrange(256):
10983             mesh=MEDCouplingUMesh("FluidMesh_1",3);
10984             mesh.allocateCells(0)
10985             conn2=[elt[:] for elt in conn]
10986             code=bin(i)[2:] ; code='0'*(8-len(code))+code
10987             for face,rev in zip(conn2,code):
10988                 if bool(int(rev)):
10989                     face.reverse()
10990                     pass
10991                 pass
10992             conn3=[elt+[-1] for elt in conn2]
10993             conn3=sum(conn3,[])[:-1]
10994             mesh.insertNextCell(NORM_POLYHED,conn3)
10995             mesh.setCoords(coords)
10996             mesh.orientCorrectlyPolyhedrons()
10997             self.assertTrue(mesh.getBarycenterAndOwner().isEqual(DataArrayDouble([-0.10803,0.,0.3385],1,3),1e-12))
10998             pass
10999         pass
11000
11001     def testSwig2CheckConsecutiveCellTypesForMEDFileFrmt1(self):
11002         m1=MEDCouplingUMesh("",2) ; m1.allocateCells(0)
11003         m1.insertNextCell(NORM_QUAD4,[0,1,2,3])
11004         m1.insertNextCell(NORM_TRI3,[0,1,2])
11005         d=DataArrayDouble(4,3) ; d[:]=0.
11006         m1.setCoords(d)
11007         self.assertTrue(m1.checkConsecutiveCellTypes())
11008         self.assertTrue(not m1.checkConsecutiveCellTypesForMEDFileFrmt())
11009         m1.renumberCells([1,0])
11010         self.assertTrue(m1.checkConsecutiveCellTypes())
11011         self.assertTrue(m1.checkConsecutiveCellTypesForMEDFileFrmt())
11012         pass
11013
11014     def testSwig2DAAccumulate1(self):
11015         d=DataArrayInt(10) ; d.iota(0)
11016         self.assertEqual([45],d.accumulate())
11017         self.assertEqual(45,d.accumulate(0))
11018         d=DataArrayInt(30) ; d.iota(0) ; d.rearrange(3)
11019         self.assertEqual([135,145,155],d.accumulate())
11020         self.assertEqual(135,d.accumulate(0))
11021         self.assertEqual(145,d.accumulate(1))
11022         self.assertEqual(155,d.accumulate(2))
11023         d=DataArrayDouble(10) ; d.iota(0.)
11024         self.assertEqual([45.],d.accumulate())
11025         self.assertEqual(45.,d.accumulate(0))
11026         d=DataArrayDouble(30) ; d.iota(0) ; d.rearrange(3)
11027         self.assertEqual([135.,145.,155.],d.accumulate())
11028         self.assertEqual(135.,d.accumulate(0))
11029         self.assertEqual(145.,d.accumulate(1))
11030         self.assertEqual(155.,d.accumulate(2))
11031         pass
11032
11033     def testSwig2UMeshDistanceToMesh1(self):
11034         m=MEDCouplingUMesh("toto",2)
11035         coords=DataArrayDouble([2.3,3.4,5.6,6.5,-4.3,3.2,-9.8,7.6,-5.4],3,3)
11036         m.setCoords(coords)
11037         m.allocateCells(0)
11038         m.insertNextCell(NORM_TRI3,[0,1,2])
11039         a,b=m.distanceToPoint([-0.335,2.27,1.21])
11040         self.assertEqual(0,b)
11041         self.assertAlmostEqual(0.022360988100374124,a,14);
11042         a,b=m.distanceToPoint(DataArrayDouble([-0.335,2.27,1.21],1,3))
11043         self.assertEqual(0,b)
11044         self.assertAlmostEqual(0.022360988100374124,a,14);
11045         a,b=coords.distanceToTuple([-0.335,2.27,1.21])
11046         self.assertAlmostEqual(5.243302871282566,a,14)
11047         self.assertEqual(0,b)
11048         #
11049         m=MEDCouplingUMesh("toto",2)
11050         coords=DataArrayDouble([0.,0.,0., 8.,0.,0., 8.,8.,0., 0.,8.,0.],4,3)
11051         m.setCoords(coords)
11052         m.allocateCells(0)
11053         m.insertNextCell(NORM_QUAD4,[0,1,2,3])
11054         m.checkCoherency2()
11055         self.assertEqual([4,0,1,2,3],m.getNodalConnectivity().getValues())
11056         a,b=m.distanceToPoint([5.,2.,0.1])
11057         self.assertAlmostEqual(0.1,a,14) ; self.assertEqual(0,b)
11058         a,b=m.distanceToPoint([5.,-2.,4.])
11059         self.assertAlmostEqual(sqrt(2*2+4*4),a,14) ; self.assertEqual(0,b)
11060         m.allocateCells(0)
11061         m.insertNextCell(NORM_POLYGON,[0,1,2,3])
11062         m.checkCoherency2()
11063         self.assertEqual([5,0,1,2,3],m.getNodalConnectivity().getValues())
11064         a,b=m.distanceToPoint([11.,3.,4.])
11065         self.assertAlmostEqual(sqrt(3*3+4*4),a,14) ; self.assertEqual(0,b)
11066         a,b=m.distanceToPoint([4.,12.,5.])
11067         self.assertAlmostEqual(sqrt(4*4+5*5),a,14) ; self.assertEqual(0,b)
11068         d=DataArrayDouble([-1.2,3.,2.],1,3)
11069         for elt in d:
11070             a,b=m.distanceToPoint(d)
11071             self.assertAlmostEqual(sqrt(1.2*1.2+2*2),a,14) ; self.assertEqual(0,b)
11072             pass
11073         #
11074         m=MEDCouplingUMesh("toto",1)
11075         coords=DataArrayDouble([0.,0.,4.,0.,0.,4.],3,2) ; m.setCoords(coords)
11076         m.allocateCells(0) ; m.insertNextCell(NORM_SEG2,[0,1]) ; m.insertNextCell(NORM_SEG2,[1,2])
11077         a,b=m.distanceToPoint([-0.1,4.1])
11078         self.assertAlmostEqual(0.14142135623730925,a,14)  # b==1 self.assertEqual(2,c)
11079         a,b=m.distanceToPoint([0.,3.9])
11080         self.assertAlmostEqual(0.07071067811865482,a,14) ; self.assertEqual(1,b) # self.assertEqual(2,c)
11081         pass
11082
11083     def testSwig2NonRegressionPartitionBySpreadZone1(self):
11084         m=MEDCouplingCMesh()
11085         arr=DataArrayDouble(6) ; arr.iota(0.)
11086         m.setCoords(arr,arr,arr)
11087         m=m.buildUnstructured()
11088         mPart=m[50,80,85,87,92,122]
11089         zones=mPart.partitionBySpreadZone()
11090         self.assertEqual(4,len(zones))
11091         self.assertTrue(zones[0].isEqual(DataArrayInt([0])))
11092         self.assertTrue(zones[1].isEqual(DataArrayInt([1,2])))
11093         self.assertTrue(zones[2].isEqual(DataArrayInt([3,4])))
11094         self.assertTrue(zones[3].isEqual(DataArrayInt([5])))
11095         #
11096         n,ni=m.computeNeighborsOfCells()
11097         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(0,n,ni)
11098         self.assertEqual(13,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11099         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed([1],n,ni)
11100         self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11101         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed((2,),n,ni)
11102         self.assertEqual(11,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11103         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(DataArrayInt([3]),n,ni)
11104         self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11105         pass
11106
11107     def testSwigUMeshInsertNextCell1(self):
11108         m=MEDCouplingUMesh("toto",2)
11109         #
11110         coords=DataArrayDouble([0.,0.,1.,1.,1.,0.]) ; m.setCoords(coords)
11111         da=DataArrayInt([0,1,2])
11112         m.allocateCells(0)
11113         for i in xrange(5):
11114             m.insertNextCell(NORM_TRI3,da)
11115             pass
11116         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2])))
11117         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11118         #
11119         da=DataArrayInt([0,1,2,3])
11120         m.allocateCells(0)
11121         for i in xrange(5):
11122             m.insertNextCell(NORM_TRI3,3,da)
11123             pass
11124         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2])))
11125         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11126         #
11127         da=DataArrayInt([0,1])
11128         m.allocateCells(0)
11129         self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,3,da)
11130         #
11131         da=DataArrayInt([0,1,2,0,1,3,0,1,4,0,1,5,0,1,6],5,3)
11132         m.allocateCells(0)
11133         for t in da:
11134             m.insertNextCell(NORM_TRI3,t)
11135             pass
11136         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,3,3,0,1,4,3,0,1,5,3,0,1,6])))
11137         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11138         self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,None)
11139         pass
11140
11141     def testSwigCurveLinearMesh1(self):
11142         m=MEDCouplingCurveLinearMesh("toto")
11143         m.setNodeGridStructure([2,3])
11144         coords=DataArrayDouble([0.,0., 2.,0., 0.,1., 1.9,1.1, 0.3,1.9, 2.2,2.1],6,2)
11145         m.setCoords(coords)
11146         m.checkCoherency()
11147         m0=m.deepCpy()
11148         self.assertTrue(m0.isEqual(m,1e-12))
11149         m.getCoords().setInfoOnComponents(["X [m]","Y [m]"])
11150         self.assertTrue(not m0.isEqual(m,1e-12))
11151         m0=m.deepCpy()
11152         self.assertTrue(m0.isEqual(m,1e-12))
11153         self.assertEqual(m.getNodeGridStructure(),(2,3))
11154         pass
11155
11156     def testSimplexize3(self):
11157         m=MEDCouplingUMesh("toto",3)
11158         m.allocateCells(0)
11159         m.insertNextCell(NORM_TETRA4,[0,1,2,3])
11160         self.assertEqual([NORM_TETRA4],m.getAllGeoTypesSorted())
11161         m.insertNextCell(NORM_HEXA8,[4,5,6,7,8,9,10,11])
11162         self.assertEqual([NORM_TETRA4,NORM_HEXA8],m.getAllGeoTypesSorted())
11163         m.insertNextCell(NORM_HEXA8,[12,13,14,15,16,17,18,19])
11164         self.assertEqual([NORM_TETRA4,NORM_HEXA8],m.getAllGeoTypesSorted())
11165         m.insertNextCell(NORM_TETRA4,[20,21,22,23])
11166         self.assertEqual([NORM_TETRA4,NORM_HEXA8,NORM_TETRA4],m.getAllGeoTypesSorted())
11167         c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3)
11168         c2=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0., 0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.],8,3) ; c2+=[2.,0.,0.]
11169         c3=c2+[2.,0.,0.]
11170         c4=c1+[6.,0.,0.]
11171         c=DataArrayDouble.Aggregate([c1,c2,c3,c4])
11172         m.setCoords(c)
11173         m.checkCoherency2()
11174         #
11175         m1=m.deepCpy()
11176         d1=m1.simplexize(PLANAR_FACE_5)
11177         m1.checkCoherency2()
11178         vol1=m1.getMeasureField(ON_CELLS).getArray()
11179         self.assertTrue(vol1.isEqual(DataArrayDouble([1./6, 1./6, 1./6,1./6, 1./6, 1./3,1./6, 1./6, 1./6, 1./6, 1./3, 1./6]),1e-12))
11180         self.assertEqual(m1.getNodalConnectivity().getValues(),[14,0,1,2,3,14,4,9,5,6,14,4,8,9,11,14,4,7,11,6,14,9,11,10,6,14,4,9,6,11,14,12,17,13,14,14,12,16,17,19,14,12,15,19,14,14,17,19,18,14,14,12,17,14,19,14,20,21,22,23])
11181         self.assertEqual(m1.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60])
11182         self.assertTrue(d1.isEqual(DataArrayInt([0,1,1,1,1,1,2,2,2,2,2,3])))
11183         #
11184         m2=m.deepCpy()
11185         d2=m2.simplexize(PLANAR_FACE_6)
11186         m2.checkCoherency2()
11187         vol2=m2.getMeasureField(ON_CELLS).getArray()
11188         self.assertTrue(vol2.isEqual(DataArrayDouble([1./6, 1./6, 1./6,1./6, 1./6, 1./6,1./6,1./6, 1./6, 1./6, 1./6, 1./6,1./6,1./6]),1e-12))
11189         self.assertEqual(m2.getNodalConnectivity().getValues(),[14,0,1,2,3,14,4,9,5,10,14,4,5,6,10,14,4,8,9,10,14,4,11,8,10,14,4,6,7,10,14,4,7,11,10,14,12,17,13,18,14,12,13,14,18,14,12,16,17,18,14,12,19,16,18,14,12,14,15,18,14,12,15,19,18,14,20,21,22,23])
11190         self.assertEqual(m2.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70])
11191         self.assertTrue(d2.isEqual(DataArrayInt([0,1,1,1,1,1,1,2,2,2,2,2,2,3])))
11192         pass
11193
11194     def testSwig2CurveLinearMesh2(self):
11195         c=MEDCouplingCMesh()
11196         #2D
11197         arr1=DataArrayDouble([0,1,3,7])
11198         arr2=DataArrayDouble([0,1,1.5])
11199         c.setCoords(arr1,arr2)
11200         u=c.buildUnstructured()
11201         coo=u.getCoords()
11202         cl=MEDCouplingCurveLinearMesh()
11203         cl.setCoords(coo)
11204         cl.setNodeGridStructure([4,3])
11205         cl.checkCoherency2()
11206         li1=[1.,2.,4.,0.5,1.,2.]
11207         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11208         self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11209         li1_1=[0.5,0.5,2.,0.5,5.,0.5,0.5,1.25,2.,1.25,5.,1.25]
11210         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11211         self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11212         #3D
11213         c.setCoords(arr1,arr2,arr2)
11214         u=c.buildUnstructured()
11215         coo=u.getCoords()
11216         cl=MEDCouplingCurveLinearMesh()
11217         cl.setCoords(coo)
11218         cl.setNodeGridStructure([4,3,3])
11219         cl.checkCoherency2()
11220         li2=[1.,2.,4.,0.5, 1.,2.,0.5,1.,2.,0.25,0.5,1.]
11221         li2_1=[0.5,0.5,0.5,2.,0.5,0.5,5.,0.5,0.5,0.5,1.25,0.5,2.,1.25,0.5,5.,1.25,0.5,0.5,0.5,1.25,2.,0.5,1.25,5.,0.5,1.25,0.5,1.25,1.25,2.,1.25,1.25,5.,1.25,1.25]
11222         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11223         self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11224         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11225         self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11226         #1D spaceDim 1
11227         coo=DataArrayDouble(5) ; coo.iota(0.)
11228         coo=coo*coo
11229         cl.setCoords(coo)
11230         cl.setNodeGridStructure([5])
11231         cl.checkCoherency2()
11232         li3=[1.,3.,5.,7.]
11233         li3_1=[0.5,2.5,6.5,12.5]
11234         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11235         self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11236         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11237         self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11238         #1D spaceDim 2
11239         coo=DataArrayDouble.Meld(coo,coo)
11240         cl.setCoords(coo)
11241         cl.checkCoherency2()
11242         li4=[sqrt(2.)*elt for elt in [1.,3.,5.,7.]]
11243         li4_1=[0.5,0.5,2.5,2.5,6.5,6.5,12.5,12.5]
11244         self.assertEqual(2,cl.getSpaceDimension())
11245         self.assertEqual(1,cl.getMeshDimension())
11246         self.assertEqual(4,cl.getNumberOfCells())
11247         self.assertEqual(5,cl.getNumberOfNodes())
11248         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11249         self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11250         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11251         self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11252         pass
11253
11254     def testSwig2CurveLinearMeshNonRegression1(self):
11255         coords=DataArrayDouble([0.0, 0.0, 0.10000000149011612, 0.6000000238418579, 0.10000000149011612, 0.30000001192092896, 1.100000023841858, 0.10000000149011612, 0.20000000298023224, 0.10000000149011612, 0.6000000238418579, 0.20000000298023224, 0.699999988079071, 0.6000000238418579, 0.10000000149011612, 1.2000000476837158, 0.6000000238418579, 0.30000001192092896, 0.10000000149011612, 1.100000023841858, 0.30000001192092896, 0.5, 1.100000023841858, 0.20000000298023224, 1.0, 1.2000000476837158, 0.10000000149011612, 0.0, 0.10000000149011612, 0.5, 0.5, 0.10000000149011612, 0.6000000238418579, 1.2000000476837158, 0.10000000149011612, 0.699999988079071, 0.10000000149011612, 0.6000000238418579, 0.699999988079071, 0.6000000238418579, 0.6000000238418579, 0.5, 1.100000023841858, 0.6000000238418579, 0.6000000238418579, 0.10000000149011612, 1.0, 0.6000000238418579, 0.699999988079071, 1.2000000476837158, 0.699999988079071, 0.8999999761581421, 1.0, 0.5, 0.10000000149011612, 0.10000000149011612, 1.2000000476837158, 0.699999988079071, 0.10000000149011612, 1.0, 1.0, 0.10000000149011612, 1.100000023841858, 0.10000000149011612, 0.6000000238418579, 1.100000023841858, 0.6000000238418579, 0.6000000238418579, 1.100000023841858, 1.100000023841858, 0.6000000238418579, 1.2000000476837158, 0.10000000149011612, 1.2000000476837158, 1.0, 0.5, 1.100000023841858, 1.2000000476837158, 1.2000000476837158, 1.100000023841858, 1.0],27,3)
11256         m=MEDCouplingCurveLinearMesh("toto")
11257         m.setCoords(coords)
11258         m.setNodeGridStructure([3,3,3])
11259         #
11260         vol=m.getMeasureField(False).getArray()
11261         self.assertTrue(vol.isEqual(DataArrayDouble([0.11450000709295281, 0.10583334351579375,0.11149999939029423,0.08866666863113633, 0.1404166805123294,0.1250000135352219,0.1270833433481557,0.13258334288001067]),1e-12))
11262         self.assertTrue(vol.isEqual(m.buildUnstructured().getMeasureField(False).getArray(),1e-12))
11263         #
11264         self.assertTrue(m.getBarycenterAndOwner().isEqual(m.buildUnstructured().getBarycenterAndOwner(),1e-12))
11265         pass
11266
11267     def testSwig2NonRegressionDASetSelectedComponents1(self):
11268         da=DataArrayDouble.New([1.,2.,3.,4.,5.,6.],3,2)
11269         dv=DataArrayDouble.New();
11270         dv.alloc(4,4)
11271         dv.fillWithZero()
11272         # da has less tuples than dv
11273         dv.setSelectedComponents(da,[1,0])
11274         #
11275         self.assertTrue(dv.isEqual(DataArrayDouble([2.,1.,0.,0.,4.,3.,0.,0.,6.,5.,0.,0.,0.,0.,0.,0.],4,4),1e-14))
11276         #
11277         da=DataArrayInt.New([1,2,3,4,5,6],3,2)
11278         dv=DataArrayInt.New();
11279         dv.alloc(4,4)
11280         dv.fillWithZero()
11281         # da has less tuples than dv
11282         dv.setSelectedComponents(da,[1,0])
11283         #
11284         self.assertTrue(dv.isEqual(DataArrayInt([2,1,0,0,4,3,0,0,6,5,0,0,0,0,0,0],4,4)))
11285         pass
11286
11287     def testSwigSetItem3(self):
11288         # 1-2 
11289         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11290         d[3]=[1,2]
11291         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,1,2,0,0,0,0],6,2),1e-14))
11292         # 2-2 false
11293         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11294         d[[5,3,2]]=[1,2]
11295         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,1,2,1,2,0,0,1,2],6,2),1e-14))
11296         # 3-2 false
11297         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11298         d[:]=[1,2]
11299         self.assertTrue(d.isEqual(DataArrayDouble([1,2,1,2,1,2,1,2,1,2,1,2],6,2),1e-14))
11300         # 4-2 false
11301         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11302         d[DataArrayInt([0,3,4])]=[1,2]
11303         self.assertTrue(d.isEqual(DataArrayDouble([1,2,0,0,0,0,1,2,1,2,0,0],6,2),1e-14))
11304         # 5-2
11305         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11306         d[5,1]=[7]
11307         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,7],6,2),1e-14))
11308         # 6-2 false
11309         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11310         d[[3,5],1]=[7]
11311         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,0,7,0,0,0,7],6,2),1e-14))
11312         # 7-2 false
11313         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11314         d[:-1:2,1]=[7]
11315         self.assertTrue(d.isEqual(DataArrayDouble([0,7,0,0,0,7,0,0,0,7,0,0],6,2),1e-14))
11316         # 8-2 false
11317         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11318         d[DataArrayInt([0,3,4]),1]=[7]
11319         self.assertTrue(d.isEqual(DataArrayDouble([0,7,0,0,0,0,0,7,0,7,0,0],6,2),1e-14))
11320         # 9-2
11321         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11322         d[3,[1,0]]=[7,8]
11323         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,8,7,0,0,0,0],6,2),1e-14))
11324         # 10-2 false
11325         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11326         d[[1,3,4],[1,0]]=[7,8]
11327         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,8,7,8,7,0,0],6,2),1e-14))
11328         # 11-2 false
11329         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11330         d[1::2,[1,0]]=[7,8]
11331         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,8,7,0,0,8,7],6,2),1e-14))
11332         # 12-2 false
11333         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11334         d[DataArrayInt([1,4]),[1,0]]=[7,8]
11335         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,0,0,8,7,0,0],6,2),1e-14))
11336         # 13-2
11337         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11338         d[1,:-1]=[9]
11339         self.assertTrue(d.isEqual(DataArrayDouble([0,0,9,0,0,0,0,0,0,0,0,0],6,2),1e-14))
11340         # 14-2 false
11341         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11342         d[[1,4,5],:]=[7,8]
11343         self.assertTrue(d.isEqual(DataArrayDouble([0,0,7,8,0,0,0,0,7,8,7,8],6,2),1e-14))
11344         # 15-2 false
11345         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11346         d[1::2,:]=[3,9]
11347         self.assertTrue(d.isEqual(DataArrayDouble([0,0,3,9,0,0,3,9,0,0,3,9],6,2),1e-14))
11348         # 1-2 
11349         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11350         d[3]=[1,2]
11351         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,1,2,0,0,0,0],6,2)))
11352         # 2-2 false
11353         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11354         d[[5,3,2]]=[1,2]
11355         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,1,2,1,2,0,0,1,2],6,2)))
11356         # 3-2 false
11357         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11358         d[:]=[1,2]
11359         self.assertTrue(d.isEqual(DataArrayInt([1,2,1,2,1,2,1,2,1,2,1,2],6,2)))
11360         # 4-2 false
11361         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11362         d[DataArrayInt([0,3,4])]=[1,2]
11363         self.assertTrue(d.isEqual(DataArrayInt([1,2,0,0,0,0,1,2,1,2,0,0],6,2)))
11364         # 5-2
11365         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11366         d[5,1]=[7]
11367         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,7],6,2)))
11368         # 6-2 false
11369         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11370         d[[3,5],1]=[7]
11371         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,0,7,0,0,0,7],6,2)))
11372         # 7-2 false
11373         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11374         d[:-1:2,1]=[7]
11375         self.assertTrue(d.isEqual(DataArrayInt([0,7,0,0,0,7,0,0,0,7,0,0],6,2)))
11376         # 8-2 false
11377         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11378         d[DataArrayInt([0,3,4]),1]=[7]
11379         self.assertTrue(d.isEqual(DataArrayInt([0,7,0,0,0,0,0,7,0,7,0,0],6,2)))
11380         # 9-2
11381         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11382         d[3,[1,0]]=[7,8]
11383         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,8,7,0,0,0,0],6,2)))
11384         # 10-2 false
11385         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11386         d[[1,3,4],[1,0]]=[7,8]
11387         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,8,7,8,7,0,0],6,2)))
11388         # 11-2 false
11389         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11390         d[1::2,[1,0]]=[7,8]
11391         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,8,7,0,0,8,7],6,2)))
11392         # 12-2 false
11393         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11394         d[DataArrayInt([1,4]),[1,0]]=[7,8]
11395         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,0,0,8,7,0,0],6,2)))
11396         # 13-2
11397         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11398         d[1,:-1]=[9]
11399         self.assertTrue(d.isEqual(DataArrayInt([0,0,9,0,0,0,0,0,0,0,0,0],6,2)))
11400         # 14-2 false
11401         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11402         d[[1,4,5],:]=[7,8]
11403         self.assertTrue(d.isEqual(DataArrayInt([0,0,7,8,0,0,0,0,7,8,7,8],6,2)))
11404         # 15-2 false
11405         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11406         d[1::2,:]=[3,9]
11407         self.assertTrue(d.isEqual(DataArrayInt([0,0,3,9,0,0,3,9,0,0,3,9],6,2)))
11408         pass
11409
11410     def testSwig2ConvertLinearCellsToQuadratic1(self):
11411         coordsExp=DataArrayDouble([-0.3,-0.3,0.2,-0.3,0.7,-0.3,-0.3,0.2,0.2,0.2,0.7,0.2,-0.3,0.7,0.2,0.7,0.7,0.7,-0.3,-0.05,-0.05,0.2,0.2,-0.05,-0.05,-0.3,0.45,-0.05,0.45,-0.3,0.45,0.2,0.7,-0.05,-0.05,0.7,0.2,0.45,-0.3,0.45,0.45,0.7,0.7,0.45],22,2)
11412         # 2D
11413         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11414         m2D.convertLinearCellsToQuadratic(0)
11415         m2D.checkCoherency1()
11416         self.assertEqual(m2D.getNodalConnectivity().getValues(),[8,0,3,4,1,9,10,11,12,6,1,4,2,11,13,14,6,4,5,2,15,16,13,8,6,7,4,3,17,18,10,19,8,7,8,5,4,20,21,15,18])
11417         self.assertEqual(m2D.getNodalConnectivityIndex().getValues(),[0,9,16,23,32,41])
11418         self.assertTrue(m2D.getCoords().isEqual(coordsExp,1e-14))
11419         # 1D
11420         m1D=MEDCouplingDataForTest.build2DTargetMesh_1().buildDescendingConnectivity()[0]
11421         m1D.convertLinearCellsToQuadratic(0)
11422         m1D.checkCoherency1()
11423         self.assertEqual(m1D.getNodalConnectivity().getValues(),[2,0,3,9,2,3,4,10,2,4,1,11,2,1,0,12,2,4,2,13,2,2,1,14,2,4,5,15,2,5,2,16,2,6,7,17,2,7,4,18,2,3,6,19,2,7,8,20,2,8,5,21])
11424         self.assertEqual(m1D.getNodalConnectivityIndex().getValues(),[0,4,8,12,16,20,24,28,32,36,40,44,48,52])
11425         self.assertTrue(m1D.getCoords().isEqual(coordsExp,1e-14))
11426         # 3D
11427         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11428         m2D.changeSpaceDimension(3)
11429         arr=DataArrayDouble(4);  arr.iota(0) ; z=MEDCouplingCMesh() ; z.setCoords(arr)
11430         m1D=z.buildUnstructured() ; m1D.setCoords(arr.changeNbOfComponents(3,0.))
11431         m1D.getCoords()[:]=m1D.getCoords()[:,[1,2,0]]
11432         cooTmp=m2D.getCoords()[:]
11433         m3D=m2D.buildExtrudedMesh(m1D,0)
11434         m3D.convertLinearCellsToQuadratic(0)
11435         m3D.checkCoherency1()
11436         # check of new m3D content
11437         coordsExp2=[coordsExp.changeNbOfComponents(3,i) for i in xrange(4)]
11438         coordsExp3=[DataArrayDouble.Meld(cooTmp[:,[0,1]],cooTmp[:,2]+(0.5+float(i))) for i in xrange(3)]
11439         coordsExp4=DataArrayDouble.Aggregate([coordsExp2[0],coordsExp3[0],coordsExp2[1],coordsExp3[1],coordsExp2[2],coordsExp3[2],coordsExp2[3]])
11440         c=DataArrayDouble.Aggregate(m3D.getCoords(),coordsExp4)
11441         self.assertEqual(len(coordsExp4),115)
11442         self.assertEqual(len(m3D.getCoords()),115)
11443         a,b=c.findCommonTuples(1e-14)
11444         self.assertEqual(len(b),len(coordsExp4)+1)
11445         e,f=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(2*115,a,b)
11446         self.assertEqual(f,115)
11447         self.assertTrue(e.isEqual(DataArrayInt([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,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,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,0,1,2,3,4,5,6,7,8,36,37,38,39,48,49,53,54,58,59,60,66,67,44,47,52,45,46,57,64,65,70,9,10,11,12,13,14,15,16,17,40,41,42,43,50,51,55,56,61,62,63,68,69,75,78,81,76,77,84,88,89,92,18,19,20,21,22,23,24,25,26,71,72,73,74,79,80,82,83,85,86,87,90,91,97,100,103,98,99,106,110,111,114,27,28,29,30,31,32,33,34,35,93,94,95,96,101,102,104,105,107,108,109,112,113])))
11448         self.assertTrue(DataArrayInt([30,0,3,4,1,9,12,13,10,36,37,38,39,40,41,42,43,44,45,46,47,25,1,4,2,10,13,11,38,48,49,42,50,51,47,46,52,25,4,5,2,13,14,11,53,54,48,55,56,50,46,57,52,30,6,7,4,3,15,16,13,12,58,59,37,60,61,62,41,63,64,65,46,45,30,7,8,5,4,16,17,14,13,66,67,53,59,68,69,55,62,65,70,57,46,30,9,12,13,10,18,21,22,19,40,41,42,43,71,72,73,74,75,76,77,78,25,10,13,11,19,22,20,42,50,51,73,79,80,78,77,81,25,13,14,11,22,23,20,55,56,50,82,83,79,77,84,81,30,15,16,13,12,24,25,22,21,61,62,41,63,85,86,72,87,88,89,77,76,30,16,17,14,13,25,26,23,22,68,69,55,62,90,91,82,86,89,92,84,77,30,18,21,22,19,27,30,31,28,71,72,73,74,93,94,95,96,97,98,99,100,25,19,22,20,28,31,29,73,79,80,95,101,102,100,99,103,25,22,23,20,31,32,29,82,83,79,104,105,101,99,106,103,30,24,25,22,21,33,34,31,30,85,86,72,87,107,108,94,109,110,111,99,98,30,25,26,23,22,34,35,32,31,90,91,82,86,112,113,104,108,111,114,106,99]).isEqual(m3D.getNodalConnectivity()))
11449         self.assertTrue(DataArrayInt([0,21,37,53,74,95,116,132,148,169,190,211,227,243,264,285]).isEqual(m3D.getNodalConnectivityIndex()))
11450         # testing explode3DMeshTo1D
11451         m3DSlice0=m3D[:5]
11452         m3DSlice0.zipCoords()
11453         a,b,c,d,e=m3DSlice0.explode3DMeshTo1D()
11454         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,2,12,13,6,14,15,11,10,16,17,18,12,19,20,14,10,21,16,22,23,1,24,25,26,5,27,28,29,10,9,30,31,17,23,32,33,19,26,29,34,21,10])))
11455         self.assertTrue(c.isEqual(DataArrayInt([0,12,21,30,42,54])))
11456         self.assertTrue(d.isEqual(DataArrayInt([0,0,3,0,1,0,0,0,3,0,1,0,0,0,3,0,1,2,3,4,0,1,1,2,1,1,2,1,1,2,2,4,2,2,4,2,2,4,3,3,4,3,3,3,4,3,3,3,4,4,4,4,4,4])))
11457         self.assertTrue(e.isEqual(DataArrayInt([0,1,3,5,6,7,9,11,12,13,15,20,22,24,25,27,28,30,32,33,35,36,38,39,41,42,43,45,46,47,49,50,51,52,53,54])))
11458         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([2,0,3,18,2,3,4,19,2,4,1,20,2,1,0,21,2,9,12,22,2,12,13,23,2,13,10,24,2,10,9,25,2,0,9,26,2,3,12,27,2,4,13,28,2,1,10,29,2,4,2,30,2,2,1,31,2,13,11,32,2,11,10,33,2,2,11,34,2,4,5,35,2,5,2,36,2,13,14,37,2,14,11,38,2,5,14,39,2,6,7,40,2,7,4,41,2,3,6,42,2,15,16,43,2,16,13,44,2,12,15,45,2,6,15,46,2,7,16,47,2,7,8,48,2,8,5,49,2,16,17,50,2,17,14,51,2,8,17,52])))
11459         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([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,124,128,132,136,140])))
11460         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([-0.3,-0.3,0.0,0.2,-0.3,0.0,0.7,-0.3,0.0,-0.3,0.2,0.0,0.2,0.2,0.0,0.7,0.2,0.0,-0.3,0.7,0.0,0.2,0.7,0.0,0.7,0.7,0.0,-0.3,-0.3,1.0,0.2,-0.3,1.0,0.7,-0.3,1.0,-0.3,0.2,1.0,0.2,0.2,1.0,0.7,0.2,1.0,-0.3,0.7,1.0,0.2,0.7,1.0,0.7,0.7,1.0,-0.3,-0.05,0.0,-0.05,0.2,0.0,0.2,-0.05,0.0,-0.05,-0.3,0.0,-0.3,-0.05,1.0,-0.05,0.2,1.0,0.2,-0.05,1.0,-0.05,-0.3,1.0,-0.3,-0.3,0.5,-0.3,0.2,0.5,0.2,0.2,0.5,0.2,-0.3,0.5,0.45,-0.05,0.0,0.45,-0.3,0.0,0.45,-0.05,1.0,0.45,-0.3,1.0,0.7,-0.3,0.5,0.45,0.2,0.0,0.7,-0.05,0.0,0.45,0.2,1.0,0.7,-0.05,1.0,0.7,0.2,0.5,-0.05,0.7,0.0,0.2,0.45,0.0,-0.3,0.45,0.0,-0.05,0.7,1.0,0.2,0.45,1.0,-0.3,0.45,1.0,-0.3,0.7,0.5,0.2,0.7,0.5,0.45,0.7,0.0,0.7,0.45,0.0,0.45,0.7,1.0,0.7,0.45,1.0,0.7,0.7,0.5],53,3),1e-14))
11461         pass
11462
11463     def testSwig2DataArrayPushBackValsSilent1(self):
11464         d=DataArrayDouble()
11465         d.pushBackValsSilent([4,5,6])
11466         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.]),1e-14))
11467         e=DataArrayDouble([1,2,3],1,3)
11468         for t in e: d.pushBackValsSilent(t)
11469         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.]),1e-14))
11470         d.pushBackValsSilent(DataArrayDouble([9,10.]))
11471         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.]),1e-14))
11472         d.pushBackValsSilent(DataArrayDouble(0,1))
11473         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.]),1e-14))
11474         e=DataArrayDouble([1,2,3],3,1)
11475         for t in e: d.pushBackValsSilent(t)
11476         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.,1.,2.,3.]),1e-14))
11477         d.pushBackValsSilent(77)
11478         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.,1.,2.,3.,77.]),1e-14))
11479         #
11480         d=DataArrayInt()
11481         d.pushBackValsSilent([4,5,6])
11482         self.assertTrue(d.isEqual(DataArrayInt([4,5,6])))
11483         e=DataArrayInt([1,2,3],1,3)
11484         for t in e: d.pushBackValsSilent(t)
11485         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3])))
11486         d.pushBackValsSilent(DataArrayInt([9,10]))
11487         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10])))
11488         d.pushBackValsSilent(DataArrayInt(0,1))
11489         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10])))
11490         e=DataArrayInt([1,2,3],3,1)
11491         for t in e: d.pushBackValsSilent(t)
11492         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10,1,2,3])))
11493         d.pushBackValsSilent(77)
11494         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10,1,2,3,77])))
11495         pass
11496
11497     def testSwig2ConvertLinearCellsToQuadratic2(self):
11498         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11499         ret=m2D.convertLinearCellsToQuadratic(1)
11500         self.assertTrue(ret.isIdentity())
11501         self.assertEqual(5,len(ret))
11502         m2D.checkCoherency1()
11503         coordsExp=DataArrayDouble([-0.3,-0.3,0.2,-0.3,0.7,-0.3,-0.3,0.2,0.2,0.2,0.7,0.2,-0.3,0.7,0.2,0.7,0.7,0.7,-0.3,-0.05,-0.05,0.2,0.2,-0.05,-0.05,-0.3,0.45,-0.05,0.45,-0.3,0.45,0.2,0.7,-0.05,-0.05,0.7,0.2,0.45,-0.3,0.45,0.45,0.7,0.7,0.45,-0.05,-0.05,0.3666666666666667,-0.1333333333333333,0.5333333333333332,0.03333333333333334,-0.05,0.45,0.45,0.45],27,2)
11504         self.assertTrue(m2D.getCoords().isEqual(coordsExp,1e-14))
11505         self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([9,0,3,4,1,9,10,11,12,22,7,1,4,2,11,13,14,23,7,4,5,2,15,16,13,24,9,6,7,4,3,17,18,10,19,25,9,7,8,5,4,20,21,15,18,26])))
11506         self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,10,18,26,36,46])))
11507         #
11508         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()[(0,3)] ; m2D.zipCoords()
11509         m2D.changeSpaceDimension(3)
11510         arr=DataArrayDouble(3);  arr.iota(0) ; z=MEDCouplingCMesh() ; z.setCoords(arr)
11511         m1D=z.buildUnstructured() ; m1D.setCoords(arr.changeNbOfComponents(3,0.))
11512         m1D.getCoords()[:]=m1D.getCoords()[:,[1,2,0]]
11513         cooTmp=m2D.getCoords()[:]
11514         m3D=m2D.buildExtrudedMesh(m1D,0)
11515         ret=m3D.convertLinearCellsToQuadratic(1)
11516         self.assertTrue(ret.isIdentity())
11517         self.assertEqual(4,len(ret))
11518         m3D.checkCoherency1()
11519         coordsExp2=DataArrayDouble([-0.3,-0.3,0.0,0.2,-0.3,0.0,-0.3,0.2,0.0,0.2,0.2,0.0,-0.3,0.7,0.0,0.2,0.7,0.0,-0.3,-0.3,1.0,0.2,-0.3,1.0,-0.3,0.2,1.0,0.2,0.2,1.0,-0.3,0.7,1.0,0.2,0.7,1.0,-0.3,-0.3,2.0,0.2,-0.3,2.0,-0.3,0.2,2.0,0.2,0.2,2.0,-0.3,0.7,2.0,0.2,0.7,2.0,-0.3,-0.05,0.0,-0.05,0.2,0.0,0.2,-0.05,0.0,-0.05,-0.3,0.0,-0.3,-0.05,1.0,-0.05,0.2,1.0,0.2,-0.05,1.0,-0.05,-0.3,1.0,-0.3,-0.3,0.5,-0.3,0.2,0.5,0.2,0.2,0.5,0.2,-0.3,0.5,-0.05,0.7,0.0,0.2,0.45,0.0,-0.3,0.45,0.0,-0.05,0.7,1.0,0.2,0.45,1.0,-0.3,0.45,1.0,-0.3,0.7,0.5,0.2,0.7,0.5,-0.3,-0.05,2.0,-0.05,0.2,2.0,0.2,-0.05,2.0,-0.05,-0.3,2.0,-0.3,-0.3,1.5,-0.3,0.2,1.5,0.2,0.2,1.5,0.2,-0.3,1.5,-0.05,0.7,2.0,0.2,0.45,2.0,-0.3,0.45,2.0,-0.3,0.7,1.5,0.2,0.7,1.5,-0.05,-0.05,0.0,-0.3,-0.05,0.5,-0.05,0.2,0.5,0.2,-0.05,0.5,-0.05,-0.3,0.5,-0.05,-0.05,1.0,-0.05,0.45,0.0,-0.05,0.7,0.5,0.2,0.45,0.5,-0.3,0.45,0.5,-0.05,0.45,1.0,-0.3,-0.05,1.5,-0.05,0.2,1.5,0.2,-0.05,1.5,-0.05,-0.3,1.5,-0.05,-0.05,2.0,-0.05,0.7,1.5,0.2,0.45,1.5,-0.3,0.45,1.5,-0.05,0.45,2.0,-0.05,-0.05,0.5,-0.05,0.45,0.5,-0.05,-0.05,1.5,-0.05,0.45,1.5],75,3)
11520         self.assertTrue(m3D.getCoords().isEqual(coordsExp2,1e-14))
11521         self.assertTrue(m3D.getNodalConnectivity().isEqual(DataArrayInt([27,0,2,3,1,6,8,9,7,18,19,20,21,22,23,24,25,26,27,28,29,51,52,53,54,55,56,71,27,4,5,3,2,10,11,9,8,30,31,19,32,33,34,23,35,36,37,28,27,57,58,59,53,60,61,72,27,6,8,9,7,12,14,15,13,22,23,24,25,38,39,40,41,42,43,44,45,56,62,63,64,65,66,73,27,10,11,9,8,16,17,15,14,33,34,23,35,46,47,39,48,49,50,44,43,61,67,68,63,69,70,74])))
11522         self.assertTrue(m3D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,28,56,84,112])))
11523         pass
11524
11525     def testSwig2GaussNEIntegral1(self):
11526         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11527         m0=m2D[0] ; m0.zipCoords()
11528         m1=m2D[[1,2]] ; m1.zipCoords()
11529         m2=m2D[[3,4]] ; m2.zipCoords()
11530         m0.convertLinearCellsToQuadratic(1)
11531         m1.convertLinearCellsToQuadratic(0)
11532         m2.convertLinearCellsToQuadratic(1)
11533         m=MEDCouplingUMesh.MergeUMeshes([m0,m1,m2])
11534         m.mergeNodes(1e-12)
11535         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11536         f.setMesh(m)
11537         arr=DataArrayDouble([1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,
11538                              11.1,12.2,13.3,14.4,15.5,16.6,
11539                              21.1,22.2,23.3,24.4,25.5,26.6,
11540                              31.1,32.2,33.3,34.4,35.5,36.6,37.7,38.8,39.9,
11541                              41.1,42.2,43.3,44.4,45.5,46.6,47.7,48.8,49.9])
11542         arr2=DataArrayDouble(len(arr),2)
11543         arr2[:,0]=arr ; arr2[:,1]=arr+100
11544         f.setArray(arr2)
11545         f.checkCoherency()
11546         res=f.integral(False)
11547         # a=25./81 ; b=40./81 ; c=64./81
11548         # p1=0.11169079483905 ; p2=0.0549758718227661
11549         # 1st compo
11550         # c0=(a*(1.1+2.2+3.3+4.4)+b*(5.5+6.6+7.7+8.8)+c*9.9)*0.25/3.9999999999999978 ; c0=1.5837962962962973
11551         # c1=(p2*(11.1+12.2+13.3)+p1*(14.4+15.5+16.6))*0.125/0.4999999999854482 ; c1=1.8014347172346943
11552         # c2=(p2*(21.1+22.2+23.3)+p1*(24.4+25.5+26.6))*0.125/0.4999999999854482 ; c2=3.0514347172346943
11553         # c3=(a*(31.1+32.2+33.3+34.4)+b*(35.5+36.6+37.7+38.8)+c*39.9)*0.25/3.9999999999999978 ; c3=9.0837962962963
11554         # c4=(a*(41.1+42.2+43.3+44.4)+b*(45.5+46.6+47.7+48.8)+c*49.9)*0.25/3.9999999999999978 ; c4=11.583796296296303
11555         # c0+c1+c2+c3+c4=27.104258323358287
11556         integExp0=27.104258323358287
11557         self.assertAlmostEqual(res[0],integExp0,13)
11558         # 2nd compo
11559         # c0=(a*(101.1+102.2+103.3+104.4)+b*(105.5+106.6+107.7+108.8)+c*109.9)*0.25/3.9999999999999978 ; c0=26.58379629629631
11560         # c1=(p2*(111.1+112.2+113.3)+p1*(114.4+115.5+116.6))*0.125/0.4999999999854482 ; c1=14.301434717234699
11561         # c2=(p2*(121.1+122.2+123.3)+p1*(124.4+125.5+126.6))*0.125/0.4999999999854482 ; c2=15.5514347172347
11562         # c3=(a*(131.1+132.2+133.3+134.4)+b*(135.5+136.6+137.7+138.8)+c*139.9)*0.25/3.9999999999999978 ; c3=34.08379629629631
11563         # c4=(a*(141.1+142.2+143.3+144.4)+b*(145.5+146.6+147.7+148.8)+c*149.9)*0.25/3.9999999999999978 ; c4=36.58379629629632
11564         # c0+c1+c2+c3+c4=127.10425832335835
11565         integExp1=127.10425832335835
11566         self.assertAlmostEqual(res[1],integExp1,12)
11567         meas=f.getDiscretization().getMeasureField(f.getMesh(),False)
11568         intPerTuple=meas*f
11569         res2=intPerTuple.accumulate()
11570         self.assertAlmostEqual(res2[0],integExp0,13)
11571         self.assertAlmostEqual(res2[1],integExp1,12)
11572         #
11573         meas2=f.buildMeasureField(False)
11574         intPerTuple=meas2*f
11575         res3=intPerTuple.accumulate()
11576         self.assertAlmostEqual(res3[0],integExp0,13)
11577         self.assertAlmostEqual(res3[1],integExp1,12)
11578         #
11579         res4=f.getWeightedAverageValue(False) # res4==res2 because sum of area of mesh is equal to 1
11580         self.assertAlmostEqual(res4[0],integExp0,13)
11581         self.assertAlmostEqual(res4[1],integExp1,12)
11582         #
11583         m.scale([0,0],2.)
11584         #
11585         res5=f.getWeightedAverageValue() # res4==res4 because weighted average is not sensitive to the scaling
11586         self.assertAlmostEqual(res5[0],integExp0,13)
11587         self.assertAlmostEqual(res5[1],integExp1,12)
11588         meas3=f.buildMeasureField(False)
11589         delta=4*meas2.getArray()-meas3.getArray()
11590         delta.abs()
11591         self.assertTrue(delta.isUniform(0.,1e-16))
11592         res6=f.integral(False)
11593         self.assertAlmostEqual(res6[0],4.*integExp0,12)
11594         self.assertAlmostEqual(res6[1],4.*integExp1,11)
11595         pass
11596
11597     def testSwig2SlowDADFindClosestTupleId(self):
11598         nbPts=[10,]
11599         for nbPt in nbPts:
11600             d=DataArrayDouble(nbPt) ; d.iota() ; d*=1./(nbPt-1)
11601             c=MEDCouplingCMesh() ; c.setCoords(d,d) ; m=c.buildUnstructured() ; pts=m.getCoords() ; del m
11602             #
11603             d0=DataArrayDouble((nbPt-1)*(nbPt-1)) ; d0.iota() ; d0*=(3./((nbPt-1)*(nbPt-1))) ; d0=d0.applyFunc("exp(x)-1")
11604             d1=DataArrayDouble((nbPt-1)*(nbPt-1)) ; d1.iota()
11605             d2=DataArrayDouble.Meld(d0,d1) ; d2=d2.fromPolarToCart() ; d2+=[0.32,0.73]
11606             ids=pts.findClosestTupleId(d2)
11607             #print "Start of costly computation"
11608             idsExpected=DataArrayInt(len(d2))
11609             tmp=1e300
11610             for i,elt in enumerate(d2):
11611                 l,m=(pts-elt).magnitude().getMinValue()
11612                 idsExpected.setIJSilent(i,0,m)
11613                 if l<tmp:
11614                     tmp=l ; tmp1=m ; tmp2=i
11615                     pass
11616                 pass
11617             #print "End of costly computation"
11618             self.assertTrue(idsExpected.isEqual(ids))
11619             a,b,c=pts.minimalDistanceTo(d2)
11620             self.assertEqual(tmp,a)
11621             self.assertEqual(tmp1,b)
11622             self.assertEqual(tmp2,c)
11623             #
11624             l=[d2[:,i] for i in [0,1]]
11625             for elt in l: elt.reverse()
11626             d2i=DataArrayDouble.Meld(l)
11627             ids1=pts.findClosestTupleId(d2i)
11628             idsExpectedI=idsExpected.deepCpy() ; idsExpectedI.reverse()
11629             self.assertTrue(idsExpectedI.isEqual(ids1))
11630             #
11631             l=[pts[:,i] for i in [0,1]]
11632             for elt in l: elt.reverse()
11633             ptsi=DataArrayDouble.Meld(l)
11634             ids2=ptsi.findClosestTupleId(d2)
11635             idsExpected2=nbPt*nbPt-1-ids
11636             self.assertTrue(idsExpected2.isEqual(ids2))
11637             #
11638             ids3=ptsi.findClosestTupleId(d2i)
11639             idsExpected3=idsExpected2.deepCpy() ; idsExpected3.reverse()
11640             self.assertTrue(idsExpected3.isEqual(ids3))
11641             pass
11642
11643     def testSwig2DataArrayAsciiChar1(self):
11644         alpha=DataArrayInt(26) ; alpha.iota(ord("A"))
11645         d=DataArrayAsciiChar(alpha.getValues(),2,13)
11646         d.setInfoOnComponents(["c%i"%(v) for v in xrange(13)])
11647         self.assertEqual('ABCDEFGHIJKLM',d.getTuple(0))
11648         self.assertEqual('NOPQRSTUVWXYZ',d.getTuple(1))
11649         self.assertEqual(2,d.getNumberOfTuples())
11650         self.assertEqual(26,d.getNbOfElems())
11651         self.assertEqual(13,d.getNumberOfComponents())
11652         dd=d.deepCpy()
11653         self.assertTrue(d.isEqual(dd))
11654         dd.setIJ(0,3,'d')
11655         self.assertTrue(not d.isEqual(dd))
11656         d.setIJ(0,3,ord('d'))
11657         self.assertTrue(d.isEqual(dd))
11658         d.rearrange(1)
11659         d.reserve(20)
11660         self.assertEqual(20,d.getNumberOfTuples())
11661         self.assertEqual(20,d.getNbOfElems())
11662         self.assertEqual(1,d.getNumberOfComponents())
11663         #
11664         d0=DataArrayAsciiChar([ord('a')],1,1)
11665         self.assertEqual('a',d0.asciiCharValue())
11666         self.assertTrue(not d0.empty())
11667         d0=DataArrayAsciiChar(0,3)
11668         self.assertTrue(d0.empty())
11669         d.pushBackSilent("U") ; d.pushBackSilent("V") ; d.pushBackSilent("W")
11670         self.assertEqual("W",d.popBackSilent())
11671         d.rearrange(2)
11672         self.assertEqual(['AB','Cd','EF','GH','IJ','KL','MN','OP','QR','ST','UV'],d.toStrList())
11673         d.fillWithZero()
11674         self.assertEqual(11*[''],d.toStrList())
11675         d.fillWithValue('T')
11676         self.assertEqual(11*["TT"],d.toStrList())
11677         d.rearrange(1)
11678         self.assertTrue(d.isUniform("T"))
11679         d.rearrange(2)
11680         #
11681         dd.rearrange(2)
11682         dd2=dd.deepCpy()
11683         dd.renumberInPlace([3,1,2,4,0,11,10,9,8,7,5,12,6])
11684         self.assertEqual(dd.toStrList(),['IJ','Cd','EF','AB','GH','UV','YZ','ST','QR','OP','MN','KL','WX'])
11685         dd.renumberInPlaceR([3,1,2,4,0,11,10,9,8,7,5,12,6])
11686         self.assertEqual(['AB','Cd','EF','GH','IJ','KL','MN','OP','QR','ST','UV','WX','YZ'],dd.toStrList())
11687         e=dd.renumber([3,1,2,4,0,11,10,9,8,7,5,12,6])
11688         self.assertEqual(e.toStrList(),['IJ','Cd','EF','AB','GH','UV','YZ','ST','QR','OP','MN','KL','WX'])
11689         e=dd.renumberR([3,1,2,4,0,11,10,9,8,7,5,12,6])
11690         self.assertEqual(e.toStrList(),['GH','Cd','EF','IJ','AB','WX','UV','ST','QR','OP','KL','YZ','MN'])
11691         e=dd.renumberAndReduce([1,1,1,1,1,1,1,2,0,0,0,0,0],3)
11692         self.assertEqual(['YZ','MN','OP'],e.toStrList())
11693         self.assertEqual(['GH','IJ'],dd.selectByTupleIdSafe([3,4]).toStrList())
11694         self.assertEqual(['AB','GH','MN','ST','YZ'],dd.selectByTupleId2(0,13,3).toStrList())
11695         dd3=dd.changeNbOfComponents(3,"G")
11696         self.assertEqual(['ABG','CdG','EFG','GHG','IJG','KLG','MNG','OPG','QRG','STG','UVG','WXG','YZG'],dd3.toStrList())
11697         dd3.rearrange(1) ; self.assertEqual("G",dd3.back()) ; dd3.rearrange(3)
11698         self.assertTrue(dd3.changeNbOfComponents(2,"\0").isEqual(dd))
11699         self.assertEqual(len(dd),13)
11700         d=DataArrayAsciiChar(13,2) ; d.fillWithValue('Y')
11701         dd3.meldWith(d)
11702         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','KLGYY','MNGYY','OPGYY','QRGYY','STGYY','UVGYY','WXGYY','YZGYY'],dd3.toStrList())
11703         self.assertEqual("d",dd3.getIJ(0,6))
11704         self.assertRaises(InterpKernelException,dd3.getIJSafe,0,6)
11705         self.assertEqual("d",dd3.getIJSafe(1,1))
11706         dd3.rearrange(1)
11707         e=dd3.getIdsEqual("Y")
11708         self.assertTrue(e.isEqual(DataArrayInt([3,4,8,9,13,14,18,19,23,24,28,29,33,34,38,39,43,44,48,49,53,54,58,59,60,63,64])))
11709         e=dd3.getIdsNotEqual("Y")
11710         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,5,6,7,10,11,12,15,16,17,20,21,22,25,26,27,30,31,32,35,36,37,40,41,42,45,46,47,50,51,52,55,56,57,61,62])))
11711         self.assertEqual(("d",6),dd3.getMaxValue())
11712         self.assertEqual(("A",0),dd3.getMinValue())
11713         self.assertEqual(26,dd3.search("LGYYM"))
11714         self.assertEqual(-1,dd3.search("LGYYN"))
11715         dd3.rearrange(5)
11716         self.assertEqual(7,dd3.locateTuple("OPGYY"))
11717         self.assertTrue("OPGYY" in dd3)
11718         self.assertEqual(7,dd3.index("OPGYY"))
11719         self.assertEqual(-1,dd3.locateTuple("OPGYP"))
11720         dd3.rearrange(1)
11721         self.assertEqual(2,dd3.locateValue("OPGYY"))
11722         self.assertTrue(dd3.presenceOfValue("OPGYY"))
11723         self.assertTrue("O" in dd3)
11724         self.assertTrue(not dd3.presenceOfValue("z"))
11725         self.assertTrue("z" not in dd3)
11726         dd3.rearrange(5)
11727         l=list(dd3)
11728         self.assertEqual([e.buildDAAsciiChar().toStrList()[0] for e in list(dd3)],dd3.toStrList())
11729         dd3.reAlloc(5)
11730         dd4=DataArrayChar.Aggregate(dd3,dd3)
11731         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY'],dd4.toStrList())
11732         dd5=DataArrayChar.Aggregate([dd4,dd3,dd4])
11733         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY'],dd5.toStrList())
11734         # getitem,__iter__,__setitem__
11735         a=list(dd3)
11736         self.assertEqual("ABGYY",str(a[0]))
11737         dd4=dd3[::2]
11738         self.assertEqual(['ABGYY','EFGYY','IJGYY'],dd4.toStrList())
11739         dd4=dd3[(3,2,1)]
11740         self.assertEqual(['GHGYY','EFGYY','CdGYY'],dd4.toStrList())
11741         dd4=dd3[:]
11742         dd4[::2]=["12","345","67890"]
11743         self.assertEqual(['12   ','CdGYY','345  ','GHGYY','67890'],dd4.toStrList())
11744         dd4=dd3[:]
11745         dd4[[1,2]]=" "
11746         self.assertEqual(['ABGYY','     ','     ','GHGYY','IJGYY'],dd4.toStrList())
11747         dd4=dd3[:]
11748         dd4[4]='12345'
11749         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','12345'],dd4.toStrList())
11750         dd4[0]=dd4[1]
11751         self.assertEqual(['CdGYY','CdGYY','EFGYY','GHGYY','12345'],dd4.toStrList())
11752         dd4=DataArrayAsciiChar(["abc","de","fghi"])
11753         self.assertEqual(['abc ','de  ','fghi'],dd4.toStrList())
11754         dd4=DataArrayAsciiChar(["abc","de","fghi"],"t")
11755         self.assertEqual(['abct','dett','fghi'],dd4.toStrList())
11756         pass
11757
11758     def testSwig2GaussNELocalizationOfDiscValues(self):
11759         m=MEDCouplingDataForTest.build2DTargetMesh_3()[[0,1,3,4,5,6,8,9]] # suppression of polygons
11760         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11761         f.setMesh(m)
11762         loc=f.getLocalizationOfDiscr()
11763         self.assertEqual(42,len(loc))
11764         self.assertTrue(loc.isEqual(DataArrayDouble([0.,0.,1.,0.,0.5,1.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,1.,0.,0.5,1.,0.5,0.,0.75,0.5,0.25,0.5,0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5,0.,0.,0.5,1.,1.,0.,0.,0.,0.,1.,1.,1.,1.,0.,0.,0.,0.5,1.,1.,0.,0.25,0.5,0.75,0.5,0.5,0.,0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],42,2),1e-13))
11765         m.changeSpaceDimension(3)
11766         m.getCoords()[:,2]=7.
11767         loc=f.getLocalizationOfDiscr()
11768         self.assertEqual(42,len(loc))
11769         self.assertTrue(loc.isEqual(DataArrayDouble([0.,0.,7.,1.,0.,7.,0.5,1.,7.,0.,0.,7.,1.,0.,7.,1.,1.,7.,0.,1.,7.,0.,0.,7.,1.,0.,7.,0.5,1.,7.,0.5,0.,7.,0.75,0.5,7.,0.25,0.5,7.,0.,0.,7.,1.,0.,7.,1.,1.,7.,0.,1.,7.,0.5,0.,7.,1.,0.5,7.,0.5,1.,7.,0.,0.5,7.,0.,0.,7.,0.5,1.,7.,1.,0.,7.,0.,0.,7.,0.,1.,7.,1.,1.,7.,1.,0.,7.,0.,0.,7.,0.5,1.,7.,1.,0.,7.,0.25,0.5,7.,0.75,0.5,7.,0.5,0.,7.,0.,0.,7.,0.,1.,7.,1.,1.,7.,1.,0.,7.,0.,0.5,7.,0.5,1.,7.,1.,0.5,7.,0.5,0.,7.],42,3),1e-13))
11770         pass
11771
11772     def testSwig2GaussMeasureAndIntegral(self):
11773         ft=MEDCouplingDataForTest.buildFieldOnGauss_1()
11774         mea=ft.buildMeasureField(False)
11775         mea.checkCoherency()
11776         self.assertTrue(mea.getArray().isEqual(DataArrayDouble([-0.08504076274779823,-0.06378057206084897,-0.08504076274779869,-0.10630095343474463,-0.12756114412169625,-0.10630095343474734,-0.0637805720608491,-0.0850407627477968,-0.1063009534347449,-0.0850407627477994,-0.10630095343474809,-0.1275611441216954,-0.037205333702161475,-0.037205333702161475,-0.037205333702161475,-0.037205333702161475,-0.047835429045636084,-0.047835429045636084,-0.047835429045636084,-0.047835429045636084,-0.05846552438911087,-0.05846552438911087,-0.05846552438911087,-0.05846552438911087,-0.037205333702161725,-0.037205333702161725,-0.037205333702161725,-0.037205333702161725,-0.047835429045635834,-0.047835429045635834,-0.047835429045635834,-0.047835429045635834,-0.05846552438911058,-0.05846552438911058,-0.05846552438911058,-0.05846552438911058,-0.03879154890291829,-0.03879154890291829,-0.03879154890291829,-0.04120270848015563,-0.04120270848015563,-0.04120270848015563,-0.03393028948486933,-0.03393028948486933,-0.03393028948486933,-0.03151955746491709,-0.03151955746491709,-0.03151955746491709,-0.02424752187358276,-0.02424752187358276,-0.02424752187358276,-0.026657914642918758,-0.026657914642918758,-0.026657914642918758,-0.04120270848015456,-0.04120270848015456,-0.04120270848015456,-0.03879154890291757,-0.03879154890291757,-0.03879154890291757,-0.031519557464916595,-0.031519557464916595,-0.031519557464916595,-0.03393028948487046,-0.03393028948487046,-0.03393028948487046,-0.0266579146429191,-0.0266579146429191,-0.0266579146429191,-0.024247521873582645,-0.024247521873582645,-0.024247521873582645,-0.01851718920904466,-0.01851718920904466,-0.01851718920904466,-0.01851718920904466,-0.029627502734471456,-0.029627502734471456,-0.029627502734471456,-0.029627502734471456,-0.04740400437515433,-0.015150427534672922,-0.015150427534672922,-0.015150427534672922,-0.015150427534672922,-0.024240684055476674,-0.024240684055476674,-0.024240684055476674,-0.024240684055476674,-0.038785094488762675,-0.011783665860301345,-0.011783665860301345,-0.011783665860301345,-0.011783665860301345,-0.018853865376482152,-0.018853865376482152,-0.018853865376482152,-0.018853865376482152,-0.030166184602371443,-0.018517189209044892,-0.018517189209044892,-0.018517189209044892,-0.018517189209044892,-0.029627502734471827,-0.029627502734471827,-0.029627502734471827,-0.029627502734471827,-0.04740400437515492,-0.015150427534672776,-0.015150427534672776,-0.015150427534672776,-0.015150427534672776,-0.02424068405547644,-0.02424068405547644,-0.02424068405547644,-0.02424068405547644,-0.03878509448876231,-0.011783665860301277,-0.011783665860301277,-0.011783665860301277,-0.011783665860301277,-0.01885386537648204,-0.01885386537648204,-0.01885386537648204,-0.01885386537648204,-0.030166184602371266]),1e-14))
11777         f=MEDCouplingFieldDouble(ft)
11778         arr=DataArrayDouble(126,2)
11779         arr[:,0]=range(126)
11780         arr[:,1]=range(126)
11781         arr[:,1]+=1000
11782         f.setArray(arr)
11783         f.checkCoherency()
11784         self.assertTrue(DataArrayDouble(f.integral(False)).isEqual(DataArrayDouble([-211.66121638700983,-4863.9563007698835]),1e-11))
11785         self.assertTrue(DataArrayDouble(f.getWeightedAverageValue()).isEqual(DataArrayDouble([45.496085813113595,1045.496085813114]),1e-11))
11786         self.assertTrue(DataArrayDouble(f.normL1()).isEqual(DataArrayDouble([45.49608581311362,1045.496085813114]),1e-11))
11787         self.assertTrue(DataArrayDouble(f.normL2()).isEqual(DataArrayDouble([58.16846378340898,1046.1241521947334]),1e-11))
11788         pass
11789
11790     def testSwig2FieldDiscretizationComputeMeshRestrictionFromTupleIds1(self):
11791         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1()
11792         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11793         f.setMesh(m)
11794         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[3,4,5,6,8,9,10,14,15,16,17])
11795         self.assertTrue(a.isEqual(DataArrayInt([1,4])))
11796         self.assertTrue(b.isEqual(DataArrayInt([4,5,6,14,15,16,17])))
11797         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),DataArrayInt([0,1,2,3,5,7,8,9,10,11,12,18]))
11798         self.assertTrue(a.isEqual(DataArrayInt([0,2])))
11799         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,7,8,9])))
11800         #
11801         f=MEDCouplingFieldDouble(ON_CELLS)
11802         f.setMesh(m)
11803         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[3,4])
11804         self.assertTrue(a.isEqual(DataArrayInt([3,4])))
11805         self.assertTrue(b.isEqual(DataArrayInt([3,4])))
11806         #
11807         f=MEDCouplingFieldDouble(ON_NODES)
11808         f.setMesh(m)
11809         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[1,2,3,4])
11810         self.assertTrue(a.isEqual(DataArrayInt([1])))
11811         self.assertTrue(b.isEqual(DataArrayInt([1,2,4])))
11812         #
11813         f=MEDCouplingDataForTest.buildFieldOnGauss_1()
11814         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[0,11,12,13,14,15,17,18,19,36,37,38,115,117,118,119,120,121,122,123,124,125])
11815         self.assertTrue(a.isEqual(DataArrayInt([0,11,12,18,35])))
11816         self.assertTrue(b.isEqual(DataArrayInt([0,11,12,13,14,15,36,37,38,117,118,119,120,121,122,123,124,125])))
11817         #
11818         d=DataArrayInt([0,3,7,9,15,18])
11819         e=DataArrayInt([0,1,2,3,7,8,15,16,17])
11820         a,b=d.searchRangesInListOfIds(e)
11821         self.assertTrue(a.isEqual(DataArrayInt([0,2,4])))
11822         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,7,8,15,16,17])))
11823         pass
11824     
11825     def testSwig2BigMem(self):
11826         if MEDCouplingSizeOfVoidStar()==64:
11827             d=DataArrayAsciiChar(223456789,16)
11828             self.assertTrue(d.getNumberOfTuples(),223456789)
11829             self.assertTrue(d.getNumberOfComponents(),16)
11830             d.setIJ(223456788,5,"r")
11831             self.assertTrue(d.getIJ(223456788,5),'r')
11832             d[223456787]="1234567890123456"
11833             self.assertTrue(d[223456787],'1234567890123456')
11834             self.assertRaises(InterpKernelException,d.rearrange,1)# fails because it would lead to nb of tuples > 2147483647
11835             pass
11836         pass
11837
11838     def testSwig2DAReverseMultiCompo1(self):
11839         d=DataArrayDouble(6,2)
11840         d[:,0]=range(6)
11841         d[:,1]=range(10,16)
11842         d.reverse()
11843         self.assertTrue(d.isEqual(DataArrayDouble([5.,15.,4.,14.,3.,13.,2.,12.,1.,11.,0.,10.],6,2),1e-14))
11844         d=DataArrayDouble(7,2)
11845         d[:,0]=range(7)
11846         d[:,1]=range(10,17)
11847         d.reverse()
11848         self.assertTrue(d.isEqual(DataArrayDouble([6.,16.,5.,15.,4.,14.,3.,13.,2.,12.,1.,11.,0.,10.],7,2),1e-14))
11849         #
11850         d=DataArrayInt(6,2)
11851         d[:,0]=range(6)
11852         d[:,1]=range(10,16)
11853         d.reverse()
11854         self.assertTrue(d.isEqual(DataArrayInt([5,15,4,14,3,13,2,12,1,11,0,10],6,2)))
11855         d=DataArrayInt(7,2)
11856         d[:,0]=range(7)
11857         d[:,1]=range(10,17)
11858         d.reverse()
11859         self.assertTrue(d.isEqual(DataArrayInt([6,16,5,15,4,14,3,13,2,12,1,11,0,10],7,2)))
11860         pass
11861
11862     def testSwigDAPow1(self):
11863         d=DataArrayInt(10)
11864         d.iota(0)
11865         d1=d.deepCpy()
11866         d.setIJ(2,0,-2)
11867         self.assertTrue((d**2).isEqual(DataArrayInt([0,1,4,9,16,25,36,49,64,81])))
11868         self.assertTrue((d**3).isEqual(DataArrayInt([0,1,-8,27,64,125,216,343,512,729])))
11869         for elt in [d]:
11870             elt**=2
11871             pass
11872         self.assertTrue(d.isEqual(DataArrayInt([0,1,4,9,16,25,36,49,64,81])))
11873         self.assertTrue((d1[:4]**d1[:4]).isEqual(DataArrayInt([1,1,4,27])))
11874         self.assertTrue((3**d1[:4]).isEqual(DataArrayInt([1,3,9,27])))
11875         d2=d1[:4]
11876         d2**=d2
11877         self.assertTrue(d2.isEqual(DataArrayInt([1,1,4,27])))
11878         self.assertRaises(InterpKernelException,d2.__pow__,-1)#non supporting negative pow in DataArrayInt.__pow__
11879         self.assertRaises(InterpKernelException,d2.__ipow__,-1)#non supporting negative pow in DataArrayInt.__pow__
11880         #
11881         d=DataArrayDouble(10)
11882         d.iota(0)
11883         d1=d.deepCpy()
11884         d.setIJ(2,0,-2.)
11885         self.assertTrue((d**2).isEqual(DataArrayDouble([0,1,4,9,16,25,36,49,64,81]),1e-12))
11886         self.assertTrue((d**3).isEqual(DataArrayDouble([0,1,-8,27,64,125,216,343,512,729]),1e-12))
11887         self.assertRaises(InterpKernelException,d.__pow__,3.1)#3.1 is double not integer -> not supporting negative values in d
11888         for elt in [d]:
11889             elt**=2
11890             pass
11891         self.assertTrue(d.isEqual(DataArrayDouble([0,1,4,9,16,25,36,49,64,81]),1e-12))
11892         self.assertTrue((d1[:4]**d1[:4]).isEqual(DataArrayDouble([1,1,4,27]),1e-12))
11893         self.assertTrue((3**d1[:4]).isEqual(DataArrayDouble([1,3,9,27]),1e-12))
11894         d2=d1[:4]
11895         d2**=d2
11896         self.assertTrue(d2.isEqual(DataArrayDouble([1,1,4,27]),1e-12))
11897         d2**=-0.5
11898         self.assertTrue(d2.isEqual(DataArrayDouble([1,1,1./2,1./sqrt(27.)]),1e-14))
11899         d3=-1./d1[1:5]
11900         self.assertTrue((3**d3).isEqual(DataArrayDouble([0.3333333333333333,0.5773502691896257,0.6933612743506348,0.7598356856515925]),1e-14))
11901         d4=d3.deepCpy() ; d4.abs()
11902         self.assertTrue((d4**d3).isEqual(DataArrayDouble([1.,sqrt(2.),1.4422495703074083,sqrt(2.)]),1e-14))
11903         d4**=d3
11904         self.assertTrue(d4.isEqual(DataArrayDouble([1.,sqrt(2.),1.4422495703074083,sqrt(2.)]),1e-14))
11905         pass
11906     
11907     def testSwig2Baryenter3DForCellsWithVolumeZero1(self):
11908         coo=DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.],3,3)
11909         m2=MEDCouplingUMesh("mesh",2)
11910         m2.allocateCells(0)
11911         m2.insertNextCell(NORM_POLYGON,[0,1,2])
11912         m2.setCoords(coo)
11913         m2.checkCoherency1()
11914         #
11915         coo2=DataArrayDouble([0.,0.,0.,0.,0.,0.,0.,0.,2.],3,3)
11916         m1=MEDCouplingUMesh("mesh",1)
11917         m1.allocateCells(0)
11918         m1.insertNextCell(NORM_SEG2,[0,1])
11919         m1.insertNextCell(NORM_SEG2,[1,2])
11920         m1.setCoords(coo2)
11921         m1.checkCoherency1()
11922         #
11923         m3=m2.buildExtrudedMesh(m1,0)
11924         m3.insertNextCell(NORM_POLYHED,[3,4,5,-1,8,7,6,-1,4,3,6,7,-1,5,4,7,8,-1,5,4,-1,3,5,8,6])# addition of face #4 with null surface
11925         self.assertTrue(m3.getBarycenterAndOwner().isEqual(DataArrayDouble([0.3333333333333333,0.3333333333333333,0.,0.3333333333333333,0.3333333333333333,1.,0.3333333333333333,0.3333333333333333,1.],3,3),1e-13))
11926         m4,a,b,c,d=m3.buildDescendingConnectivity()
11927         self.assertTrue(m4.getBarycenterAndOwner().isEqual(DataArrayDouble([0.3333333333333333,0.3333333333333333,0.,0.3333333333333333,0.3333333333333333,0.,0.5,0.,0.,0.5,0.5,0.,0.,0.5,0.,0.3333333333333333,0.3333333333333333,2.,0.5,0.,1.,0.5,0.5,1.,0.,0.5,1.,0.5,0.5,0.],10,3),1e-13))
11928         pass
11929
11930     def testSwigRepr1(self):
11931         d=DataArrayDouble()
11932         self.assertTrue(len(d.__repr__())<120)
11933         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11934         for i in xrange(100):
11935             d.alloc(i,1) ; d.iota(1.1234567890123456) ; d*=1e123
11936             self.assertTrue(len(d.__repr__())<500)
11937             pass
11938         for i in xrange(50):
11939             d.alloc(i,2) ; d.rearrange(1) ; d.iota(1.1234567890123456) ; d.rearrange(2) ; d*=1e123
11940             self.assertTrue(len(d.__repr__())<500)
11941             pass
11942         d.alloc(4000,1) ; d.iota() ; self.assertTrue(len(d.__repr__())<500)
11943         for i in xrange(2,4):
11944             d.alloc(362880,1) ; d.iota() ; d.rearrange(i) ; self.assertTrue(len(d.__repr__())<500)
11945             pass
11946         d.alloc(0,9)
11947         self.assertTrue(len(d.__repr__())<120)
11948         #
11949         d=DataArrayInt()
11950         self.assertTrue(len(d.__repr__())<100)
11951         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11952         for i in xrange(100):
11953             d.alloc(i,1) ; d.iota(123456789)
11954             self.assertTrue(len(d.__repr__())<500)
11955             pass
11956         for i in xrange(50):
11957             d.alloc(i,2) ; d.rearrange(1) ; d.iota(123456789) ; d.rearrange(2)
11958             self.assertTrue(len(d.__repr__())<500)
11959             pass
11960         d.alloc(4000,1) ; d.iota() ; self.assertTrue(len(d.__repr__())<500)
11961         for i in xrange(2,10):
11962             d.alloc(362880,1) ; d.iota() ; d.rearrange(i) ; self.assertTrue(len(d.__repr__())<500)
11963             pass
11964         d.alloc(0,9)
11965         self.assertTrue(len(d.__repr__())<100)
11966         #
11967         d=DataArrayAsciiChar()
11968         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11969         d.alloc(2,16) ; d[:]='1234567890ABCDEF'
11970         self.assertTrue(len(d.__repr__())<500)
11971         d.alloc(2000,16) ; d[:]='1234567890ABCDEF'
11972         self.assertTrue(len(d.__repr__())<500)
11973         d.alloc(0,16) ; d[:]='1234567890ABCDEF'
11974         self.assertTrue(len(d.__repr__())<120)
11975         #
11976         d=DataArrayByte()
11977         self.assertTrue(len(d.__repr__())<100)
11978         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11979         d.alloc(0,16) ; self.assertTrue(len(d.__repr__())<100)
11980         d.alloc(5,1) ; d.fillWithValue(127)
11981         self.assertTrue(len(d.__repr__())<200)
11982         d.alloc(1000,1) ; d.fillWithValue(127)
11983         self.assertTrue(len(d.__repr__())<500)
11984         d.alloc(1000,3) ; d.fillWithValue(127)
11985         self.assertTrue(len(d.__repr__())<500)
11986         pass
11987     
11988     def testSwig2MeshComputeIsoBarycenterOfNodesPerCell1(self):
11989         coo=DataArrayDouble([26.17509821414239,5.0374,200.,26.175098214142388,-5.0374,200.,17.450065476094927,20.1496,200.,8.725032738047464,25.187,200.,43.62516369023732,5.0374,200.,34.90013095218986,10.0748,200.,34.900130952189855,-10.0748,200.,43.625163690237315,-5.0374,200.,26.175098214142402,25.187,200.,26.175098214142395,35.2618,200.,17.45006547609493,40.2992,200.,8.725032738047469,35.2618,200.,26.17509821414239,5.0374,200.,26.175098214142388,-5.0374,200.,17.450065476094927,20.1496,200.,8.725032738047464,25.187,200.,43.62516369023732,5.0374,200.,34.90013095218986,10.0748,200.,34.900130952189855,-10.0748,200.,43.625163690237315,-5.0374,200.,26.175098214142402,25.187,200.,26.175098214142395,35.2618,200.,17.45006547609493,40.2992,200.,8.725032738047469,35.2618,200.],24,3)
11990         m=MEDCouplingUMesh.New("toto",3)
11991         m.allocateCells(0)
11992         m.insertNextCell(NORM_POLYHED,[4,5,0,1,6,7,-1,19,18,13,12,17,16,-1,5,4,16,17,-1,0,5,17,12,-1,1,0,12,13,-1,6,1,13,18,-1,7,6,18,19,-1,4,7,19,16])
11993         m.insertNextCell(NORM_POLYHED,[9,10,11,3,2,8,-1,20,14,15,23,22,21,-1,10,9,21,22,-1,11,10,22,23,-1,3,11,23,15,-1,2,3,15,14,-1,8,2,14,20,-1,9,8,20,21])
11994         m.setCoords(coo)
11995         m.checkCoherency1()
11996         #
11997         dReference=DataArrayDouble([(34.900130952189848,0.,200),(17.450065476094931,30.2244,200.)])
11998         self.assertTrue(m.computeIsoBarycenterOfNodesPerCell().isEqual(dReference,1e-12))
11999         m.getNodalConnectivity().setIJ(87,0,24)
12000         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12001         m.getNodalConnectivity().setIJ(87,0,-2)
12002         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12003         m.getNodalConnectivity().setIJ(87,0,21)# put again 21 as at the beginning
12004         #
12005         self.assertTrue(m.unPolyze())
12006         self.assertEqual([NORM_HEXGP12],m.getAllGeoTypes())
12007         self.assertTrue(m.computeIsoBarycenterOfNodesPerCell().isEqual(dReference,1e-12))
12008         m.getNodalConnectivity().setIJ(25,0,24)
12009         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12010         m.getNodalConnectivity().setIJ(25,0,-1)
12011         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12012         pass
12013
12014     def testSwig2NonRegressionBugDescHexa20(self):
12015         coo=DataArrayDouble([0.,0.,0.,1.23,0.,0.,0.615,0.,0.,0.,2.1,0.,0.615,2.1,0.,1.23,2.1,0.,1.23,1.05,0.,0.,1.05,0.,0.,0.,2.16,1.23,0.,2.16,1.23,2.1,2.16,0.,2.1,2.16,0.,0.,4.32,0.615,0.,4.32,1.23,0.,4.32,1.23,1.05,4.32,1.23,2.1,4.32,0.615,2.1,4.32,0.,2.1,4.32,0.,1.05,4.32],20,3)
12016         m=MEDCouplingUMesh('mesh',3)
12017         m.allocateCells(0)
12018         m.insertNextCell(NORM_HEXA20,[0,3,5,1,12,18,16,14,7,4,6,2,19,17,15,13,8,11,10,9])
12019         m.setCoords(coo)
12020         m.checkCoherency1()
12021         #
12022         a,b,c,d,e=m.buildDescendingConnectivity()
12023         m2=MEDCouplingUMesh('mesh',2)
12024         m2.allocateCells(0)
12025         m2.setCoords(coo)
12026         conn2=[[0,3,5,1,7,4,6,2],[12,14,16,18,13,15,17,19],[0,12,18,3,8,19,11,7],[3,18,16,5,11,17,10,4],[5,16,14,1,10,15,9,6],[1,14,12,0,9,13,8,2]]
12027         for i in xrange(6):
12028             m2.insertNextCell(NORM_QUAD8,conn2[i])
12029             pass
12030         self.assertTrue(m2.isEqual(a,1e-12))
12031         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5])))
12032         self.assertTrue(c.isEqual(DataArrayInt([0,6])))
12033         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0])))
12034         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
12035         #
12036         m.convertQuadraticCellsToLinear() ; m.zipCoords()
12037         m.convertLinearCellsToQuadratic(1)
12038         #
12039         coo2=DataArrayDouble([0.,0.,0.,1.23,0.,0.,0.,2.1,0.,1.23,2.1,0.,0.,0.,4.32,1.23,0.,4.32,1.23,2.1,4.32,0.,2.1,4.32,0.,1.05,0.,0.615,2.1,0.,1.23,1.05,0.,0.615,0.,0.,0.,1.05,4.32,0.615,2.1,4.32,1.23,1.05,4.32,0.615,0.,4.32,0.,0.,2.16,0.,2.1,2.16,1.23,2.1,2.16,1.23,0.,2.16,0.615,1.05,0.,0.,1.05,2.16,0.615,2.1,2.16,1.23,1.05,2.16,0.615,0.,2.16,0.615,1.05,4.32,0.615,1.05,2.16],27,3)
12040         m3=MEDCouplingUMesh("mesh",3)
12041         m3.allocateCells(1)
12042         m3.insertNextCell(NORM_HEXA27,[0,2,3,1,4,7,6,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])
12043         m3.setCoords(coo2)
12044         self.assertTrue(m3.isEqual(m,1e-12))
12045         #
12046         a,b,c,d,e=m.buildDescendingConnectivity()
12047         conn4=[[0,2,3,1,8,9,10,11,20],[4,5,6,7,15,14,13,12,25],[0,4,7,2,16,12,17,8,21],[2,7,6,3,17,13,18,9,22],[3,6,5,1,18,14,19,10,23],[1,5,4,0,19,15,16,11,24]]
12048         m4=MEDCouplingUMesh("mesh",2)
12049         m4.allocateCells(0)
12050         for i in xrange(6):
12051             m4.insertNextCell(NORM_QUAD9,conn4[i])
12052             pass
12053         m4.setCoords(coo2)
12054         self.assertTrue(m4.isEqual(a,1e-12))
12055         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5])))
12056         self.assertTrue(c.isEqual(DataArrayInt([0,6])))
12057         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0])))
12058         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
12059         pass
12060     
12061     def testSwigAdvGauss(self):
12062         f=MEDCouplingFieldTemplate(ON_GAUSS_PT)
12063         f.setDiscretization(None)
12064         f.__repr__() ; f.__str__()
12065         #
12066         f=MEDCouplingFieldTemplate(ON_GAUSS_PT)
12067         d=f.getDiscretization()
12068         i=DataArrayInt() ; i.alloc(10,1) ; i.iota(1)
12069         d.setArrayOfDiscIds(i)
12070         f.__repr__() ; f.__str__()
12071         i2=d.getArrayOfDiscIds()
12072         self.assertEqual(i.__repr__(),i2.__repr__())
12073         #
12074         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12075         f.setDiscretization(None)
12076         f.__repr__() ; f.__str__()
12077         #
12078         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12079         d=f.getDiscretization()
12080         i=DataArrayInt() ; i.alloc(10,1) ; i.iota(1)
12081         d.setArrayOfDiscIds(i)
12082         f.__repr__() ; f.__str__()
12083         #
12084         gl=MEDCouplingGaussLocalization(NORM_SEG2,[0,1],[0.5],[1.])
12085         gl.setWeights([3.])
12086         gl.__repr__() ; gl.__str__()
12087         gl=MEDCouplingGaussLocalization(NORM_ERROR)
12088         gl.setWeights([3.])
12089         gl.__repr__() ; gl.__str__()
12090         pass
12091
12092     def testSwig2NonRegressionBugSubstractInPlaceDM(self):
12093         m0=MEDCouplingCMesh()
12094         arr=DataArrayDouble(5,1) ; arr.iota(0.)
12095         m0.setCoords(arr,arr)
12096         m0=m0.buildUnstructured()
12097         m00=m0[::2] ; m00.simplexize(0) ; m01=m0[1::2]
12098         m0=MEDCouplingUMesh.MergeUMeshes([m00,m01])
12099         m0.getCoords()[:]*=1/4.
12100         m0.setName("mesh")
12101         #
12102         NodeField=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; NodeField.setTime(5.6,5,6) ; NodeField.setMesh(m0)
12103         NodeField.setName("NodeField")
12104         NodeField.fillFromAnalytic(1,"exp(-((x-1)*(x-1)+(y-1)*(y-1)))") ; NodeField.getArray().setInfoOnComponent(0,"powernode [W]")
12105         proc0=m0.getCellsInBoundingBox([(0.,0.4),(0.,0.4)],1e-10)
12106         proc1=proc0.buildComplement(m0.getNumberOfCells())
12107         #
12108         NodeField0=NodeField[proc0] ; NodeField0.getMesh().setName(m0.getName())
12109         NodeField1=NodeField[proc1] ; NodeField1.getMesh().setName(m0.getName())
12110         #
12111         NodeField_read=MEDCouplingFieldDouble.MergeFields([NodeField0,NodeField1])
12112         NodeField_read.mergeNodes(1e-10)
12113         NodeFieldCpy=NodeField.deepCpy()
12114         NodeFieldCpy.mergeNodes(1e-10)
12115         NodeField.checkCoherency()
12116         self.assertTrue(not NodeField.getArray().isUniform(0.,1e-12))
12117         NodeField.substractInPlaceDM(NodeField_read,10,1e-12)
12118         self.assertTrue(NodeField.getArray().isUniform(0.,1e-12))
12119         pass
12120
12121     def testSwigFieldOperationOpen1(self):
12122         ## MEDCouplingFieldDouble.__add__
12123         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12124         f=MEDCouplingFieldDouble(ON_CELLS)
12125         f.setMesh(m)
12126         arr=DataArrayDouble(5,2)
12127         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12128         f2=f.clone(True)
12129         self.assertRaises(InterpKernelException,f.__add__,2)
12130         self.assertRaises(InterpKernelException,f.__add__,range(5))
12131         self.assertRaises(InterpKernelException,f.__add__,arr)
12132         self.assertRaises(InterpKernelException,f.__add__,f2)
12133         f.setArray(DataArrayDouble())
12134         self.assertRaises(InterpKernelException,f.__add__,2)
12135         self.assertRaises(InterpKernelException,f.__add__,range(5))
12136         self.assertRaises(InterpKernelException,f.__add__,arr)
12137         self.assertRaises(InterpKernelException,f.__add__,f2)
12138         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12139         f.getArray().alloc(5,2)
12140         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12141         ff=f+2
12142         ff.checkCoherency()
12143         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12144         ff=f+arr
12145         ff.checkCoherency()
12146         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12147         self.assertRaises(InterpKernelException,f.__add__,f2)
12148         f2.setArray(arr)
12149         ff=f+f2
12150         ff.checkCoherency()
12151         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12152         ff=f+[5,8]
12153         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(5,15),(6,16),(7,17),(8,18),(9,19)]),1e-12))
12154         ### MEDCouplingFieldDouble.__sub__
12155         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12156         f=MEDCouplingFieldDouble(ON_CELLS)
12157         f.setMesh(m)
12158         arr=DataArrayDouble(5,2)
12159         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12160         f2=f.clone(True)
12161         self.assertRaises(InterpKernelException,f.__sub__,2)
12162         self.assertRaises(InterpKernelException,f.__sub__,range(5))
12163         self.assertRaises(InterpKernelException,f.__sub__,arr)
12164         self.assertRaises(InterpKernelException,f.__sub__,f2)
12165         f.setArray(DataArrayDouble())
12166         self.assertRaises(InterpKernelException,f.__sub__,2)
12167         self.assertRaises(InterpKernelException,f.__sub__,range(5))
12168         self.assertRaises(InterpKernelException,f.__sub__,arr)
12169         self.assertRaises(InterpKernelException,f.__sub__,f2)
12170         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12171         f.getArray().alloc(5,2)
12172         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12173         ff=f-2
12174         ff.checkCoherency()
12175         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(-2,5),(-1,6),(0,7),(1,8),(2,9)]),1e-12))
12176         ff=f-arr
12177         ff.checkCoherency()
12178         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(0,6),(0,5),(0,4),(0,3)]),1e-12))
12179         self.assertRaises(InterpKernelException,f.__sub__,f2)
12180         f2.setArray(arr)
12181         ff=f-f2
12182         ff.checkCoherency()
12183         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(0,6),(0,5),(0,4),(0,3)]),1e-12))
12184         ff=f-[5,8]
12185         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(-5,-1),(-4,0),(-3,1),(-2,2),(-1,3)]),1e-12))
12186         ### MEDCouplingFieldDouble.__mul__
12187         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12188         f=MEDCouplingFieldDouble(ON_CELLS)
12189         f.setMesh(m)
12190         arr=DataArrayDouble(5,2)
12191         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12192         f2=f.clone(True)
12193         self.assertRaises(InterpKernelException,f.__mul__,2)
12194         self.assertRaises(InterpKernelException,f.__mul__,range(5))
12195         self.assertRaises(InterpKernelException,f.__mul__,arr)
12196         self.assertRaises(InterpKernelException,f.__mul__,f2)
12197         f.setArray(DataArrayDouble())
12198         self.assertRaises(InterpKernelException,f.__mul__,2)
12199         self.assertRaises(InterpKernelException,f.__mul__,range(5))
12200         self.assertRaises(InterpKernelException,f.__mul__,arr)
12201         self.assertRaises(InterpKernelException,f.__mul__,f2)
12202         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12203         f.getArray().alloc(5,2)
12204         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12205         ff=f*2
12206         ff.checkCoherency()
12207         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12208         ff=f*arr
12209         ff.checkCoherency()
12210         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12211         self.assertRaises(InterpKernelException,f.__mul__,f2)
12212         f2.setArray(arr)
12213         ff=f*f2
12214         ff.checkCoherency()
12215         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12216         ff=f*[5,8]
12217         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,56),(5,64),(10,72),(15,80),(20,88)]),1e-12))
12218         ### MEDCouplingFieldDouble.__div__
12219         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12220         f=MEDCouplingFieldDouble(ON_CELLS)
12221         f.setMesh(m)
12222         arr=DataArrayDouble(5,2)
12223         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12224         f2=f.clone(True)
12225         self.assertRaises(InterpKernelException,f.__div__,2)
12226         self.assertRaises(InterpKernelException,f.__div__,range(5))
12227         self.assertRaises(InterpKernelException,f.__div__,arr)
12228         self.assertRaises(InterpKernelException,f.__div__,f2)
12229         f.setArray(DataArrayDouble())
12230         self.assertRaises(InterpKernelException,f.__div__,2)
12231         self.assertRaises(InterpKernelException,f.__div__,range(5))
12232         self.assertRaises(InterpKernelException,f.__div__,arr)
12233         self.assertRaises(InterpKernelException,f.__div__,f2)
12234         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12235         f.getArray().alloc(5,2)
12236         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12237         self.assertRaises(InterpKernelException,f.__div__,0)
12238         ff=f/2
12239         ff.checkCoherency()
12240         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,4),(1,4.5),(1.5,5),(2,5.5)]),1e-12))
12241         ff=f/arr
12242         ff.checkCoherency()
12243         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,2),(0.6666666666666666,1.5),(0.75,1.25),(0.8,1.1)]),1e-12))
12244         self.assertRaises(InterpKernelException,f.__div__,f2)
12245         f2.setArray(arr)
12246         ff=f/f2
12247         ff.checkCoherency()
12248         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,2),(0.6666666666666666,1.5),(0.75,1.25),(0.8,1.1)]),1e-12))
12249         ff=f/[5,8]
12250         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0.875),(0.2,1),(0.4,1.125),(0.6,1.25),(0.8,1.375)]),1e-12))
12251         ### MEDCouplingFieldDouble.__pow__
12252         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12253         f=MEDCouplingFieldDouble(ON_CELLS)
12254         f.setMesh(m)
12255         arr=DataArrayDouble(5)
12256         arr[:]=[1,1,3,2,0]
12257         f2=f.clone(True)
12258         self.assertRaises(InterpKernelException,f.__div__,2)
12259         self.assertRaises(InterpKernelException,f.__div__,range(5))
12260         self.assertRaises(InterpKernelException,f.__div__,arr)
12261         self.assertRaises(InterpKernelException,f.__div__,f2)
12262         f.setArray(DataArrayDouble())
12263         self.assertRaises(InterpKernelException,f.__div__,2)
12264         self.assertRaises(InterpKernelException,f.__div__,range(5))
12265         self.assertRaises(InterpKernelException,f.__div__,arr)
12266         self.assertRaises(InterpKernelException,f.__div__,f2)
12267         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12268         f.getArray().alloc(5,1)
12269         f.getArray()[:]=range(2,7)
12270         ff=f**2
12271         ff.checkCoherency()
12272         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([4,9,16,25,36]),1e-12))
12273         ff=f**arr
12274         ff.checkCoherency()
12275         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([2,3,64,25,1]),1e-12))
12276         f2.setArray(arr)
12277         ff=f**f2
12278         ff.checkCoherency()
12279         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([2,3,64,25,1]),1e-12))
12280         ## MEDCouplingFieldDouble.__iadd__
12281         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12282         f=MEDCouplingFieldDouble(ON_CELLS)
12283         f.setMesh(m)
12284         arr=DataArrayDouble(5,2)
12285         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12286         f2=f.clone(True)
12287         self.assertRaises(InterpKernelException,f.__iadd__,2)
12288         self.assertRaises(InterpKernelException,f.__iadd__,range(5))
12289         self.assertRaises(InterpKernelException,f.__iadd__,arr)
12290         self.assertRaises(InterpKernelException,f.__iadd__,f2)
12291         f.setArray(DataArrayDouble())
12292         self.assertRaises(InterpKernelException,f.__iadd__,2)
12293         self.assertRaises(InterpKernelException,f.__iadd__,range(5))
12294         self.assertRaises(InterpKernelException,f.__iadd__,arr)
12295         self.assertRaises(InterpKernelException,f.__iadd__,f2)
12296         f.getArray().alloc(5,2)
12297         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12298         f.checkCoherency()
12299         f+=2
12300         f.checkCoherency()
12301         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12302         f+=arr
12303         f.checkCoherency()
12304         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(4,12),(6,15),(8,18),(10,21)]),1e-12))
12305         f2.setArray(arr)
12306         f+=f2
12307         f.checkCoherency()
12308         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(5,14),(8,19),(11,24),(14,29)]),1e-12))
12309         f+=[0.1,0.2]
12310         f.checkCoherency()
12311         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2.1,9.2),(5.1,14.2),(8.1,19.2),(11.1,24.2),(14.1,29.2)]),1e-12))
12312         ## MEDCouplingFieldDouble.__isub__
12313         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12314         f=MEDCouplingFieldDouble(ON_CELLS)
12315         f.setMesh(m)
12316         arr=DataArrayDouble(5,2)
12317         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12318         f2=f.clone(True)
12319         self.assertRaises(InterpKernelException,f.__isub__,2)
12320         self.assertRaises(InterpKernelException,f.__isub__,range(5))
12321         self.assertRaises(InterpKernelException,f.__isub__,arr)
12322         self.assertRaises(InterpKernelException,f.__isub__,f2)
12323         f.setArray(DataArrayDouble())
12324         self.assertRaises(InterpKernelException,f.__isub__,2)
12325         self.assertRaises(InterpKernelException,f.__isub__,range(5))
12326         self.assertRaises(InterpKernelException,f.__isub__,arr)
12327         self.assertRaises(InterpKernelException,f.__isub__,f2)
12328         f.getArray().alloc(5,2)
12329         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12330         f.checkCoherency()
12331         f-=2
12332         f.checkCoherency()
12333         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-1,6),(0,7),(1,8),(2,9)]),1e-12))
12334         f-=arr
12335         f.checkCoherency()
12336         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-2,4),(-2,3),(-2,2),(-2,1)]),1e-12))
12337         f2.setArray(arr)
12338         f-=f2
12339         f.checkCoherency()
12340         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-3,2),(-4,-1),(-5,-4),(-6,-7)]),1e-12))
12341         f-=[0.1,0.2]
12342         f.checkCoherency()
12343         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2.1,4.8),(-3.1,1.8),(-4.1,-1.2),(-5.1,-4.2),(-6.1,-7.2)]),1e-12))
12344         ## MEDCouplingFieldDouble.__imul__
12345         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12346         f=MEDCouplingFieldDouble(ON_CELLS)
12347         f.setMesh(m)
12348         arr=DataArrayDouble(5,2)
12349         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12350         f2=f.clone(True)
12351         self.assertRaises(InterpKernelException,f.__imul__,2)
12352         self.assertRaises(InterpKernelException,f.__imul__,range(5))
12353         self.assertRaises(InterpKernelException,f.__imul__,arr)
12354         self.assertRaises(InterpKernelException,f.__imul__,f2)
12355         f.setArray(DataArrayDouble())
12356         self.assertRaises(InterpKernelException,f.__imul__,2)
12357         self.assertRaises(InterpKernelException,f.__imul__,range(5))
12358         self.assertRaises(InterpKernelException,f.__imul__,arr)
12359         self.assertRaises(InterpKernelException,f.__imul__,f2)
12360         f.getArray().alloc(5,2)
12361         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12362         f.checkCoherency()
12363         f*=2
12364         f.checkCoherency()
12365         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12366         f*=arr
12367         f.checkCoherency()
12368         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0),(2,32),(8,72),(18,120),(32,176)]),1e-12))
12369         f2.setArray(arr)
12370         f*=f2
12371         f.checkCoherency()
12372         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0),(2,64),(16,288),(54,720),(128,1408)]),1e-12))
12373         f*=[0.1,0.2]
12374         f.checkCoherency()
12375         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0),(0.2,12.8),(1.6,57.6),(5.4,144),(12.8,281.6)]),1e-12))
12376         ## MEDCouplingFieldDouble.__idiv__
12377         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12378         f=MEDCouplingFieldDouble(ON_CELLS)
12379         f.setMesh(m)
12380         arr=DataArrayDouble(5,2)
12381         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12382         f2=f.clone(True)
12383         self.assertRaises(InterpKernelException,f.__idiv__,2)
12384         self.assertRaises(InterpKernelException,f.__idiv__,range(5))
12385         self.assertRaises(InterpKernelException,f.__idiv__,arr)
12386         self.assertRaises(InterpKernelException,f.__idiv__,f2)
12387         f.setArray(DataArrayDouble())
12388         self.assertRaises(InterpKernelException,f.__idiv__,2)
12389         self.assertRaises(InterpKernelException,f.__idiv__,range(5))
12390         self.assertRaises(InterpKernelException,f.__idiv__,arr)
12391         self.assertRaises(InterpKernelException,f.__idiv__,f2)
12392         f.getArray().alloc(5,2)
12393         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12394         f.checkCoherency()
12395         f/=2
12396         f.checkCoherency()
12397         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,4),(1,4.5),(1.5,5),(2,5.5)]),1e-12))
12398         f/=arr
12399         f.checkCoherency()
12400         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,1.75),(0.25,1),(0.3333333333333333,0.75),(0.375,0.625),(0.4,0.55)]),1e-12))
12401         f2.setArray(arr)
12402         f/=f2
12403         f.checkCoherency()
12404         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0.875),(0.125,0.25),(0.1111111111111111,0.125),(0.09375,0.078125),(0.08,0.055)]),1e-12))
12405         f/=[0.1,0.2]
12406         f.checkCoherency()
12407         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,4.375),(1.25,1.25),(1.1111111111111111,0.625),(0.9375,0.390625),(0.8,0.275)]),1e-12))
12408         ## MEDCouplingFieldDouble.__ipow__
12409         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12410         f=MEDCouplingFieldDouble(ON_CELLS)
12411         f.setMesh(m)
12412         arr=DataArrayDouble(5,2)
12413         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12414         f2=f.clone(True)
12415         self.assertRaises(InterpKernelException,f.__ipow__,2)
12416         self.assertRaises(InterpKernelException,f.__ipow__,range(5))
12417         self.assertRaises(InterpKernelException,f.__ipow__,arr)
12418         self.assertRaises(InterpKernelException,f.__ipow__,f2)
12419         f.setArray(DataArrayDouble())
12420         self.assertRaises(InterpKernelException,f.__ipow__,2)
12421         self.assertRaises(InterpKernelException,f.__ipow__,range(5))
12422         self.assertRaises(InterpKernelException,f.__ipow__,arr)
12423         self.assertRaises(InterpKernelException,f.__ipow__,f2)
12424         f.getArray().alloc(5,2)
12425         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12426         f.checkCoherency()
12427         f**=2
12428         f.checkCoherency()
12429         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,49),(1,64),(4,81),(9,100),(16,121)]),1e-12))
12430          ## MEDCouplingFieldDouble.__radd__
12431         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12432         f=MEDCouplingFieldDouble(ON_CELLS)
12433         f.setMesh(m)
12434         arr=DataArrayDouble(5,2)
12435         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12436         f2=f.clone(True)
12437         self.assertRaises(InterpKernelException,f.__radd__,2)
12438         self.assertRaises(InterpKernelException,f.__radd__,range(5))
12439         self.assertRaises(InterpKernelException,f.__radd__,arr)
12440         self.assertRaises(InterpKernelException,f.__radd__,f2)
12441         f.setArray(DataArrayDouble())
12442         self.assertRaises(InterpKernelException,f.__radd__,2)
12443         self.assertRaises(InterpKernelException,f.__radd__,range(5))
12444         self.assertRaises(InterpKernelException,f.__radd__,arr)
12445         self.assertRaises(InterpKernelException,f.__radd__,f2)
12446         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12447         f.getArray().alloc(5,2)
12448         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12449         ff=2+f
12450         ff.checkCoherency()
12451         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12452         ff=arr+f
12453         ff.checkCoherency()
12454         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12455         self.assertRaises(InterpKernelException,f.__radd__,f2)
12456         ff=[5,8]+f
12457         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(5,15),(6,16),(7,17),(8,18),(9,19)]),1e-12))
12458         ### MEDCouplingFieldDouble.__rsub__
12459         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12460         f=MEDCouplingFieldDouble(ON_CELLS)
12461         f.setMesh(m)
12462         arr=DataArrayDouble(5,2)
12463         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12464         f2=f.clone(True)
12465         self.assertRaises(InterpKernelException,f.__rsub__,2)
12466         self.assertRaises(InterpKernelException,f.__rsub__,range(5))
12467         self.assertRaises(InterpKernelException,f.__rsub__,arr)
12468         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12469         f.setArray(DataArrayDouble())
12470         self.assertRaises(InterpKernelException,f.__rsub__,2)
12471         self.assertRaises(InterpKernelException,f.__rsub__,range(5))
12472         self.assertRaises(InterpKernelException,f.__rsub__,arr)
12473         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12474         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12475         f.getArray().alloc(5,2)
12476         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12477         ff=2-f
12478         ff.checkCoherency()
12479         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,-5),(1,-6),(0,-7),(-1,-8),(-2,-9)]),1e-12))
12480         ff=arr-f
12481         ff.checkCoherency()
12482         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,-7),(0,-6),(0,-5),(0,-4),(0,-3)]),1e-12))
12483         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12484         ### MEDCouplingFieldDouble.__rmul__
12485         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12486         f=MEDCouplingFieldDouble(ON_CELLS)
12487         f.setMesh(m)
12488         arr=DataArrayDouble(5,2)
12489         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12490         f2=f.clone(True)
12491         self.assertRaises(InterpKernelException,f.__rmul__,2)
12492         self.assertRaises(InterpKernelException,f.__rmul__,range(5))
12493         self.assertRaises(InterpKernelException,f.__rmul__,arr)
12494         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12495         f.setArray(DataArrayDouble())
12496         self.assertRaises(InterpKernelException,f.__rmul__,2)
12497         self.assertRaises(InterpKernelException,f.__rmul__,range(5))
12498         self.assertRaises(InterpKernelException,f.__rmul__,arr)
12499         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12500         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12501         f.getArray().alloc(5,2)
12502         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12503         ff=2*f
12504         ff.checkCoherency()
12505         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12506         ff=arr*f
12507         ff.checkCoherency()
12508         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12509         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12510         ff=f*[5,8]
12511         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,56),(5,64),(10,72),(15,80),(20,88)]),1e-12))
12512         ### MEDCouplingFieldDouble.__rdiv__
12513         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12514         f=MEDCouplingFieldDouble(ON_CELLS)
12515         f.setMesh(m)
12516         arr=DataArrayDouble(5,2)
12517         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12518         f2=f.clone(True)
12519         self.assertRaises(InterpKernelException,f.__rdiv__,2)
12520         self.assertRaises(InterpKernelException,f.__rdiv__,range(5))
12521         self.assertRaises(InterpKernelException,f.__rdiv__,arr)
12522         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12523         f.setArray(DataArrayDouble())
12524         self.assertRaises(InterpKernelException,f.__rdiv__,2)
12525         self.assertRaises(InterpKernelException,f.__rdiv__,range(5))
12526         self.assertRaises(InterpKernelException,f.__rdiv__,arr)
12527         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12528         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12529         f.getArray().alloc(5,2)
12530         f.getArray()[:,0]=range(1,6) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12531         ff=2/f
12532         ff.checkCoherency()
12533         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,0.25),(1,0.22222222222222221),(0.66666666666666663,0.20000000000000001),(0.5,0.18181818181818182),(0.40000000000000002,0.16666666666666666)]),1e-12))
12534         ff=arr/f
12535         ff.checkCoherency()
12536         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(1,0.25),(1,0.44444444444444442),(1,0.59999999999999998),(1,0.72727272727272729),(1,0.83333333333333337)]),1e-12))
12537         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12538         pass
12539     
12540     def testSwig2FieldDoubleBuildSubPartRange1(self):
12541         #ON_CELLS
12542         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12543         f=MEDCouplingFieldDouble(ON_CELLS)
12544         f.setMesh(m)
12545         arr=DataArrayDouble(5,2) ; arr[:,0]=range(7,12) ; arr[:,1]=100+arr[:,0]
12546         f.setArray(arr)
12547         f.checkCoherency()
12548         ff=f[1:-1:2]
12549         ff.checkCoherency()
12550         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12551         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12552         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12553         self.assertTrue(ff.getArray().isEqual(arr[[1,3]],1e-12))
12554         #
12555         a,b=f.buildSubMeshDataRange(2,5,1)
12556         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12557         self.assertEqual(b,slice(2,5,1))
12558         ff=f[2:]
12559         ff.checkCoherency()
12560         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12561         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12562         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12563         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4]],1e-12))
12564         #
12565         ff=f[-2:0:-1]
12566         ff.checkCoherency()
12567         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12568         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12569         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12570         self.assertTrue(ff.getArray().isEqual(arr[[3,2,1]],1e-12))
12571         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[3,2,1],1],1e-12))
12572         #ON_NODES
12573         f=MEDCouplingFieldDouble(ON_NODES)
12574         f.setMesh(m)
12575         arr=DataArrayDouble(9,2) ; arr[:,0]=range(7,16) ; arr[:,1]=100+arr[:,0]
12576         f.setArray(arr)
12577         f.checkCoherency()
12578         ff=f[1:-1:2]
12579         ff.checkCoherency()
12580         self.assertTrue((m.buildPartOfMySelf([1,3],False)).isEqual(ff.getMesh(),1e-12))
12581         self.assertTrue(6,ff.getMesh().getNumberOfNodes())
12582         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12583         self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,6,7]],1e-12))
12584         #
12585         m2=m.buildPartRange(2,5,1)
12586         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(m2,1e-12))
12587         m2,b=m.buildPartRangeAndReduceNodes(2,5,1)
12588         self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(m2,1e-12))
12589         self.assertTrue(b.isEqual(DataArrayInt([-1,-1,0,1,2,3,4,5,6])))
12590         a,b=f.buildSubMeshDataRange(2,5,1)
12591         self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(a,1e-12))
12592         self.assertTrue(b.isEqual(DataArrayInt([2,3,4,5,6,7,8])))
12593         ff=f[2:]
12594         ff.checkCoherency()
12595         self.assertTrue((m.buildPartOfMySelf([2,3,4],False)).isEqual(ff.getMesh(),1e-12))
12596         self.assertTrue(7,ff.getMesh().getNumberOfNodes())
12597         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12598         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,6,7,8]],1e-12))
12599         #
12600         ff=f[-2:0:-1]
12601         ff.checkCoherency()
12602         self.assertTrue((m.buildPartOfMySelf([3,2,1],False)).isEqual(ff.getMesh(),1e-12))
12603         self.assertTrue(7,ff.getMesh().getNumberOfNodes())
12604         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12605         self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,5,6,7]],1e-12))
12606         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[1,2,3,4,5,6,7],1],1e-12))
12607         #ON_GAUSS_NE
12608         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
12609         f.setMesh(m)
12610         arr=DataArrayDouble(18,2) ; arr[:,0]=range(7,25) ; arr[:,1]=100+arr[:,0]
12611         f.setArray(arr)
12612         f.checkCoherency()
12613         ff=f[1:-1:2]
12614         ff.checkCoherency()
12615         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12616         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12617         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12618         self.assertTrue(ff.getArray().isEqual(arr[[4,5,6,10,11,12,13]],1e-12))
12619         #
12620         a,b=f.buildSubMeshDataRange(2,5,1)
12621         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12622         self.assertEqual(b,slice(7,18,1))
12623         ff=f[2:]
12624         ff.checkCoherency()
12625         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12626         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12627         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12628         self.assertTrue(ff.getArray().isEqual(arr[[7,8,9,10,11,12,13,14,15,16,17]],1e-12))
12629         #
12630         ff=f[-2:0:-1]
12631         ff.checkCoherency()
12632         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12633         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12634         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12635         self.assertTrue(ff.getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6]],1e-12))
12636         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6],1],1e-12))
12637         #ON_GAUSS_PT
12638         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12639         f.setMesh(m)
12640         f.setGaussLocalizationOnCells([0,4],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2],[0.2,0.8]);
12641         f.setGaussLocalizationOnCells([3],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2,3.,3.],[0.2,0.4,0.4]);
12642         f.setGaussLocalizationOnCells([1],[0,0,1,0,1,0],[1.1,1.1,2.2,2.2,3.,3.,4.,4.],[0.1,0.1,0.4,0.4]);
12643         f.setGaussLocalizationOnCells([2],[0,0,1,0,1,0],[1.1,1.1,2.2,2.2,3.,3.,4.,4.,5.,5.],[0.1,0.1,0.4,0.3,0.1]);
12644         arr=DataArrayDouble(16,2) ; arr[:,0]=range(7,23) ; arr[:,1]=100+arr[:,0]
12645         f.setArray(arr)
12646         f.checkCoherency()
12647         ff=f[1:-1:2]
12648         ff.checkCoherency()
12649         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12650         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12651         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12652         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,11,12,13]],1e-12))
12653         #
12654         a,b=f.buildSubMeshDataRange(2,5,1)
12655         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12656         self.assertEqual(b,slice(6,16,1))
12657         ff=f[2:]
12658         ff.checkCoherency()
12659         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12660         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12661         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12662         self.assertTrue(ff.getArray().isEqual(arr[[6,7,8,9,10,11,12,13,14,15]],1e-12))
12663         #
12664         ff=f[-2:0:-1]
12665         ff.checkCoherency()
12666         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12667         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12668         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12669         self.assertTrue(ff.getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5]],1e-12))
12670         self.assertTrue(f[-2:0:-1,0].getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5],0],1e-12))
12671         pass
12672
12673     def testSwig2FieldDoubleApplyFuncBug1(self):
12674         f=MEDCouplingFieldDouble(ON_CELLS)
12675         f.setMesh(MEDCouplingDataForTest.build2DTargetMesh_1())
12676         f.applyFunc(3,700.)
12677         f.checkCoherency()
12678         self.assertEqual(3,f.getArray().getNumberOfComponents())
12679         f.getArray().rearrange(1)
12680         self.assertTrue(f.getArray().isUniform(700.,1e-10))
12681         f.getArray().rearrange(3)
12682         f.checkCoherency()
12683         f.applyFunc(4,800.)
12684         f.checkCoherency()
12685         self.assertEqual(4,f.getArray().getNumberOfComponents())
12686         f.getArray().rearrange(1)
12687         self.assertTrue(f.getArray().isUniform(800.,1e-10))
12688         f.getArray().rearrange(4)
12689         f.checkCoherency()
12690         pass
12691
12692     def testSwig2ComputeTupleIdsNearTupleBug1(self):
12693         coords=[1.1,0.0, 1.1,0.0 ];
12694         coordsArr=DataArrayDouble(coords,2,2);
12695         mesh=MEDCouplingUMesh();
12696         mesh.setCoords(coordsArr);
12697         points=[1.1, 0.002]
12698         c,cI=mesh.getNodeIdsNearPoints(points,0.00185);
12699         self.assertTrue(c.isEqual(DataArrayInt([])))
12700         self.assertTrue(cI.isEqual(DataArrayInt([0,0])))
12701         c,cI=mesh.getNodeIdsNearPoints(points,0.00200000000000001);
12702         self.assertTrue(c.isEqual(DataArrayInt([0,1])))
12703         self.assertTrue(cI.isEqual(DataArrayInt([0,2])))
12704         pass
12705
12706     def testSwig2NonRegressionBugChangeUnderlyingWithZeroCells(self):
12707         coords1=[0.,1.,2.,3.]
12708         coords2=[2.,1.,0.,3.] #0 <==> #2
12709         # mesh 1
12710         mesh1=MEDCouplingUMesh.New();
12711         coordsArr=DataArrayDouble.New(coords1,4,1);
12712         mesh1.setCoords(coordsArr);
12713         mesh1.setMeshDimension(0);
12714         mesh1.allocateCells(0);
12715         mesh1.finishInsertingCells();
12716         # mesh 2
12717         mesh2=mesh1.deepCpy();
12718         coordsArr=DataArrayDouble.New(coords2,4,1);
12719         mesh2.setCoords(coordsArr);
12720         field = mesh1.fillFromAnalytic(ON_NODES,1,"x")
12721         field.checkCoherency()
12722         levOfCheck = 10
12723         field.changeUnderlyingMesh( mesh2, levOfCheck, 1e-13, 0 )
12724         self.assertTrue( field.getArray().getValues() == coords2 )
12725         pass
12726
12727     def testSwig2UMeshDistanceToMesh2(self):
12728         sz=5
12729         m=MEDCouplingCMesh()
12730         arr=DataArrayDouble(sz+1) ; arr.iota() ; arr/=sz
12731         m.setCoords(arr,arr,arr)
12732         m=m.buildUnstructured()
12733         m1=m.computeSkin()
12734         m1.zipCoords()
12735         c=m1.getCoords()[:]
12736         d=2*(c-[0.5,0.5,0.5])+[0.5,0.5,0.5]
12737         time_deb = datetime.now()
12738         #print "go.."
12739         a,b=m1.distanceToPoints(d)
12740         #print 'time spent in distanceToPoints %s ' %str(datetime.now() - time_deb)
12741         time_deb = datetime.now()
12742         a1=DataArrayDouble(len(d))
12743         b1=DataArrayInt(len(d))
12744         m1s=[m1[i] for i in xrange(m1.getNumberOfCells())]
12745         for j,pt in enumerate(d):
12746             eter=1e308
12747             fter=-1
12748             for i,miter in enumerate(m1s):
12749                 e,f=miter.distanceToPoint(pt)
12750                 self.assertEqual(0,f)
12751                 if e<eter:
12752                     eter=e ; fter=i
12753                     pass
12754                 pass
12755             a1[j]=eter
12756             b1[j]=fter
12757             pass
12758         #print 'time spent in naive distanceToPoints  %s ' %str(datetime.now() - time_deb)
12759         self.assertTrue(a.isEqual(a1,1e-12))
12760         self.assertTrue(b.isEqual(b1))
12761         self.assertTrue(a.isEqual(DataArrayDouble([0.8660254037844386,0.714142842854285,0.7071067811865476,0.7071067811865476,0.714142842854285,0.8660254037844386,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.8660254037844386,0.714142842854285,0.7071067811865476,0.7071067811865476,0.714142842854285,0.8660254037844386,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706631,0.714142842854285,0.5196152422706631,0.5196152422706632,0.5099019513592784,0.5099019513592785,0.5099019513592784,0.5099019513592785,0.5196152422706631,0.5196152422706632,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592784,0.7071067811865475,0.5099019513592784,0.5099019513592785,0.5,0.5,0.5,0.5,0.5099019513592785,0.5099019513592785,0.7071067811865476,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592784,0.7071067811865475,0.5099019513592784,0.5099019513592785,0.5,0.5,0.5,0.5,0.5099019513592785,0.5099019513592785,0.7071067811865476,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706631,0.714142842854285,0.5196152422706631,0.5196152422706632,0.5099019513592784,0.5099019513592785,0.5099019513592784,0.5099019513592785,0.5196152422706631,0.5196152422706632,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.8660254037844386,0.714142842854285,0.7071067811865476,0.7071067811865476,0.714142842854285,0.8660254037844386,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.7071067811865475,0.5099019513592785,0.5,0.5,0.5099019513592785,0.7071067811865476,0.714142842854285,0.5196152422706632,0.5099019513592785,0.5099019513592785,0.5196152422706632,0.714142842854285,0.8660254037844386,0.714142842854285,0.7071067811865476,0.7071067811865476,0.714142842854285,0.8660254037844386]),1e-12))
12762         self.assertTrue(b.isEqual(DataArrayInt([0,0,3,7,9,9,0,0,3,7,9,9,12,12,14,16,17,17,26,26,28,30,31,31,33,33,36,40,42,42,33,33,36,40,42,42,0,0,3,7,11,9,0,9,12,17,26,31,33,42,33,33,36,40,42,42,45,45,47,49,51,51,45,50,52,53,56,57,58,63,58,58,60,62,63,63,85,85,87,89,91,91,85,90,92,93,96,97,98,103,98,98,100,102,103,103,105,105,108,112,116,114,105,114,117,122,131,136,138,147,138,138,141,145,147,147,105,105,108,112,114,114,105,105,108,112,114,114,117,117,119,121,122,122,131,131,133,135,136,136,138,138,141,145,147,147,138,138,141,145,147,147])))
12763         pass
12764
12765     def testSwig2NonRegressionBugDistance1(self):
12766         pt=DataArrayDouble([(8.8452994616207476,3.1547005383792515,3.1547005383792515)])
12767         coo=DataArrayDouble([(8,0,0),(8,0,8),(8,8,8),(8,8,0),(16,0,0),(16,0,8),(16,8,8),(16,8,0),(8,0,4),(8,4,8),(8,8,4),(8,4,0),(16,0,4),(16,4,8),(16,8,4),(16,4,0),(12,0,0),(12,0,8),(12,8,8),(12,8,0),(8,4,4),(16,4,4),(12,0,4),(12,4,8),(12,8,4),(12,4,0)])
12768         conn=DataArrayInt([4,15,21,12,4,16,25,15,12,22,16,4,0,8,20,11,16,0,11,25,22,8,0,16,15,7,14,21,15,25,19,7,7,19,24,14,11,20,10,3,25,11,3,19,19,3,10,24,12,21,13,5,13,23,17,5,5,17,22,12,8,1,9,20,23,9,1,17,17,1,8,22,21,14,6,13,14,24,18,6 ,6,18,23,13,20,9,2,10,24,10,2,18,18,2,9,23])
12769         m=MEDCouplingUMesh("mesh",2)
12770         m.setCoords(coo)
12771         m.allocateCells()
12772         for i in xrange(24):
12773             m.insertNextCell(NORM_QUAD4,conn[4*i:4*i+4])
12774             pass
12775         m.checkCoherency2()
12776         m0=m[3] ; m0.zipCoords()
12777         expectedDist=0.8452994616207476
12778         a,b=m0.distanceToPoint(pt)
12779         self.assertAlmostEqual(expectedDist,a,14)
12780         self.assertEqual(0,b)
12781         #
12782         a,b=m.distanceToPoint(pt)
12783         self.assertAlmostEqual(expectedDist,a,14)
12784         self.assertEqual(3,b)
12785         #
12786         fd=MEDCouplingFieldDiscretization.New(ON_CELLS)
12787         self.assertEqual(24,fd.getNumberOfTuples(m))
12788         fd=MEDCouplingFieldDiscretization.New(ON_NODES)
12789         self.assertEqual(26,fd.getNumberOfTuples(m))
12790         pass
12791
12792     def testSwig2AreaBarySeg3Quad8Tri6QPolyg(self):
12793         #QUAD8 representing a circle of center zeBary and radius zeRadius
12794         zeBary=[5,6]
12795         zeRadius=3
12796         d=DataArrayDouble(8,2)
12797         d[:,0]=zeRadius
12798         d[:,1]=[87,-100,-170,110,5,-130,175,95] # angle in degree
12799         d[:,1]*=pi/180. # angle in radian
12800         d=d.fromPolarToCart()
12801         d+=zeBary
12802         m=MEDCouplingUMesh("quad8",2) ; m.allocateCells() ; m.insertNextCell(NORM_QUAD8,range(8)) ; m.setCoords(d)
12803         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12804         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12805         tri32D=m.buildDescendingConnectivity()[0][0] ; tri32D.zipCoords()
12806         # spaceDim=3 QUAD8 becomes QUAD4 ... for the moment
12807         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12808         m2=m.deepCpy()
12809         m2.convertQuadraticCellsToLinear()
12810         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12811         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12812         #TRI6 representing a circle of center zeBary and radius zeRadius
12813         zeBary=[5,6]
12814         zeRadius=3
12815         d=DataArrayDouble(6,2)
12816         d[:,0]=zeRadius
12817         d[:,1]=[87,-100,110,5,175,95] # angle in degree
12818         d[:,1]*=pi/180. # angle in radian
12819         d=d.fromPolarToCart()
12820         d+=zeBary
12821         m=MEDCouplingUMesh("tri6",2) ; m.allocateCells() ; m.insertNextCell(NORM_TRI6,range(6)) ; m.setCoords(d)
12822         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12823         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12824         # spaceDim=3 TRI6 becomes TRI3 ... for the moment
12825         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12826         m2=m.deepCpy()
12827         m2.convertQuadraticCellsToLinear()
12828         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12829         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12830         # QPOLYG representing a circle of center zeBary and radius zeRadius
12831         zeBary=[5,6]
12832         zeRadius=3
12833         d=DataArrayDouble(10,2)
12834         d[:,0]=zeRadius
12835         d[:,1]=[87,-80,-100,-170,110,5,-90,-130,175,95] # angle in degree
12836         d[:,1]*=pi/180. # angle in radian
12837         d=d.fromPolarToCart()
12838         d+=zeBary
12839         m=MEDCouplingUMesh("qpolyg",2) ; m.allocateCells() ; m.insertNextCell(NORM_QPOLYG,range(10)) ; m.setCoords(d)
12840         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12841         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12842         # spaceDim=3 QPOLYG becomes POLYG ... for the moment
12843         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12844         m2=m.deepCpy()
12845         m2.convertQuadraticCellsToLinear() ; m2.checkCoherency2()
12846         self.assertTrue(m2.getAllGeoTypes()==[NORM_POLYGON] and m2.getNodalConnectivity().getValues()==[5,0,1,2,3,4])
12847         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12848         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12849         # TRI3
12850         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),(87+100)*pi/180*zeRadius,13)
12851         exp=DataArrayDouble(1,2) ; exp[:,0]=3 ; exp[:,1]=(87-100)/2. ; exp[:,1]*=pi/180. ;  exp=exp.fromPolarToCart() ; exp+=DataArrayDouble([5,6],1,2)
12852         self.assertTrue(tri32D.getBarycenterAndOwner().isEqual(exp,1e-12))
12853         # spaceDim=3 TRI3 becomes TRI2 ... for the moment
12854         tri32D.changeSpaceDimension(3)
12855         tri2=tri32D.deepCpy() ; tri2.convertQuadraticCellsToLinear()
12856         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),float(tri2.getMeasureField(False).getArray()),13)
12857         self.assertTrue(tri32D.getBarycenterAndOwner().isEqual(tri2.getBarycenterAndOwner(),1e-12))
12858         tri32D.changeSpaceDimension(1)
12859         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),-0.67795240172962323,12)
12860         pass
12861
12862     # this bug 5/6/2013 is swig specific
12863     def testSwigNonRegressionBugRotate3D1(self):
12864         m=MEDCouplingUMesh.New()
12865         dataArray=DataArrayDouble.New(100,3)
12866         dataArray[:]=0.
12867         dataArray[0]=[0.,1,3]
12868         m.setCoords(dataArray[0])
12869         m1=m.deepCpy()
12870         m.rotate([0.,0.,3.],[1.,0.,0.],0.5*pi)
12871         self.assertTrue(m.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
12872         #
12873         d1=DataArrayDouble([0.,0.,3.],1,3) ; d2=DataArrayDouble([1.,0.,0.],1,3)
12874         pts=[[0.,0.,3.],[(0.,0.,3.)],DataArrayDouble([0.,0.,3.],1,3),list(d1)[0]]
12875         vec=[[1.,0.,0.],[(1.,0.,0.)],DataArrayDouble([1.,0.,0.],1,3),list(d2)[0]]
12876         for p in pts:
12877             for v in vec:
12878                 m2=m1.deepCpy()
12879                 m2.rotate(p,v,0.5*pi)
12880                 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
12881                 pass
12882         pass
12883
12884     def testSwig2DataArrayCount1(self):
12885         d=DataArrayInt([])
12886         self.assertEqual(0,d.getNumberOfTuples())
12887         self.assertEqual(1,d.getNumberOfComponents())
12888         self.assertEqual(0,d.count(0))
12889         self.assertEqual(0,d.count(1))
12890         self.assertEqual(0,d.count(-1))
12891         d=DataArrayInt([2,1,-2,-3,2,0,0,7,2,-2,3,0])
12892         self.assertEqual(12,d.getNumberOfTuples())
12893         self.assertEqual(1,d.getNumberOfComponents())
12894         self.assertEqual(3,d.count(0))
12895         self.assertEqual(1,d.count(1))
12896         self.assertEqual(0,d.count(-1))
12897         self.assertEqual(2,d.count(-2))
12898         self.assertEqual(3,d.count(2))
12899         e=d.getDifferentValues()
12900         f=DataArrayInt()
12901         for it in e:
12902             f.pushBackSilent(d.count(int(it)))
12903             pass
12904         self.assertEqual(12,f.accumulate()[0])
12905         #
12906         eps=1e-12
12907         d=DataArrayDouble([])
12908         self.assertEqual(0,d.getNumberOfTuples())
12909         self.assertEqual(1,d.getNumberOfComponents())
12910         self.assertEqual(0,d.count(0,eps))
12911         self.assertEqual(0,d.count(1,eps))
12912         self.assertEqual(0,d.count(-1,eps))
12913         d=DataArrayDouble([2,1,-2,-3,2,0,eps/10,7,2+eps/10,-2,3,0])
12914         self.assertEqual(12,d.getNumberOfTuples())
12915         self.assertEqual(1,d.getNumberOfComponents())
12916         self.assertEqual(3,d.count(0,eps))
12917         self.assertEqual(1,d.count(1,eps))
12918         self.assertEqual(0,d.count(-1,eps))
12919         self.assertEqual(2,d.count(-2,eps))
12920         self.assertEqual(3,d.count(2,eps))
12921         self.assertEqual(3,d.count(2,eps))
12922         self.assertEqual(2,d.count(2,eps/100))
12923         e=d.getDifferentValues(eps)
12924         f=DataArrayInt()
12925         for it in e:
12926             f.pushBackSilent(d.count(float(it),eps))
12927             pass
12928         self.assertEqual(12,f.accumulate()[0])
12929         pass
12930
12931     def testSwig2DataArrayGetSlice1(self):
12932         s=slice(2,18,1)
12933         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),16)
12934         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),16)
12935         self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,1))
12936         self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,1))
12937         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,1))
12938         self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,1))
12939         #
12940         s=slice(2,18,2)
12941         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),8)
12942         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),8)
12943         self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,2))
12944         self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,2))
12945         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,2))
12946         self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,2))
12947         #
12948         s=slice(1,18,1)
12949         self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,1))
12950         self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,1))
12951         self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,1))
12952         self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,1))# 18 not 17
12953         #
12954         s=slice(1,18,2)
12955         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
12956         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),9)
12957         self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,2))
12958         self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,2))
12959         self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,2))
12960         self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,2))# 18 not 17
12961         #
12962         s=slice(18,2,-1)
12963         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
12964         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
12965         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
12966         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-1))
12967         #
12968         s=slice(18,2,-2)
12969         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
12970         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
12971         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
12972         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-2))
12973         #
12974         s=slice(18,1,-1)
12975         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
12976         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
12977         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
12978         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-1))# 1 not 2
12979         #
12980         s=slice(18,1,-2)
12981         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
12982         self.assertRaises(InterpKernelException,DataArray.GetNumberOfItemGivenBES,s)
12983         self.assertEqual(sum([DataArray.GetNumberOfItemGivenBESRelative(DataArray.GetSlice(s,i,4)) for i in xrange(4)]),DataArray.GetNumberOfItemGivenBESRelative(s))
12984         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
12985         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
12986         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
12987         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-2))# 1 not 2
12988         self.assertRaises(InterpKernelException,DataArray.GetSlice,slice(0,None,2),0,4)
12989         #
12990         d=DataArrayInt.Range(0,18,1)
12991         s=slice(2,None,1)
12992         self.assertEqual(d.getNumberOfItemGivenBES(s),16)
12993         self.assertEqual(d.getNumberOfItemGivenBESRelative(s),16)
12994         self.assertEqual(d.getSlice(s,0,4),slice(2,6,1))
12995         self.assertEqual(d.getSlice(s,1,4),slice(6,10,1))
12996         self.assertEqual(d.getSlice(s,2,4),slice(10,14,1))
12997         self.assertEqual(d.getSlice(s,3,4),slice(14,18,1))
12998         #
12999         d=DataArrayInt.Range(0,18,1)
13000         s=slice(2,-2,1)
13001         self.assertEqual(d.getSlice(s,0,4),slice(2,5,1))
13002         self.assertEqual(d.getSlice(s,1,4),slice(5,8,1))
13003         self.assertEqual(d.getSlice(s,2,4),slice(8,11,1))
13004         self.assertEqual(d.getSlice(s,3,4),slice(11,16,1))
13005         #
13006         d=DataArrayInt.Range(0,18,1)
13007         s=slice(None,None,1)
13008         self.assertEqual(d.getSlice(s,0,4),slice(0,4,1))
13009         self.assertEqual(d.getSlice(s,1,4),slice(4,8,1))
13010         self.assertEqual(d.getSlice(s,2,4),slice(8,12,1))
13011         self.assertEqual(d.getSlice(s,3,4),slice(12,18,1))
13012         #
13013         d=DataArrayInt.Range(0,18,1)
13014         s=slice(None,2,-2)
13015         self.assertRaises(InterpKernelException,d.getNumberOfItemGivenBES,s)
13016         self.assertEqual(d.getNumberOfItemGivenBESRelative(s),8)
13017         self.assertEqual(d.getSlice(s,0,4),slice(17,13,-2))
13018         self.assertEqual(d.getSlice(s,1,4),slice(13,9,-2))
13019         self.assertEqual(d.getSlice(s,2,4),slice(9,5,-2))
13020         self.assertEqual(d.getSlice(s,3,4),slice(5,2,-2))
13021         pass
13022
13023     def testSwig2AccumulatePerChunk1(self):
13024         arr=DataArrayDouble(11) ; arr.iota()
13025         m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
13026         m=m.buildUnstructured()
13027         m0=m[::2] ; ids0=m0.simplexize(0) ; m1=m[1::2]
13028         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m0,m1) ; m.setName("mesh")
13029         m.checkConsecutiveCellTypesForMEDFileFrmt()
13030         #
13031         formula="7-sqrt((x-5.)*(x-5.)+(y-5.)*(y-5.))"
13032         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
13033         f.fillFromAnalytic(1,formula)
13034         f.setName("Field1") ; f.setTime(1.1,1,-1)
13035         f.checkCoherency()
13036         #
13037         arr=f.getArray()
13038         arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr
13039         arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr ; arr2[:,1]=2*arr
13040         f.setArray(arr2)
13041         f.checkCoherency()
13042         # here the compact code to obviously put field on cell to nodes
13043         rn,rni=f.getMesh().getReverseNodalConnectivity()
13044         arr2=f.getArray()[rn]
13045         arr4=arr2.accumulatePerChunck(rni)
13046         nbOfCellsSharingNodes=rni.deltaShiftIndex()
13047         arr4/=nbOfCellsSharingNodes.convertToDblArr()
13048         #
13049         maxNbCSN=nbOfCellsSharingNodes.getMaxValue()[0]
13050         arr3=DataArrayDouble(f.getMesh().getNumberOfNodes(),f.getArray().getNumberOfComponents()) ; arr3[:]=0.
13051         for i in xrange(1,maxNbCSN+1):
13052             ids=nbOfCellsSharingNodes.getIdsEqual(i)
13053             if len(ids)==0:
13054                 continue
13055             for j in range(i):
13056                 rni2=rni[ids] ; rni2+=j
13057                 arr3[ids]+=arr2[rni2]
13058                 pass
13059             arr3[ids]/=i
13060             pass
13061         fNode=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; fNode.setMesh(m)
13062         fNode.setName("Field1Node") ; fNode.setTime(1.1,1,-1)
13063         fNode.setArray(arr3) ; fNode.checkCoherency()
13064         self.assertTrue(arr3.isEqual(arr4,1e-12))
13065         #
13066         d=DataArrayInt.Range(0,20,1)
13067         self.assertTrue(d.accumulatePerChunck([2,4,12]).isEqual(DataArrayInt([5,60])))
13068         #
13069         a=DataArrayDouble(12) ; a.iota() ; a.rearrange(3)
13070         b=DataArrayDouble(12) ; b.iota(20) ; b.rearrange(3)
13071         ids=DataArrayInt([])
13072         self.assertEqual(len(a[ids]),0)
13073         self.assertEqual(len(b[ids]),0)
13074         a2=a.deepCpy() ;  a2[ids]+=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13075         a2=a.deepCpy() ;  a2[ids]*=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13076         a2=a.deepCpy() ;  a2[ids]/=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13077         a2=a.deepCpy() ;  a2[ids]-=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13078         pass
13079
13080     def testSwig2CheckAndPreparePermutation1(self):
13081         a=DataArrayInt([10003,9999999,5,67])
13082         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([2,3,0,1])))
13083         a=DataArrayInt([10003,-9999999,5,67])
13084         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([3,0,1,2])))
13085         a=DataArrayInt([])
13086         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([])))
13087         a=DataArrayInt([])
13088         a.iota();
13089         self.assertTrue(a.isEqual(DataArrayInt([])))
13090         pass
13091
13092     def testSwig21SGTUMesh1(self):
13093         m=MEDCoupling1GTUMesh.New("m",NORM_PENTA6)
13094         m.__repr__() ; m.__str__()
13095         self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh))
13096         m.setCoords(DataArrayDouble(20,3))
13097         m.allocateCells()
13098         m.__repr__() ; m.__str__()
13099         m.insertNextCell([0,1,2,5,7,2])
13100         self.assertEqual(1,m.getNumberOfCells())
13101         self.assertTrue(DataArrayInt([6]).isEqual(m.computeNbOfNodesPerCell()))
13102         self.assertTrue(DataArrayInt([5]).isEqual(m.computeNbOfFacesPerCell()))
13103         m.__repr__() ; m.__str__()
13104         m.checkCoherency()
13105         m.checkCoherency2()
13106         #
13107         cm=MEDCouplingCMesh() ; cm.setName("m")
13108         arr0=DataArrayDouble(6) ; arr0.iota()
13109         arr1=DataArrayDouble([0,1])
13110         cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured()
13111         #
13112         m=MEDCoupling1SGTUMesh("m",NORM_QUAD4)
13113         mem_m=m.getHeapMemorySize()
13114         m.allocateCells(5)
13115         self.assertIn(m.getHeapMemorySize()-mem_m,xrange(5*4*4,5*4*4+32))
13116         self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
13117         m.setCoords(um.getCoords())
13118         m.insertNextCell([1,0,6,7])
13119         self.assertEqual(1,m.getNumberOfCells())
13120         m.insertNextCell([2,1,7,8])
13121         m.insertNextCell([3,2,8,9])
13122         m.insertNextCell([4,3,9,10])
13123         m.insertNextCell([5,4,10,11])
13124         self.assertEqual(5,m.getNumberOfCells())
13125         self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7])
13126         self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7,1,2])
13127         self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
13128         f=m.getMeasureField(ON_CELLS)
13129         self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
13130         self.assertTrue(f.getArray().isUniform(1,1e-14))
13131         self.assertEqual(m.getType(),10)
13132         self.assertEqual(m.getCellModelEnum(),NORM_QUAD4)
13133         mo=MEDCoupling1SGTUMesh("m",NORM_QUAD4) ; mo.setCoords(m.getCoords())
13134         mo.setNodalConnectivity(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11]))
13135         self.assertTrue(m.isEqual(mo,1e-12))
13136         #
13137         mo2=MEDCoupling1SGTUMesh.Merge1SGTUMeshesOnSameCoords([m[[0,1]],m[[2]],m[[3,4]]])
13138         mo2.setName(m.getName())
13139         self.assertTrue(m.isEqual(mo2,1e-12))
13140         #
13141         mp0=m[[0]] ; mp0.zipCoords() ; mp1=m[2] ; mp1.zipCoords() ; mp2=m[4] ; mp2.zipCoords()
13142         mo3=MEDCoupling1SGTUMesh.Merge1SGTUMeshes([mp0,mp1,mp2])
13143         self.assertTrue(isinstance(mo3,MEDCoupling1SGTUMesh))
13144         mo3.setName(m.getName())
13145         m_ref=m[(0,2,4)] ; m_ref.zipCoords()
13146         m_ref.tryToShareSameCoordsPermute(mo3,1e-12)
13147         self.assertTrue(m_ref.isEqual(mo3,1e-12))
13148         #
13149         m1=um.buildDescendingConnectivity()[0]
13150         ids=m1.getCellIdsFullyIncludedInNodeIds(DataArrayInt.Range(0,12,1))
13151         m1=m1[ids]
13152         m1c=m1.convertIntoSingleGeoTypeMesh()
13153         self.assertTrue(isinstance(m1c,MEDCoupling1SGTUMesh))
13154         self.assertEqual(m1c.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13155         m1c.checkCoherency2()
13156         self.assertTrue(m1c.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11])))
13157         self.assertEqual(20,m1c.getNodalConnectivityLength())
13158         self.assertTrue(m.isEqual(m1c,1e-12))
13159         m.getNodalConnectivity().setIJ(1,0,1)
13160         self.assertTrue(not m.isEqual(m1c,1e-12))
13161         m.getNodalConnectivity().setIJ(1,0,0)
13162         self.assertTrue(m.isEqual(m1c,1e-12))
13163         m1c.setCoords(m.getCoords().deepCpy())
13164         self.assertTrue(m.isEqual(m1c,1e-12))
13165         m1c.getCoords().setIJ(0,1,0.1)
13166         self.assertTrue(not m.isEqual(m1c,1e-12))
13167         m1c.getCoords().setIJ(0,1,0)
13168         self.assertTrue(m.isEqual(m1c,1e-12))
13169         m1c.getCoords().setInfoOnComponent(1,"X")
13170         self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13171         m.getCoords().setInfoOnComponent(1,"X")
13172         self.assertTrue(m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13173         m.setName("m2")
13174         self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13175         #
13176         m.checkCoherency() ; m.checkCoherency1() ; m.checkCoherency2()
13177         self.assertEqual(m.getMeshDimension(),2)
13178         self.assertTrue(m.giveCellsWithType(NORM_QUAD4).isEqual(DataArrayInt([0,1,2,3,4])))
13179         self.assertTrue(m.giveCellsWithType(NORM_TRI3).isEqual(DataArrayInt([])))
13180         self.assertEqual(m.getNumberOfCellsWithType(NORM_QUAD4),5)
13181         self.assertEqual(m.getNumberOfCellsWithType(NORM_TRI3),0)
13182         self.assertEqual(m.getTypeOfCell(3),NORM_QUAD4)
13183         self.assertRaises(InterpKernelException,m.getTypeOfCell,5)
13184         self.assertEqual(m.getAllGeoTypes(),[NORM_QUAD4])
13185         self.assertEqual(m.getDistributionOfTypes(),[[NORM_QUAD4,5,-1]])
13186         ##
13187         pfl1=DataArrayInt([1,3,4])
13188         a,b,c=m.splitProfilePerType(pfl1)
13189         d,e,f=m.buildUnstructured().splitProfilePerType(pfl1)
13190         self.assertTrue(a==[[4,3,0]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2])) and len(c)==1 and c[0].getHiddenCppPointer()==pfl1.getHiddenCppPointer())
13191         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
13192         #
13193         pfl2=DataArrayInt([0,1,2,3])
13194         a,b,c=m.splitProfilePerType(pfl2)
13195         d,e,f=m.buildUnstructured().splitProfilePerType(pfl2)
13196         self.assertTrue(a==[[4,4,0]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3])) and len(c)==1 and c[0].getHiddenCppPointer()==pfl2.getHiddenCppPointer())
13197         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
13198         #
13199         pfl3=DataArrayInt([0,1,2,3,4])
13200         a,b,c=m.splitProfilePerType(pfl3)
13201         d,e,f=m.buildUnstructured().splitProfilePerType(pfl3)
13202         self.assertTrue(a==[[4,5,-1]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3,4])) and c==[])
13203         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and c==[])
13204         #
13205         invalidPfl=DataArrayInt([1,2,3,4,5])
13206         self.assertRaises(InterpKernelException,m.splitProfilePerType,invalidPfl)
13207         self.assertRaises(InterpKernelException,m.buildUnstructured().splitProfilePerType,invalidPfl)
13208         ##
13209         pfl1=DataArrayInt([1,2,3])
13210         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
13211         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
13212         self.assertTrue(a.isEqual(b) and pfl1.getHiddenCppPointer(),a.getHiddenCppPointer())
13213         #
13214         pfl2=DataArrayInt([0,1,2,3])
13215         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
13216         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
13217         self.assertTrue(a.isEqual(b) and pfl2.getHiddenCppPointer()==a.getHiddenCppPointer())
13218         #
13219         pfl3=DataArrayInt([0,1,2,3,4])
13220         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl3])
13221         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,5,0],[pfl3])
13222         self.assertTrue(a.isEqual(b) and pfl3.getHiddenCppPointer()==a.getHiddenCppPointer())
13223         #
13224         invalidPfl=DataArrayInt([1,2,3,4,5])
13225         self.assertRaises(InterpKernelException,m.checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
13226         self.assertRaises(InterpKernelException,m.buildUnstructured().checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
13227         ##
13228         self.assertTrue(DataArrayInt([4,4,4,4,4]).isEqual(m.computeNbOfNodesPerCell()))
13229         ##
13230         self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8])
13231         ##
13232         self.assertTrue(m.computeIsoBarycenterOfNodesPerCell().isEqual(DataArrayDouble([(0.5,0.5,0),(1.5,0.5,0),(2.5,0.5,0),(3.5,0.5,0),(4.5,0.5,0)]),1e-13))
13233         ##
13234         ref=m.getCoords().getHiddenCppPointer()
13235         mcpy=m.deepCpy() ; mcpy.insertNextCell([1,0,6,7])
13236         c=m.getNodalConnectivity().deepCpy()
13237         o2n=DataArrayInt([2,0,1,4,3])
13238         m.renumberCells(o2n,False)
13239         c.rearrange(4) ; c.renumberInPlace(o2n) ; c.rearrange(1)
13240         self.assertTrue(c.isEqual(m.getNodalConnectivity()))
13241         self.assertEqual(ref,m.getCoords().getHiddenCppPointer())
13242         m2=mcpy.mergeMyselfWith(m)
13243         self.assertTrue(isinstance(m2,MEDCoupling1SGTUMesh))
13244         self.assertEqual(11,m2.getNumberOfCells())
13245         self.assertEqual(48,m2.getNumberOfNodes())
13246         self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.Aggregate([m.getCoords(),m.getCoords()]),1e-12))
13247         self.assertTrue(m2.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11,1,0,6,7,26,25,31,32,27,26,32,33,25,24,30,31,29,28,34,35,28,27,33,34])))
13248         ##
13249         mu=m.buildUnstructured()
13250         mu.checkCoherency2()
13251         self.assertEqual(mu.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13252         self.assertEqual(2,mu.getMeshDimension())
13253         self.assertEqual([NORM_QUAD4],mu.getAllGeoTypes())
13254         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,2,1,7,8,4,3,2,8,9,4,1,0,6,7,4,5,4,10,11,4,4,3,9,10])))
13255         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25])))
13256         ##
13257         for typ in [0,1]:
13258             mcpy2=m.deepCpy() ; umcpy2=mcpy2.buildUnstructured()
13259             ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
13260             self.assertTrue(ids.isEqual(ids2))
13261             mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
13262             self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
13263             pass
13264         um1=um.convertIntoSingleGeoTypeMesh()
13265         self.assertEqual(8,um1.getNumberOfNodesPerCell())
13266         for typ in [PLANAR_FACE_5,PLANAR_FACE_6]:
13267             mcpy2=um1.deepCpy() ; umcpy2=mcpy2.buildUnstructured()
13268             ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
13269             self.assertTrue(ids.isEqual(ids2))
13270             mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
13271             self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
13272             pass
13273         ##
13274         self.assertRaises(InterpKernelException,mcpy.mergeMyselfWithOnSameCoords,m)
13275         mcpy.tryToShareSameCoords(m,1e-14)
13276         m3=mcpy.mergeMyselfWithOnSameCoords(m)
13277         self.assertTrue(isinstance(m3,MEDCoupling1SGTUMesh))
13278         self.assertEqual(11,m3.getNumberOfCells())
13279         self.assertEqual(24,m3.getNumberOfNodes())
13280         self.assertEqual(m3.getCoords().getHiddenCppPointer(),mcpy.getCoords().getHiddenCppPointer())
13281         self.assertTrue(m3.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11,1,0,6,7,2,1,7,8,3,2,8,9,1,0,6,7,5,4,10,11,4,3,9,10])))
13282         ##
13283         ref=mcpy.getCoords().deepCpy()
13284         c3=mcpy.getNodalConnectivity()[:]
13285         mcpy.getNodalConnectivity().setIJ(int(c3.getIdsEqual(11)),0,24)
13286         c2=DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()[11:]])
13287         mcpy.setCoords(c2)
13288         mcpy.checkCoherency2()
13289         a,b=mcpy.getNodeIdsInUse()
13290         self.assertEqual(12,b)
13291         self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])))
13292         ids=mcpy.zipCoordsTraducer()
13293         self.assertTrue(ids.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])))
13294         self.assertTrue(mcpy.getCoords().isEqual(ref[:12],1e-12))
13295         self.assertTrue(mcpy.getNodalConnectivity().isEqual(c3))
13296         mcpy.checkCoherency2()
13297         ##
13298         m4=mcpy[DataArrayInt([0,3,4])]
13299         m5=mcpy.buildPartOfMySelfKeepCoords(DataArrayInt([0,3,4]))
13300         self.assertTrue(isinstance(m4,MEDCoupling1SGTUMesh))
13301         self.assertTrue(m4.isEqual(m5,-1e-14))# < 0 not a bug it proves that coordinates pointer are equal
13302         self.assertTrue(m4.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,4,3,9,10,5,4,10,11])))
13303         m6=mcpy[::2]
13304         self.assertTrue(isinstance(m6,MEDCoupling1SGTUMesh))
13305         self.assertTrue(m6.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,3,2,8,9,5,4,10,11])))
13306         ##
13307         mcpy.setCoords(DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()]))
13308         mcpy.checkCoherency2()
13309         ##
13310         mcppy=mcpy.deepCpyConnectivityOnly()
13311         self.assertTrue(mcppy.isEqual(mcpy,1e-12))
13312         self.assertTrue(mcppy.getCoords().getHiddenCppPointer()==mcpy.getCoords().getHiddenCppPointer())
13313         self.assertTrue(mcppy.getNodalConnectivity().isEqual(mcpy.getNodalConnectivity()))
13314         self.assertTrue(mcppy.getNodalConnectivity().getHiddenCppPointer()!=mcpy.getNodalConnectivity().getHiddenCppPointer())
13315         ##
13316         a,b=mcpy.getReverseNodalConnectivity()
13317         self.assertTrue(a.isEqual(DataArrayInt([0,5,0,1,5,1,2,2,3,3,4,4,0,5,0,1,5,1,2,2,3,3,4,4])))
13318         self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,9,11,12,14,17,19,21,23,24,24,24,24,24,24,24,24,24,24,24,24,24])))
13319         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],False).isEqual(DataArrayInt([0,1,5])))
13320         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,5])))
13321         self.assertTrue(mcpy.getCellsInBoundingBox([(0,1),(0,1),(0,1)],1e-12).isEqual(DataArrayInt([0,1,5])))
13322         f=mcpy.buildOrthogonalField()
13323         self.assertEqual(f.getMesh().getHiddenCppPointer(),mcpy.getHiddenCppPointer())
13324         self.assertTrue(f.getArray().isEqual(DataArrayDouble(6*[(0,0,-1)]),1e-12))
13325         mcpy.changeSpaceDimension(2)
13326         self.assertEqual(1,mcpy.getCellContainingPoint([1.5,0.5],1e-12))
13327         ##
13328         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([0,1,5])))
13329         ##
13330         mcpy2=mcpy.deepCpy()
13331         self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
13332         mcpy.checkFastEquivalWith(mcpy2,1e-12)
13333         mcpy2.renumberCells([0,2,4,3,1,5])
13334         mcpy.checkFastEquivalWith(mcpy2,1e-12)
13335         self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
13336         mcpy2.renumberCells([0,2,4,3,1,5])
13337         mcpy2.renumberCells([1,3,5,0,2,4])
13338         self.assertRaises(InterpKernelException,mcpy.checkFastEquivalWith,mcpy2,1e-12)
13339         self.assertRaises(InterpKernelException,mcpy.checkGeoEquivalWith,mcpy2,1,1e-12)#fast equal
13340         pass
13341
13342     def testSwig21DGTUMesh1(self):
13343         a0=DataArrayInt([0,2,3,5,6,8])
13344         a1=DataArrayInt([0,4,7,11,14,18,21,25])
13345         a2=DataArrayInt([0,1,4,5])
13346         self.assertTrue(DataArrayInt.AggregateIndexes([a0,a1,a2]).isEqual(DataArrayInt([0,2,3,5,6,8,12,15,19,22,26,29,33,34,37,38])))
13347         self.assertEqual(a1[3:].front(),11)
13348         self.assertEqual(a1[4:].convertToDblArr().front(),14.)
13349         a1c=DataArrayInt([5,7,1,2, 8,11,0, 5,6,3,12, 1,5,2, 13,12,11,7, 6,1,0, 20,21,19,17])
13350         d,e=MEDCouplingUMesh.ExtractFromIndexedArrays2(1,5,2,a1c,a1)
13351         self.assertTrue(d.isEqual(DataArrayInt([8,11,0,1,5,2])))
13352         self.assertTrue(e.isEqual(DataArrayInt([0,3,6])))
13353         #
13354         m=MEDCouplingDataForTest.build2DTargetMesh_1()[0,3,4]
13355         ref=DataArrayInt([0,3,4,1,6,7,4,3,7,8,5,4])
13356         self.assertTrue(m.convertNodalConnectivityToStaticGeoTypeMesh().isEqual(ref))
13357         d,e=m.convertNodalConnectivityToDynamicGeoTypeMesh()
13358         self.assertTrue(d.isEqual(ref))
13359         self.assertTrue(e.isEqual(DataArrayInt.Range(0,13,4)))
13360         self.assertTrue(m.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([1,2])))
13361         #
13362         m=MEDCoupling1GTUMesh.New("m",NORM_POLYHED)
13363         self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh))
13364         m.__repr__() ; m.__str__()
13365         m.setCoords(DataArrayDouble(20,3))
13366         m.allocateCells()
13367         m.__repr__() ; m.__str__()
13368         m.insertNextCell([0,1,2,5,7,2,-1,1,3])
13369         self.assertEqual(1,m.getNumberOfCells())
13370         self.assertTrue(DataArrayInt([8]).isEqual(m.computeNbOfNodesPerCell()))
13371         self.assertTrue(DataArrayInt([2]).isEqual(m.computeNbOfFacesPerCell()))
13372         m.__repr__() ; m.__str__()
13373         m.checkCoherency()
13374         m.checkCoherency2()
13375         #
13376         cm=MEDCouplingCMesh() ; cm.setName("m")
13377         arr0=DataArrayDouble(6) ; arr0.iota()
13378         arr1=DataArrayDouble([0,1])
13379         cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured() ; um.convertAllToPoly()
13380         um2=um.deepCpyConnectivityOnly()
13381         self.assertTrue(um2.isEqual(um,1e-12))
13382         self.assertEqual(um2.getCoords().getHiddenCppPointer(),um.getCoords().getHiddenCppPointer())
13383         self.assertTrue(um2.getNodalConnectivity().isEqual(um.getNodalConnectivity()))
13384         self.assertTrue(um2.getNodalConnectivity().getHiddenCppPointer()!=um.getNodalConnectivity().getHiddenCppPointer())
13385         self.assertTrue(um2.getNodalConnectivityIndex().isEqual(um.getNodalConnectivityIndex()))
13386         self.assertTrue(um2.getNodalConnectivityIndex().getHiddenCppPointer()!=um.getNodalConnectivityIndex().getHiddenCppPointer())
13387         #
13388         self.assertRaises(InterpKernelException,MEDCoupling1SGTUMesh.New,"m",NORM_POLYHED)
13389         m=MEDCoupling1DGTUMesh("m",NORM_POLYHED)
13390         m.allocateCells(5)
13391         self.assertEqual(15,m.getNodalConnectivity().getNbOfElemAllocated())
13392         self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
13393         m.setCoords(um.getCoords())
13394         m.insertNextCell([1,0,6,7,-1,7,6,1])
13395         self.assertEqual(1,m.getNumberOfCells())
13396         m.insertNextCell([2,1,7,8,-1,2,1,-1,8,-1,7])
13397         m.insertNextCell([3,2,8,9])
13398         m.insertNextCell([4,3,9,10,-1,5,3,9])
13399         m.insertNextCell([5,4,10,11,-1,11,10,-1,5])
13400         m.checkCoherency()
13401         m.checkCoherency2()
13402         self.assertEqual(5,m.getNumberOfCells())
13403         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40])))
13404         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,3,2,8,9,4,3,9,10,-1,5,3,9,5,4,10,11,-1,11,10,-1,5])))
13405         #
13406         m4=m.deepCpy()
13407         self.assertTrue(m.isEqual(m4,1e-12))
13408         m4.getNodalConnectivity().setIJ(2,0,5)
13409         self.assertTrue(not m.isEqual(m4,1e-12))
13410         m4.getNodalConnectivity().setIJ(2,0,6)
13411         self.assertTrue(m.isEqual(m4,1e-12))
13412         m4.getNodalConnectivityIndex().setIJ(2,0,21)
13413         self.assertTrue(not m.isEqual(m4,1e-12))
13414         m4.getNodalConnectivityIndex().setIJ(2,0,19)
13415         self.assertTrue(m.isEqual(m4,1e-12))
13416         m4.getCoords().setIJ(10,1,1.1)
13417         self.assertTrue(not m.isEqual(m4,1e-12))
13418         m4.getCoords().setIJ(10,1,1.)
13419         self.assertTrue(m.isEqual(m4,1e-12))
13420         m4.getNodalConnectivity().pushBackSilent(7)
13421         self.assertTrue(not m.isEqual(m4,1e-12))
13422         self.assertEqual(7,m4.getNodalConnectivity().popBackSilent())
13423         self.assertTrue(m.isEqual(m4,1e-12))
13424         m4.setName("m4")
13425         self.assertTrue(not m.isEqual(m4,1e-12))
13426         m4.setName("m")
13427         self.assertTrue(m.isEqual(m4,1e-12))
13428         #
13429         self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
13430         self.assertEqual(60,m.getNodalConnectivity().getNbOfElemAllocated())
13431         self.assertTrue(m.computeNbOfNodesPerCell().isEqual(DataArrayInt([7,8,4,7,7])))
13432         self.assertTrue(m.computeNbOfFacesPerCell().isEqual(DataArrayInt([2,4,1,2,3])))
13433         self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8,-1,2,1,-1,8,-1,7])
13434         f=m.computeIsoBarycenterOfNodesPerCell()
13435         self.assertTrue(DataArrayDouble([(0.5714285714285714,0.5714285714285714,0),(1.5,0.5,0),(2.5,0.5,0),(3.5714285714285712,0.42857142857142855,0),(4.5714285714285712,0.5714285714285714,0)]).isEqual(f,1e-14))
13436         mu0=m.buildUnstructured()
13437         o2n=[1,2,0,4,3]
13438         m2=m.deepCpy()
13439         m3=m.deepCpyConnectivityOnly()
13440         self.assertTrue(m3.isEqual(m,1e-12))
13441         self.assertEqual(m3.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13442         self.assertTrue(m3.getNodalConnectivity().getHiddenCppPointer()!=m.getNodalConnectivity().getHiddenCppPointer())
13443         self.assertTrue(m3.getNodalConnectivity().isEqual(m.getNodalConnectivity()))
13444         self.assertTrue(m3.getNodalConnectivityIndex().getHiddenCppPointer()!=m.getNodalConnectivityIndex().getHiddenCppPointer())
13445         self.assertTrue(m3.getNodalConnectivityIndex().isEqual(m.getNodalConnectivityIndex()))
13446         m.renumberCells(o2n)
13447         mu0.renumberCells(o2n)
13448         self.assertTrue(mu0.isEqual(m.buildUnstructured(),1e-12))
13449         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,23,32,40])))
13450         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,2,8,9,1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,5,4,10,11,-1,11,10,-1,5,4,3,9,10,-1,5,3,9])))
13451         #
13452         mcpy0=m.buildUnstructured()
13453         self.assertTrue(isinstance(mcpy0,MEDCouplingUMesh))
13454         self.assertTrue(mcpy0.getNodalConnectivity().isEqual(DataArrayInt([31,3,2,8,9,31,1,0,6,7,-1,7,6,1,31,2,1,7,8,-1,2,1,-1,8,-1,7,31,5,4,10,11,-1,11,10,-1,5,31,4,3,9,10,-1,5,3,9])))
13455         self.assertTrue(mcpy0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,14,26,36,45])))
13456         self.assertEqual(mcpy0.getAllGeoTypes(),[NORM_POLYHED])
13457         mcpy0.checkCoherency()
13458         mcpy0.checkCoherency2()
13459         mcpy1=mcpy0.convertIntoSingleGeoTypeMesh()
13460         self.assertTrue(mcpy1.isEqual(m,1e-12))
13461         #
13462         m_mrg=MEDCoupling1DGTUMesh.Merge1DGTUMeshes([m2,m,m2])
13463         self.assertTrue(m_mrg.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
13464         self.assertTrue(m_mrg.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,3,2,8,9,4,3,9,10,-1,5,3,9,5,4,10,11,-1,11,10,-1,5,27,26,32,33,25,24,30,31,-1,31,30,25,26,25,31,32,-1,26,25,-1,32,-1,31,29,28,34,35,-1,35,34,-1,29,28,27,33,34,-1,29,27,33,49,48,54,55,-1,55,54,49,50,49,55,56,-1,50,49,-1,56,-1,55,51,50,56,57,52,51,57,58,-1,53,51,57,53,52,58,59,-1,59,58,-1,53])))
13465         m_mrg2=MEDCoupling1DGTUMesh.Merge1DGTUMeshesOnSameCoords([m3,m,m3])
13466         self.assertTrue(m_mrg2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
13467         self.assertTrue(m_mrg2.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,3,2,8,9,4,3,9,10,-1,5,3,9,5,4,10,11,-1,11,10,-1,5,3,2,8,9,1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,5,4,10,11,-1,11,10,-1,5,4,3,9,10,-1,5,3,9,1,0,6,7,-1,7,6,1,2,1,7,8,-1,2,1,-1,8,-1,7,3,2,8,9,4,3,9,10,-1,5,3,9,5,4,10,11,-1,11,10,-1,5])))
13468         a,b=m_mrg2.getReverseNodalConnectivity()
13469         self.assertTrue(b.isEqual(DataArrayInt([0,3,15,24,33,39,48,54,66,75,84,93,99,99,99,99,99,99,99,99,99,99,99,99,99])))
13470         self.assertTrue(a.isEqual(DataArrayInt([0,6,10,0,0,1,1,6,6,7,7,10,10,11,11,1,1,2,5,7,7,11,11,12,2,3,3,5,9,9,12,13,13,3,4,8,9,13,14,3,4,4,8,8,9,13,14,14,0,0,6,6,10,10,0,0,1,1,6,6,7,7,10,10,11,11,1,1,2,5,7,7,11,11,12,2,3,3,5,9,9,12,13,13,3,4,4,8,8,9,13,14,14,4,4,8,8,14,14])))
13471         self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([7],False).isEqual(DataArrayInt([0,1,6,7,10,11])))
13472         self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,6,10])))
13473         #
13474         self.assertTrue(m_mrg2.isPacked())
13475         self.assertEqual(120,m_mrg2.getNodalConnectivityIndex().popBackSilent())
13476         self.assertEqual(m_mrg2.getNumberOfCells(),14)
13477         m_mrg2.checkCoherency2()
13478         self.assertTrue(not m_mrg2.isPacked())
13479         m_mrg4,b=m_mrg2.copyWithNodalConnectivityPacked()
13480         self.assertTrue(not b)
13481         m_mrg4.checkCoherency2()
13482         self.assertEqual(m_mrg4.getNumberOfCells(),14)
13483         self.assertTrue(m_mrg4.getNodalConnectivityIndex().isEqual(m_mrg2.getNodalConnectivityIndex()))
13484         self.assertEqual(len(m_mrg4.getNodalConnectivity()),111)
13485         self.assertEqual(len(m_mrg2.getNodalConnectivity()),120)
13486         self.assertTrue(m_mrg4.getNodalConnectivity().isEqual(m_mrg2.getNodalConnectivity()[:111]))
13487         #
13488         m0=m_mrg2[:5]
13489         m1=m_mrg2[[5,6,7,8,9]]
13490         m2=m_mrg2[10:]
13491         self.assertTrue(m1.isEqualWithoutConsideringStr(m,1e-12))
13492         a,b=m.checkGeoEquivalWith(m0,12,1e-12)
13493         self.assertTrue(a.isEqual(DataArrayInt(o2n)))
13494         self.assertTrue(b is None)
13495         pass
13496
13497     def testSwig2DADAreIncludedInMe1(self):
13498         a=DataArrayDouble(30) ; a.iota() ; a.rearrange(3)
13499         p=DataArrayInt([5,2,1,9])
13500         b,c=a.areIncludedInMe(a[p],1e-12)
13501         self.assertTrue(b)
13502         self.assertTrue(c.isEqual(p))
13503         d=a[p]
13504         d.setIJ(3,1,28.1)
13505         b,c=a.areIncludedInMe(d,1e-12)
13506         self.assertTrue(not b)
13507         self.assertTrue(c.isEqual(DataArrayInt([5,2,1,10])))
13508         pass
13509
13510     def testSwig2DADesallocate1(self):
13511         d=DataArrayDouble([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
13512         self.assertTrue(d.isAllocated())
13513         d.checkAllocated()
13514         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13515         ref=d.getHeapMemorySize()
13516         d.desallocate()
13517         self.assertEqual(ref-d.getHeapMemorySize(),6*8)
13518         self.assertTrue(not d.isAllocated())
13519         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13520         self.assertRaises(InterpKernelException,d.checkAllocated)
13521         #
13522         d=DataArrayInt([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
13523         self.assertTrue(d.isAllocated())
13524         d.checkAllocated()
13525         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13526         ref=d.getHeapMemorySize()
13527         d.desallocate()
13528         self.assertEqual(ref-d.getHeapMemorySize(),6*4)
13529         self.assertTrue(not d.isAllocated())
13530         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13531         self.assertRaises(InterpKernelException,d.checkAllocated)
13532         pass
13533
13534     def testSwig2IsPartStructured1(self):
13535         #dim 1
13536         d10=DataArrayInt([2,3,4,5,6,7,8,9,10,11])
13537         a,b=MEDCouplingStructuredMesh.IsPartStructured(d10,[13])
13538         self.assertTrue(a) ; self.assertEqual(b,[(2,12)])
13539         d11=DataArrayInt([2,3,4,5,6,7,8,10,9,11])
13540         a,b=MEDCouplingStructuredMesh.IsPartStructured(d11,[13])
13541         self.assertTrue(not a)
13542         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d10,[11])
13543         #dim 2
13544         st=[10,4]
13545         d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
13546         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13547         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
13548         self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
13549         self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
13550         self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
13551         self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
13552         self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
13553         d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
13554         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13555         self.assertTrue(not a)
13556         d20=DataArrayInt([1,2,3,4,11,12,13,15,21,22,23,24])
13557         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13558         self.assertTrue(not a)
13559         d21=DataArrayInt([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,32,33,34,35,36,37,38,39])
13560         a,b=MEDCouplingStructuredMesh.IsPartStructured(d21,st)
13561         self.assertTrue(a) ; self.assertEqual(b,[(0,10),(0,4)])
13562         d22=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44])
13563         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d22,st)
13564         a,b=MEDCouplingStructuredMesh.IsPartStructured(d22,[10,5])
13565         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,5)])
13566         #dim 3
13567         d30=DataArrayInt([11,12,13,14,21,22,23,24,51,52,53,54,61,62,63,64])
13568         a,b=MEDCouplingStructuredMesh.IsPartStructured(d30,[10,4,2])
13569         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(1,3),(0,2)])
13570         d31=DataArrayInt([11,12,13,14,21,22,24,23,51,52,53,54,61,62,63,64])
13571         a,b=MEDCouplingStructuredMesh.IsPartStructured(d31,[10,4,2])
13572         self.assertTrue(not a)
13573         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d30,[10,4,1])
13574         pass
13575
13576     def testSwig2PartStructured1(self):
13577         c=MEDCouplingCMesh() ; c.setName("toto")
13578         arr0=DataArrayDouble(10); arr0.iota()
13579         arr1=DataArrayDouble(4) ; arr1.iota(3)
13580         c.setCoords(arr0,arr1)
13581         self.assertEqual(c.getNodeGridStructure(),(10,4))
13582         self.assertEqual(c.getCellGridStructure(),(9,3))
13583         d20=DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])
13584         self.assertEqual(27,c.getNumberOfCells())
13585         self.assertEqual(40,c.getNumberOfNodes())
13586         self.assertEqual(2,c.getMeshDimension())
13587         c.checkCoherency()
13588         #
13589         arr2=MEDCouplingStructuredMesh.BuildExplicitIdsFrom([9,3],[(1,5),(0,3)])
13590         self.assertTrue(arr2.isEqual(DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])))
13591         # CMesh
13592         c2=c.buildStructuredSubPart([(1,5),(0,3)])
13593         c2.checkCoherency()
13594         self.assertTrue(isinstance(c2,MEDCouplingCMesh))
13595         self.assertEqual(12,c2.getNumberOfCells())
13596         self.assertEqual(20,c2.getNumberOfNodes())
13597         self.assertEqual(2,c2.getMeshDimension())
13598         self.assertEqual("toto",c2.getName())
13599         self.assertTrue(c2.getCoordsAt(0).isEqual(DataArrayDouble([1.,2.,3.,4.,5.]),1e-12))
13600         self.assertTrue(c2.getCoordsAt(1).isEqual(DataArrayDouble([3.,4.,5.,6.]),1e-12))
13601         #
13602         a,b=c.buildPartAndReduceNodes(d20)
13603         a.checkCoherency()
13604         exp2=DataArrayInt([-1,0,1,2,3,4,-1,-1,-1,-1,-1,5,6,7,8,9,-1,-1,-1,-1,-1,10,11,12,13,14,-1,-1,-1,-1,-1,15,16,17,18,19,-1,-1,-1,-1])
13605         self.assertTrue(exp2.isEqual(b))
13606         self.assertTrue(isinstance(a,MEDCouplingCMesh))
13607         self.assertTrue(a.buildUnstructured().isEqual(c.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
13608         # CurveLinearMesh
13609         c2=MEDCouplingCurveLinearMesh() ; c2.setName("toto")
13610         c2.setCoords(c.buildUnstructured().getCoords())
13611         c2.setNodeGridStructure([10,4])
13612         c2.checkCoherency()
13613         a,b=c2.buildPartAndReduceNodes(d20)
13614         a.checkCoherency()
13615         self.assertTrue(exp2.isEqual(b))
13616         self.assertTrue(isinstance(a,MEDCouplingCurveLinearMesh))
13617         self.assertTrue(a.buildUnstructured().isEqual(c2.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
13618         pass
13619
13620     def testSwig2FindPermutationFromFirstToSecond1(self):
13621         ids1=DataArrayInt([3,1,103,4,6,10,-7,205])
13622         ids2=DataArrayInt([-7,1,205,10,6,3,103,4])
13623         ids3=DataArrayInt.FindPermutationFromFirstToSecond(ids1,ids2)
13624         self.assertTrue(ids3.isEqual(DataArrayInt([5,1,6,7,4,3,0,2])))
13625         ids2ToTest=ids1.renumber(ids3)
13626         self.assertTrue(ids2ToTest.isEqual(ids2))
13627         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103]))
13628         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,2]))
13629         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,1]))
13630         self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecond(DataArrayInt([]),DataArrayInt([])).empty())
13631         pass
13632
13633     def testSwig2BugStructuredMeshGetNodeIdsOfCell1(self):
13634         m=MEDCouplingCMesh("mesh")
13635         coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
13636         coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
13637         m.setCoords(coordsX,coordsY)
13638         self.assertEqual([2,3,8,7],m.getNodeIdsOfCell(2))
13639         self.assertEqual([3,4,9,8],m.getNodeIdsOfCell(3))
13640         self.assertEqual([7,8,13,12],m.getNodeIdsOfCell(6))
13641         self.assertEqual([8,9,14,13],m.getNodeIdsOfCell(7))
13642         pass
13643
13644     def testSwig2ThrowOnDAIInvertN2O2ON2(self):
13645         p1=DataArrayInt([3,5,8])
13646         p2=DataArrayInt([0,3,4,5,6,7,8,9,10])
13647         p1.transformWithIndArr(p2.invertArrayN2O2O2N(11))
13648         self.assertTrue(p1.isEqual(DataArrayInt([1,3,6])))
13649         self.assertTrue(p2.invertArrayN2O2O2N(11).isEqual(DataArrayInt([0,-1,-1,1,2,3,4,5,6,7,8])))
13650         self.assertRaises(InterpKernelException,p2.invertArrayN2O2O2N,10)
13651         pass
13652
13653     def testSwig2ComputeEffectiveNbOfNodesPerCell1(self):
13654         coords=DataArrayDouble([ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
13655                  0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
13656                  0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
13657                  0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
13658                  -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
13659                  -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
13660                  0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
13661                  0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
13662                  -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
13663                  0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
13664                 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
13665                  -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
13666                  -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
13667                  -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
13668                  -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
13669                  -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
13670                  0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
13671                  0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
13672                  0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
13673                  -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
13674                  -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
13675                 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
13676                  -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
13677                  0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
13678                  0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
13679                  0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
13680                  -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
13681                  -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
13682                 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
13683                  0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
13684                  -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
13685                  0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
13686                  0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
13687                  0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
13688                  -0.0372812069535 , -0.286740286332 , 0.00963701291166 ], 69, 3)
13689         connN = [ #polyhedron 0
13690             0 , 1 , 3 , 4 , 2 , -1 , 1 , 5 , 6 , 7 , 0 , -1 , 0 , 7 , 8 , 10 , 11 , 9 , 2 , -1 , 1 , 5 , 12 , 14 , 15 , 13 , 3 , -1 , 16 , 9 , 2 , 4 , 17 , -1
13691             , 4 , 3 , 13 , 18 , 17 , -1 , 5 , 6 , 19 , 21 , 20 , 12 , -1 , 6 , 7 , 8 , 23 , 22 , 19 , -1 , 23 , 24 , 10 , 8 , -1 , 25 , 11 , 9 , 16 , -1
13692             , 24 , 26 , 25 , 11 , 10 , -1 , 12 , 14 , 20 , -1 , 27 , 28 , 29 , 15 , 13 , 18 , -1 , 14 , 15 , 29 , 30 , 21 , 20 , -1 , 26 , 27 , 18 , 17 , 16 , 25 , -1
13693             , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
13694             # polyhedron 1
13695             0 , 7 , 8 , 10 , 11 , 9 , 2 , -1 , 32 , 0 , 7 , 35 , 34 , 33 , -1 , 32 , 0 , 2 , 37 , 36 , -1 , 35 , 7 , 8 , 40 , 39 , 38 , -1
13696             , 2 , 37 , 41 , 9 , -1 , 40 , 8 , 10 , 44 , 43 , 42 , -1 , 41 , 9 , 11 , 44 , 43 , -1 , 44 , 11 , 10 , -1 , 32 , 33 , 45 , 47 , 46 , 36 , -1
13697             , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
13698             , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
13699             # polyhedron 2
13700             6 , 7 , 8 , 23 , 22 , 19 , -1 , 6 , 35 , 7 , -1 , 6 , 35 , 38 , 19 , -1 , 35 , 7 , 8 , 40 , 39 , 38 , -1 , 53 , 22 , 19 , 38 , 39 , 54 , -1
13701             , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
13702             # polyhedron 3
13703             35 , 34 , 48 , 50 , 49 , 38 , -1 , 6 , 35 , 34 , 56 , 55 , 5 , -1 , 6 , 35 , 38 , 19 , -1 , 34 , 56 , 57 , 59 , 58 , 48 , -1
13704             , 60 , 61 , 21 , 19 , 38 , 49 , -1 , 62 , 50 , 48 , 58 , -1 , 60 , 63 , 64 , 62 , 50 , 49 , -1 , 5 , 6 , 19 , 21 , 20 , 12 , -1
13705             , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
13706             , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
13707         meshN=MEDCouplingUMesh.New()
13708         meshN.setName("ForBary")
13709         meshN.setMeshDimension(3) ; meshN.setCoords(coords)
13710         meshN.allocateCells(4)
13711         meshN.insertNextCell(NORM_POLYHED,113,connN);
13712         meshN.insertNextCell(NORM_POLYHED,99,connN[113:])
13713         meshN.insertNextCell(NORM_POLYHED,43,connN[212:])
13714         meshN.insertNextCell(NORM_POLYHED,92,connN[255:])
13715         d=meshN.computeEffectiveNbOfNodesPerCell()
13716         e=meshN.computeNbOfNodesPerCell()
13717         self.assertTrue(d.isEqual(DataArrayInt([32,28,12,26])))
13718         self.assertTrue(e.isEqual(DataArrayInt([96,84,36,78])))
13719         m0=MEDCoupling1DGTUMesh(meshN)
13720         c=MEDCouplingCMesh()
13721         arr=DataArrayDouble(3) ; arr.iota(10)
13722         c.setCoords(arr,arr,arr)
13723         m10=c.buildUnstructured()
13724         m11=c.build1SGTUnstructured()
13725         m12=MEDCoupling1SGTUMesh.New(m10)
13726         self.assertTrue(m12.isEqual(m11,1e-12))
13727         m12.setCoords(m0.getCoords()) # m12 is not OK geometrically but the aim of the test is only connectivity values
13728         m3=MEDCoupling1GTUMesh.AggregateOnSameCoordsToUMesh([m12,m0])
13729         m3.checkCoherency()
13730         self.assertEqual(m3.getCoords().getHiddenCppPointer(),m12.getCoords().getHiddenCppPointer())
13731         self.assertTrue(m3.getNodalConnectivity().isEqual(DataArrayInt([18,1,0,3,4,10,9,12,13,18,2,1,4,5,11,10,13,14,18,4,3,6,7,13,12,15,16,18,5,4,7,8,14,13,16,17,18,10,9,12,13,19,18,21,22,18,11,10,13,14,20,19,22,23,18,13,12,15,16,22,21,24,25,18,14,13,16,17,23,22,25,26,31,0,1,3,4,2,-1,1,5,6,7,0,-1,0,7,8,10,11,9,2,-1,1,5,12,14,15,13,3,-1,16,9,2,4,17,-1,4,3,13,18,17,-1,5,6,19,21,20,12,-1,6,7,8,23,22,19,-1,23,24,10,8,-1,25,11,9,16,-1,24,26,25,11,10,-1,12,14,20,-1,27,28,29,15,13,18,-1,14,15,29,30,21,20,-1,26,27,18,17,16,25,-1,22,19,21,30,31,-1,22,31,28,27,26,24,23,-1,31,30,29,28,31,0,7,8,10,11,9,2,-1,32,0,7,35,34,33,-1,32,0,2,37,36,-1,35,7,8,40,39,38,-1,2,37,41,9,-1,40,8,10,44,43,42,-1,41,9,11,44,43,-1,44,11,10,-1,32,33,45,47,46,36,-1,33,34,48,45,-1,35,34,48,50,49,38,-1,41,43,42,46,36,37,-1,38,39,51,49,-1,39,40,42,46,47,52,51,-1,45,47,52,50,48,-1,52,51,49,50,31,6,7,8,23,22,19,-1,6,35,7,-1,6,35,38,19,-1,35,7,8,40,39,38,-1,53,22,19,38,39,54,-1,23,53,54,40,8,-1,53,22,23,-1,39,54,40,31,35,34,48,50,49,38,-1,6,35,34,56,55,5,-1,6,35,38,19,-1,34,56,57,59,58,48,-1,60,61,21,19,38,49,-1,62,50,48,58,-1,60,63,64,62,50,49,-1,5,6,19,21,20,12,-1,55,5,12,65,-1,66,67,65,55,56,57,-1,63,66,57,59,64,-1,64,62,58,59,-1,60,63,66,67,68,61,-1,61,68,20,21,-1,67,68,20,12,65])))
13732         self.assertTrue(m3.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,186,286,330,423])))
13733         pass
13734
13735     def testSwig2Tetrahedrize1(self):
13736         d=DataArrayInt([0,3,6,10,14,20])
13737         d2=d.buildExplicitArrOfSliceOnScaledArr(slice(0,5,2))
13738         self.assertTrue(d2.isEqual(DataArrayInt([0,0,0, 2,2,2,2, 4,4,4,4,4,4])))
13739         m=MEDCouplingUMesh("Penta6",3)
13740         m.setCoords(DataArrayDouble([0,0,0,0,1,0,1,0,0,0,0,2,0,1,2,1,0,2],6,3)) ; m.getCoords().setInfoOnComponents(["X","YY","ZZZ"])
13741         m.allocateCells()
13742         m.insertNextCell(NORM_PENTA6,[1,2,0,4,5,3])
13743         st=m.getCoords().getHiddenCppPointer()
13744         c,a,b=m.tetrahedrize(PLANAR_FACE_5)
13745         c.checkCoherency2()
13746         self.assertTrue(a.isEqual(DataArrayInt([0,0,0])))
13747         self.assertEqual(0,b)
13748         self.assertEqual(m.getCoords().getHiddenCppPointer(),c.getCoords().getHiddenCppPointer())
13749         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([1,2,0,4,4,3,5,0,5,0,2,4])))
13750         del m,c
13751         #
13752         m2=MEDCouplingUMesh("octa12",3)
13753         coords=DataArrayDouble([1.,0.,0.,0.5,0.8660254037844386,0.,-0.5,0.8660254037844387,0.,-1.,1.2246467991473532e-16,0.,-0.5,-0.8660254037844384,0.,0.5,-0.866025403784439,0.,1.,0.,2.,0.5,0.8660254037844386,2.,-0.5,0.8660254037844387,2.,-1.,1.2246467991473532e-16,2.,-0.5,-0.8660254037844384,2.,0.5,-0.866025403784439,2.0],12,3)
13754         m2.setCoords(coords)
13755         m2.allocateCells()
13756         m2.insertNextCell(NORM_HEXGP12,[3,2,1,0,5,4,9,8,7,6,11,10])
13757         c,a,b=m2.tetrahedrize(PLANAR_FACE_5)
13758         c.checkCoherency2()
13759         self.assertTrue(a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0])))
13760         self.assertEqual(0,b)
13761         self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13762         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,4,9,9,10,8,4,8,4,2,9,2,5,4,8,8,10,11,4,11,4,5,8,2,1,5,8,8,11,7,5,7,5,1,8,1,0,5,7,7,11,6,5,6,5,0,7])))
13763         del m2,coords,c
13764         #
13765         coords=DataArrayDouble([0.,0.,0.,1.,0.,0.,1.,1.,0.,0.,1.,0.,0.,0.,2.,1.,0.,2.,1.,1.,2.,0.,1.,2.],8,3) ; coords.setInfoOnComponents(["X","YY","ZZZ"])
13766         m3=MEDCouplingUMesh("hexa8",3)
13767         m3.setCoords(coords)
13768         m3.allocateCells(0)
13769         m3.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13770         st=m3.getCoords().getHiddenCppPointer()
13771         c,a,b=m3.tetrahedrize(PLANAR_FACE_5)
13772         c.checkCoherency2()
13773         a.isEqual(DataArrayInt([0,0,0,0,0]))
13774         self.assertEqual(0,b)
13775         self.assertEqual(m3.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13776         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,6,2,1,3,7,6,4,3,0,4,1,6,4,5,1,3,6,1,4])))
13777         #
13778         m4=MEDCouplingUMesh("hexa8",3)
13779         m4.setCoords(coords)
13780         m4.allocateCells(0)
13781         m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13782         c,a,b=m4.tetrahedrize(PLANAR_FACE_6)
13783         c.checkCoherency2()
13784         a.isEqual(DataArrayInt([0,0,0,0,0,0]))
13785         self.assertEqual(0,b)
13786         self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13787         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,6,2,5,3,2,1,5,3,7,6,5,3,4,7,5,3,1,0,5,3,0,4,5])))
13788         #
13789         m4=MEDCouplingUMesh("hexa8",3)
13790         m4.setCoords(coords)
13791         m4.allocateCells(0)
13792         m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13793         st=m4.getCoords().getHiddenCppPointer()
13794         c,a,b=m4.tetrahedrize(GENERAL_24)
13795         c.checkCoherency2()
13796         a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]))
13797         self.assertEqual(7,b)
13798         self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
13799         self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
13800         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,7,8,14,7,6,8,14,6,2,8,14,2,3,8,14,3,2,9,14,2,1,9,14,1,0,9,14,0,3,9,14,3,0,10,14,0,4,10,14,4,7,10,14,7,3,10,14,2,6,11,14,6,5,11,14,5,1,11,14,1,2,11,14,7,4,12,14,4,5,12,14,5,6,12,14,6,7,12,14,1,5,13,14,5,4,13,14,4,0,13,14,0,1,13,14])))
13801         m4CoordsExp=DataArrayDouble([0.,0.,0.,1.,0.,0.,1.,1.,0.,0.,1.,0.,0.,0.,2.,1.,0.,2.,1.,1.,2.,0.,1.,2.,0.5,1.,1.,0.5,0.5,0.,0.,0.5,1.,1.,0.5,1.,0.5,0.5,2.,0.5,0.,1.,0.5,0.5,1.],15,3)
13802         m4CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13803         self.assertTrue(c.getCoords().isEqual(m4CoordsExp,1e-12))
13804         self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
13805         #
13806         m6=MEDCouplingUMesh("hexa8",3)
13807         m6.setCoords(coords)
13808         m6.allocateCells(0)
13809         m6.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13810         st=m6.getCoords().getHiddenCppPointer()
13811         c,a,b=m6.tetrahedrize(GENERAL_48)
13812         c.checkCoherency2()
13813         a.isEqual(DataArrayInt([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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]))
13814         self.assertEqual(19,b)
13815         self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
13816         self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
13817         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,20,8,26,3,8,21,26,3,9,20,26,3,22,9,26,3,21,12,26,3,12,22,26,8,10,2,23,8,2,13,23,8,20,10,23,8,26,20,23,8,13,21,23,8,21,26,23,12,26,21,25,12,21,16,25,12,22,26,25,12,17,22,25,12,16,0,25,12,0,17,25,21,23,13,18,21,13,1,18,21,26,23,18,21,25,26,18,21,1,16,18,21,16,25,18,9,11,20,24,9,20,26,24,9,7,11,24,9,14,7,24,9,26,22,24,9,22,14,24,20,6,10,15,20,10,23,15,20,11,6,15,20,24,11,15,20,23,26,15,20,26,24,15,22,24,26,19,22,26,25,19,22,14,24,19,22,4,14,19,22,25,17,19,22,17,4,19,26,15,23,5,26,23,18,5,26,24,15,5,26,19,24,5,26,18,25,5,26,25,19,5])))
13818         m6CoordsExp=DataArrayDouble([0.,0.,0.,1.,0.,0.,1.,1.,0.,0.,1.,0.,0.,0.,2.,1.,0.,2.,1.,1.,2.,0.,1.,2.,0.5,1.,0.,0.,1.,1.,1.,1.,1.,0.5,1.,2.,0.,0.5,0.,1.,0.5,0.,0.,0.5,2.,1.,0.5,2.,0.5,0.,0.,0.,0.,1.,1.,0.,1.,0.5,0.,2.,0.5,1.,1.,0.5,0.5,0.,0.,0.5,1.,1.,0.5,1.,0.5,0.5,2.,0.5,0.,1.,0.5,0.5,1.],27,3)
13819         m6CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13820         self.assertTrue(c.getCoords().isEqual(m6CoordsExp,1e-12))
13821         self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
13822         #
13823         m7=MEDCouplingUMesh("polyhed",3)
13824         coords=DataArrayDouble([1.,0.,0.,0.5,0.8660254037844386,0.,-0.5,0.8660254037844387,0.,-1.,0.,0.,-0.5,-0.8660254037844384,0.,0.5,-0.866025403784439,0.,1.,0.,2.,0.5,0.8660254037844386,2.,-0.5,0.8660254037844387,2.,-1.,0.,2.,-0.5,-0.8660254037844384,2.,0.5,-0.866025403784439,2.0],12,3) ; coords.setInfoOnComponents(["X","YY","ZZZ"])
13825         m7.setCoords(coords)
13826         m7.allocateCells()
13827         m7.insertNextCell(NORM_POLYHED,[3,2,1,0,5,4,-1,9,10,11,6,7,8,-1,3,9,8,2,-1,2,8,7,1,-1,1,7,6,0,-1,0,6,11,5,-1,5,11,10,4,-1,4,10,9,3])
13828         c,a,b=m7.tetrahedrize(PLANAR_FACE_5)
13829         c.checkCoherency2()
13830         self.assertTrue(a.isEqual(DataArrayInt([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,0,0,0,0])))
13831         self.assertEqual(9,b)
13832         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,12,20,2,1,12,20,1,0,12,20,0,5,12,20,5,4,12,20,4,3,12,20,9,10,13,20,10,11,13,20,11,6,13,20,6,7,13,20,7,8,13,20,8,9,13,20,3,9,14,20,9,8,14,20,8,2,14,20,2,3,14,20,2,8,15,20,8,7,15,20,7,1,15,20,1,2,15,20,1,7,16,20,7,6,16,20,6,0,16,20,0,1,16,20,0,6,17,20,6,11,17,20,11,5,17,20,5,0,17,20,5,11,18,20,11,10,18,20,10,4,18,20,4,5,18,20,4,10,19,20,10,9,19,20,9,3,19,20,3,4,19,20])))
13833         self.assertAlmostEqual(5.196152422706635,c.getMeasureField(False).accumulate()[0],12)
13834         m7CoordsExp=DataArrayDouble([1.0,0.0,0.0,0.5,0.8660254037844386,0.0,-0.5,0.8660254037844387,0.0,-1.0,0.,0.0,-0.5,-0.8660254037844384,0.0,0.5,-0.866025403784439,0.0,1.0,0.0,2.0,0.5,0.8660254037844386,2.0,-0.5,0.8660254037844387,2.0,-1.0,0.,2.0,-0.5,-0.8660254037844384,2.0,0.5,-0.866025403784439,2.0,0.0,0.0,0.0,0.0,0.,2.0,-0.75,0.4330127018922194,1.0,0.0,0.8660254037844386,1.0,0.75,0.4330127018922193,1.0,0.75,-0.4330127018922195,1.0,0.0,-0.8660254037844387,1.0,-0.75,-0.4330127018922191,1.0,0.0,0.,1.0],21,3)
13835         m7CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13836         self.assertTrue(c.getCoords().isEqual(m7CoordsExp,1e-12))
13837         del m7,coords,c
13838         #
13839         coords=DataArrayDouble([0.,0.,0.,1.,0.,0.,1.,1.,0.,0.,1.,0.,0.,0.,2.,1.,0.,2.,1.,1.,2.,0.,1.,2.],8,3) ; coords.setInfoOnComponents(["X","YY","ZZZ"])
13840         m8=MEDCouplingUMesh("pyra5",3)
13841         m8.setCoords(coords)
13842         m8.allocateCells(0)
13843         m8.insertNextCell(NORM_PYRA5,[3,2,1,0,7])
13844         st=m8.getCoords().getHiddenCppPointer()
13845         c,a,b=m8.tetrahedrize(PLANAR_FACE_5)
13846         self.assertEqual(m8.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13847         c.checkCoherency2()
13848         self.assertTrue(a.isEqual(DataArrayInt([0,0])))
13849         self.assertEqual(0,b)
13850         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,1,7,3,1,0,7])))
13851         self.assertAlmostEqual(0.6666666666666667,c.getMeasureField(False).accumulate()[0],12)
13852         pass
13853
13854     def testDualMesh3D1(self):
13855         arr=DataArrayDouble(2) ; arr.iota()
13856         c=MEDCouplingCMesh() ; c.setCoords(arr,arr,arr)
13857         m=c.buildUnstructured()
13858         t=m.tetrahedrize(PLANAR_FACE_5)[0]
13859         d=t.computeDualMesh()
13860         self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,29,118,207,236,325,354,383,472])))
13861         self.assertTrue(d.getNodalConnectivity().isEqual(DataArrayInt([26,11,42,8,-1,25,8,42,10,-1,29,10,42,11,-1,0,26,8,25,-1,0,25,10,29,-1,0,29,11,26,24,9,42,8,-1,26,8,42,11,-1,27,11,42,9,-1,1,24,8,26,-1,1,26,11,27,-1,30,13,43,12,-1,24,12,43,15,-1,32,15,43,13,-1,1,30,12,24,-1,1,32,13,30,-1,35,17,44,16,-1,32,16,44,19,-1,27,19,44,17,-1,1,35,16,32,-1,1,27,17,35,-1,24,15,46,9,-1,27,9,46,19,-1,32,19,46,15,27,9,42,11,-1,29,11,42,10,-1,28,10,42,9,-1,2,29,10,28,-1,2,27,11,29,-1,27,17,44,19,-1,38,19,44,18,-1,37,18,44,17,-1,2,37,17,27,-1,2,38,18,37,-1,28,21,45,23,-1,41,23,45,22,-1,38,22,45,21,-1,2,41,22,38,-1,2,28,23,41,-1,27,19,46,9,-1,28,9,46,21,-1,38,21,46,19,35,16,44,17,-1,36,18,44,16,-1,37,17,44,18,-1,3,36,16,35,-1,3,35,17,37,-1,3,37,18,36,24,8,42,9,-1,25,10,42,8,-1,28,9,42,10,-1,4,25,8,24,-1,4,28,10,25,-1,24,15,43,12,-1,31,12,43,14,-1,34,14,43,15,-1,4,24,12,31,-1,4,31,14,34,-1,34,21,45,20,-1,40,20,45,23,-1,28,23,45,21,-1,4,34,20,40,-1,4,40,23,28,-1,24,9,46,15,-1,28,21,46,9,-1,34,15,46,21,30,12,43,13,-1,31,14,43,12,-1,33,13,43,14,-1,5,31,12,30,-1,5,30,13,33,-1,5,33,14,31,40,23,45,20,-1,39,20,45,22,-1,41,22,45,23,-1,6,40,20,39,-1,6,39,22,41,-1,6,41,23,40,32,13,43,15,-1,34,15,43,14,-1,33,14,43,13,-1,7,33,13,32,-1,7,34,14,33,-1,32,19,44,16,-1,36,16,44,18,-1,38,18,44,19,-1,7,32,16,36,-1,7,36,18,38,-1,34,20,45,21,-1,39,22,45,20,-1,38,21,45,22,-1,7,39,20,34,-1,7,38,22,39,-1,32,15,46,19,-1,38,19,46,21,-1,34,21,46,15])))
13862         self.assertTrue(d.getCoords().isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.,1.,1.,0.,0.,0.,1.,1.,0.,1.,0.,1.,1.,1.,1.,1.,0.3333333333333333,0.,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.,0.6666666666666666,0.,0.6666666666666666,1.,0.3333333333333333,0.6666666666666666,0.6666666666666666,0.3333333333333333,1.,0.6666666666666666,0.3333333333333333,0.6666666666666666,1.,0.6666666666666666,0.3333333333333333,0.6666666666666666,0.6666666666666666,0.,0.6666666666666666,1.,0.3333333333333333,0.6666666666666666,0.6666666666666666,0.3333333333333333,0.3333333333333333,0.6666666666666666,1.,0.3333333333333333,0.6666666666666666,0.6666666666666666,0.3333333333333333,1.,0.6666666666666666,0.,0.6666666666666666,0.6666666666666666,0.5,0.,0.5,0.,0.,0.5,0.5,0.,0.,0.5,0.5,0.,0.,0.5,0.5,0.,0.5,0.,1.,0.,0.5,0.5,0.,1.,1.,0.5,0.5,1.,0.5,1.,0.5,0.5,1.,1.,0.5,0.,1.,1.,0.5,0.5,1.,0.,0.5,1.,0.5,0.5,1.,1.,0.,0.5,1.,0.,1.,0.5,0.25,0.25,0.25,0.75,0.25,0.75,0.75,0.75,0.25,0.25,0.75,0.75,0.5,0.5,0.5],47,3),1e-12))
13863         self.assertAlmostEqual(1.,d.getMeasureField(False).accumulate()[0],1e-13)
13864         pass
13865
13866     def testDualMesh2D1(self):
13867         arr=DataArrayDouble(5) ; arr.iota()
13868         c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
13869         m=c.buildUnstructured()
13870         m.simplexize(0)
13871         t=MEDCoupling1SGTUMesh(m)
13872         d=t.computeDualMesh()
13873         self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,20,28,34,42,54,66,78,86,94,106,118,130,138,146,158,170,182,190,196,204,212,220,224])))
13874         self.assertTrue(d.getNodalConnectivity().isEqual(DataArrayInt([26,81,25,0,25,81,27,82,29,83,30,1,30,83,31,84,33,85,34,2,34,85,35,86,37,87,38,3,38,87,39,88,41,4,27,81,26,5,42,89,28,82,29,82,28,89,43,90,45,91,32,84,31,83,33,84,32,91,46,92,48,93,36,86,35,85,37,86,36,93,49,94,51,95,40,88,39,87,41,88,40,95,52,96,54,9,43,89,42,10,55,97,44,90,45,90,44,97,56,98,58,99,47,92,46,91,48,92,47,99,59,100,61,101,50,94,49,93,51,94,50,101,62,102,64,103,53,96,52,95,54,96,53,103,65,104,67,14,56,97,55,15,68,105,57,98,58,98,57,105,69,106,71,107,60,100,59,99,61,100,60,107,72,108,74,109,63,102,62,101,64,102,63,109,75,110,77,111,66,104,65,103,67,104,66,111,78,112,80,19,69,105,68,20,70,106,71,106,70,21,73,108,72,107,74,108,73,22,76,110,75,109,77,110,76,23,79,112,78,111,80,112,79,24])))
13875         self.assertTrue(d.getCoords().isEqual(DataArrayDouble([0.,0.,1.,0.,2.,0.,3.,0.,4.,0.,0.,1.,1.,1.,2.,1.,3.,1.,4.,1.,0.,2.,1.,2.,2.,2.,3.,2.,4.,2.,0.,3.,1.,3.,2.,3.,3.,3.,4.,3.,0.,4.,1.,4.,2.,4.,3.,4.,4.,4.,0.5,0.,0.,0.5,0.5,0.5,0.5,1.,1.,0.5,1.5,0.,1.5,0.5,1.5,1.,2.,0.5,2.5,0.,2.5,0.5,2.5,1.,3.,0.5,3.5,0.,3.5,0.5,3.5,1.,4.,0.5,0.,1.5,0.5,1.5,0.5,2.,1.,1.5,1.5,1.5,1.5,2.,2.,1.5,2.5,1.5,2.5,2.,3.,1.5,3.5,1.5,3.5,2.,4.,1.5,0.,2.5,0.5,2.5,0.5,3.,1.,2.5,1.5,2.5,1.5,3.,2.,2.5,2.5,2.5,2.5,3.,3.,2.5,3.5,2.5,3.5,3.,4.,2.5,0.,3.5,0.5,3.5,0.5,4.,1.,3.5,1.5,3.5,1.5,4.,2.,3.5,2.5,3.5,2.5,4.,3.,3.5,3.5,3.5,3.5,4.,4.,3.5,0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1.3333333333333333,0.3333333333333333,1.6666666666666665,0.6666666666666666,2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3.333333333333333,0.3333333333333333,3.6666666666666665,0.6666666666666666,0.3333333333333333,1.3333333333333333,0.6666666666666666,1.6666666666666665,1.3333333333333333,1.3333333333333333,1.6666666666666665,1.6666666666666665,2.333333333333333,1.3333333333333333,2.6666666666666665,1.6666666666666665,3.333333333333333,1.3333333333333333,3.6666666666666665,1.6666666666666665,0.3333333333333333,2.333333333333333,0.6666666666666666,2.6666666666666665,1.3333333333333333,2.333333333333333,1.6666666666666665,2.6666666666666665,2.333333333333333,2.333333333333333,2.6666666666666665,2.6666666666666665,3.333333333333333,2.333333333333333,3.6666666666666665,2.6666666666666665,0.3333333333333333,3.333333333333333,0.6666666666666666,3.6666666666666665,1.3333333333333333,3.333333333333333,1.6666666666666665,3.6666666666666665,2.333333333333333,3.333333333333333,2.6666666666666665,3.6666666666666665,3.333333333333333,3.333333333333333,3.6666666666666665,3.6666666666666665],113,2),1e-12))
13876         self.assertAlmostEqual(16.,d.getMeasureField(False).accumulate()[0],1e-13)
13877         pass
13878
13879     def testSwig2LoadBalanceBBox1(self):
13880         arr=DataArrayDouble(5) ; arr.iota()
13881         t=MEDCouplingCMesh() ; t.setCoords(arr,arr)
13882         arr=DataArrayDouble(16) ; arr.iota() ; arr*=2./15
13883         s=MEDCouplingCMesh() ; s.setCoords(arr,arr[:]) ; s.translate([2.,1.])
13884         #
13885         s1=s.build1SGTUnstructured()
13886         t1=t.build1SGTUnstructured()
13887         w=MEDCouplingPointSet.ComputeNbOfInteractionsWithSrcCells(s1,t1,1e-12)
13888         wExp=DataArrayInt([0,0,0,0,0,0,64,64,0,0,64,64,0,0,0,0])
13889         self.assertTrue(w.isEqual(wExp))
13890         slcs=w.splitInBalancedSlices(4)
13891         self.assertEqual(len(slcs),4)
13892         self.assertEqual(slcs,[slice(0,7,1),slice(7,8,1),slice(8,11,1),slice(11,16,1)])
13893         bbs=s1.getBoundingBoxForBBTree()
13894         bbt=t1.getBoundingBoxForBBTree()
13895         self.assertTrue(bbt.computeNbOfInteractionsWith(bbs,1e-12).isEqual(wExp))
13896         pass
13897
13898     def testKrSpatialDiscretization2(self):
13899         srcPointCoordsXY=DataArrayDouble([0.8401877171547095,0.39438292681909304,0.7830992237586059,0.7984400334760733,0.9116473579367843,0.19755136929338396,0.335222755714889,0.768229594811904,0.2777747108031878,0.5539699557954305,0.47739705186216025,0.6288709247619244,0.36478447279184334,0.5134009101956155,0.9522297251747128,0.9161950680037007,0.6357117279599009,0.7172969294326831,0.14160255535580338,0.6069688762570586,0.01630057162432958,0.24288677062973696,0.13723157678601872,0.8041767542269904,0.15667908925408455,0.4009443942461835,0.12979044678145574,0.10880880202576929,0.998924518003559,0.21825690531090688,0.5129323944043984,0.8391122346926072,0.6126398325956612,0.29603161769734304,0.6375522677030192,0.5242871900667843,0.493582986990727,0.9727750238835695,0.29251678441302703,0.7713576977939148,0.5267449792133388,0.7699138362751873,0.4002286220901779,0.8915294520051822,0.2833147460051415,0.3524583472648907,0.8077245200088827,0.9190264739650424,0.06975527623191256,0.9493270753646861,0.5259953502221011,0.08605584785624214,0.19221384599442307,0.6632269270081198,0.8902326025488938,0.3488929352485076,0.06417132078864207,0.02002304886468828,0.4577017372742769,0.06309583832653977,0.23827995417559517,0.9706341316786754,0.9022080734848082,0.8509197867712563,0.2666657493760184,0.5397603407221662,0.3752069763723793,0.7602487363667454,0.5125353641400744,0.6677237607854063,0.5316064341606602,0.039280343353413204,0.4376375965949323,0.9318350562508382,0.9308097953585953,0.7209523430657351,0.28429340305006756,0.7385343149018168,0.6399788165651163,0.3540486797476414,0.687861390266503,0.16597416632155615,0.4401045276038835,0.880075236260926,0.829201093329676,0.3303371296871161,0.22896817104377232,0.8933724145839793,0.35036017855180435,0.6866699083180492,0.9564682529105192,0.5886401331930609,0.6573040395310633,0.8586763259296661,0.4395599194986559,0.9239697889070817,0.39843666665183225,0.8147668963366965,0.6842185252738271,0.9109720307919067,0.4824906566564416,0.21582495896882609,0.9502523741453198,0.9201282537170352,0.14766001475400292,0.8810621695039152,0.641080596317109,0.43195341826973177,0.6195964839400707,0.281059412416564,0.7860020980173732,0.3074578737409124,0.44703357920378145,0.22610662515559543,0.18753310953617705,0.27623467206779617,0.5564437553083728,0.4165012805799494,0.16960708618611428,0.9068039338601771,0.10317118843233734,0.1260753390966334,0.49544406658757667,0.7604752284290619,0.9847516650262995,0.9350039865518939,0.6844450168704823,0.3831883312124705,0.7497708824229291,0.36866354167864823,0.2941603620043771,0.2322615386137094,0.5844885006474743,0.24441273568403568,0.15238979186508328,0.7321485158671385,0.12547490472228962,0.7934703881821923,0.164101933671209,0.7450713891280216,0.07452980059875632,0.9501040316885822,0.05252926240327268,0.5215633798025378,0.1762106563785163,0.24006237240511102,0.797798051870334,0.732654411686889,0.6565636529850605,0.9674051385221095,0.6394583455470663,0.7597348418830591,0.09348047715308166,0.13490241166898162,0.5202100698464597,0.07823214171371988,0.06990639775521419,0.2046550862512808,0.4614204733918516,0.8196772801781433,0.5733186283955903,0.7555808353962288,0.05193881879185271,0.1578071285774033,0.9999935710802644,0.204328610656936,0.8899556444445419,0.12546847580255405,0.9977989993047895,0.054057577650089554,0.8705398649305757,0.07232879943788462,0.004161608873010431,0.9230691273338484,0.5938921792404224,0.180372265717188,0.16313149927329806,0.3916902306450951,0.9130266774040771,0.8196951527240198,0.35909536870154335,0.552485022485482,0.5794299941414176,0.452575845854625,0.687387434620125,0.09964006352221597,0.5308079880340062,0.7572938323753392,0.30429514977349675,0.9922284614258579,0.5769711125534824,0.877613778169087,0.7478092963564253,0.6289099313453351,0.03542090674649035,0.7478028669710285,0.8332385420022712,0.9253765511910322,0.8732713427735824,0.8310375408413995],100,2)
13900         srcFieldValsOnPoints=DataArrayDouble([0.7643742528498438,-0.023507696856211995,1.1082895131907775,0.6299357452572031,0.8892623544912389,0.72212114810697,0.9196401044320336,-0.759961711221917,0.40801932617748826,0.8441134300809151,0.982483804252809,0.6752368914020778,0.9924403977479798,1.1063334970204484,0.9403055261137516,0.3624481886322733,1.1344772505996308,0.7522965618948239,0.17077741651388564,0.6504551671311436,0.45843479588425423,0.41098905950326753,1.0681420394050904,-0.3483587903820091,0.5620151050607809,1.384969776596035,0.7948875141132845,0.7931192000237167,1.062498042490183,1.3709072529577366,0.44929346605311893,-0.4469683401788374,0.9035857424514101,0.6137249300593463,0.6355610879026966,1.4318174829507697,0.3097567072129551,-0.20515052260807165,0.6922559820922779,1.0341638749443423,1.3072652153341024,0.38511367353000436,0.9160514929274943,0.54513408530581,0.722252267913328,0.06684522818576251,0.10571899758067793,0.3193844999960903,0.5213532270828706,-0.04834998649603944,1.2408805068350615,-0.7632951295676795,0.5980054665011202,0.9064738717547436,1.1541070755096696,1.008234260272265,1.2225806960553827,1.0788560195121106,0.9818990282104452,0.5621951325841853,1.0796757508374188,0.5082872315589883,-0.9153702001062469,0.9560418838920791,0.9251098559152824,1.1603063610984021,1.2122303611181837,0.7379539363312343,0.6877611899207183,0.723966552446608,0.5596025827162566,0.8849725005989729,1.0908363665075547,0.08956512916455672,-0.10247645571248344,0.3236718069555875,1.069478546398975,1.3900071080692746,1.0322398863403262,0.45315515354558034,0.4249870238786733,1.030226761858634,0.974024629584669,1.2838885424020365,1.3451943506525155,1.4029933267831995,0.6025539675442462,1.2947650597767038,1.0006061239483002,-0.4017336259949164,0.8771165113201297,0.9158909024218246,1.403798605551443,0.4742904006425974,0.3671787905896653,0.20646491720419674,0.40739337434288925,0.7341932402033597,-0.4295893651836911,-0.3187777570661546],100,1)
13901         targetPointCoordsXY=DataArrayDouble([-0.5,-0.5,-0.5,-0.35,-0.5,-0.2,-0.5,-0.05,-0.5,0.1,-0.5,0.25,-0.5,0.4,-0.5,0.55,-0.5,0.7,-0.5,0.85,-0.5,1.0,-0.5,1.15,-0.5,1.3,-0.5,1.45,-0.35,-0.5,-0.35,-0.35,-0.35,-0.2,-0.35,-0.05,-0.35,0.1,-0.35,0.25,-0.35,0.4,-0.35,0.55,-0.35,0.7,-0.35,0.85,-0.35,1.0,-0.35,1.15,-0.35,1.3,-0.35,1.45,-0.2,-0.5,-0.2,-0.35,-0.2,-0.2,-0.2,-0.05,-0.2,0.1,-0.2,0.25,-0.2,0.4,-0.2,0.55,-0.2,0.7,-0.2,0.85,-0.2,1.0,-0.2,1.15,-0.2,1.3,-0.2,1.45,-0.05,-0.5,-0.05,-0.35,-0.05,-0.2,-0.05,-0.05,-0.05,0.1,-0.05,0.25,-0.05,0.4,-0.05,0.55,-0.05,0.7,-0.05,0.85,-0.05,1.0,-0.05,1.15,-0.05,1.3,-0.05,1.45,0.1,-0.5,0.1,-0.35,0.1,-0.2,0.1,-0.05,0.1,0.1,0.1,0.25,0.1,0.4,0.1,0.55,0.1,0.7,0.1,0.85,0.1,1.0,0.1,1.15,0.1,1.3,0.1,1.45,0.25,-0.5,0.25,-0.35,0.25,-0.2,0.25,-0.05,0.25,0.1,0.25,0.25,0.25,0.4,0.25,0.55,0.25,0.7,0.25,0.85,0.25,1.0,0.25,1.15,0.25,1.3,0.25,1.45,0.4,-0.5,0.4,-0.35,0.4,-0.2,0.4,-0.05,0.4,0.1,0.4,0.25,0.4,0.4,0.4,0.55,0.4,0.7,0.4,0.85,0.4,1.0,0.4,1.15,0.4,1.3,0.4,1.45,0.55,-0.5,0.55,-0.35,0.55,-0.2,0.55,-0.05,0.55,0.1,0.55,0.25,0.55,0.4,0.55,0.55,0.55,0.7,0.55,0.85,0.55,1.0,0.55,1.15,0.55,1.3,0.55,1.45,0.7,-0.5,0.7,-0.35,0.7,-0.2,0.7,-0.05,0.7,0.1,0.7,0.25,0.7,0.4,0.7,0.55,0.7,0.7,0.7,0.85,0.7,1.0,0.7,1.15,0.7,1.3,0.7,1.45,0.85,-0.5,0.85,-0.35,0.85,-0.2,0.85,-0.05,0.85,0.1,0.85,0.25,0.85,0.4,0.85,0.55,0.85,0.7,0.85,0.85,0.85,1.0,0.85,1.15,0.85,1.3,0.85,1.45,1.0,-0.5,1.0,-0.35,1.0,-0.2,1.0,-0.05,1.0,0.1,1.0,0.25,1.0,0.4,1.0,0.55,1.0,0.7,1.0,0.85,1.0,1.0,1.0,1.15,1.0,1.3,1.0,1.45,1.15,-0.5,1.15,-0.35,1.15,-0.2,1.15,-0.05,1.15,0.1,1.15,0.25,1.15,0.4,1.15,0.55,1.15,0.7,1.15,0.85,1.15,1.0,1.15,1.15,1.15,1.3,1.15,1.45,1.3,-0.5,1.3,-0.35,1.3,-0.2,1.3,-0.05,1.3,0.1,1.3,0.25,1.3,0.4,1.3,0.55,1.3,0.7,1.3,0.85,1.3,1.0,1.3,1.15,1.3,1.3,1.3,1.45,1.45,-0.5,1.45,-0.35,1.45,-0.2,1.45,-0.05,1.45,0.1,1.45,0.25,1.45,0.4,1.45,0.55,1.45,0.7,1.45,0.85,1.45,1.0,1.45,1.15,1.45,1.3,1.45,1.45],196,2)
13902         targetFieldValsExpected=DataArrayDouble([1.645976003316459, 1.454458180060204, 1.286087532859835, 1.147305389930914, 1.040143042030752, 0.9592075185603157, 0.8932542207607532, 0.8296417057622609, 0.7572539678257579, 0.6669048311361028, 0.551329882743212, 0.4064445075734602, 0.2323703965460786, 0.03253142054561309, 1.615321686989539, 1.414941300553572, 1.238383118538708, 1.096701655702075, 0.9955792747382535, 0.9271194507282707, 0.8741000712825546, 0.8201879508155141, 0.7537335933761495, 0.6656210809234322, 0.5470285414729397, 0.3927301586610237, 0.2044036897887453, -0.01181672742825013, 1.609602552867195, 1.400625195269133, 1.213287847440801, 1.065318574929208, 0.9717609562002842, 0.9182626517777217, 0.8760698972315855, 0.8258196104516153, 0.7586487405165288, 0.6686168424854784, 0.5434121624038266, 0.3741815029337978, 0.1661376046619205, -0.0704038088420833, 1.635421686625182, 1.422642113482769, 1.225977424080963, 1.066864693789366, 0.9864801043792362, 0.9486639217909161, 0.9075176697327381, 0.8471248730261529, 0.7660983406349626, 0.6675300501188994, 0.5320013361909732, 0.3404583135353376, 0.1074346390951333, -0.1520751802856468, 1.695346918429566, 1.489526279573347, 1.297678617961701, 1.139921240332637, 1.080508463804929, 1.036847769764088, 0.9687840669352359, 0.8790397822170175, 0.76938768351059, 0.6441978169925557, 0.4915328571013788, 0.2742929463574293, 0.0148214290833748, -0.2671755287427691, 1.782761788232491, 1.59423004798623, 1.422317125787222, 1.286999529473285, 1.20500638941831, 1.127058114031519, 1.022332539190471, 0.8945753999401338, 0.7469190939381181, 0.582396906110898, 0.4015920181411496, 0.1584700483835366, -0.1251860255418387, -0.4254052799545267, 1.881794862747652, 1.712890309994015, 1.557517508390291, 1.422727414977963, 1.308048056353061, 1.187569766723152, 1.03942150436647, 0.8677583087532357, 0.6766652050643343, 0.4703897480238999, 0.2497994532908829, -0.02005989176786582, -0.3224387891441491, -0.6331519303649853, 1.973114284621266, 1.820187301531605, 1.673403730111759, 1.528504440482262, 1.379693463484634, 1.207642134784147, 1.008217764780293, 0.7863328498822348, 0.5465383049529959, 0.2944879513187435, 0.03250657765404452, -0.2670900851421072, -0.5806516907976924, -0.8911331026431459, 2.038729888975378, 1.895652364645637, 1.751759791756183, 1.594035761810714, 1.403016809171641, 1.171403152610878, 0.913267035125007, 0.6343281031932027, 0.3434843176189371, 0.04195410032095204, -0.2645533663891493, -0.58577400250975, -0.8958218846257981, -1.192230697656513, 2.064018033720731, 1.922048791644444, 1.773847180028208, 1.600340336378483, 1.361620036333164, 1.060873411411508, 0.7373484802125152, 0.3868966266761109, 0.04316272760227413, -0.3009370030949727, -0.6505233805563486, -0.9669887470696283, -1.250005719852354, -1.519122595631787, 2.039938287785342, 1.887400820799651, 1.722008733683987, 1.523879290022419, 1.23834392230135, 0.8606985727866472, 0.4844892131548788, 0.08077959236877175, -0.3195742594962179, -0.726291368696764, -1.094357645641832, -1.359078900303776, -1.604725656501341, -1.845297168323687, 1.965762248218393, 1.791665198563286, 1.595056719739704, 1.353692777435502, 1.033006623003495, 0.6416349531117889, 0.2290046916364761, -0.1993180965088852, -0.6311618804827295, -1.051489875129883, -1.409404344854132, -1.681249363331096, -1.917859637689007, -2.145034400762945, 1.849053542205925, 1.648479366622312, 1.418493963148431, 1.141939527533839, 0.8042385795619003, 0.4127534639189761, -0.008572116677791453, -0.4428317297963555, -0.8745477268718713, -1.281769237471681, -1.635421857742795, -1.926210204560556, -2.175577364628722, -2.405762639746138, 1.701519686999922, 1.475879908746998, 1.219065416294153, 0.9203732349759972, 0.5740137315474942, 0.1856460506119944, -0.2298288912529738, -0.6558565521653752, -1.075391078040103, -1.469402631469075, -1.820558929095151, -2.123592211415966, -2.388177455227765, -2.628832075944413])
13903         coeffsExpected=DataArrayDouble([0.3953237723894342,-0.17220705170185724,0.620727139132215,-0.01938292763088709,-0.007524685306185282,0.0016277944443884584,-0.0005209587893117361,-1.8992696595839718,-0.13154330748345855,0.11248800965389728,-0.47310750305033406,0.03685741122098605,0.21362468750754374,0.8082608687799991,-0.6775548200221704,-0.027683208482275873,-0.007806877014495724,-0.013539239795959668,0.3478535665778018,0.005145793726360813,0.03708618549628136,-0.18235332489209385,-0.04517273339177797,-0.081755114492025,0.12791746560435255,0.09659355695676189,-0.024809653129318366,0.08327587452569823,-1.790380673650165,-0.10622983512164165,0.14989029282340274,0.05949513762355707,0.004548072841131278,0.011252095917834793,-0.004848057194721367,-0.2658537133108412,0.016651579133606154,-0.021640915366981317,0.008975511042160175,-0.021052213988815974,-0.09347841701844657,0.03533229488135717,-0.014556185287109863,-0.27228591670520086,0.002989987191209683,-0.5489428537951813,-0.02134456783001304,-0.22462281620064825,0.005230853443767429,-0.1894678262257301,0.0033140729457334884,5.295483062326795,-0.2724500716060311,0.026433905662192683,0.01368706308878908,-0.03014264855048227,0.053679001877659956,0.08109477254132096,-0.005004603067203444,0.016907143132293558,0.2105509502082437,0.003657404455024417,-4.904755847017426,0.01634808163992959,-0.008325515865305198,0.062188432751569676,-0.013114633511406406,0.11020519384963083,-0.008599402366091309,-0.012125149710784723,0.31723729052927313,-0.10298398036815914,-0.07250078775612204,0.39976713701763433,0.45897498107347223,0.01018626210400031,0.20163425809089347,0.19729093298588943,0.42863333455911523,0.015595097081693168,0.06060353651437489,-0.16379444813161725,-0.43290344196574165,-0.5931022701412187,1.1906610004748832,0.44418106894148945,0.06536220001548931,0.010261694323554562,-0.05943099382075491,-0.04939614579484797,0.002234505477641322,-0.011262130967449935,0.09644905007708474,-0.029518792883267808,0.41564004027396634,-0.18459770295961597,0.3100981306103734,-0.2509873737065425,0.5434321443668653,0.3009912967350914,1.9560655796099518,-0.7143435150084513,-1.5123449469879784])
13904         #
13905         nbOfInputPoints=100;
13906         f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
13907         mesh=MEDCoupling1SGTUMesh.New("aMesh",NORM_POINT1);
13908         mesh.setCoords(srcPointCoordsXY);
13909         f.setMesh(mesh);
13910         f.setArray(srcFieldValsOnPoints);
13911         f.checkCoherency();
13912         #
13913         res0=f.getValueOn([-0.5,-0.5]);
13914         self.assertAlmostEqual(targetFieldValsExpected.getIJ(0,0),res0[0],10)
13915         #
13916         valuesToTest=f.getValueOnMulti(targetPointCoordsXY);
13917         self.assertEqual(196,valuesToTest.getNumberOfTuples());
13918         self.assertEqual(1,valuesToTest.getNumberOfComponents());
13919         for i in xrange(40):
13920             self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
13921             pass
13922         fd=f.getDiscretization()
13923         del f
13924         self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
13925         coeffs,isDrift=fd.computeVectorOfCoefficients(mesh,srcFieldValsOnPoints)
13926         self.assertEqual(3,isDrift)
13927         self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
13928         # testing matrix
13929         pts3=[-0.5,-0.5,-0.5,-0.35,-0.35,-0.2]
13930         mesh.setCoords(srcPointCoordsXY[:4])
13931         m,nbCols=fd.computeEvaluationMatrixOnGivenPts(mesh,pts3)
13932         self.assertTrue(m.isEqual(DataArrayDouble([0.05768877688524917,-4.438982030395039,1.9495386255911573,3.431754627918642,0.11803848510231275,-4.138339658420563,1.6630742187104417,3.357226954607818,0.14630203028580618,-3.5156045565871734,1.414680070737206,2.954622455564169]),1e-12))
13933         if MEDCouplingHasNumPyBindings():
13934             import numpy as np
13935             m0=m.toNumPyArray() ; m0=m0.reshape(3,nbCols) ; m0=np.matrix(m0)
13936             srcFieldValsOnPoints2=DataArrayDouble(4,2) ; srcFieldValsOnPoints2[:,0]=srcFieldValsOnPoints[:4] ; srcFieldValsOnPoints2[:,1]=2*srcFieldValsOnPoints[:4]
13937             n0=srcFieldValsOnPoints2.toNumPyArray() ; n0=n0.reshape(4,2) ; n0=np.matrix(n0)
13938             #
13939             f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME) ;  f.setMesh(mesh) ; f.setArray(srcFieldValsOnPoints2) ; f.checkCoherency()
13940             self.assertTrue(DataArrayDouble(np.array((m0*n0))).isEqual(f.getValueOnMulti(pts3),1e-14))
13941             pass
13942         #
13943         pass
13944     
13945     # test the when input slice is all the same object is return by MEDCouplingMesh.buildPartRange
13946     def testSwig2MeshPartSlice1(self):
13947         a=DataArrayDouble(4) ; a.iota()
13948         c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m=c.buildUnstructured()
13949         fc0=c.getMeasureField(False) ; fc1=fc0[:] ; fc2=fc0*fc1 ; fc2.setName(fc0.getName())
13950         self.assertEqual(fc0.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
13951         self.assertEqual(fc2.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
13952         self.assertTrue(fc2.isEqual(fc1,1e-12,1e-12))
13953         #
13954         fm0=m.getMeasureField(False) ; fm1=fm0[:] ; fm2=fm0*fm1 ; fm2.setName(fm0.getName())
13955         self.assertEqual(fm0.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
13956         self.assertEqual(fm2.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
13957         self.assertTrue(fm2.isEqual(fm1,1e-12,1e-12))
13958         pass
13959
13960     # test the correct behaviour when attempting to aggregate two fields whose mesh is null
13961     def testSwig2MergeFieldsOnFieldsHavingNoMesh(self):
13962         a=DataArrayDouble(4) ; a.iota() ; a*=1.5
13963         c=MEDCouplingCMesh() ; c.setCoords(a,a) ; f1=c.getMeasureField(False)
13964         f1.setMesh(None) ; f2=f1.deepCpy() ; f2*=2
13965         f3=MEDCouplingFieldDouble.MergeFields(f1,f2)
13966         daExp=DataArrayDouble([2.25,2.25,2.25,2.25,2.25,2.25,2.25,2.25,2.25,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5])
13967         self.assertTrue(f3.getArray().isEqual(daExp,1e-12))
13968         self.assertEqual(f3.getTypeOfField(),ON_CELLS)
13969         self.assertEqual(f3.getMesh(),None)
13970         f4=MEDCouplingFieldDouble.MergeFields([f1,f2])
13971         self.assertTrue(f4.getArray().isEqual(daExp,1e-12))
13972         self.assertEqual(f4.getTypeOfField(),ON_CELLS)
13973         self.assertEqual(f4.getMesh(),None)
13974         pass
13975
13976     # test a simple node to cell convertion of a field
13977     def testSwig2NodeToCellDiscretization1(self):
13978         f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
13979         a1=DataArrayDouble(4) ; a1.iota()
13980         a2=DataArrayDouble(3) ; a2.iota()
13981         m=MEDCouplingCMesh() ; m.setCoords(a1,a2)
13982         f.setMesh(m)
13983         arr=DataArrayDouble([21.,121.,20.,120.,19.,119.,18.,118.,17.,117.,16.,116.,15.,115.,14.,114.,13.,113.,12.,112.,11.,111.,10.,110.],12,2) ; arr.setInfoOnComponents(["aa [km]","bbb [kJ]"])
13984         f.setArray(arr) ; f.setName("toto")
13985         #
13986         f2=f.nodeToCellDiscretization()
13987         self.assertEqual(ON_CELLS,f2.getTypeOfField())
13988         self.assertEqual("toto",f2.getName())
13989         self.assertEqual([1.1,2,3],f2.getTime())
13990         self.assertEqual(["aa [km]","bbb [kJ]"],f2.getArray().getInfoOnComponents())
13991         self.assertEqual(6,f2.getArray().getNumberOfTuples())
13992         self.assertEqual(f.getMesh().getHiddenCppPointer(),f2.getMesh().getHiddenCppPointer())
13993         exp=DataArrayDouble([18.5,118.5,17.5,117.5,16.5,116.5,14.5,114.5,13.5,113.5,12.5,112.5],6,2) ; exp.setInfoOnComponents(["aa [km]","bbb [kJ]"])
13994         self.assertTrue(f2.getArray().isEqual(exp,1e-13))
13995         pass
13996     
13997     def testSwig2NonRegressionBugIntersectMeshes1(self):
13998         src=MEDCouplingUMesh("src",2)
13999         src.setCoords(DataArrayDouble([-2.5,-3,-2.5,3,2.5,3],3,2))
14000         src.allocateCells()
14001         src.insertNextCell(NORM_TRI3,[0,1,2])
14002         #
14003         trg=MEDCouplingUMesh("trg",2)
14004         trg.setCoords(DataArrayDouble([-2.5,-3.,0.,-3.,0.,-2.,-2.,0.,-2.25,0.,-2.5,0.,-2.5,-1.5,0.,-2.5,-1.25,-3.,-1.414213562373095,-1.414213562373095],10,2))
14005         trg.allocateCells()
14006         trg.insertNextCell(NORM_QPOLYG,[2,1,0,5,3,7,8,6,4,9])
14007         #
14008         a,b,c=MEDCouplingUMesh.Intersect2DMeshes(src,trg,1.0e-8)
14009         a.mergeNodes(1e-8)
14010         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([-2.5,-3.,-2.5,3.,2.5,3.,0.,-3.,0.,-2.,-2.,0.,-2.25,0.,-2.5,0.,-2.5,-1.5,0.,-2.5,-1.25,-3.,-1.414213562373095,-1.414213562373095,-1.2803687993289596,-1.5364425591947515,-1.8901843996644798,-2.2682212795973755,-1.81117884244736,-0.8483107924994473,-2.5,1.5,0.,3.,0.6098156003355202,0.7317787204026243],18,2),1e-12))
14011         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([32,12,0,7,5,13,8,6,14,32,7,1,2,12,5,15,16,17,14,6])))
14012         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,20])))
14013         self.assertTrue(b.isEqual(DataArrayInt([0,0])))
14014         self.assertTrue(c.isEqual(DataArrayInt([0,-1])))
14015         pass
14016
14017     def testSwig2MeshOrientCorrectly2DCells1(self):
14018         m=MEDCouplingUMesh("mesh",2)
14019         coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
14020         m.setCoords(coo)
14021         m.allocateCells()
14022         m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
14023         m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
14024         self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
14025         m.changeSpaceDimension(3)
14026         m.orientCorrectly2DCells([0.,0.,-1.],False)
14027         #
14028         m.checkCoherency()
14029         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
14030         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
14031         m.changeSpaceDimension(2)
14032         self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
14033         pass
14034
14035     def testSwig2Hexa8HavingFacesWarped1(self):
14036         """ This test is bases on a "error" of interpolation detected. After investigation cell #3 of src is warped that leads to the fact that when trg is 
14037         intersected with src the sum of intersection volume is greater than the volume of the trg cell.
14038         A test that can be done is to split the cell #3 of src into tetrohedrons and by summing all the volumes it does not fit the volume computed of cell#3 unsplitted (expect for
14039         GENERAL_24).
14040         """
14041         srcCoo=DataArrayDouble([0.15694071546650565,0.09383333333333337,6.920842121738133,0.15774332475430292,0.185486666666667,6.920682472824616,0.1585459340420992,0.27713999999999994,6.9205228239111,0.07427195882345167,0.05782666666666668,6.937285959830335,0.06343673343819695,0.11347333333333297,6.939441220162809,0.05260150805294228,0.16911999999999996,6.941596480495282,0.014076262238703396,0.04800666666666667,6.949259628344076,0.014076262238703396,0.07092000000000007,6.949259628344076,0.15407499632681992,0.09383333333333338,6.897607484780063,0.15489234394181514,0.18548666666666702,6.897567331066572,0.15570969155680933,0.27714,6.897527177353081,0.06988819198237989,0.05782666666666669,6.901743317269663,0.05885399917995321,0.11347333333333298,6.9022853924017955,0.047819806377526586,0.16912,6.902827467533927,0.0085871208577874,0.048006666666666684,6.9047548457815076,0.0085871208577874,0.07092000000000008,6.9047548457815076,0.153883333333333,0.09383333333333338,6.820902,0.154701666666667,0.18548666666666702,6.820902,0.15551999999999996,0.27714,6.820902,0.06959499999999999,0.05782666666666669,6.820902,0.058547499999999975,0.11347333333333298,6.820902,0.04749999999999999,0.16912,6.820902],22,3)
14042         src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
14043         src.allocateCells()
14044         src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
14045         src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
14046         src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
14047         src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
14048         src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
14049         src.checkCoherency2()
14050         # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
14051         trgCoo=DataArrayDouble([0.0960891897852753,0.105088620541845,6.8598,0.0599574480546212,0.118434267436059,6.8598,0.113514510609589,0.14874473653263,6.8598,0.0831322609794463,0.167319109733883,6.8598,0.0960891897852753,0.105088620541845,6.92146666666667,0.0599574480546212,0.118434267436059,6.92146666666667,0.113514510609589,0.14874473653263,6.92146666666667,0.0831322609794463,0.167319109733883,6.92146666666667],8,3)
14052         trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
14053         trg.allocateCells()
14054         trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
14055         #
14056         srcFace=src.buildDescendingConnectivity()[0]
14057         conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
14058         eqFaces=srcFace.computePlaneEquationOf3DFaces()
14059         nodeIdInCell=3
14060         e=(srcFace.getCoords()[conn[:,nodeIdInCell]]*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# e represent the error between the expected 'a*X+b*Y+c*Z+d' in eqFaces and 0. Closer e to 0. is closer the 4th point is to the plane built with the 3 first points
14061         lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
14062         pts=lambd*eqFaces[:,:-1]+srcFace.getCoords()[conn[:,nodeIdInCell]]#pts represent the projection of the last points of each NORM_QUAD4 to the plane defined by the 3 first points of the NORM_QUAD4 cell
14063         shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
14064         check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
14065         idsToTest=check.getIdsNotInRange(0.,1e-10)
14066         self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
14067         idsToTest2=idsToTest.getIdsNotInRange(18,22)
14068         self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
14069         idsToTest2.rearrange(2)
14070         self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
14071         pass
14072
14073     def testSwig2SortHexa8EachOther1(self):
14074         """
14075         testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
14076         """
14077         coords1=DataArrayDouble([(-0.5,0.5,-0.5),(0.5,-0.5,-0.5),(-0.5,-0.5,0.5),(-0.5,-0.5,-0.5),(0.5,-0.5,0.5),(-0.5,0.5,0.5),(0.5,0.5,0.5),(0.5,0.5,-0.5)])
14078         m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
14079         m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
14080         m1.checkCoherency()
14081         #
14082         m2=m1.deepCpy() ; m2.setName("m2")
14083         #
14084         trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
14085         for i,t in enumerate(trs):
14086             for j in xrange(64):
14087                 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
14088                 m11=m1.deepCpy()
14089                 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
14090                 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
14091                 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
14092                 m11.translate(t)
14093                 #
14094                 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
14095                 m.mergeNodes(1e-12)
14096                 self.assertEqual(12,m.getNumberOfNodes())
14097                 m=MEDCoupling1SGTUMesh(m)
14098                 m.sortHexa8EachOther()
14099                 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
14100                 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
14101                 pass
14102             pass
14103         pass
14104
14105     def testSwig2normMinComputeAbs1(self):
14106         d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
14107         d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
14108         d0=d.computeAbs()
14109         dExp=d.deepCpy() ; dExp.abs()
14110         self.assertTrue(dExp.isEqual(d0,1e-12))
14111         e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
14112         self.assertAlmostEqual(0.,e.normMin(),13)
14113         self.assertAlmostEqual(0.009,d.normMin(),13)
14114         #
14115         di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
14116         di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
14117         d0i=di.computeAbs()
14118         diExp=di.deepCpy() ; diExp.abs()
14119         self.assertTrue(diExp.isEqual(d0i))
14120         self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
14121         pass
14122
14123     def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
14124         coo=DataArrayDouble([-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.,-0.5,0.,0.,0.5,0.,],7,2)
14125         m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
14126         m.insertNextCell(NORM_POLYGON,[6,3,4,5])
14127         m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
14128         m.checkCoherency2()
14129         #
14130         self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
14131         self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
14132         self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
14133         pass
14134     
14135     def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
14136         coo=DataArrayDouble([-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,-2.0816681711721685e-17,-2.0816681711721685e-17,-0.17677669529663687,0.1767766952966369,0.,0.5,0.5,0.,0.17677669529663684,-0.17677669529663692,0.17677669529663692,0.17677669529663684,-0.17677669529663692,-0.17677669529663687,0.,-0.5,-0.5,0.,0.33838834764831843,-0.3383883476483185,-0.33838834764831843,0.33838834764831843,-0.21213203435596423,0.21213203435596426,0.2121320343559642,-0.2121320343559643,0.21213203435596426,0.2121320343559642,-0.21213203435596423,-0.21213203435596428,0.3560660171779821,-0.35606601717798214,-0.35606601717798214,0.35606601717798214,0.19445436482630052,-0.19445436482630063,-0.19445436482630055,0.19445436482630057,0.,0.27],24,2)
14137         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14138         m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
14139         m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
14140         m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
14141         m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
14142         m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
14143         m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
14144         m.checkCoherency2()
14145         self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
14146         pass
14147
14148     def testSwig2DAIGetIdsEqualTuple1(self):
14149         da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
14150         self.assertTrue(da.getIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
14151         self.assertTrue(da.getIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
14152         self.assertTrue(da.getIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
14153         da.rearrange(3)
14154         self.assertRaises(InterpKernelException,da.getIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
14155         self.assertTrue(da.getIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
14156         self.assertTrue(da.getIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
14157         da.rearrange(1)
14158         self.assertTrue(da.getIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
14159         self.assertTrue(da.getIdsEqualTuple(2).isEqual(da.getIdsEqual(2)))
14160         pass
14161
14162     def testSwig2GaussNEStaticInfo1(self):
14163         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
14164         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
14165         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
14166         pass
14167
14168     def testSwigReverseNodalConnOnStructuredMesh(self):
14169         # 1D - standard
14170         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
14171         c.setCoordsAt(0,arr)
14172         rn,rni=c.getReverseNodalConnectivity()
14173         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14174         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14175         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14176         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14177         # 1D - limit
14178         c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
14179         c.setCoordsAt(0,arr)
14180         rn,rni=c.getReverseNodalConnectivity()
14181         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14182         self.assertTrue(rn.isEqual(DataArrayInt([0])))
14183         self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
14184         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14185         # 1D - limit
14186         c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
14187         c.setCoordsAt(0,arr)
14188         rn,rni=c.getReverseNodalConnectivity()
14189         rn.isEqual(DataArrayInt([]))
14190         rni.isEqual(DataArrayInt([0]))
14191         # 2D - standard
14192         c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
14193         c.setCoords(arr,arr2)
14194         rn,rni=c.getReverseNodalConnectivity()
14195         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14196         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,0,4,0,1,4,5,1,2,5,6,2,3,6,7,3,7,4,8,4,5,8,9,5,6,9,10,6,7,10,11,7,11,8,8,9,9,10,10,11,11])))
14197         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,8,10,14,18,22,24,26,30,34,38,40,41,43,45,47,48])))
14198         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14199         # 2D - limit
14200         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
14201         c.setCoords(arr,arr2)
14202         rn,rni=c.getReverseNodalConnectivity()
14203         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14204         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14205         # 2D - limit
14206         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
14207         c.setCoords(arr2,arr)
14208         rn,rni=c.getReverseNodalConnectivity()
14209         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14210         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14211         # 3D - standard
14212         c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
14213         c.setCoords(arr0,arr1,arr2)
14214         rn,rni=c.getReverseNodalConnectivity()
14215         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,0,4,0,1,4,5,1,2,5,6,2,3,6,7,3,7,4,4,5,5,6,6,7,7,0,8,0,1,8,9,1,2,9,10,2,3,10,11,3,11,0,4,8,12,0,1,4,5,8,9,12,13,1,2,5,6,9,10,13,14,2,3,6,7,10,11,14,15,3,7,11,15,4,12,4,5,12,13,5,6,13,14,6,7,14,15,7,15,8,16,8,9,16,17,9,10,17,18,10,11,18,19,11,19,8,12,16,20,8,9,12,13,16,17,20,21,9,10,13,14,17,18,21,22,10,11,14,15,18,19,22,23,11,15,19,23,12,20,12,13,20,21,13,14,21,22,14,15,22,23,15,23,16,16,17,17,18,18,19,19,16,20,16,17,20,21,17,18,21,22,18,19,22,23,19,23,20,20,21,21,22,22,23,23])))
14216         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,8,10,14,18,22,24,25,27,29,31,32,34,38,42,46,48,52,60,68,76,80,82,86,90,94,96,98,102,106,110,112,116,124,132,140,144,146,150,154,158,160,161,163,165,167,168,170,174,178,182,184,185,187,189,191,192])))
14217         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14218         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14219         pass
14220
14221     def testSwig2CellToNodeDiscretization1(self):
14222         m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
14223         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
14224         arr=DataArrayDouble(12) ; arr.iota()
14225         arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
14226         f.setArray(arr)
14227         f.checkCoherency()
14228         #
14229         ref=DataArrayDouble([0.,0.5,1.5,2.5,3.,2.,2.5,3.5,4.5,5.,6.,6.5,7.5,8.5,9.,8.,8.5,9.5,10.5,11.])
14230         ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
14231         f2=f.cellToNodeDiscretization()
14232         f2.checkCoherency()
14233         self.assertEqual(f2.getTime()[1:],[5,6])
14234         self.assertAlmostEqual(f2.getTime()[0],1.1,15)
14235         self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
14236         self.assertTrue(f2.getArray().isEqual(ref,1e-12))
14237         rn,rni=m.getReverseNodalConnectivity()
14238         rni2=(rni.deltaShiftIndex()).convertToDblArr()
14239         arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
14240         self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
14241         del f2
14242         #
14243         u=m.buildUnstructured() ; f.setMesh(u) ; del m
14244         f3=f.cellToNodeDiscretization()
14245         f3.checkCoherency()
14246         self.assertEqual(f3.getTime()[1:],[5,6])
14247         self.assertAlmostEqual(f3.getTime()[0],1.1,15)
14248         self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
14249         self.assertTrue(f3.getArray().isEqual(ref,1e-12))
14250         pass
14251
14252     def testSwig2GetMeshSpaceDimensionCMesh1(self):
14253         c=MEDCouplingCMesh()
14254         arr0=DataArrayDouble([0,1,2])
14255         arr1=DataArrayDouble([0])
14256         c.setCoords(arr0,arr0,arr0)
14257         self.assertEqual(c.getMeshDimension(),3)
14258         self.assertEqual(c.getSpaceDimension(),3)
14259         #
14260         c.setCoords(arr0,arr0,arr1)
14261         self.assertEqual(c.getMeshDimension(),2)
14262         self.assertEqual(c.getSpaceDimension(),3)
14263         #
14264         c.setCoords(arr0,arr0)
14265         self.assertEqual(c.getMeshDimension(),2)
14266         self.assertEqual(c.getSpaceDimension(),2)
14267         #
14268         c.setCoords(arr0,arr1)
14269         self.assertEqual(c.getMeshDimension(),1)
14270         self.assertEqual(c.getSpaceDimension(),2)
14271         #
14272         c.setCoords(arr0)
14273         self.assertEqual(c.getMeshDimension(),1)
14274         self.assertEqual(c.getSpaceDimension(),1)
14275         #
14276         c.setCoords(arr1)
14277         self.assertEqual(c.getMeshDimension(),0)
14278         self.assertEqual(c.getSpaceDimension(),1)
14279         pass
14280
14281     def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
14282         nx=6
14283         ny=6
14284         m=MEDCouplingCMesh()
14285         arr1=DataArrayDouble(nx) ; arr1.iota()
14286         arr2=DataArrayDouble(ny) ; arr2.iota()
14287         m.setCoords(arr1,arr2)
14288         m=m.buildUnstructured()
14289         da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
14290         m2=m[da] ; m2.simplexize(0)
14291         dan=da.buildComplement(m.getNumberOfCells())
14292         m1=m[dan]
14293         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
14294         #
14295         m.convertLinearCellsToQuadratic()
14296         m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
14297         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
14298         p=m.buildSpreadZonesWithPoly()
14299         self.assertTrue(p.getNodalConnectivity().isEqual(DataArrayInt([32,1,0,6,12,18,24,30,31,32,33,34,35,29,23,17,11,5,4,3,2,36,37,94,62,72,83,84,86,89,99,92,93,82,71,60,51,49,46,43,40])))
14300         self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
14301         self.assertTrue(p.getCoords().isEqual(DataArrayDouble([0.,0.,1.,0.,2.,0.,3.,0.,4.,0.,5.,0.,0.,1.,1.,1.,2.,1.,3.,1.,4.,1.,5.,1.,0.,2.,1.,2.,2.,2.,3.,2.,4.,2.,5.,2.,0.,3.,1.,3.,2.,3.,3.,3.,4.,3.,5.,3.,0.,4.,1.,4.,2.,4.,3.,4.,4.,4.,5.,4.,0.,5.,1.,5.,2.,5.,3.,5.,4.,5.,5.,5.,0.5,0.,0.,0.5,0.5,1.,1.,0.5,1.5,0.,1.5,1.,2.,0.5,2.5,0.,2.5,1.,3.,0.5,3.5,0.,3.5,1.,4.,0.5,4.5,0.,4.5,1.,5.,0.5,1.,1.5,1.5,2.,2.,1.5,2.5,2.,3.,1.5,3.5,2.,4.,1.5,4.5,2.,5.,1.5,0.5,2.,0.,2.5,0.5,3.,1.,2.5,2.,2.5,2.5,3.,3.,2.5,3.5,3.,4.,2.5,4.5,3.,5.,2.5,0.,3.5,0.5,4.,1.,3.5,1.5,3.,1.5,4.,2.,3.5,3.,3.5,3.5,4.,4.,3.5,4.5,4.,5.,3.5,0.,4.5,0.5,5.,1.,4.5,1.5,5.,2.,4.5,2.5,4.,2.5,5.,3.,4.5,4.,4.5,4.5,5.,5.,4.5,0.,1.5,0.5,1.5,1.5,2.5,2.5,3.5,3.5,4.5,3.5,5.0],100,2),1e-13))
14302         pass
14303
14304     def testSwig2Conformize2D1(self):
14305         eps = 1.0e-8
14306         coo = [0.,-0.5,0.,0.,0.5,0.,0.5,-0.5,0.25,
14307                -0.1,0.25,0.,0.5,-0.1,0.,0.5,0.5,0.5,0.25,0.4,0.25,0.5,0.5,0.4]
14308         conn = [5,5,2,6,4,5,6,3,0,1,5,4,5,10,8,11,9,5,11,2,1,7,10,9]
14309         connI = [0,5,12,17,24]
14310         m = MEDCouplingUMesh("box",2)
14311         cooArr = DataArrayDouble(coo,len(coo)/2,2)
14312         m.setCoords(cooArr)
14313         m.setConnectivity(DataArrayInt(conn),DataArrayInt(connI))
14314         m.mergeNodes(eps)
14315         m.checkCoherency()
14316         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([3])))
14317         self.assertEqual(m.getCoords().getHiddenCppPointer(),cooArr.getHiddenCppPointer()) # check that coordinates remain the same here
14318         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,5,2,6,4,5,6,3,0,1,5,4,5,10,8,11,9,5,11,2,5,1,7,10,9])))
14319         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,12,17,25])))
14320         pass
14321
14322     def testSwig2Conformize2D2(self):
14323         eps = 1.0e-8
14324         coo=DataArrayDouble([-10,-6,0,-6,0,0,7,0,-10,2,0,2,0,6,7,6,0,8,7,8,-10,12,-4,12,0,12,0,11,7,11,-4,16,0,16,7,16],18,2)
14325         conn=DataArrayInt([2,3,7,6, 13,16,17,14, 4,10,12,5, 9,14,13,8, 8,9,7,6, 5,4,0,1, 16,12,11,15])
14326         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14327         m.setCoords(coo)
14328         m.setNodalConnectivity(conn)
14329         m=m.buildUnstructured()
14330         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
14331         self.assertEqual(m.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer()) # check that coordinates remain the same here
14332         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,2,3,7,6,5, 5,13,12,16,17,14, 5,4,10,11,12,13,8,6,5, 4,9,14,13,8, 4,8,9,7,6, 5,5,4,0,1,2, 4,16,12,11,15])))
14333         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,6,12,21,26,31,37,42])))
14334         pass
14335
14336     def testSwigSplit2DCells1(self):
14337         coo=DataArrayDouble([[0,0],[1,0],[1,1],[0,1],[0.5,0],[1,0.5],[0.5,1],[0.,0.5]])
14338         m=MEDCouplingUMesh("mesh",2)
14339         m.setCoords(coo)
14340         m.allocateCells()
14341         m.insertNextCell(NORM_QUAD8,[0,1,2,3,4,5,6,7])
14342         _,d,di,_,_=m.buildDescendingConnectivity()
14343         subb=DataArrayInt([5])
14344         subbi=DataArrayInt([0,0,1,1,1])
14345         mid=DataArrayInt([-1,-1])
14346         midi=DataArrayInt([0,0,2,2,2])
14347         self.assertEqual(2,m.split2DCells(d,di,subb,subbi,mid,midi))
14348         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,1,5,2,3,4,8,9,6,7])))
14349         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11])))
14350         self.assertTrue(m.getCoords().isEqual(DataArrayDouble([[0,0],[1,0],[1,1],[0,1],[0.5,0],[1,0.5],[0.5,1],[0.,0.5],[1.,0.25],[1.,0.75]]),1e-12))
14351         pass
14352
14353     def testSwig2Conformize2D3(self):
14354         eps = 1.0e-8
14355         coo=DataArrayDouble([-10,-6,0,-6,0,0,7,0,-10,2,0,2,0,6.5,7,6.5,0,8,7,8,-10,12,-4,12,0,12,0,11,7,11,-4,16,0,16,7,16],18,2)
14356         conn=DataArrayInt([2,3,7,6, 13,16,17,14, 4,10,12,5, 9,14,13,8, 8,9,7,6, 5,4,0,1, 16,12,11,15])
14357         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14358         m.setCoords(coo)
14359         m.setNodalConnectivity(conn)
14360         m=m.buildUnstructured()
14361         m.convertLinearCellsToQuadratic()
14362         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
14363         self.assertTrue(m.getCoords().getHiddenCppPointer()!=coo.getHiddenCppPointer()) # coordinates are not the same here contrary to testSwig2Conformize2D2 ...
14364         self.assertTrue(m.getCoords()[:18].isEqual(coo,1e-12)) # but the 18 first nodes are the same
14365         pass
14366
14367     def testSwig2Conformize2D4(self):
14368         eps = 1.0e-8
14369         coo=DataArrayDouble([-10,-6,0,-6,0,0,7,0,-10,2,0,2,0,6.5,7,6.5,0,8,7,8,-10,12,-4,12,0,12,0,11,7,11,-4,16,0,16,7,16],18,2)
14370         conn=DataArrayInt([2,3,7,6, 13,16,17,14, 4,10,12,5, 9,14,13,8, 8,9,7,6, 5,4,0,1, 16,12,11,15])
14371         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14372         m.setCoords(coo)
14373         m.setNodalConnectivity(conn)
14374         m=m.buildUnstructured()
14375         m.convertLinearCellsToQuadratic()
14376         self.assertEqual(42,m.getNumberOfNodes())
14377         oldCoo=m.getCoords().deepCpy()
14378         m.conformize2D(eps)
14379         self.assertTrue(m.getCoords()[:42].isEqual(oldCoo,1e-12))
14380         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,2,3,7,6,5,18,19,20,42,43,32,13,12,16,17,14,44,38,23,24,25,32,4,10,11,12,13,8,6,5,26,45,39,44,31,34,42,29,8,9,14,13,8,30,25,31,32,8,8,9,7,6,32,33,20,34,32,5,4,0,1,2,29,35,36,46,43,8,16,12,11,15,38,39,40,41])))
14381         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11,22,39,48,57,68,77])))
14382         self.assertTrue(m.getCoords().isEqual(DataArrayDouble([[-10.,-6.0],[0.,-6.0],[0.,0.0],[7.,0.0],[-10.,2.0],[0.,2.0],[0.,6.5],[7.,6.5],[0.,8.0],[7.,8.0],[-10.,12.0],[-4.,12.0],[0.,12.0],[0.,11.0],[7.,11.0],[-4.,16.0],[0.,16.0],[7.,16.0],[3.5, 0.0],[7.,3.25],[3.5, 6.5],[0.,3.25],[0.,13.5],[3.5, 16.0],[7.,13.5],[3.5, 11.0],[-10.,7.0],[-5.,12.0],[0.,7.0],[-5.,2.0],[7.,9.5],[0.,9.5],[3.5, 8.0],[7.,7.25],[0.,7.25],[-10.,-2.0],[-5.,-6.0],[0.,-2.0],[0.,14.0],[-2.,12.0],[-4.,14.0],[-2.,16.0],[0.,4.25],[0.,1.0],[0.,11.5],[-7.,12.0],[0.,-3.]]),1e-12))
14383         pass
14384
14385     def testSwig2Conformize2D5(self):
14386         eps=1e-8
14387         coo=DataArrayDouble([[2,2],[2,-6],[10,-2],[-2,-2],[6,0],[6,-4],[2,7],[2,4.5],[-1.4641016151377544,0],[-1.950753362380551,-1.3742621398390762],[-7,-3],[-0.8284271247461898,-4.82842712474619],[0.26794919243112281,3.5],[0,1.4641016151377548],[-4.4753766811902755,-2.1871310699195381],[-3.9142135623730949,-3.9142135623730949],[-1.8042260651806146,-3.23606797749979]])
14388         m=MEDCouplingUMesh("mesh",2)
14389         m.allocateCells()
14390         m.setCoords(coo)
14391         m.insertNextCell(NORM_TRI6,[1,2,0,5,4,3])
14392         m.insertNextCell(NORM_TRI6,[8,6,0,12,7,13])
14393         m.insertNextCell(NORM_TRI6,[11,9,10,16,14,15])
14394         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0])))
14395         self.assertTrue(m.getCoords().isEqual(DataArrayDouble([2.,2.,2.,-6.,10.,-2.,-2.,-2.,6.,0.,6.,-4.,2.,7.,2.,4.5,-1.4641016151377544,0.,-1.950753362380551,-1.3742621398390762,-7.,-3.,-0.8284271247461898,-4.82842712474619,0.2679491924311228,3.5,8.881784197001252e-16,1.4641016151377548,-4.4753766811902755,-2.187131069919538,-3.914213562373095,-3.914213562373095,-1.8042260651806146,-3.236067977499789,-1.7705659643687133,-0.6647725630649153,0.46926627053963865,-5.695518130045146],19,2),1e-12))
14396         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,1,2,0,8,9,11,5,4,13,17,16,18,6,8,6,0,12,7,13,6,11,9,10,16,14,15])))
14397         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,13,20,27])))
14398         pass
14399
14400     def testSwigExtendedSlice1(self):
14401         d=DataArrayInt([5,6,7])
14402         self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
14403         self.assertTrue(d[3:].isEqual(DataArrayInt([])))
14404         try:
14405             d[4:]
14406         except InterpKernelException as e:
14407             self.assertTrue(True)
14408         else:
14409             self.assertTrue(False)
14410             pass
14411         d=DataArrayInt([5,6,7,8])
14412         self.assertEqual(d[-1],8)
14413         self.assertEqual(d[-4],5)
14414         try:
14415             d[-5]
14416         except InterpKernelException as e:
14417             self.assertTrue(True)
14418         else:
14419             self.assertTrue(False)
14420             pass
14421         self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
14422         self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
14423         self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
14424         self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
14425         self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
14426         try:
14427             d[-6::-1]
14428         except InterpKernelException as e:
14429             self.assertTrue(True)
14430         else:
14431             self.assertTrue(False)
14432             pass
14433         d=DataArrayInt([])
14434         self.assertTrue(d[0:].isEqual(DataArrayInt([])))
14435         #
14436         d=DataArrayDouble([5,6,7])
14437         self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
14438         self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
14439         try:
14440             d[4:]
14441         except InterpKernelException as e:
14442             self.assertTrue(True)
14443         else:
14444             self.assertTrue(False)
14445             pass
14446         d=DataArrayDouble([5,6,7,8])
14447         self.assertAlmostEqual(d[-1],8.,12)
14448         self.assertAlmostEqual(d[-4],5.,12)
14449         try:
14450             d[-5]
14451         except InterpKernelException as e:
14452             self.assertTrue(True)
14453         else:
14454             self.assertTrue(False)
14455             pass
14456         self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
14457         self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
14458         self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
14459         self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
14460         self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
14461         try:
14462             d[-6::-1]
14463         except InterpKernelException as e:
14464             self.assertTrue(True)
14465         else:
14466             self.assertTrue(False)
14467             pass
14468         d=DataArrayDouble([])
14469         self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
14470         pass
14471
14472     def testSwig2Hexa27GP1(self):
14473         """ This test focused on shape functions of hexa27.
14474         """
14475         coo=DataArrayDouble([[0.,2.,2.],[0.,0.,2.],[2.,0.,2.],[2.,2.,2.],[0.,2.,0.],[0.,0.,0.],[2.,0.,0.],[2.,2.,0.], [0.,1.,2.],[1.,0.,2.],[2.,1.,2.],[1.,2.,2.], [0.,1.,0.],[1.,0.,0.],[2.,1.,0.],[1.,2.,0.], [0.,2.,1.],[0.,0.,1.],[2.,0.,1.],[2.,2.,1.], [1.,1.,2.], [0.,1.,1.],[1.,0.,1.],[2.,1.,1.],[1.,2.,1.], [1.,1.,0.], [1.,1.,1.]])
14476         m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
14477         m.allocateCells()
14478         # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
14479         m.insertNextCell(NORM_HEXA27,[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])
14480         refCoo=[-1.,-1.,-1.,-1.,1.,-1.,1.,1.,-1.,1.,-1.,-1.,-1.,-1.,1.,-1.,1.,1.,1.,1.,1.,1.,-1.,1.,-1.,0.,-1.,0.,1.,-1.,1.,0.,-1.,0.,-1.,-1.,-1.,0.,1.,0.,1.,1.,1.,0.,1.,0.,-1.,1.,-1.,-1.,0.,-1.,1.,0.,1.,1.,0.,1.,-1.,0.,0.,0.,-1.,-1.,0.,0.,0.,1.,0.,1.,0.,0.,0.,-1.,0.,0.,0.,1.,0.,0.,0.]
14481         weights=[0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.7023319615912209,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571]
14482         gCoords=[-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,0.0,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.0,0.0,0.0,0.0,0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,0.0,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483]
14483         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14484         fGauss.setMesh(m)
14485         fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
14486         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14487         fGauss.setArray(arr)
14488         arrOfDisc=fGauss.getLocalizationOfDiscr()
14489         # the test is here
14490         self.assertTrue(arrOfDisc.isEqual(DataArrayDouble([0.2254033307585172,1.7745966692414836,1.7745966692414834,0.22540333075851715,1.7745966692414834,1.,0.22540333075851715,1.7745966692414836,0.22540333075851715,0.22540333075851715,1.,1.7745966692414834,0.2254033307585171,1.,1.,0.22540333075851715,1.0000000000000002,0.2254033307585171,0.22540333075851715,0.22540333075851715,1.7745966692414838,0.22540333075851715,0.22540333075851715,1.,0.22540333075851715,0.22540333075851715,0.22540333075851715,1.,1.7745966692414832,1.7745966692414834,1.,1.774596669241483,1.,1.0000000000000002,1.7745966692414832,0.22540333075851712,1.,1.,1.774596669241483,1.,1.,1.,1.,1.,0.2254033307585171,1.,0.22540333075851715,1.7745966692414834,1.,0.2254033307585171,1.,1.0000000000000002,0.22540333075851715,0.2254033307585171,1.7745966692414834,1.7745966692414834,1.7745966692414836,1.7745966692414832,1.7745966692414834,1.0000000000000002,1.7745966692414834,1.7745966692414836,0.22540333075851712,1.7745966692414832,1.,1.7745966692414834,1.774596669241483,1.,1.,1.7745966692414832,1.0000000000000002,0.22540333075851712,1.7745966692414836,0.22540333075851715,1.7745966692414836,1.7745966692414832,0.22540333075851715,1.,1.7745966692414836,0.22540333075851715,0.22540333075851715],27,3),1e-12))
14491         #
14492         weights=27*[1]
14493         gCoords=refCoo
14494         fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
14495         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14496         self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
14497         pass
14498
14499     def testSwig2Pyra13GP1(self):
14500         coo=DataArrayDouble([[0.,2.,0.],[2.,2.,0.],[2.,0.,0.],[0.,0.,0.],[1.,1.,2.],[1.,2.,0.],[2.,1.,0.],[1.,0.,0.],[0.,1.,0.],[0.5,1.5,1.],[1.5,1.5,1.],[1.5,0.5,1.],[0.5,0.5,1.]])
14501         m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
14502         m.allocateCells()
14503         # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
14504         m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
14505         refCoords=[1.,0.,0.,0.,-1.,0.,-1.,0.,0.,0.,1.,0.,0.,0.,1.,0.5,-0.5,0.,-0.5,-0.5,0.,-0.5,0.5,0.,0.5,0.5,0.,0.5,0.,0.5,0.,-0.5,0.5,-0.5,0.,0.5,0.,0.5,0.5]
14506         gaussCoords=[0.,0.,0.5,0.21210450275,0.21210450275,0.5,-0.21210450275,0.21210450275,0.5,-0.21210450275,-0.21210450275,0.5,0.21210450275,-0.21210450275,0.5,0.,0.,0.07579099449999999,0.,0.,0.9242090055000001,0.5394929090572634,0.,0.17359176399999998,0.,0.5394929090572634,0.17359176399999998,-0.5394929090572634,0.,0.17359176399999998,0.,-0.5394929090572634,0.17359176399999998,0.1133235629427366,0.,0.826408236,0.,0.1133235629427366,0.826408236,-0.1133235629427366,0.,0.826408236,0.,-0.1133235629427366,0.826408236,0.5826406005183961,0.5826406005183961,-0.053206449499999975,-0.5826406005183961,0.5826406005183961,-0.053206449499999975,-0.5826406005183961,-0.5826406005183961,-0.053206449499999975,0.5826406005183961,-0.5826406005183961,-0.053206449499999975,0.5532064495,0.,0.5,0.,0.5532064495,0.5,-0.5532064495,0.,0.5,0.,-0.5532064495,0.5,-0.029434151018396033,-0.029434151018396033,1.0532064495,0.029434151018396033,-0.029434151018396033,1.0532064495,0.029434151018396033,0.029434151018396033,1.0532064495,-0.029434151018396033,0.029434151018396033,1.0532064495]
14507         weights=[0.0492545926875,0.031210562625,0.031210562625,0.031210562625,0.031210562625,0.10663554205740113,0.0007171281994273535,0.0816994048010844,0.0816994048010844,0.0816994048010844,0.0816994048010844,0.0036048554264914074,0.0036048554264914074,0.0036048554264914074,0.0036048554264914074,0.008958181586640837,0.008958181586640837,0.008958181586640837,0.008958181586640837,0.002018983875,0.002018983875,0.002018983875,0.002018983875,2.286237794882217e-05,2.286237794882217e-05,2.286237794882217e-05,2.286237794882217e-05]
14508         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14509         fGauss.setMesh(m)
14510         fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
14511         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14512         fGauss.setArray(arr)
14513         arrOfDisc=fGauss.getLocalizationOfDiscr()
14514         # the test is here
14515         self.assertTrue(arrOfDisc.isEqual(DataArrayDouble([1.,1.,1.,0.5757909945,1.,1.,1.,0.5757909945,1.,1.4242090055,1.,1.,1.,1.4242090055,1.,1.,1.,0.151581989,1.,1.,1.848418011,0.4605070909427367,1.5394929090572635,0.347183528,0.4605070909427367,0.4605070909427367,0.347183528,1.5394929090572638,0.4605070909427366,0.347183528,1.5394929090572635,1.5394929090572638,0.347183528,0.8866764370572636,1.1133235629427367,1.652816472,0.8866764370572636,0.8866764370572636,1.652816472,1.1133235629427367,0.8866764370572636,1.652816472,1.1133235629427365,1.1133235629427367,1.652816472,-0.16528120103679209,1.,-0.106412899,1.,-0.1652812010367921,-0.106412899,2.1652812010367914,1.,-0.106412899,1.,2.165281201036791,-0.106412899,0.4467935505,1.5532064495,1.,0.4467935505,0.4467935505,1.,1.5532064495,0.4467935505,1.,1.5532064495,1.5532064495,1.,1.0588683020367922,1.,2.106412899,1.,1.0588683020367922,2.106412899,0.9411316979632077,1.,2.106412899,1.,0.9411316979632078,2.106412899],27,3),1e-12))
14516         #
14517         weights=13*[1]
14518         gaussCoords=refCoords[:] ; gaussCoords[14]=0.9999999999999 # change z of point #4 0.999... instead of 1. because with shape function it leads to division by 0. !
14519         fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
14520         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14521         self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity arount 0.,0.,1. !
14522         pass
14523
14524     def testSwig2Tri7GP1(self):
14525         coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
14526         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14527         m.allocateCells()
14528         # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
14529         m.insertNextCell(NORM_TRI7,range(7))
14530         refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
14531         gaussCoords=[0.3333333333333333,0.3333333333333333,0.470142064105115,0.470142064105115,0.05971587178977,0.470142064105115,0.470142064105115,0.05971587178977,0.101286507323456,0.101286507323456,0.797426985353088,0.101286507323456,0.101286507323456,0.797426985353088]
14532         weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
14533         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14534         fGauss.setMesh(m)
14535         fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
14536         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14537         fGauss.setArray(arr)
14538         arrOfDisc=fGauss.getLocalizationOfDiscr()
14539         self.assertTrue(arrOfDisc.isEqual(DataArrayDouble([0.666666666666667,0.666666666666667,0.9402841282102293,0.9402841282102293,0.9402841282102299,0.11943174357954002,0.11943174357953992,0.9402841282102299,0.20257301464691194,0.20257301464691196,0.20257301464691205,1.5948539707061757,1.5948539707061757,0.20257301464691202],7,2),1e-12))
14540         #
14541         weights=7*[1]
14542         gaussCoords=refCoords
14543         fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
14544         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14545         self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
14546         pass
14547
14548     def testSwig2StructuredDesc1(self):
14549         c=MEDCouplingCMesh()
14550         arr0=DataArrayDouble(3) ; arr0.iota()
14551         arr1=DataArrayDouble(4) ; arr1.iota()
14552         arr2=DataArrayDouble(5) ; arr2.iota()
14553         c.setCoords(arr0,arr1,arr2)
14554         #
14555         self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
14556         m=c.build1SGTSubLevelMesh()
14557         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([0,12,15,3,12,24,27,15,24,36,39,27,36,48,51,39,3,15,18,6,15,27,30,18,27,39,42,30,39,51,54,42,6,18,21,9,18,30,33,21,30,42,45,33,42,54,57,45,1,13,16,4,13,25,28,16,25,37,40,28,37,49,52,40,4,16,19,7,16,28,31,19,28,40,43,31,40,52,55,43,7,19,22,10,19,31,34,22,31,43,46,34,43,55,58,46,2,14,17,5,14,26,29,17,26,38,41,29,38,50,53,41,5,17,20,8,17,29,32,20,29,41,44,32,41,53,56,44,8,20,23,11,20,32,35,23,32,44,47,35,44,56,59,47,0,12,13,1,12,24,25,13,24,36,37,25,36,48,49,37,1,13,14,2,13,25,26,14,25,37,38,26,37,49,50,38,3,15,16,4,15,27,28,16,27,39,40,28,39,51,52,40,4,16,17,5,16,28,29,17,28,40,41,29,40,52,53,41,6,18,19,7,18,30,31,19,30,42,43,31,42,54,55,43,7,19,20,8,19,31,32,20,31,43,44,32,43,55,56,44,9,21,22,10,21,33,34,22,33,45,46,34,45,57,58,46,10,22,23,11,22,34,35,23,34,46,47,35,46,58,59,47,0,1,4,3,3,4,7,6,6,7,10,9,1,2,5,4,4,5,8,7,7,8,11,10,12,13,16,15,15,16,19,18,18,19,22,21,13,14,17,16,16,17,20,19,19,20,23,22,24,25,28,27,27,28,31,30,30,31,34,33,25,26,29,28,28,29,32,31,31,32,35,34,36,37,40,39,39,40,43,42,42,43,46,45,37,38,41,40,40,41,44,43,43,44,47,46,48,49,52,51,51,52,55,54,54,55,58,57,49,50,53,52,52,53,56,55,55,56,59,58])))
14558         self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
14559         #
14560         self.assertTrue(MEDCouplingStructuredMesh.Build1GTNodalConnectivityOfSubLevelMesh([3,7]).isEqual(DataArrayInt([0,3,3,6,6,9,9,12,12,15,15,18,1,4,4,7,7,10,10,13,13,16,16,19,2,5,5,8,8,11,11,14,14,17,17,20,0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11,12,13,13,14,15,16,16,17,18,19,19,20])))
14561         pass
14562
14563     def testSwig2Colinearize2D1(self):
14564         coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
14565         #
14566         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14567         m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
14568         refPtr=m.getCoords().getHiddenCppPointer()
14569         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14570         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14571         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14572         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14573         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
14574         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14575         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14576         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14577         #
14578         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14579         m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
14580         refPtr=m.getCoords().getHiddenCppPointer()
14581         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14582         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14583         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14584         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14585         #
14586         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14587         m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
14588         refPtr=m.getCoords().getHiddenCppPointer()
14589         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14590         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14591         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
14592         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14593         #
14594         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14595         m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
14596         refPtr=m.getCoords().getHiddenCppPointer()
14597         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14598         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14599         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
14600         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14601         ## false quadratic
14602         coo2=DataArrayDouble([(-5,0),(-1,0),(4,3),(7,0),(1,6),(1,0),(-3,0),(6,1),(5,0),(3,0),(2,0),(4,0),(6,0),(6.5,0.5),(5,2),(2.5,4.5),(-2,3),(-4,0),(-2,0),(0,0)])
14603         coo2.setInfoOnComponents(["aa","bbbb"])
14604         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
14605         m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
14606         refPtr=m.getCoords().getHiddenCppPointer()
14607         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14608         self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
14609         self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
14610         refPtr=m.getCoords().getHiddenCppPointer()
14611         self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
14612         self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
14613         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14614         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14615         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
14616         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14617         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14618         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14619         # mix of quadratic and linear inside a QPOLYG cell
14620         coo2=DataArrayDouble([(-5,0),(-1,0),(7.,6.),(7,0),(1,6),(1,0),(-3,0),(8.2426406871192839,3),(5,0),(3,0),  (2,0),(4,0),(6,0),(7.9196888946291288,1.3764116995614091),(7.9196888946291288,4.6235883004385911),(4,7.2426406871192848),(-2,3),(-4,0),(-2,0),(0,0)])
14621         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
14622         m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
14623         refPtr=m.getCoords().getHiddenCppPointer()
14624         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14625         self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
14626         self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
14627         self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
14628         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14629         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14630         pass
14631
14632     def testSwig2BoundingBoxForBBTree1(self):
14633         """ This test appears simple but it checks that bounding box are correctly computed for quadratic polygons. It can help a lot to reduce the amount of intersections !
14634         """
14635         coo=DataArrayDouble([-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.45,0.,0.3181980515339464,0.31819805153394637,0.,0.45,-0.31819805153394637,0.3181980515339464,-0.45,0.,-0.3181980515339465,-0.31819805153394637,0.,-0.45,0.3181980515339463,-0.3181980515339465,-0.5,0.0,0.0,0.5,0.5,0.0,0.0,-0.5,-0.4090990257669732,-0.4090990257669732,0.40909902576697316,-0.4090990257669732],18,2)
14636         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14637         m.allocateCells()
14638         m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
14639         m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
14640         self.assertTrue(m.getBoundingBoxForBBTree().isEqual(DataArrayDouble([-0.5,0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.31819805153394637],2,4),1e-12))
14641         pass
14642
14643     def testSwig2CartBuildUnstructuredOnExoticCases1(self):
14644         """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
14645         """
14646         #
14647         m=MEDCouplingCMesh()
14648         arrX=DataArrayDouble(3) ; arrX.iota()
14649         arrY=DataArrayDouble(4) ; arrY.iota()
14650         arrZ=DataArrayDouble(1) ; arrZ.iota()
14651         m.setCoords(arrX,arrY,arrZ)
14652         self.assertEqual(2,m.getMeshDimension())
14653         self.assertEqual(3,m.getSpaceDimension())
14654         mu=m.buildUnstructured()
14655         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
14656         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14657         coo0=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(0,1,0),(1,1,0),(2,1,0),(0,2,0),(1,2,0),(2,2,0),(0,3,0),(1,3,0),(2,3,0)])
14658         self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
14659         #
14660         m=MEDCouplingCMesh()
14661         arrX=DataArrayDouble(3) ; arrX.iota()
14662         arrY=DataArrayDouble(1) ; arrY.iota()
14663         arrZ=DataArrayDouble(4) ; arrZ.iota()
14664         m.setCoords(arrX,arrY,arrZ)
14665         self.assertEqual(2,m.getMeshDimension())
14666         self.assertEqual(3,m.getSpaceDimension())
14667         mu=m.buildUnstructured()
14668         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
14669         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14670         coo1=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(0,0,1),(1,0,1),(2,0,1),(0,0,2),(1,0,2),(2,0,2),(0,0,3),(1,0,3),(2,0,3)])
14671         self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
14672         #
14673         m=MEDCouplingCMesh()
14674         arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
14675         arrY=DataArrayDouble(3) ; arrY.iota()
14676         arrZ=DataArrayDouble(4) ; arrZ.iota()
14677         m.setCoords(arrX,arrY,arrZ)
14678         self.assertEqual(2,m.getMeshDimension())
14679         self.assertEqual(3,m.getSpaceDimension())
14680         mu=m.buildUnstructured()
14681         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
14682         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14683         coo2=DataArrayDouble([(9,0,0),(9,1,0),(9,2,0),(9,0,1),(9,1,1),(9,2,1),(9,0,2),(9,1,2),(9,2,2),(9,0,3),(9,1,3),(9,2,3)])
14684         self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
14685         #
14686         m=MEDCouplingCMesh()
14687         arrX=DataArrayDouble(3) ; arrX.iota()
14688         arrY=DataArrayDouble(1) ; arrY.iota(7)
14689         arrZ=DataArrayDouble(1) ; arrZ.iota(8)
14690         m.setCoords(arrX,arrY,arrZ)
14691         self.assertEqual(1,m.getMeshDimension())
14692         self.assertEqual(3,m.getSpaceDimension())
14693         mu=m.buildUnstructured()
14694         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14695         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14696         coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
14697         self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
14698         #
14699         m=MEDCouplingCMesh()
14700         arrX=DataArrayDouble(1) ; arrX.iota(7)
14701         arrY=DataArrayDouble(1) ; arrY.iota(8)
14702         arrZ=DataArrayDouble(3) ; arrZ.iota()
14703         m.setCoords(arrX,arrY,arrZ)
14704         self.assertEqual(1,m.getMeshDimension())
14705         self.assertEqual(3,m.getSpaceDimension())
14706         mu=m.buildUnstructured()
14707         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14708         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14709         coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
14710         self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
14711         #
14712         m=MEDCouplingCMesh()
14713         arrX=DataArrayDouble(3) ; arrX.iota()
14714         arrY=DataArrayDouble(1) ; arrY.iota(7)
14715         m.setCoords(arrX,arrY)
14716         self.assertEqual(1,m.getMeshDimension())
14717         self.assertEqual(2,m.getSpaceDimension())
14718         mu=m.buildUnstructured()
14719         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14720         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14721         coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
14722         self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
14723         #
14724         m=MEDCouplingCMesh()
14725         arrX=DataArrayDouble(1) ; arrX.iota(7)
14726         arrY=DataArrayDouble(3) ; arrY.iota()
14727         m.setCoords(arrX,arrY)
14728         self.assertEqual(1,m.getMeshDimension())
14729         self.assertEqual(2,m.getSpaceDimension())
14730         mu=m.buildUnstructured()
14731         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14732         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14733         coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
14734         self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
14735         pass
14736
14737     def testSwig2Colinearize2D2(self):
14738         """ simple non regression test but that has revealed a bug"""
14739         coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
14740         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14741         m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
14742         m.checkCoherency2()
14743         refPtr=m.getCoords().getHiddenCppPointer()
14744         #
14745         m.colinearize2D(1e-12)
14746         m.checkCoherency2()
14747         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14748         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,2,3,4])))
14749         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
14750         pass
14751
14752     def testSwig2CheckAndPreparePermutation2(self):
14753         a=DataArrayInt([10003,9999999,5,67])
14754         self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
14755         a=DataArrayInt([10003,-9999999,5,67])
14756         self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
14757         a=DataArrayInt([])
14758         self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
14759         pass
14760
14761     def testSwig2ComputeNeighborsOfNodes1(self):
14762         arrX=DataArrayDouble(3) ; arrX.iota()
14763         arrY=DataArrayDouble(4) ; arrY.iota()
14764         arrZ=DataArrayDouble(5) ; arrZ.iota()
14765         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
14766         # 3D
14767         a,b=m.computeNeighborsOfNodes()
14768         self.assertTrue(a.isEqual(DataArrayInt([1,3,12,0,4,13,2,1,5,14,0,4,15,6,3,1,16,5,7,4,2,17,8,3,7,18,9,6,4,19,8,10,7,5,20,11,6,10,21,9,7,22,11,10,8,23,13,15,0,24,12,16,1,14,25,13,17,2,26,12,16,3,18,27,15,13,4,17,19,28,16,14,5,20,29,15,19,6,21,30,18,16,7,20,22,31,19,17,8,23,32,18,22,9,33,21,19,10,23,34,22,20,11,35,25,27,12,36,24,28,13,26,37,25,29,14,38,24,28,15,30,39,27,25,16,29,31,40,28,26,17,32,41,27,31,18,33,42,30,28,19,32,34,43,31,29,20,35,44,30,34,21,45,33,31,22,35,46,34,32,23,47,37,39,24,48,36,40,25,38,49,37,41,26,50,36,40,27,42,51,39,37,28,41,43,52,40,38,29,44,53,39,43,30,45,54,42,40,31,44,46,55,43,41,32,47,56,42,46,33,57,45,43,34,47,58,46,44,35,59,49,51,36,48,52,37,50,49,53,38,48,52,39,54,51,49,40,53,55,52,50,41,56,51,55,42,57,54,52,43,56,58,55,53,44,59,54,58,45,57,55,46,59,58,56,47])))
14769         self.assertTrue(b.isEqual(DataArrayInt([0,3,7,10,14,19,23,27,32,36,39,43,46,50,55,59,64,70,75,80,86,91,95,100,104,108,113,117,122,128,133,138,144,149,153,158,162,166,171,175,180,186,191,196,202,207,211,216,220,223,227,230,234,239,243,247,252,256,259,263,266])))
14770         # 2D
14771         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
14772         a,b=m.computeNeighborsOfNodes()
14773         self.assertTrue(a.isEqual(DataArrayInt([1,3,0,4,2,1,5,0,4,6,3,1,5,7,4,2,8,3,7,9,6,4,8,10,7,5,11,6,10,9,7,11,10,8])))
14774         self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
14775         # 1D
14776         m=m.buildDescendingConnectivity()[0]
14777         a,b=m.computeNeighborsOfNodes()
14778         self.assertTrue(a.isEqual(DataArrayInt([1,3,0,4,2,1,5,0,4,6,3,1,5,7,4,2,8,3,7,9,6,4,8,10,7,5,11,6,10,9,7,11,10,8])))
14779         self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
14780         pass
14781
14782     def testSwigBugOnUnpackingTuplesInDataArray1(self):
14783         inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
14784         it=inp.__iter__()
14785         r=it.next()
14786         self.assertRaises(StopIteration,r.__getitem__,4)
14787         self.assertEqual(len(r),3)
14788         a,b,c=r
14789         r=it.next()
14790         self.assertEqual(len(r),3)
14791         d,e,f=r
14792         r=it.next()
14793         self.assertEqual(len(r),3)
14794         g,h,i=r
14795         r=it.next()
14796         self.assertEqual(len(r),3)
14797         j,k,l=r
14798         self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
14799         ########
14800         inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
14801         it=inp.__iter__()
14802         r=it.next()
14803         self.assertRaises(StopIteration,r.__getitem__,4)
14804         self.assertEqual(len(r),3)
14805         a,b,c=r
14806         r=it.next()
14807         self.assertEqual(len(r),3)
14808         d,e,f=r
14809         r=it.next()
14810         self.assertEqual(len(r),3)
14811         g,h,i=r
14812         r=it.next()
14813         self.assertEqual(len(r),3)
14814         j,k,l=r
14815         self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
14816         pass
14817
14818     def testSwig2IMesh1(self):
14819         """ 1st test of image grid mesh.
14820         """
14821         m=MEDCouplingIMesh()
14822         self.assertEqual(m.getSpaceDimension(),-1)
14823         self.assertEqual(1,len(m.__repr__().split("\n")))
14824         self.assertEqual(6,len(m.__str__().split("\n")))
14825         self.assertRaises(InterpKernelException,m.getNodeStruct)
14826         self.assertRaises(InterpKernelException,m.getOrigin)
14827         self.assertRaises(InterpKernelException,m.getDXYZ)
14828         m.setSpaceDimension(3)
14829         self.assertEqual(9,len(m.__str__().split("\n")))
14830         self.assertEqual(4,len(m.__repr__().split("\n")))
14831         self.assertEqual((0,0,0),m.getNodeStruct())
14832         self.assertEqual((0.,0.,0.),m.getOrigin())
14833         self.assertEqual((0.,0.,0.),m.getDXYZ())
14834         self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
14835         m.setNodeStruct([3,4,2])
14836         self.assertEqual((3,4,2),m.getNodeStruct())
14837         m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
14838         self.assertEqual((1.5,2.5,3.5),m.getOrigin())
14839         m.setDXYZ((0.5,1.,0.25))
14840         self.assertEqual((0.5,1.,0.25),m.getDXYZ())
14841         for it in DataArrayDouble([(1.5,2.5,3.5)]):
14842             m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
14843             pass
14844         self.assertEqual(3,m.getSpaceDimension())
14845         self.assertEqual((3,4,2),m2.getNodeStruct())
14846         self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
14847         self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
14848         self.assertEqual(24,m2.getNumberOfNodes())
14849         self.assertEqual(6,m2.getNumberOfCells())
14850         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14851         m2.setAxisUnit("m")
14852         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14853         m.setAxisUnit("m")
14854         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14855         m.setName("mesh")
14856         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14857         m2.setName("mesh")
14858         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14859         m2.setTime(1.1,0,3)
14860         self.assertTrue(not m.isEqual(m2,1e-12))
14861         m.setTime(1.1,0,3)
14862         self.assertTrue(m.isEqual(m2,1e-12))
14863         m.setTimeUnit("ms")
14864         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14865         m2.setTimeUnit("ms")
14866         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14867         #
14868         m2.setNodeStruct([3,2,4])
14869         self.assertTrue(not m.isEqual(m2,1e-12))
14870         m.setNodeStruct([3,2,4])
14871         self.assertTrue(m.isEqual(m2,1e-12))
14872         m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
14873         self.assertTrue(not m.isEqual(m2,1e-12))
14874         m2.setOrigin([1.5,3.5,2.5])
14875         self.assertTrue(m.isEqual(m2,1e-12))
14876         m.setDXYZ((0.5,0.25,1.))
14877         self.assertTrue(not m.isEqual(m2,1e-12))
14878         m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
14879         self.assertTrue(m.isEqual(m2,1e-12))
14880         m2bis=m2.deepCpy()
14881         self.assertTrue(m2bis.isEqual(m2,1e-12))
14882         #
14883         self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
14884         m2bis.refineWithFactor([3,3,3])
14885         self.assertEqual(162,m2bis.getNumberOfCells())
14886         self.assertEqual((7,4,10),m2bis.getNodeStruct())
14887         self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
14888         self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
14889         #
14890         self.assertEqual(3,m.getMeshDimension())
14891         self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
14892         mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
14893         mu.checkCoherency2()
14894         cooExp=DataArrayDouble([(1.5,3.5,2.5),(2,3.5,2.5),(2.5,3.5,2.5),(1.5,3.75,2.5),(2,3.75,2.5),(2.5,3.75,2.5),(1.5,3.5,3.5),(2,3.5,3.5),(2.5,3.5,3.5),(1.5,3.75,3.5),(2,3.75,3.5),(2.5,3.75,3.5),(1.5,3.5,4.5),(2,3.5,4.5),(2.5,3.5,4.5),(1.5,3.75,4.5),(2,3.75,4.5),(2.5,3.75,4.5),(1.5,3.5,5.5),(2,3.5,5.5),(2.5,3.5,5.5),(1.5,3.75,5.5),(2,3.75,5.5),(2.5,3.75,5.5)]) ; cooExp.setInfoOnComponents(["X [m]","Y [m]","Z [m]"])
14895         self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
14896         self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
14897         self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
14898         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,3,4,7,6,9,10,2,1,4,5,8,7,10,11,7,6,9,10,13,12,15,16,8,7,10,11,14,13,16,17,13,12,15,16,19,18,21,22,14,13,16,17,20,19,22,23])))
14899         bary=m.getBarycenterAndOwner()
14900         baryExp=DataArrayDouble([(1.75,3.625,3),(2.25,3.625,3),(1.75,3.625,4),(2.25,3.625,4),(1.75,3.625,5),(2.25,3.625,5)]) ; baryExp.setInfoOnComponents(["X [m]","Y [m]","Z [m]"])
14901         self.assertTrue(bary.isEqual(baryExp,1e-12))
14902         #
14903         c=m.convertToCartesian()
14904         c.checkCoherency()
14905         self.assertEqual([1.1,0,3],c.getTime())
14906         self.assertEqual("ms",c.getTimeUnit())
14907         self.assertEqual(3,c.getMeshDimension())
14908         self.assertEqual(3,c.getSpaceDimension())
14909         arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
14910         self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
14911         arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
14912         self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
14913         arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
14914         self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
14915         self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
14916         #
14917         a,b=m.getCellsContainingPoints(baryExp,1e-12)
14918         self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
14919         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
14920         for a,b in enumerate(baryExp):
14921             self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
14922             pass
14923         #
14924         m.translate([1.,2.,4.])
14925         self.assertEqual((3,2,4),m.getNodeStruct())
14926         self.assertEqual((2.5,5.5,6.5),m.getOrigin())
14927         self.assertEqual((0.5,0.25,1.),m.getDXYZ())
14928         m.scale([0.,1.,3.],2.)
14929         self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
14930         self.assertEqual((3,2,4),m.getNodeStruct())
14931         self.assertEqual((5.,10.,10.),m.getOrigin())
14932         self.assertEqual((1.,0.5,2.),m.getDXYZ())
14933         #
14934         f=m.getMeasureField(False)
14935         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
14936         f2.setName("MeasureOfMesh_mesh")
14937         self.assertTrue(f.isEqual(f2,1e-12,1e-12))
14938         #
14939         m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
14940         self.assertEqual((2,2,3),m3.getNodeStruct())
14941         self.assertEqual((6.,10.,12.),m3.getOrigin())
14942         self.assertEqual((1.,0.5,2.),m3.getDXYZ())
14943         # now playing with 3D surf
14944         m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
14945         self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
14946         self.assertEqual(3,m4.getSpaceDimension())
14947         self.assertEqual(2,m4.getMeshDimension())
14948         self.assertEqual(12,m4.getNumberOfNodes())
14949         self.assertEqual(6,m4.getNumberOfCells())
14950         mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
14951         mu.checkCoherency2()
14952         self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
14953         self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
14954         coordsExp=DataArrayDouble([(1.5,2.5,3.5),(2,2.5,3.5),(2.5,2.5,3.5),(1.5,2.5,3.75),(2,2.5,3.75),(2.5,2.5,3.75),(1.5,2.5,4),(2,2.5,4),(2.5,2.5,4),(1.5,2.5,4.25),(2,2.5,4.25),(2.5,2.5,4.25)]) ; coordsExp.setInfoOnComponents(["X [km]","Y [km]","Z [km]"])
14955         self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
14956         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,3,4,2,1,4,5,4,3,6,7,5,4,7,8,7,6,9,10,8,7,10,11])))
14957         pass
14958
14959     def testSwig1GetValuesAsTuple1(self):
14960         d=DataArrayDouble()
14961         self.assertEqual(d.getValues(),[])
14962         self.assertEqual(d.getValuesAsTuple(),[])
14963         d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
14964         self.assertEqual(d.getValues(),[0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.])
14965         self.assertEqual(d.getValuesAsTuple(),[(0.,1.,2.0),(3.,4.,5.0),(6.,7.,8.0),(9.,10.,11.0),(12.,13.,14.0),(15.,16.,17.0),(18.,19.,20.0),(21.,22.,23.)]) 
14966         d=DataArrayInt()
14967         self.assertEqual(d.getValues(),[])
14968         self.assertEqual(d.getValuesAsTuple(),[])
14969         d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
14970         self.assertEqual(d.getValues(),[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])
14971         self.assertEqual(d.getValuesAsTuple(),[(0,1,2),(3,4,5),(6,7,8),(9,10,11),(12,13,14),(15,16,17),(18,19,20),(21,22,23)])
14972         pass
14973
14974     def testSwig2AMR1(self):
14975         self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
14976         self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
14977         #
14978         amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
14979         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14980         self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
14981         self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
14982         self.assertEqual(0,amr.getNumberOfPatches())
14983         self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
14984         self.assertEqual(2,amr.getSpaceDimension())
14985         amr.addPatch([(1,2),(0,1)],[4,4])
14986         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14987         self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
14988         self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
14989         self.assertEqual(1,amr.getNumberOfPatches())
14990         self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
14991         self.assertEqual(2,amr.getSpaceDimension())
14992         amr[0].addPatch([(2,3),(1,3)],[3,2])
14993         self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
14994         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14995         self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
14996         self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
14997         self.assertEqual(1,amr.getNumberOfPatches())
14998         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
14999         self.assertEqual(2,amr.getSpaceDimension())
15000         amr[0].addPatch([(0,2),(3,4)],[3,2])
15001         self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
15002         self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
15003         self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
15004         self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
15005         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15006         self.assertEqual(2,amr.getSpaceDimension())
15007         del amr[0][1]
15008         self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
15009         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
15010         self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
15011         self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
15012         self.assertEqual(1,amr.getNumberOfPatches())
15013         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15014         self.assertEqual(2,amr.getSpaceDimension())
15015         pass
15016
15017     def testSwig2NonRegressionTestPAL1164(self):
15018         """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
15019         xarr=DataArrayDouble(3,1)
15020         xarr.iota(0.)
15021         cmesh=MEDCouplingCMesh()
15022         cmesh.setCoords(xarr,xarr,xarr)
15023         mesh=cmesh.buildUnstructured()
15024         f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
15025         f.setName("MyField")
15026         self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
15027         self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
15028         self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
15029         f.applyLin(2.,0.,0)# here it is OK !
15030         self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
15031         f.applyLin(2.,0.)
15032         self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
15033         pass
15034
15035     def testSwig2StructurizeMe1(self):
15036         arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
15037         arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
15038         arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
15039         c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
15040         c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
15041         u=c.buildUnstructured()
15042         cp=DataArrayInt([3,5,6,1,0,9,8,7,12,11,16,10,17,23,22,21,19,20,18,14,13,2,4,15])
15043         np=DataArrayInt([3,33,5,35,6,36,1,31,0,30,9,39,8,38,7,37,12,42,11,41,16,46,10,40,17,47,23,53,22,52,21,51,19,49,20,50,18,48,14,44,13,43,2,32,4,34,15,45,29,59,28,58,27,57,26,56,25,55,24,54])
15044         u.renumberCells(cp)
15045         u.renumberNodes(np,len(np))
15046         u=MEDCoupling1SGTUMesh(u)
15047         #
15048         e,d,f=u.structurizeMe()
15049         self.assertTrue(c.isEqual(e,1e-12))
15050         self.assertTrue(d.isEqual(cp))
15051         self.assertTrue(f.isEqual(np))
15052         pass
15053
15054     def testSwig2DenseMatrix1(self):
15055         m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
15056         self.assertEqual(m0.getNumberOfRows(),2)
15057         self.assertEqual(m0.getNumberOfCols(),3)
15058         self.assertEqual(m0.getNbOfElems(),6)
15059         ref=m0.getData().getHiddenCppPointer()
15060         m00=m0.deepCpy()
15061         self.assertTrue(m0.isEqual(m00,1e-12))
15062         m00.getData().setIJ(0,0,2.1)
15063         self.assertTrue(not m0.isEqual(m00,1e-12))
15064         m00.getData().setIJ(0,0,2.)
15065         self.assertTrue(m0.isEqual(m00,1e-12))
15066         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15067         #
15068         m000=m0*DataArrayDouble([5,9,3])
15069         self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
15070         #
15071         m0.reShape(3,2)
15072         self.assertTrue(not m0.isEqual(m00,1e-12))
15073         self.assertEqual(m0.getNumberOfRows(),3)
15074         self.assertEqual(m0.getNumberOfCols(),2)
15075         self.assertEqual(ref,m0.getData().getHiddenCppPointer())
15076         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15077         m0.reShape(2,3)
15078         self.assertTrue(m0.isEqual(m00,1e-12))
15079         self.assertEqual(ref,m0.getData().getHiddenCppPointer())
15080         self.assertEqual(m0.getNumberOfRows(),2)
15081         self.assertEqual(m0.getNumberOfCols(),3)
15082         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15083         #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
15084         m1=m0.deepCpy()
15085         self.assertEqual(m1.getNumberOfRows(),2)
15086         self.assertEqual(m1.getNumberOfCols(),3)
15087         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15088         m11=m0.deepCpy() ; m11+=m1
15089         self.assertEqual(m11.getNumberOfRows(),2)
15090         self.assertEqual(m11.getNumberOfCols(),3)
15091         self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
15092         m11=m11+m1
15093         self.assertEqual(m11.getNumberOfRows(),2)
15094         self.assertEqual(m11.getNumberOfCols(),3)
15095         self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
15096         m11=m11-m1
15097         self.assertEqual(m11.getNumberOfRows(),2)
15098         self.assertEqual(m11.getNumberOfCols(),3)
15099         self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
15100         m11-=m1
15101         self.assertEqual(m1.getNumberOfRows(),2)
15102         self.assertEqual(m1.getNumberOfCols(),3)
15103         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15104         m1.transpose()
15105         self.assertEqual(m1.getNumberOfRows(),3)
15106         self.assertEqual(m1.getNumberOfCols(),2)
15107         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
15108         #m1np=m0np.transpose()
15109         m2=m0*m1
15110         self.assertEqual(m2.getNumberOfRows(),2)
15111         self.assertEqual(m2.getNumberOfCols(),2)
15112         self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
15113         pass
15114
15115     def testSwig2AMR2(self):
15116         """ Test condensation of fine IMesh instance into a coarse one, with a factor. See testRemapperAMR1 in MEDCouplingRemapperTest.py file to see how the expected value is obtained."""
15117         coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
15118         fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
15119         MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
15120         self.assertTrue(coarse.isEqual(DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,312,376,440,14,15,1080,1144,1208,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]),1e-12))
15121         # 3D
15122         coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
15123         fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
15124         MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
15125         self.assertTrue(coarse.isEqual(DataArrayDouble([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.,32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,10464.,10720.,10976.,49.,50.,13536.,13792.,14048.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.,64.,65.,66.,67.,68.,69.,70.,71.,72.,73.,74.,75.,76.,77.,78.,79.,80.,35040.,35296.,35552.,84.,85.,38112.,38368.,38624.,89.,90.,91.,92.,93.,94.,95.,96.,97.,98.,99.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,59616.,59872.,60128.,119.,120.,62688.,62944.,63200.,124.,125.,126.,127.,128.,129.,130.,131.,132.,133.,134.,135.,136.,137.,138.,139.,140.,141.,142.,143.,144.,145.,146.,147.,148.,149.,150.,151.,152.,153.,154.,155.,156.,157.,158.,159.,160.,161.,162.,163.,164.,165.,166.,167.,168.,169.,170.,171.,172.,173.,174.]),1e-12))
15126         # 1D
15127         coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
15128         fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
15129         MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
15130         self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
15131         pass
15132
15133     def testSwig2AMR3(self):
15134         """ Test spread of coarse IMesh instance into a fine one, with a factor."""
15135         coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
15136         fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
15137         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
15138         self.assertTrue(fine.isEqual(DataArrayDouble([11.,11.,11.,11.,12.,12.,12.,12.,13.,13.,13.,13.,11.,11.,11.,11.,12.,12.,12.,12.,13.,13.,13.,13.,11.,11.,11.,11.,12.,12.,12.,12.,13.,13.,13.,13.,11.,11.,11.,11.,12.,12.,12.,12.,13.,13.,13.,13.,16.,16.,16.,16.,17.,17.,17.,17.,18.,18.,18.,18.,16.,16.,16.,16.,17.,17.,17.,17.,18.,18.,18.,18.,16.,16.,16.,16.,17.,17.,17.,17.,18.,18.,18.,18.,16.,16.,16.,16.,17.,17.,17.,17.,18.,18.,18.,18.]),1e-12))
15139         # 3D
15140         coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
15141         fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
15142         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
15143         self.assertTrue(fine.isEqual(DataArrayDouble([46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,46.,46.,46.,46.,47.,47.,47.,47.,48.,48.,48.,48.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,51.,51.,51.,51.,52.,52.,52.,52.,53.,53.,53.,53.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,81.,81.,81.,81.,82.,82.,82.,82.,83.,83.,83.,83.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,86.,86.,86.,86.,87.,87.,87.,87.,88.,88.,88.,88.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,116.,116.,116.,116.,117.,117.,117.,117.,118.,118.,118.,118.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.,121.,121.,121.,121.,122.,122.,122.,122.,123.,123.,123.,123.]),1e-12))
15144         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",3,DataArrayInt([6,8,6]),[0.,0.,0.],DataArrayDouble((1.,1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkCoherency()
15145         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",3,DataArrayInt([13,9,13]),[1.,2.,1.],DataArrayDouble((0.25,0.25,0.25)))) ; f.setArray(fine) ; f.setName("tutu") ; f.checkCoherency()
15146         # 1D
15147         coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
15148         fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
15149         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
15150         self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
15151         pass
15152
15153     def testSwig2AMR4(self):
15154         """This test focuses on MEDCouplingCartesianAMRMesh.createPatchesFromCriterion method. To test it a field containing 0 everywhere except in the annulus (centered on the center of the mesh) value is 1."""
15155         im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
15156         b=im.getBarycenterAndOwner() ; b-=[1.,1.] ; b=b.magnitude()
15157         ids=b.getIdsInRange(0.4,0.7)
15158         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
15159         # f.write("test.vti")
15160         amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
15161         arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
15162         bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
15163         amr.createPatchesFromCriterion(bso,arr2,[2,2])
15164         m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
15165         self.assertEqual(12,amr.getNumberOfPatches())
15166         exp0=[[(9,19),(9,19)],[(9,19),(31,41)],[(31,41),(9,19)],[(8,17),(19,25)],[(8,17),(25,31)],[(19,25),(8,17)],[(25,31),(8,17)],[(19,25),(33,42)],[(25,31),(33,42)],[(31,41),(31,41)],[(33,42),(19,25)],[(33,42),(25,31)]]
15167         for i,bltr in enumerate(exp0):
15168             self.assertEqual(amr[i].getBLTRRange(),bltr)
15169             pass
15170         self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
15171         #
15172         self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
15173         self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
15174         self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
15175         m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
15176         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
15177         self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
15178         pass
15179
15180     def testSwig2AMR5(self):
15181         """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
15182         # 1D
15183         coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
15184         fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
15185         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
15186         self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
15187         coarse.iota(-1000)
15188         MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
15189         self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
15190         # 2D
15191         coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
15192         fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
15193         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
15194         self.assertTrue(fine.isEqual(DataArrayDouble([15.,16.,16.,16.,16.,17.,17.,17.,17.,18.,18.,18.,18.,19.,22.,23.,23.,23.,23.,24.,24.,24.,24.,25.,25.,25.,25.,26.,22.,23.,23.,23.,23.,24.,24.,24.,24.,25.,25.,25.,25.,26.,22.,23.,23.,23.,23.,24.,24.,24.,24.,25.,25.,25.,25.,26.,22.,23.,23.,23.,23.,24.,24.,24.,24.,25.,25.,25.,25.,26.,29.,30.,30.,30.,30.,31.,31.,31.,31.,32.,32.,32.,32.,33.,29.,30.,30.,30.,30.,31.,31.,31.,31.,32.,32.,32.,32.,33.,29.,30.,30.,30.,30.,31.,31.,31.,31.,32.,32.,32.,32.,33.,29.,30.,30.,30.,30.,31.,31.,31.,31.,32.,32.,32.,32.,33.,36.,37.,37.,37.,37.,38.,38.,38.,38.,39.,39.,39.,39.,40.]),1e-12))
15195         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkCoherency()
15196         coarse.iota(-1000)
15197         fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
15198         MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
15199         MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
15200         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkCoherency()
15201         coarseExp=DataArrayDouble([-1000.,-999.,-998.,-997.,-996.,-995.,-994.,-993.,-992.,-991.,-990.,-989.,-988.,-987.,-986.,-985.,-984.,-983.,-982.,-981.,-980.,-979.,-978.,368.,384.,400.,-974.,-973.,-972.,-971.,480.,496.,512.,-967.,-966.,-965.,-964.,-963.,-962.,-961.,-960.,-959.,-958.,-957.,-956.,-955.,-954.,-953.,-952.,-951.,-950.,-949.,-948.,-947.,-946.,-945.,-944.,-943.,-942.,-941.,-940.,-939.,-938.])
15202         self.assertTrue(coarse.isEqual(coarseExp,1e-12))
15203         self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
15204         self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
15205         pass
15206
15207     def testSwig2AMR6(self):
15208         """ Idem testSwig2AMR5, except that only 2D is considered here, and fine to fine is considered here. At the end of the test some checks about typing with AMR structs."""
15209         amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
15210         da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
15211         amr.addPatch([(1,4),(2,4)],[4,4])
15212         amr.addPatch([(0,1),(0,1)],[4,4])
15213         amr.addPatch([(4,5),(3,4)],[4,4])
15214         amr.addPatch([(4,5),(1,3)],[4,4])
15215         amr.addPatch([(0,1),(1,4)],[4,4])
15216         da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
15217         da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
15218         da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
15219         da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
15220         da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
15221         self.assertEqual(5,amr.getNumberOfPatches())
15222         l=[da0,da1,da2,da3,da4]
15223         lCpy=[elt.deepCpy() for elt in l]
15224         l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
15225         amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
15226         amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
15227         amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
15228         #
15229         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
15230         f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkCoherency()
15231         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkCoherency()
15232         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkCoherency()
15233         f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkCoherency()
15234         f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkCoherency()
15235         #
15236         da0Exp=DataArrayDouble([28.8,16.9,16.9,16.9,16.9,17.9,17.9,17.9,17.9,18.9,18.9,18.9,18.9,25.7,34.8,23.9,23.9,23.9,23.9,24.9,24.9,24.9,24.9,25.9,25.9,25.9,25.9,31.7,40.8,23.9,23.9,23.9,23.9,24.9,24.9,24.9,24.9,25.9,25.9,25.9,25.9,37.7,46.8,23.9,23.9,23.9,23.9,24.9,24.9,24.9,24.9,25.9,25.9,25.9,25.9,43.7,52.8,23.9,23.9,23.9,23.9,24.9,24.9,24.9,24.9,25.9,25.9,25.9,25.9,49.7,58.8,30.9,30.9,30.9,30.9,31.9,31.9,31.9,31.9,32.9,32.9,32.9,32.9,7.6,64.8,30.9,30.9,30.9,30.9,31.9,31.9,31.9,31.9,32.9,32.9,32.9,32.9,13.6,70.8,30.9,30.9,30.9,30.9,31.9,31.9,31.9,31.9,32.9,32.9,32.9,32.9,19.6,76.8,30.9,30.9,30.9,30.9,31.9,31.9,31.9,31.9,32.9,32.9,32.9,32.9,25.6,36.9,37.9,37.9,37.9,37.9,38.9,38.9,38.9,38.9,39.9,39.9,39.9,39.9,40.9])
15237         da0Exp2=DataArrayDouble([15.9,16.9,16.9,16.9,16.9,17.9,17.9,17.9,17.9,18.9,18.9,18.9,18.9,19.9,22.9,15.2,16.2,17.2,18.2,19.2,20.2,21.2,22.2,23.2,24.2,25.2,26.2,26.9,22.9,29.2,30.2,31.2,32.2,33.2,34.2,35.2,36.2,37.2,38.2,39.2,40.2,26.9,22.9,43.2,44.2,45.2,46.2,47.2,48.2,49.2,50.2,51.2,52.2,53.2,54.2,26.9,22.9,57.2,58.2,59.2,60.2,61.2,62.2,63.2,64.2,65.2,66.2,67.2,68.2,26.9,29.9,71.2,72.2,73.2,74.2,75.2,76.2,77.2,78.2,79.2,80.2,81.2,82.2,33.9,29.9,85.2,86.2,87.2,88.2,89.2,90.2,91.2,92.2,93.2,94.2,95.2,96.2,33.9,29.9,99.2,100.2,101.2,102.2,103.2,104.2,105.2,106.2,107.2,108.2,109.2,110.2,33.9,29.9,113.2,114.2,115.2,116.2,117.2,118.2,119.2,120.2,121.2,122.2,123.2,124.2,33.9,36.9,37.9,37.9,37.9,37.9,38.9,38.9,38.9,38.9,39.9,39.9,39.9,39.9,40.9])
15238         self.assertTrue(da0.isEqual(da0Exp,1e-12))
15239         self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
15240         self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
15241         self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
15242         #
15243         g0=amr.retrieveGridsAt(0)
15244         self.assertEqual(1,len(g0))
15245         self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
15246         g1=amr.retrieveGridsAt(1)
15247         self.assertEqual(5,len(g1))
15248         for i in xrange(5):
15249             self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
15250             pass
15251         pass
15252     
15253     def testSwig2AMR7(self):
15254         """Idem testSwig2AMR6 except that we are in 1D"""
15255         amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
15256         da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
15257         amr.addPatch([(1,4)],[4])
15258         amr.addPatch([(0,1)],[4])
15259         da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
15260         da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
15261         self.assertEqual(2,amr.getNumberOfPatches())
15262         l=[da0,da1]
15263         lCpy=[elt.deepCpy() for elt in l]
15264         l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
15265         amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
15266         amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
15267         amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
15268         #
15269         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
15270         f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkCoherency()
15271         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkCoherency()
15272         #
15273         da0Exp=DataArrayDouble([4.4,2.9,2.9,2.9,2.9,3.9,3.9,3.9,3.9,4.9,4.9,4.9,4.9,5.9])
15274         da0Exp2=DataArrayDouble([1.9,1.2,2.2,3.2,4.2,5.2,6.2,7.2,8.2,9.2,10.2,11.2,12.2,5.9])
15275         self.assertTrue(da0.isEqual(da0Exp,1e-12))
15276         self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
15277         self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
15278         self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
15279         pass
15280
15281     def testSwig2AMR8(self):
15282         """This test checks 'basic' operations for ghost update."""
15283         ghostSz=1
15284         amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
15285         amr.addPatch([(1,4),(2,4)],[4,4])
15286         amr.addPatch([(4,5),(3,5)],[4,4])
15287         amr.addPatch([(0,1),(4,6)],[4,4])
15288         amr[0].addPatch([(10,12),(5,8)],[2,2])
15289         amr[1].addPatch([(0,1),(0,5)],[2,2])
15290         amr[2].addPatch([(3,4),(0,3)],[2,2])
15291         m=amr.buildMeshFromPatchEnvelop()
15292         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
15293         self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([1.,2.,4.,2.,1.,4.,4.,4.,4.,3.,5.,3.,4.,5.,5.,5.,0.,4.,1.,4.,0.,6.,1.,6.],12,2),1e-12))
15294         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15295         att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
15296         att.alloc()
15297         d=att.getFieldOn(amr,"Field")
15298         self.assertEqual(56,d.getNumberOfTuples())
15299         self.assertEqual(1,d.getNumberOfComponents())
15300         d.iota() ; d+=0.1
15301         d0=att.getFieldOn(amr[0].getMesh(),"Field")
15302         self.assertEqual(140,d0.getNumberOfTuples())
15303         self.assertEqual(1,d0.getNumberOfComponents())
15304         d0.iota() ; d0+=0.2
15305         d1=att.getFieldOn(amr[1].getMesh(),"Field")
15306         self.assertEqual(60,d1.getNumberOfTuples())
15307         self.assertEqual(1,d1.getNumberOfComponents())
15308         d1.iota() ; d1+=0.3
15309         d2=att.getFieldOn(amr[2].getMesh(),"Field")
15310         self.assertEqual(60,d2.getNumberOfTuples())
15311         self.assertEqual(1,d2.getNumberOfComponents())
15312         d2.iota() ; d2+=0.4
15313         d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
15314         self.assertEqual(48,d00.getNumberOfTuples())
15315         self.assertEqual(1,d00.getNumberOfComponents())
15316         d00.iota() ; d00+=0.5
15317         d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
15318         self.assertEqual(48,d10.getNumberOfTuples())
15319         self.assertEqual(1,d10.getNumberOfComponents())
15320         d10.iota() ; d10+=0.6
15321         d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
15322         self.assertEqual(32,d20.getNumberOfTuples())
15323         self.assertEqual(1,d20.getNumberOfComponents())
15324         d20.iota() ; d20+=0.7
15325         f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
15326         arrExp=DataArrayDouble([8.1,9.1,10.1,11.1,12.1,15.1,16.1,17.1,18.1,19.1,22.1,26.1,29.1,37.1,38.1,39.1,44.1,45.1,46.1,47.1,15.2,16.2,17.2,18.2,19.2,20.2,21.2,22.2,23.2,24.2,25.2,26.2,29.2,30.2,31.2,32.2,33.2,34.2,35.2,36.2,37.2,38.2,39.2,40.2,43.2,44.2,45.2,46.2,47.2,48.2,49.2,50.2,51.2,52.2,53.2,54.2,57.2,58.2,59.2,60.2,61.2,62.2,63.2,64.2,65.2,66.2,67.2,68.2,71.2,72.2,73.2,74.2,75.2,76.2,77.2,78.2,79.2,80.2,81.2,82.2,85.2,86.2,87.2,88.2,89.2,90.2,91.2,92.2,93.2,94.2,99.2,100.2,101.2,102.2,103.2,104.2,105.2,106.2,107.2,108.2,113.2,114.2,115.2,116.2,117.2,118.2,119.2,120.2,121.2,122.2,7.5,8.5,9.5,10.5,13.5,14.5,15.5,16.5,19.5,20.5,21.5,22.5,25.5,26.5,27.5,28.5,31.5,32.5,33.5,34.5,37.5,38.5,39.5,40.5,8.3,9.3,10.3,14.3,15.3,16.3,20.3,21.3,22.3,26.3,27.3,28.3,32.3,33.3,34.3,37.3,38.3,39.3,40.3,43.3,44.3,45.3,46.3,49.3,50.3,51.3,52.3,5.6,6.6,9.6,10.6,13.6,14.6,17.6,18.6,21.6,22.6,25.6,26.6,29.6,30.6,33.6,34.6,37.6,38.6,41.6,42.6,7.4,8.4,9.4,13.4,14.4,15.4,19.4,20.4,21.4,25.4,26.4,27.4,28.4,31.4,32.4,33.4,34.4,37.4,38.4,39.4,40.4,43.4,44.4,45.4,46.4,49.4,50.4,51.4,52.4,5.7,6.7,9.7,10.7,13.7,14.7,17.7,18.7,21.7,22.7,25.7,26.7])
15327         arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
15328         self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
15329         m=MEDCoupling1SGTUMesh(f.getMesh())
15330         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11,7,6,12,13,8,7,13,14,9,8,14,15,10,9,15,16,11,10,16,17,13,12,18,19,17,16,20,21,19,18,22,23,24,23,27,28,25,24,28,29,26,25,29,30,28,27,32,33,29,28,33,34,30,29,34,35,31,30,35,36,38,37,50,51,39,38,51,52,40,39,52,53,41,40,53,54,42,41,54,55,43,42,55,56,44,43,56,57,45,44,57,58,46,45,58,59,47,46,59,60,48,47,60,61,49,48,61,62,51,50,63,64,52,51,64,65,53,52,65,66,54,53,66,67,55,54,67,68,56,55,68,69,57,56,69,70,58,57,70,71,59,58,71,72,60,59,72,73,61,60,73,74,62,61,74,75,64,63,76,77,65,64,77,78,66,65,78,79,67,66,79,80,68,67,80,81,69,68,81,82,70,69,82,83,71,70,83,84,72,71,84,85,73,72,85,86,74,73,86,87,75,74,87,88,77,76,89,90,78,77,90,91,79,78,91,92,80,79,92,93,81,80,93,94,82,81,94,95,83,82,95,96,84,83,96,97,85,84,97,98,86,85,98,99,87,86,99,100,88,87,100,101,90,89,102,103,91,90,103,104,92,91,104,105,93,92,105,106,94,93,106,107,95,94,107,108,96,95,108,109,97,96,109,110,98,97,110,111,99,98,111,112,100,99,112,113,101,100,113,114,103,102,115,116,104,103,116,117,105,104,117,118,106,105,118,119,107,106,119,120,108,107,120,121,109,108,121,122,110,109,122,123,111,110,123,124,112,111,124,125,116,115,126,127,117,116,127,128,118,117,128,129,119,118,129,130,120,119,130,131,121,120,131,132,122,121,132,133,123,122,133,134,124,123,134,135,125,124,135,136,127,126,137,138,128,127,138,139,129,128,139,140,130,129,140,141,131,130,141,142,132,131,142,143,133,132,143,144,134,133,144,145,135,134,145,146,136,135,146,147,149,148,153,154,150,149,154,155,151,150,155,156,152,151,156,157,154,153,158,159,155,154,159,160,156,155,160,161,157,156,161,162,159,158,163,164,160,159,164,165,161,160,165,166,162,161,166,167,164,163,168,169,165,164,169,170,166,165,170,171,167,166,171,172,169,168,173,174,170,169,174,175,171,170,175,176,172,171,176,177,174,173,178,179,175,174,179,180,176,175,180,181,177,176,181,182,184,183,187,188,185,184,188,189,186,185,189,190,188,187,191,192,189,188,192,193,190,189,193,194,192,191,195,196,193,192,196,197,194,193,197,198,196,195,199,200,197,196,200,201,198,197,201,202,200,199,204,205,201,200,205,206,202,201,206,207,204,203,208,209,205,204,209,210,206,205,210,211,207,206,211,212,209,208,213,214,210,209,214,215,211,210,215,216,212,211,216,217,214,213,218,219,215,214,219,220,216,215,220,221,217,216,221,222,224,223,226,227,225,224,227,228,227,226,229,230,228,227,230,231,230,229,232,233,231,230,233,234,233,232,235,236,234,233,236,237,236,235,238,239,237,236,239,240,239,238,241,242,240,239,242,243,242,241,244,245,243,242,245,246,245,244,247,248,246,245,248,249,248,247,250,251,249,248,251,252,251,250,253,254,252,251,254,255,257,256,260,261,258,257,261,262,259,258,262,263,261,260,264,265,262,261,265,266,263,262,266,267,265,264,268,269,266,265,269,270,267,266,270,271,269,268,273,274,270,269,274,275,271,270,275,276,272,271,276,277,274,273,278,279,275,274,279,280,276,275,280,281,277,276,281,282,279,278,283,284,280,279,284,285,281,280,285,286,282,281,286,287,284,283,288,289,285,284,289,290,286,285,290,291,287,286,291,292,289,288,293,294,290,289,294,295,291,290,295,296,292,291,296,297,299,298,301,302,300,299,302,303,302,301,304,305,303,302,305,306,305,304,307,308,306,305,308,309,308,307,310,311,309,308,311,312,311,310,313,314,312,311,314,315,314,313,316,317,315,314,317,318])))
15331         self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([0.,0.,1.,0.,2.,0.,3.,0.,4.,0.,5.,0.,0.,1.,1.,1.,2.,1.,3.,1.,4.,1.,5.,1.,0.,2.,1.,2.,2.,2.,3.,2.,4.,2.,5.,2.,0.,3.,1.,3.,4.,3.,5.,3.,0.,4.,1.,4.,2.,4.,3.,4.,4.,4.,1.,5.,2.,5.,3.,5.,4.,5.,5.,5.,1.,6.,2.,6.,3.,6.,4.,6.,5.,6.,1.,2.,1.25,2.,1.5,2.,1.75,2.,2.,2.,2.25,2.,2.5,2.,2.75,2.,3.,2.,3.25,2.,3.5,2.,3.75,2.,4.,2.,1.,2.25,1.25,2.25,1.5,2.25,1.75,2.25,2.,2.25,2.25,2.25,2.5,2.25,2.75,2.25,3.,2.25,3.25,2.25,3.5,2.25,3.75,2.25,4.,2.25,1.,2.5,1.25,2.5,1.5,2.5,1.75,2.5,2.,2.5,2.25,2.5,2.5,2.5,2.75,2.5,3.,2.5,3.25,2.5,3.5,2.5,3.75,2.5,4.,2.5,1.,2.75,1.25,2.75,1.5,2.75,1.75,2.75,2.,2.75,2.25,2.75,2.5,2.75,2.75,2.75,3.,2.75,3.25,2.75,3.5,2.75,3.75,2.75,4.,2.75,1.,3.,1.25,3.,1.5,3.,1.75,3.,2.,3.,2.25,3.,2.5,3.,2.75,3.,3.,3.,3.25,3.,3.5,3.,3.75,3.,4.,3.,1.,3.25,1.25,3.25,1.5,3.25,1.75,3.25,2.,3.25,2.25,3.25,2.5,3.25,2.75,3.25,3.,3.25,3.25,3.25,3.5,3.25,3.75,3.25,4.,3.25,1.,3.5,1.25,3.5,1.5,3.5,1.75,3.5,2.,3.5,2.25,3.5,2.5,3.5,2.75,3.5,3.,3.5,3.25,3.5,3.5,3.5,1.,3.75,1.25,3.75,1.5,3.75,1.75,3.75,2.,3.75,2.25,3.75,2.5,3.75,2.75,3.75,3.,3.75,3.25,3.75,3.5,3.75,1.,4.,1.25,4.,1.5,4.,1.75,4.,2.,4.,2.25,4.,2.5,4.,2.75,4.,3.,4.,3.25,4.,3.5,4.,3.5,3.25,3.625,3.25,3.75,3.25,3.875,3.25,4.,3.25,3.5,3.375,3.625,3.375,3.75,3.375,3.875,3.375,4.,3.375,3.5,3.5,3.625,3.5,3.75,3.5,3.875,3.5,4.,3.5,3.5,3.625,3.625,3.625,3.75,3.625,3.875,3.625,4.,3.625,3.5,3.75,3.625,3.75,3.75,3.75,3.875,3.75,4.,3.75,3.5,3.875,3.625,3.875,3.75,3.875,3.875,3.875,4.,3.875,3.5,4.,3.625,4.,3.75,4.,3.875,4.,4.,4.,4.25,3.,4.5,3.,4.75,3.,5.,3.,4.25,3.25,4.5,3.25,4.75,3.25,5.,3.25,4.25,3.5,4.5,3.5,4.75,3.5,5.,3.5,4.25,3.75,4.5,3.75,4.75,3.75,5.,3.75,4.25,4.,4.5,4.,4.75,4.,5.,4.,4.,4.25,4.25,4.25,4.5,4.25,4.75,4.25,5.,4.25,4.,4.5,4.25,4.5,4.5,4.5,4.75,4.5,5.,4.5,4.,4.75,4.25,4.75,4.5,4.75,4.75,4.75,5.,4.75,4.,5.,4.25,5.,4.5,5.,4.75,5.,5.,5.,4.,3.,4.125,3.,4.25,3.,4.,3.125,4.125,3.125,4.25,3.125,4.,3.25,4.125,3.25,4.25,3.25,4.,3.375,4.125,3.375,4.25,3.375,4.,3.5,4.125,3.5,4.25,3.5,4.,3.625,4.125,3.625,4.25,3.625,4.,3.75,4.125,3.75,4.25,3.75,4.,3.875,4.125,3.875,4.25,3.875,4.,4.,4.125,4.,4.25,4.,4.,4.125,4.125,4.125,4.25,4.125,4.,4.25,4.125,4.25,4.25,4.25,0.,4.,0.25,4.,0.5,4.,0.75,4.,0.,4.25,0.25,4.25,0.5,4.25,0.75,4.25,0.,4.5,0.25,4.5,0.5,4.5,0.75,4.5,0.,4.75,0.25,4.75,0.5,4.75,0.75,4.75,1.,4.75,0.,5.,0.25,5.,0.5,5.,0.75,5.,1.,5.,0.,5.25,0.25,5.25,0.5,5.25,0.75,5.25,1.,5.25,0.,5.5,0.25,5.5,0.5,5.5,0.75,5.5,1.,5.5,0.,5.75,0.25,5.75,0.5,5.75,0.75,5.75,1.,5.75,0.,6.,0.25,6.,0.5,6.,0.75,6.,1.,6.,0.75,4.,0.875,4.,1.,4.,0.75,4.125,0.875,4.125,1.,4.125,0.75,4.25,0.875,4.25,1.,4.25,0.75,4.375,0.875,4.375,1.,4.375,0.75,4.5,0.875,4.5,1.,4.5,0.75,4.625,0.875,4.625,1.,4.625,0.75,4.75,0.875,4.75,1.,4.75],319,2),1e-12))
15332         # the test is here ! To be called after iteration with no remesh
15333         att.synchronizeAllGhostZones()
15334         f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkCoherency()
15335         ftmp=att.buildCellFieldOnWithoutGhost(amr,"Field") ; ftmp.checkCoherency() ; self.assertTrue(ftmp.getArray().isEqualWithoutConsideringStr(DataArrayDouble([8.1,9.1,10.1,11.1,12.1,15.1,16.1,17.1,18.1,19.1,22.1,23.1,24.1,25.1,26.1,29.1,30.1,31.1,32.1,33.1,36.1,37.1,38.1,39.1,40.1,43.1,44.1,45.1,46.1,47.1]),1e-12))
15336         f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
15337         f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
15338         f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
15339         f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
15340         f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
15341         f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
15342         self.assertTrue(f.getArray().isEqualWithoutConsideringStr(DataArrayDouble([0.1,1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1,10.1,11.1,12.1,13.1,14.1,15.1,16.1,17.1,18.1,19.1,20.1,21.1,22.1,23.1,24.1,25.1,26.1,27.1,28.1,29.1,30.1,31.1,32.1,33.1,34.1,35.1,36.1,37.1,38.1,39.1,40.1,41.1,42.1,43.1,44.1,45.1,46.1,47.1,48.1,49.1,50.1,51.1,52.1,53.1,54.1,55.1]),1e-12))
15343         self.assertTrue(f0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([15.1,16.1,16.1,16.1,16.1,17.1,17.1,17.1,17.1,18.1,18.1,18.1,18.1,19.1,22.1,15.2,16.2,17.2,18.2,19.2,20.2,21.2,22.2,23.2,24.2,25.2,26.2,26.1,22.1,29.2,30.2,31.2,32.2,33.2,34.2,35.2,36.2,37.2,38.2,39.2,40.2,26.1,22.1,43.2,44.2,45.2,46.2,47.2,48.2,49.2,50.2,51.2,52.2,53.2,54.2,26.1,22.1,57.2,58.2,59.2,60.2,61.2,62.2,63.2,64.2,65.2,66.2,67.2,68.2,26.1,29.1,71.2,72.2,73.2,74.2,75.2,76.2,77.2,78.2,79.2,80.2,81.2,82.2,7.3,29.1,85.2,86.2,87.2,88.2,89.2,90.2,91.2,92.2,93.2,94.2,95.2,96.2,13.3,29.1,99.2,100.2,101.2,102.2,103.2,104.2,105.2,106.2,107.2,108.2,109.2,110.2,19.3,29.1,113.2,114.2,115.2,116.2,117.2,118.2,119.2,120.2,121.2,122.2,123.2,124.2,25.3,10.4,37.1,37.1,37.1,37.1,38.1,38.1,38.1,38.1,39.1,39.1,39.1,39.1,31.3]),1e-12))
15344         self.assertTrue(f1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([68.2,26.1,26.1,26.1,26.1,27.1,82.2,7.3,8.3,9.3,10.3,34.1,96.2,13.3,14.3,15.3,16.3,34.1,110.2,19.3,20.3,21.3,22.3,34.1,124.2,25.3,26.3,27.3,28.3,34.1,39.1,31.3,32.3,33.3,34.3,41.1,39.1,37.3,38.3,39.3,40.3,41.1,39.1,43.3,44.3,45.3,46.3,41.1,39.1,49.3,50.3,51.3,52.3,41.1,46.1,47.1,47.1,47.1,47.1,48.1]),1e-12))
15345         self.assertTrue(f2.getArray().isEqualWithoutConsideringStr(DataArrayDouble([28.1,29.1,29.1,29.1,29.1,113.2,35.1,7.4,8.4,9.4,10.4,37.1,35.1,13.4,14.4,15.4,16.4,37.1,35.1,19.4,20.4,21.4,22.4,37.1,35.1,25.4,26.4,27.4,28.4,37.1,42.1,31.4,32.4,33.4,34.4,44.1,42.1,37.4,38.4,39.4,40.4,44.1,42.1,43.4,44.4,45.4,46.4,44.1,42.1,49.4,50.4,51.4,52.4,44.1,49.1,50.1,50.1,50.1,50.1,51.1]),1e-12))
15346         self.assertTrue(f00.getArray().isEqualWithoutConsideringStr(DataArrayDouble([80.2,81.2,81.2,82.2,82.2,9.6,94.2,7.5,8.5,9.5,10.5,13.6,94.2,13.5,14.5,15.5,16.5,17.6,108.2,19.5,20.5,21.5,22.5,21.6,108.2,25.5,26.5,27.5,28.5,25.6,122.2,31.5,32.5,33.5,34.5,29.6,122.2,37.5,38.5,39.5,40.5,33.6,39.1,39.1,39.1,39.1,39.1,37.6]),1e-12))
15347         self.assertTrue(f10.getArray().isEqualWithoutConsideringStr(DataArrayDouble([68.2,26.1,26.1,26.1,82.2,5.6,6.6,8.3,82.2,9.6,10.6,8.3,10.5,13.6,14.6,14.3,16.5,17.6,18.6,14.3,22.5,21.6,22.6,20.3,28.5,25.6,26.6,20.3,34.5,29.6,30.6,26.3,40.5,33.6,34.6,26.3,39.1,37.6,38.6,32.3,39.1,41.6,42.6,32.3,39.1,37.3,37.3,38.3]),1e-12))
15348         self.assertTrue(f20.getArray().isEqualWithoutConsideringStr(DataArrayDouble([29.1,29.1,29.1,113.2,9.4,5.7,6.7,37.1,9.4,9.7,10.7,37.1,15.4,13.7,14.7,37.1,15.4,17.7,18.7,37.1,21.4,21.7,22.7,37.1,21.4,25.7,26.7,37.1,27.4,28.4,28.4,37.1]),1e-12))
15349         pass
15350
15351     def testSwig2AMR9(self):
15352         """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
15353         ghostSz=2
15354         amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
15355         amr.addPatch([(1,4),(2,4)],[4,4])
15356         amr.addPatch([(4,5),(3,5)],[4,4])
15357         amr.addPatch([(0,1),(4,6)],[4,4])
15358         amr[0].addPatch([(10,12),(5,8)],[2,2])
15359         amr[1].addPatch([(0,1),(0,5)],[2,2])
15360         amr[2].addPatch([(3,4),(0,3)],[2,2])
15361         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15362         att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
15363         att.alloc()
15364         d=att.getFieldOn(amr,"Field")
15365         self.assertEqual(90,d.getNumberOfTuples())
15366         self.assertEqual(1,d.getNumberOfComponents())
15367         d.iota() ; d+=0.1
15368         d0=att.getFieldOn(amr[0].getMesh(),"Field")
15369         self.assertEqual(192,d0.getNumberOfTuples())
15370         self.assertEqual(1,d0.getNumberOfComponents())
15371         d0.iota() ; d0+=0.2
15372         d1=att.getFieldOn(amr[1].getMesh(),"Field")
15373         self.assertEqual(96,d1.getNumberOfTuples())
15374         self.assertEqual(1,d1.getNumberOfComponents())
15375         d1.iota() ; d1+=0.3
15376         d2=att.getFieldOn(amr[2].getMesh(),"Field")
15377         self.assertEqual(96,d2.getNumberOfTuples())
15378         self.assertEqual(1,d2.getNumberOfComponents())
15379         d2.iota() ; d2+=0.4
15380         d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
15381         self.assertEqual(80,d00.getNumberOfTuples())
15382         self.assertEqual(1,d00.getNumberOfComponents())
15383         d00.iota() ; d00+=0.5
15384         d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
15385         self.assertEqual(84,d10.getNumberOfTuples())
15386         self.assertEqual(1,d10.getNumberOfComponents())
15387         d10.iota() ; d10+=0.6
15388         d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
15389         self.assertEqual(60,d20.getNumberOfTuples())
15390         self.assertEqual(1,d20.getNumberOfComponents())
15391         d20.iota() ; d20+=0.7
15392         # the test is here ! To be called after iteration with no remesh
15393         att.synchronizeAllGhostZones()
15394         f=att.buildCellFieldOnWithGhost(amr,"Field")
15395         f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
15396         f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
15397         f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
15398         f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
15399         f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
15400         f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
15401         self.assertTrue(f0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([29.1,29.1,30.1,30.1,30.1,30.1,31.1,31.1,31.1,31.1,32.1,32.1,32.1,32.1,33.1,33.1,29.1,29.1,30.1,30.1,30.1,30.1,31.1,31.1,31.1,31.1,32.1,32.1,32.1,32.1,33.1,33.1,38.1,38.1,34.2,35.2,36.2,37.2,38.2,39.2,40.2,41.2,42.2,43.2,44.2,45.2,42.1,42.1,38.1,38.1,50.2,51.2,52.2,53.2,54.2,55.2,56.2,57.2,58.2,59.2,60.2,61.2,42.1,42.1,38.1,38.1,66.2,67.2,68.2,69.2,70.2,71.2,72.2,73.2,74.2,75.2,76.2,77.2,42.1,42.1,38.1,38.1,82.2,83.2,84.2,85.2,86.2,87.2,88.2,89.2,90.2,91.2,92.2,93.2,42.1,42.1,47.1,47.1,98.2,99.2,100.2,101.2,102.2,103.2,104.2,105.2,106.2,107.2,108.2,109.2,18.3,19.3,47.1,47.1,114.2,115.2,116.2,117.2,118.2,119.2,120.2,121.2,122.2,123.2,124.2,125.2,26.3,27.3,47.1,47.1,130.2,131.2,132.2,133.2,134.2,135.2,136.2,137.2,138.2,139.2,140.2,141.2,34.3,35.3,47.1,47.1,146.2,147.2,148.2,149.2,150.2,151.2,152.2,153.2,154.2,155.2,156.2,157.2,42.3,43.3,20.4,21.4,57.1,57.1,57.1,57.1,58.1,58.1,58.1,58.1,59.1,59.1,59.1,59.1,50.3,51.3,28.4,29.4,57.1,57.1,57.1,57.1,58.1,58.1,58.1,58.1,59.1,59.1,59.1,59.1,58.3,59.3]),1e-12))
15402         self.assertTrue(f1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([76.2,77.2,42.1,42.1,42.1,42.1,43.1,43.1,92.2,93.2,42.1,42.1,42.1,42.1,43.1,43.1,108.2,109.2,18.3,19.3,20.3,21.3,52.1,52.1,124.2,125.2,26.3,27.3,28.3,29.3,52.1,52.1,140.2,141.2,34.3,35.3,36.3,37.3,52.1,52.1,156.2,157.2,42.3,43.3,44.3,45.3,52.1,52.1,59.1,59.1,50.3,51.3,52.3,53.3,61.1,61.1,59.1,59.1,58.3,59.3,60.3,61.3,61.1,61.1,59.1,59.1,66.3,67.3,68.3,69.3,61.1,61.1,59.1,59.1,74.3,75.3,76.3,77.3,61.1,61.1,68.1,68.1,69.1,69.1,69.1,69.1,70.1,70.1,68.1,68.1,69.1,69.1,69.1,69.1,70.1,70.1]),1e-12))
15403         self.assertTrue(f2.getArray().isEqualWithoutConsideringStr(DataArrayDouble([46.1,46.1,47.1,47.1,47.1,47.1,130.2,131.2,46.1,46.1,47.1,47.1,47.1,47.1,146.2,147.2,55.1,55.1,18.4,19.4,20.4,21.4,57.1,57.1,55.1,55.1,26.4,27.4,28.4,29.4,57.1,57.1,55.1,55.1,34.4,35.4,36.4,37.4,57.1,57.1,55.1,55.1,42.4,43.4,44.4,45.4,57.1,57.1,64.1,64.1,50.4,51.4,52.4,53.4,66.1,66.1,64.1,64.1,58.4,59.4,60.4,61.4,66.1,66.1,64.1,64.1,66.4,67.4,68.4,69.4,66.1,66.1,64.1,64.1,74.4,75.4,76.4,77.4,66.1,66.1,73.1,73.1,74.1,74.1,74.1,74.1,75.1,75.1,73.1,73.1,74.1,74.1,74.1,74.1,75.1,75.1]),1e-12))
15404         self.assertTrue(f00.getArray().isEqualWithoutConsideringStr(DataArrayDouble([107.2,107.2,108.2,108.2,109.2,109.2,14.6,15.6,107.2,107.2,108.2,108.2,109.2,109.2,20.6,21.6,123.2,123.2,18.5,19.5,20.5,21.5,26.6,27.6,123.2,123.2,26.5,27.5,28.5,29.5,32.6,33.6,139.2,139.2,34.5,35.5,36.5,37.5,38.6,39.6,139.2,139.2,42.5,43.5,44.5,45.5,44.6,45.6,155.2,155.2,50.5,51.5,52.5,53.5,50.6,51.6,155.2,155.2,58.5,59.5,60.5,61.5,56.6,57.6,59.1,59.1,59.1,59.1,59.1,59.1,62.6,63.6,59.1,59.1,59.1,59.1,59.1,59.1,68.6,69.6]),1e-12))
15405         self.assertTrue(f10.getArray().isEqualWithoutConsideringStr(DataArrayDouble([93.2,93.2,42.1,42.1,42.1,42.1,93.2,93.2,42.1,42.1,42.1,42.1,109.2,109.2,14.6,15.6,19.3,19.3,109.2,109.2,20.6,21.6,19.3,19.3,20.5,21.5,26.6,27.6,27.3,27.3,28.5,29.5,32.6,33.6,27.3,27.3,36.5,37.5,38.6,39.6,35.3,35.3,44.5,45.5,44.6,45.6,35.3,35.3,52.5,53.5,50.6,51.6,43.3,43.3,60.5,61.5,56.6,57.6,43.3,43.3,59.1,59.1,62.6,63.6,51.3,51.3,59.1,59.1,68.6,69.6,51.3,51.3,59.1,59.1,58.3,58.3,59.3,59.3,59.1,59.1,58.3,58.3,59.3,59.3]),1e-12))
15406         self.assertTrue(f20.getArray().isEqualWithoutConsideringStr(DataArrayDouble([47.1,47.1,47.1,47.1,146.2,146.2,47.1,47.1,47.1,47.1,146.2,146.2,20.4,20.4,14.7,15.7,57.1,57.1,20.4,20.4,20.7,21.7,57.1,57.1,28.4,28.4,26.7,27.7,57.1,57.1,28.4,28.4,32.7,33.7,57.1,57.1,36.4,36.4,38.7,39.7,57.1,57.1,36.4,36.4,44.7,45.7,57.1,57.1,44.4,44.4,45.4,45.4,57.1,57.1,44.4,44.4,45.4,45.4,57.1,57.1]),1e-12))
15407         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
15408         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
15409         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
15410         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
15411         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
15412         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],2).isEqual(DataArrayInt([0,8,81,89,100,106,163,169,460,466,523,529,540,548,621,629])))
15413         pass
15414
15415     def testSwig2AMR10(self):
15416         """ This test, focuses on basic operations of coarse to fine and fine to coarse and ghost zone update with a ghost size set to 2 and dimension equal to 2."""
15417         szGhost=2
15418         amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
15419         amr.addPatch([(3,8),(0,3)],[2,2])
15420         amr[0].addPatch([(0,10),(3,6)],[3,3])
15421         amr[0].addPatch([(2,6),(0,3)],[3,3])
15422         amr[0].addPatch([(6,10),(2,3)],[3,3])
15423         amr.addPatch([(3,8),(3,6)],[2,2])
15424         amr[1].addPatch([(0,4),(0,6)],[3,3])
15425         amr[1].addPatch([(7,10),(0,4)],[3,3])
15426         amr[1].addPatch([(4,7),(0,3)],[3,3])
15427         amr[1].addPatch([(4,7),(3,6)],[3,3])
15428         amr.addPatch([(0,3),(6,10)],[2,2])
15429         self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
15430         self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
15431         self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
15432         self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
15433         da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
15434         MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
15435         self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
15436         att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
15437         att.spillNatures([ConservativeVolumic])
15438         att.alloc()
15439         yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
15440         yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
15441         yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
15442         yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
15443         yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
15444         yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
15445         yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
15446         yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
15447         yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
15448         yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
15449         yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
15450         att2=att.deepCpy() ; att3=att2.deepCpy() ; att4=att3.deepCpy() ; att5=att4.deepCpy() ; att6=att5.deepCpy()
15451         ###
15452         att.synchronizeFineToCoarseBetween(2,1)
15453         ###
15454         for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
15455             self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15456             pass
15457         for pos in [(0,),(1,)]:
15458             self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15459             pass
15460         self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(DataArrayDouble([0.02,1.02,2.02,3.02,4.02,5.02,6.02,7.02,8.02,9.02,10.02,11.02,12.02,13.02,14.02,15.02,16.02,17.02,18.02,19.02,20.02,21.02,22.02,23.02,24.02,25.02,26.02,27.02,28.02,29.02,30.02,31.02,51.05,54.05,57.05,60.05,36.02,37.02,38.02,39.02,40.02,41.02,42.02,43.02,44.02,45.02,99.05,102.05,105.05,108.05,50.02,51.02,52.02,53.02,54.02,55.02,56.02,57.02,58.02,59.02,147.05,150.05,153.05,156.05,51.06,54.06,57.06,60.06,68.02,69.02,70.02,71.02,105.04,108.04,111.04,114.04,117.04,120.04,123.04,126.04,129.04,132.04,82.02,83.02,84.02,85.02,207.04,210.04,213.04,216.04,219.04,222.04,225.04,228.04,231.04,234.04,96.02,97.02,98.02,99.02,309.04,312.04,315.04,318.04,321.04,324.04,327.04,330.04,333.04,336.04,110.02,111.02,112.02,113.02,114.02,115.02,116.02,117.02,118.02,119.02,120.02,121.02,122.02,123.02,124.02,125.02,126.02,127.02,128.02,129.02,130.02,131.02,132.02,133.02,134.02,135.02,136.02,137.02,138.02,139.02]),1e-12))
15461         self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(DataArrayDouble([0.03,1.03,2.03,3.03,4.03,5.03,6.03,7.03,8.03,9.03,10.03,11.03,12.03,13.03,14.03,15.03,16.03,17.03,18.03,19.03,20.03,21.03,22.03,23.03,24.03,25.03,26.03,27.03,28.03,29.03,51.07,54.07,57.07,60.07,42.09,45.09,48.09,42.08,45.08,48.08,40.03,41.03,42.03,43.03,99.07,102.07,105.07,108.07,81.09,84.09,87.09,81.08,84.08,87.08,54.03,55.03,56.03,57.03,147.07,150.07,153.07,156.07,120.09,123.09,126.09,120.08,123.08,126.08,68.03,69.03,70.03,71.03,195.07,198.07,201.07,204.07,42.1,45.1,48.1,159.08,162.08,165.08,82.03,83.03,84.03,85.03,243.07,246.07,249.07,252.07,81.1,84.1,87.1,93.03,94.03,95.03,96.03,97.03,98.03,99.03,291.07,294.07,297.07,300.07,120.1,123.1,126.1,107.03,108.03,109.03,110.03,111.03,112.03,113.03,114.03,115.03,116.03,117.03,118.03,119.03,120.03,121.03,122.03,123.03,124.03,125.03,126.03,127.03,128.03,129.03,130.03,131.03,132.03,133.03,134.03,135.03,136.03,137.03,138.03,139.03]),1e-12))
15462         del att
15463         ####
15464         att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
15465         ### Only the 3 (0) (1) and (2) are modified (0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (1,3) are not modified.
15466         exp2=DataArrayDouble([0.11,1.11,2.11,3.11,4.11,5.11,6.11,7.11,86.03,87.03,10.11,11.11,12.11,13.11,14.11,15.11,16.11,17.11,100.03,101.03,20.11,21.11,22.11,23.11,24.11,25.11,26.11,27.11,28.11,29.11,30.11,31.11,32.11,33.11,34.11,35.11,36.11,37.11,38.11,39.11,40.11,41.11,42.11,43.11,44.11,45.11,46.11,47.11,48.11,49.11,50.11,51.11,52.11,53.11,54.11,55.11,56.11,57.11,58.11,59.11,60.11,61.11,62.11,63.11,64.11,65.11,66.11,67.11,68.11,69.11,70.11,71.11,72.11,73.11,74.11,75.11,76.11,77.11,78.11,79.11,80.11,81.11,82.11,83.11,84.11,85.11,86.11,87.11,88.11,89.11,90.11,91.11,92.11,93.11,94.11,95.11,96.11,97.11,98.11,99.11,100.11,101.11,102.11,103.11,104.11,105.11,106.11,107.11,108.11,109.11,110.11,111.11,112.11,113.11,114.11,115.11,116.11,117.11,118.11,119.11])
15467         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
15468         exp3=DataArrayDouble([0.03,1.03,86.02,87.02,88.02,89.02,90.02,91.02,92.02,93.02,94.02,95.02,12.03,13.03,14.03,15.03,100.02,101.02,102.02,103.02,104.02,105.02,106.02,107.02,108.02,109.02,26.03,27.03,28.03,29.03,30.03,31.03,32.03,33.03,34.03,35.03,36.03,37.03,38.03,39.03,40.03,41.03,42.03,43.03,44.03,45.03,46.03,47.03,48.03,49.03,50.03,51.03,52.03,53.03,54.03,55.03,56.03,57.03,58.03,59.03,60.03,61.03,62.03,63.03,64.03,65.03,66.03,67.03,68.03,69.03,70.03,71.03,72.03,73.03,74.03,75.03,76.03,77.03,78.03,79.03,80.03,81.03,82.03,83.03,84.03,85.03,86.03,87.03,88.03,89.03,90.03,91.03,92.03,93.03,94.03,95.03,96.03,97.03,98.03,99.03,100.03,101.03,102.03,103.03,104.03,105.03,106.03,107.03,108.03,109.03,110.03,111.03,26.11,27.11,114.03,115.03,116.03,117.03,118.03,119.03,120.03,121.03,122.03,123.03,124.03,125.03,36.11,37.11,128.03,129.03,130.03,131.03,132.03,133.03,134.03,135.03,136.03,137.03,138.03,139.03])
15469         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
15470         exp4=DataArrayDouble([0.02,1.02,2.02,3.02,4.02,5.02,6.02,7.02,8.02,9.02,10.02,11.02,12.02,13.02,14.02,15.02,16.02,17.02,18.02,19.02,20.02,21.02,22.02,23.02,24.02,25.02,26.02,27.02,28.02,29.02,30.02,31.02,32.02,33.02,34.02,35.02,36.02,37.02,38.02,39.02,40.02,41.02,42.02,43.02,44.02,45.02,46.02,47.02,48.02,49.02,50.02,51.02,52.02,53.02,54.02,55.02,56.02,57.02,58.02,59.02,60.02,61.02,62.02,63.02,64.02,65.02,66.02,67.02,68.02,69.02,70.02,71.02,72.02,73.02,74.02,75.02,76.02,77.02,78.02,79.02,80.02,81.02,82.02,83.02,84.02,85.02,86.02,87.02,88.02,89.02,90.02,91.02,92.02,93.02,94.02,95.02,96.02,97.02,98.02,99.02,100.02,101.02,102.02,103.02,104.02,105.02,106.02,107.02,108.02,109.02,110.02,111.02,112.02,113.02,30.03,31.03,32.03,33.03,34.03,35.03,36.03,37.03,38.03,39.03,124.02,125.02,126.02,127.02,44.03,45.03,46.03,47.03,48.03,49.03,50.03,51.03,52.03,53.03,138.02,139.02])
15471         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
15472         for pos,iot in [((),0.01),((0,0),0.04),((0,1),0.05),((0,2),0.06),((1,0),0.07),((1,1),0.08),((1,2),0.09),((1,3),0.10)]:
15473             vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
15474             l=vals.getNumberOfTuples()
15475             exps=DataArrayDouble(l) ; exps.iota(iot)
15476             self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
15477             pass
15478         del att2
15479         ###
15480         att3.synchronizeCoarseToFineBetween(1,2)
15481         ###
15482         for pos in [(),(0,),(1,),(2,)]:
15483             self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15484             pass
15485         exp5=DataArrayDouble([57.02,57.02,58.02,58.02,58.02,59.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,57.02,57.02,58.02,58.02,58.02,59.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,71.02,71.02,72.02,72.02,72.02,73.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02,71.02,71.02,72.02,72.02,72.02,73.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02,71.02,71.02,72.02,72.02,72.02,73.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02,85.02,85.02,86.02,86.02,86.02,87.02,87.02,87.02,88.02,88.02,88.02,89.02,89.02,89.02,90.02,90.02,90.02,91.02,91.02,91.02,92.02,92.02,92.02,93.02,93.02,93.02,94.02,94.02,94.02,95.02,95.02,95.02,96.02,96.02,85.02,85.02,86.02,86.02,86.02,87.02,87.02,87.02,88.02,88.02,88.02,89.02,89.02,89.02,90.02,90.02,90.02,91.02,91.02,91.02,92.02,92.02,92.02,93.02,93.02,93.02,94.02,94.02,94.02,95.02,95.02,95.02,96.02,96.02,85.02,85.02,86.02,86.02,86.02,87.02,87.02,87.02,88.02,88.02,88.02,89.02,89.02,89.02,90.02,90.02,90.02,91.02,91.02,91.02,92.02,92.02,92.02,93.02,93.02,93.02,94.02,94.02,94.02,95.02,95.02,95.02,96.02,96.02,99.02,99.02,100.02,100.02,100.02,101.02,101.02,101.02,102.02,102.02,102.02,103.02,103.02,103.02,104.02,104.02,104.02,105.02,105.02,105.02,106.02,106.02,106.02,107.02,107.02,107.02,108.02,108.02,108.02,109.02,109.02,109.02,110.02,110.02,99.02,99.02,100.02,100.02,100.02,101.02,101.02,101.02,102.02,102.02,102.02,103.02,103.02,103.02,104.02,104.02,104.02,105.02,105.02,105.02,106.02,106.02,106.02,107.02,107.02,107.02,108.02,108.02,108.02,109.02,109.02,109.02,110.02,110.02,99.02,99.02,100.02,100.02,100.02,101.02,101.02,101.02,102.02,102.02,102.02,103.02,103.02,103.02,104.02,104.02,104.02,105.02,105.02,105.02,106.02,106.02,106.02,107.02,107.02,107.02,108.02,108.02,108.02,109.02,109.02,109.02,110.02,110.02,113.02,113.02,114.02,114.02,114.02,115.02,115.02,115.02,116.02,116.02,116.02,117.02,117.02,117.02,118.02,118.02,118.02,119.02,119.02,119.02,120.02,120.02,120.02,121.02,121.02,121.02,122.02,122.02,122.02,123.02,123.02,123.02,124.02,124.02,113.02,113.02,114.02,114.02,114.02,115.02,115.02,115.02,116.02,116.02,116.02,117.02,117.02,117.02,118.02,118.02,118.02,119.02,119.02,119.02,120.02,120.02,120.02,121.02,121.02,121.02,122.02,122.02,122.02,123.02,123.02,123.02,124.02,124.02])
15486         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
15487         exp6=DataArrayDouble([17.02,17.02,18.02,18.02,18.02,19.02,19.02,19.02,20.02,20.02,20.02,21.02,21.02,21.02,22.02,22.02,17.02,17.02,18.02,18.02,18.02,19.02,19.02,19.02,20.02,20.02,20.02,21.02,21.02,21.02,22.02,22.02,31.02,31.02,32.02,32.02,32.02,33.02,33.02,33.02,34.02,34.02,34.02,35.02,35.02,35.02,36.02,36.02,31.02,31.02,32.02,32.02,32.02,33.02,33.02,33.02,34.02,34.02,34.02,35.02,35.02,35.02,36.02,36.02,31.02,31.02,32.02,32.02,32.02,33.02,33.02,33.02,34.02,34.02,34.02,35.02,35.02,35.02,36.02,36.02,45.02,45.02,46.02,46.02,46.02,47.02,47.02,47.02,48.02,48.02,48.02,49.02,49.02,49.02,50.02,50.02,45.02,45.02,46.02,46.02,46.02,47.02,47.02,47.02,48.02,48.02,48.02,49.02,49.02,49.02,50.02,50.02,45.02,45.02,46.02,46.02,46.02,47.02,47.02,47.02,48.02,48.02,48.02,49.02,49.02,49.02,50.02,50.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02])
15488         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
15489         exp7=DataArrayDouble([49.02,49.02,50.02,50.02,50.02,51.02,51.02,51.02,52.02,52.02,52.02,53.02,53.02,53.02,54.02,54.02,49.02,49.02,50.02,50.02,50.02,51.02,51.02,51.02,52.02,52.02,52.02,53.02,53.02,53.02,54.02,54.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02])
15490         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
15491         exp8=DataArrayDouble([15.03,15.03,16.03,16.03,16.03,17.03,17.03,17.03,18.03,18.03,18.03,19.03,19.03,19.03,20.03,20.03,15.03,15.03,16.03,16.03,16.03,17.03,17.03,17.03,18.03,18.03,18.03,19.03,19.03,19.03,20.03,20.03,29.03,29.03,30.03,30.03,30.03,31.03,31.03,31.03,32.03,32.03,32.03,33.03,33.03,33.03,34.03,34.03,29.03,29.03,30.03,30.03,30.03,31.03,31.03,31.03,32.03,32.03,32.03,33.03,33.03,33.03,34.03,34.03,29.03,29.03,30.03,30.03,30.03,31.03,31.03,31.03,32.03,32.03,32.03,33.03,33.03,33.03,34.03,34.03,43.03,43.03,44.03,44.03,44.03,45.03,45.03,45.03,46.03,46.03,46.03,47.03,47.03,47.03,48.03,48.03,43.03,43.03,44.03,44.03,44.03,45.03,45.03,45.03,46.03,46.03,46.03,47.03,47.03,47.03,48.03,48.03,43.03,43.03,44.03,44.03,44.03,45.03,45.03,45.03,46.03,46.03,46.03,47.03,47.03,47.03,48.03,48.03,57.03,57.03,58.03,58.03,58.03,59.03,59.03,59.03,60.03,60.03,60.03,61.03,61.03,61.03,62.03,62.03,57.03,57.03,58.03,58.03,58.03,59.03,59.03,59.03,60.03,60.03,60.03,61.03,61.03,61.03,62.03,62.03,57.03,57.03,58.03,58.03,58.03,59.03,59.03,59.03,60.03,60.03,60.03,61.03,61.03,61.03,62.03,62.03,71.03,71.03,72.03,72.03,72.03,73.03,73.03,73.03,74.03,74.03,74.03,75.03,75.03,75.03,76.03,76.03,71.03,71.03,72.03,72.03,72.03,73.03,73.03,73.03,74.03,74.03,74.03,75.03,75.03,75.03,76.03,76.03,71.03,71.03,72.03,72.03,72.03,73.03,73.03,73.03,74.03,74.03,74.03,75.03,75.03,75.03,76.03,76.03,85.03,85.03,86.03,86.03,86.03,87.03,87.03,87.03,88.03,88.03,88.03,89.03,89.03,89.03,90.03,90.03,85.03,85.03,86.03,86.03,86.03,87.03,87.03,87.03,88.03,88.03,88.03,89.03,89.03,89.03,90.03,90.03,85.03,85.03,86.03,86.03,86.03,87.03,87.03,87.03,88.03,88.03,88.03,89.03,89.03,89.03,90.03,90.03,99.03,99.03,100.03,100.03,100.03,101.03,101.03,101.03,102.03,102.03,102.03,103.03,103.03,103.03,104.03,104.03,99.03,99.03,100.03,100.03,100.03,101.03,101.03,101.03,102.03,102.03,102.03,103.03,103.03,103.03,104.03,104.03,99.03,99.03,100.03,100.03,100.03,101.03,101.03,101.03,102.03,102.03,102.03,103.03,103.03,103.03,104.03,104.03,113.03,113.03,114.03,114.03,114.03,115.03,115.03,115.03,116.03,116.03,116.03,117.03,117.03,117.03,118.03,118.03,113.03,113.03,114.03,114.03,114.03,115.03,115.03,115.03,116.03,116.03,116.03,117.03,117.03,117.03,118.03,118.03])
15492         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
15493         exp9=DataArrayDouble([22.03,22.03,23.03,23.03,23.03,24.03,24.03,24.03,25.03,25.03,25.03,26.03,26.03,22.03,22.03,23.03,23.03,23.03,24.03,24.03,24.03,25.03,25.03,25.03,26.03,26.03,36.03,36.03,37.03,37.03,37.03,38.03,38.03,38.03,39.03,39.03,39.03,40.03,40.03,36.03,36.03,37.03,37.03,37.03,38.03,38.03,38.03,39.03,39.03,39.03,40.03,40.03,36.03,36.03,37.03,37.03,37.03,38.03,38.03,38.03,39.03,39.03,39.03,40.03,40.03,50.03,50.03,51.03,51.03,51.03,52.03,52.03,52.03,53.03,53.03,53.03,54.03,54.03,50.03,50.03,51.03,51.03,51.03,52.03,52.03,52.03,53.03,53.03,53.03,54.03,54.03,50.03,50.03,51.03,51.03,51.03,52.03,52.03,52.03,53.03,53.03,53.03,54.03,54.03,64.03,64.03,65.03,65.03,65.03,66.03,66.03,66.03,67.03,67.03,67.03,68.03,68.03,64.03,64.03,65.03,65.03,65.03,66.03,66.03,66.03,67.03,67.03,67.03,68.03,68.03,64.03,64.03,65.03,65.03,65.03,66.03,66.03,66.03,67.03,67.03,67.03,68.03,68.03,78.03,78.03,79.03,79.03,79.03,80.03,80.03,80.03,81.03,81.03,81.03,82.03,82.03,78.03,78.03,79.03,79.03,79.03,80.03,80.03,80.03,81.03,81.03,81.03,82.03,82.03,78.03,78.03,79.03,79.03,79.03,80.03,80.03,80.03,81.03,81.03,81.03,82.03,82.03,92.03,92.03,93.03,93.03,93.03,94.03,94.03,94.03,95.03,95.03,95.03,96.03,96.03,92.03,92.03,93.03,93.03,93.03,94.03,94.03,94.03,95.03,95.03,95.03,96.03,96.03])
15494         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
15495         exp10=DataArrayDouble([19.03,19.03,20.03,20.03,20.03,21.03,21.03,21.03,22.03,22.03,22.03,23.03,23.03,19.03,19.03,20.03,20.03,20.03,21.03,21.03,21.03,22.03,22.03,22.03,23.03,23.03,33.03,33.03,34.03,34.03,34.03,35.03,35.03,35.03,36.03,36.03,36.03,37.03,37.03,33.03,33.03,34.03,34.03,34.03,35.03,35.03,35.03,36.03,36.03,36.03,37.03,37.03,33.03,33.03,34.03,34.03,34.03,35.03,35.03,35.03,36.03,36.03,36.03,37.03,37.03,47.03,47.03,48.03,48.03,48.03,49.03,49.03,49.03,50.03,50.03,50.03,51.03,51.03,47.03,47.03,48.03,48.03,48.03,49.03,49.03,49.03,50.03,50.03,50.03,51.03,51.03,47.03,47.03,48.03,48.03,48.03,49.03,49.03,49.03,50.03,50.03,50.03,51.03,51.03,61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03])
15496         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
15497         exp11=DataArrayDouble([61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03,89.03,89.03,90.03,90.03,90.03,91.03,91.03,91.03,92.03,92.03,92.03,93.03,93.03,89.03,89.03,90.03,90.03,90.03,91.03,91.03,91.03,92.03,92.03,92.03,93.03,93.03,89.03,89.03,90.03,90.03,90.03,91.03,91.03,91.03,92.03,92.03,92.03,93.03,93.03,103.03,103.03,104.03,104.03,104.03,105.03,105.03,105.03,106.03,106.03,106.03,107.03,107.03,103.03,103.03,104.03,104.03,104.03,105.03,105.03,105.03,106.03,106.03,106.03,107.03,107.03,103.03,103.03,104.03,104.03,104.03,105.03,105.03,105.03,106.03,106.03,106.03,107.03,107.03,117.03,117.03,118.03,118.03,118.03,119.03,119.03,119.03,120.03,120.03,120.03,121.03,121.03,117.03,117.03,118.03,118.03,118.03,119.03,119.03,119.03,120.03,120.03,120.03,121.03,121.03])
15498         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
15499         del att3
15500         ### 
15501         att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
15502         for pos in [(),(0,),(1,),(2,)]:
15503             self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15504             pass
15505         exp12=DataArrayDouble([0.04,1.04,2.04,3.04,4.04,5.04,6.04,7.04,146.05,147.05,148.05,149.05,150.05,151.05,152.05,153.05,154.05,155.05,156.05,157.05,50.06,51.06,52.06,53.06,54.06,55.06,56.06,57.06,58.06,59.06,60.06,61.06,32.04,33.04,34.04,35.04,36.04,37.04,38.04,39.04,40.04,41.04,162.05,163.05,164.05,165.05,166.05,167.05,168.05,169.05,170.05,171.05,172.05,173.05,66.06,67.06,68.06,69.06,70.06,71.06,72.06,73.06,74.06,75.06,76.06,77.06,66.04,67.04,68.04,69.04,70.04,71.04,72.04,73.04,74.04,75.04,76.04,77.04,78.04,79.04,80.04,81.04,82.04,83.04,84.04,85.04,86.04,87.04,88.04,89.04,90.04,91.04,92.04,93.04,94.04,95.04,96.04,97.04,98.04,99.04,100.04,101.04,102.04,103.04,104.04,105.04,106.04,107.04,108.04,109.04,110.04,111.04,112.04,113.04,114.04,115.04,116.04,117.04,118.04,119.04,120.04,121.04,122.04,123.04,124.04,125.04,126.04,127.04,128.04,129.04,130.04,131.04,132.04,133.04,134.04,135.04,136.04,137.04,138.04,139.04,140.04,141.04,142.04,143.04,144.04,145.04,146.04,147.04,148.04,149.04,150.04,151.04,152.04,153.04,154.04,155.04,156.04,157.04,158.04,159.04,160.04,161.04,162.04,163.04,164.04,165.04,166.04,167.04,168.04,169.04,170.04,171.04,172.04,173.04,174.04,175.04,176.04,177.04,178.04,179.04,180.04,181.04,182.04,183.04,184.04,185.04,186.04,187.04,188.04,189.04,190.04,191.04,192.04,193.04,194.04,195.04,196.04,197.04,198.04,199.04,200.04,201.04,202.04,203.04,204.04,205.04,206.04,207.04,208.04,209.04,210.04,211.04,212.04,213.04,214.04,215.04,216.04,217.04,218.04,219.04,220.04,221.04,222.04,223.04,224.04,225.04,226.04,227.04,228.04,229.04,230.04,231.04,232.04,233.04,234.04,235.04,236.04,237.04,238.04,239.04,240.04,241.04,242.04,243.04,244.04,245.04,246.04,247.04,248.04,249.04,250.04,251.04,252.04,253.04,254.04,255.04,256.04,257.04,258.04,259.04,260.04,261.04,262.04,263.04,264.04,265.04,266.04,267.04,268.04,269.04,270.04,271.04,272.04,273.04,274.04,275.04,276.04,277.04,278.04,279.04,280.04,281.04,282.04,283.04,284.04,285.04,286.04,287.04,288.04,289.04,290.04,291.04,292.04,293.04,294.04,295.04,296.04,297.04,298.04,299.04,300.04,301.04,302.04,303.04,304.04,305.04,306.04,307.04,308.04,309.04,310.04,311.04,312.04,313.04,314.04,315.04,316.04,317.04,318.04,319.04,320.04,321.04,322.04,323.04,324.04,325.04,326.04,327.04,328.04,329.04,330.04,331.04,332.04,333.04,334.04,335.04,336.04,337.04,338.04,339.04,340.04,341.04,342.04,343.04,344.04,345.04,346.04,347.04,348.04,349.04,350.04,351.04,352.04,353.04,354.04,355.04,356.04,357.04,358.04,359.04,360.04,361.04,362.04,363.04,364.04,365.04,366.04,367.04,368.04,369.04,370.04,371.04,372.04,373.04,374.04,375.04,34.07,35.07,36.07,37.07,38.07,39.07,40.07,41.07,42.07,43.07,44.07,45.07,28.09,29.09,30.09,31.09,32.09,33.09,34.09,35.09,36.09,28.08,29.08,30.08,31.08,32.08,33.08,34.08,35.08,36.08,406.04,407.04,408.04,409.04,50.07,51.07,52.07,53.07,54.07,55.07,56.07,57.07,58.07,59.07,60.07,61.07,41.09,42.09,43.09,44.09,45.09,46.09,47.09,48.09,49.09,41.08,42.08,43.08,44.08,45.08,46.08,47.08,48.08,49.08,440.04,441.04])
15506         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
15507         exp13=DataArrayDouble([[0.05,1.05,2.05,3.05,4.05,5.05,6.05,7.05,8.05,9.05,10.05,11.05,12.05,13.05,14.05,15.05,16.05,17.05,18.05,19.05,20.05,21.05,22.05,23.05,24.05,25.05,26.05,27.05,28.05,29.05,30.05,31.05,32.05,33.05,34.05,35.05,36.05,37.05,38.05,39.05,40.05,41.05,42.05,43.05,44.05,45.05,46.05,47.05,48.05,49.05,50.05,51.05,52.05,53.05,54.05,55.05,56.05,57.05,58.05,59.05,60.05,61.05,62.05,63.05,64.05,65.05,66.05,67.05,68.05,69.05,70.05,71.05,72.05,73.05,74.05,75.05,76.05,77.05,78.05,79.05,80.05,81.05,82.05,83.05,84.05,85.05,86.05,87.05,88.05,89.05,90.05,91.05,92.05,93.05,94.05,95.05,96.05,97.05,98.05,99.05,100.05,101.05,102.05,103.05,104.05,105.05,106.05,107.05,108.05,109.05,110.05,111.05,112.05,113.05,114.05,115.05,116.05,117.05,118.05,119.05,120.05,121.05,122.05,123.05,124.05,125.05,126.05,127.05,128.05,129.05,130.05,131.05,132.05,133.05,134.05,135.05,136.05,137.05,138.05,139.05,140.05,141.05,34.06,35.06,144.05,145.05,146.05,147.05,148.05,149.05,150.05,151.05,152.05,153.05,154.05,155.05,156.05,157.05,50.06,51.06,160.05,161.05,162.05,163.05,164.05,165.05,166.05,167.05,168.05,169.05,170.05,171.05,172.05,173.05,66.06,67.06,74.04,75.04,76.04,77.04,78.04,79.04,80.04,81.04,82.04,83.04,84.04,85.04,86.04,87.04,88.04,89.04,108.04,109.04,110.04,111.04,112.04,113.04,114.04,115.04,116.04,117.04,118.04,119.04,120.04,121.04,122.04,123.04]])
15508         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
15509         exp14=DataArrayDouble([108.05,109.05,2.06,3.06,4.06,5.06,6.06,7.06,8.06,9.06,10.06,11.06,12.06,13.06,14.06,15.06,124.05,125.05,18.06,19.06,20.06,21.06,22.06,23.06,24.06,25.06,26.06,27.06,28.06,29.06,30.06,31.06,140.05,141.05,34.06,35.06,36.06,37.06,38.06,39.06,40.06,41.06,42.06,43.06,44.06,45.06,46.06,47.06,156.05,157.05,50.06,51.06,52.06,53.06,54.06,55.06,56.06,57.06,58.06,59.06,60.06,61.06,62.06,63.06,172.05,173.05,66.06,67.06,68.06,69.06,70.06,71.06,72.06,73.06,74.06,75.06,76.06,77.06,78.06,79.06,86.04,87.04,88.04,89.04,90.04,91.04,92.04,93.04,94.04,95.04,96.04,97.04,98.04,99.04,94.06,95.06,120.04,121.04,122.04,123.04,124.04,125.04,126.04,127.04,128.04,129.04,130.04,131.04,132.04,133.04,110.06,111.06])
15510         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
15511         exp15=DataArrayDouble([0.07,1.07,308.04,309.04,310.04,311.04,312.04,313.04,314.04,315.04,316.04,317.04,318.04,319.04,320.04,321.04,16.07,17.07,342.04,343.04,344.04,345.04,346.04,347.04,348.04,349.04,350.04,351.04,352.04,353.04,354.04,355.04,32.07,33.07,34.07,35.07,36.07,37.07,38.07,39.07,40.07,41.07,42.07,43.07,44.07,45.07,28.09,29.09,48.07,49.07,50.07,51.07,52.07,53.07,54.07,55.07,56.07,57.07,58.07,59.07,60.07,61.07,41.09,42.09,64.07,65.07,66.07,67.07,68.07,69.07,70.07,71.07,72.07,73.07,74.07,75.07,76.07,77.07,54.09,55.09,80.07,81.07,82.07,83.07,84.07,85.07,86.07,87.07,88.07,89.07,90.07,91.07,92.07,93.07,67.09,68.09,96.07,97.07,98.07,99.07,100.07,101.07,102.07,103.07,104.07,105.07,106.07,107.07,108.07,109.07,80.09,81.09,112.07,113.07,114.07,115.07,116.07,117.07,118.07,119.07,120.07,121.07,122.07,123.07,124.07,125.07,93.09,94.09,128.07,129.07,130.07,131.07,132.07,133.07,134.07,135.07,136.07,137.07,138.07,139.07,140.07,141.07,106.09,107.09,144.07,145.07,146.07,147.07,148.07,149.07,150.07,151.07,152.07,153.07,154.07,155.07,156.07,157.07,119.09,120.09,160.07,161.07,162.07,163.07,164.07,165.07,166.07,167.07,168.07,169.07,170.07,171.07,172.07,173.07,132.09,133.09,176.07,177.07,178.07,179.07,180.07,181.07,182.07,183.07,184.07,185.07,186.07,187.07,188.07,189.07,28.1,29.1,192.07,193.07,194.07,195.07,196.07,197.07,198.07,199.07,200.07,201.07,202.07,203.07,204.07,205.07,41.1,42.1,208.07,209.07,210.07,211.07,212.07,213.07,214.07,215.07,216.07,217.07,218.07,219.07,220.07,221.07,54.1,55.1,224.07,225.07,226.07,227.07,228.07,229.07,230.07,231.07,232.07,233.07,234.07,235.07,236.07,237.07,67.1,68.1,240.07,241.07,242.07,243.07,244.07,245.07,246.07,247.07,248.07,249.07,250.07,251.07,252.07,253.07,80.1,81.1,256.07,257.07,258.07,259.07,260.07,261.07,262.07,263.07,264.07,265.07,266.07,267.07,268.07,269.07,93.1,94.1,272.07,273.07,274.07,275.07,276.07,277.07,278.07,279.07,280.07,281.07,282.07,283.07,284.07,285.07,106.1,107.1,288.07,289.07,290.07,291.07,292.07,293.07,294.07,295.07,296.07,297.07,298.07,299.07,300.07,301.07,119.1,120.1,304.07,305.07,306.07,307.07,308.07,309.07,310.07,311.07,312.07,313.07,314.07,315.07,316.07,317.07,132.1,133.1,320.07,321.07,322.07,323.07,324.07,325.07,326.07,327.07,328.07,329.07,330.07,331.07,332.07,333.07,334.07,335.07,336.07,337.07,338.07,339.07,340.07,341.07,342.07,343.07,344.07,345.07,346.07,347.07,348.07,349.07,350.07,351.07])
15512         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
15513         exp16=DataArrayDouble([327.04,328.04,329.04,330.04,331.04,332.04,333.04,334.04,335.04,336.04,337.04,11.08,12.08,361.04,362.04,363.04,364.04,365.04,366.04,367.04,368.04,369.04,370.04,371.04,24.08,25.08,35.09,36.09,28.08,29.08,30.08,31.08,32.08,33.08,34.08,35.08,36.08,37.08,38.08,48.09,49.09,41.08,42.08,43.08,44.08,45.08,46.08,47.08,48.08,49.08,50.08,51.08,61.09,62.09,54.08,55.08,56.08,57.08,58.08,59.08,60.08,61.08,62.08,63.08,64.08,74.09,75.09,67.08,68.08,69.08,70.08,71.08,72.08,73.08,74.08,75.08,76.08,77.08,87.09,88.09,80.08,81.08,82.08,83.08,84.08,85.08,86.08,87.08,88.08,89.08,90.08,100.09,101.09,93.08,94.08,95.08,96.08,97.08,98.08,99.08,100.08,101.08,102.08,103.08,113.09,114.09,106.08,107.08,108.08,109.08,110.08,111.08,112.08,113.08,114.08,115.08,116.08,126.09,127.09,119.08,120.08,121.08,122.08,123.08,124.08,125.08,126.08,127.08,128.08,129.08,139.09,140.09,132.08,133.08,134.08,135.08,136.08,137.08,138.08,139.08,140.08,141.08,142.08,35.1,36.1,145.08,146.08,147.08,148.08,149.08,150.08,151.08,152.08,153.08,154.08,155.08,48.1,49.1,158.08,159.08,160.08,161.08,162.08,163.08,164.08,165.08,166.08,167.08,168.08,61.1,62.1,171.08,172.08,173.08,174.08,175.08,176.08,177.08,178.08,179.08,180.08,181.08,74.1,75.1,184.08,185.08,186.08,187.08,188.08,189.08,190.08,191.08,192.08,193.08,194.08,87.1,88.1,197.08,198.08,199.08,200.08,201.08,202.08,203.08,204.08,205.08,206.08,207.08])
15514         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
15515         exp17=DataArrayDouble([318.04,319.04,320.04,321.04,322.04,323.04,324.04,325.04,326.04,327.04,328.04,329.04,330.04,352.04,353.04,354.04,355.04,356.04,357.04,358.04,359.04,360.04,361.04,362.04,363.04,364.04,44.07,45.07,28.09,29.09,30.09,31.09,32.09,33.09,34.09,35.09,36.09,28.08,29.08,60.07,61.07,41.09,42.09,43.09,44.09,45.09,46.09,47.09,48.09,49.09,41.08,42.08,76.07,77.07,54.09,55.09,56.09,57.09,58.09,59.09,60.09,61.09,62.09,54.08,55.08,92.07,93.07,67.09,68.09,69.09,70.09,71.09,72.09,73.09,74.09,75.09,67.08,68.08,108.07,109.07,80.09,81.09,82.09,83.09,84.09,85.09,86.09,87.09,88.09,80.08,81.08,124.07,125.07,93.09,94.09,95.09,96.09,97.09,98.09,99.09,100.09,101.09,93.08,94.08,140.07,141.07,106.09,107.09,108.09,109.09,110.09,111.09,112.09,113.09,114.09,106.08,107.08,156.07,157.07,119.09,120.09,121.09,122.09,123.09,124.09,125.09,126.09,127.09,119.08,120.08,172.07,173.07,132.09,133.09,134.09,135.09,136.09,137.09,138.09,139.09,140.09,132.08,133.08,188.07,189.07,28.1,29.1,30.1,31.1,32.1,33.1,34.1,35.1,36.1,145.08,146.08,204.07,205.07,41.1,42.1,43.1,44.1,45.1,46.1,47.1,48.1,49.1,158.08,159.08])
15516         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
15517         exp18=DataArrayDouble([156.07,157.07,119.09,120.09,121.09,122.09,123.09,124.09,125.09,126.09,127.09,119.08,120.08,172.07,173.07,132.09,133.09,134.09,135.09,136.09,137.09,138.09,139.09,140.09,132.08,133.08,188.07,189.07,28.1,29.1,30.1,31.1,32.1,33.1,34.1,35.1,36.1,145.08,146.08,204.07,205.07,41.1,42.1,43.1,44.1,45.1,46.1,47.1,48.1,49.1,158.08,159.08,220.07,221.07,54.1,55.1,56.1,57.1,58.1,59.1,60.1,61.1,62.1,171.08,172.08,236.07,237.07,67.1,68.1,69.1,70.1,71.1,72.1,73.1,74.1,75.1,76.1,77.1,252.07,253.07,80.1,81.1,82.1,83.1,84.1,85.1,86.1,87.1,88.1,89.1,90.1,268.07,269.07,93.1,94.1,95.1,96.1,97.1,98.1,99.1,100.1,101.1,102.1,103.1,284.07,285.07,106.1,107.1,108.1,109.1,110.1,111.1,112.1,113.1,114.1,115.1,116.1,300.07,301.07,119.1,120.1,121.1,122.1,123.1,124.1,125.1,126.1,127.1,128.1,129.1,316.07,317.07,132.1,133.1,134.1,135.1,136.1,137.1,138.1,139.1,140.1,141.1,142.1,143.1,144.1,145.1,146.1,147.1,148.1,149.1,150.1,151.1,152.1,153.1,154.1,155.1,156.1,157.1,158.1,159.1,160.1,161.1,162.1,163.1,164.1,165.1,166.1,167.1,168.1])
15518         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
15519         del att4
15520         ###
15521         att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
15522         for pos in [(),(0,),(1,),(2,)]:
15523             self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15524             pass
15525         att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
15526         exp19=DataArrayDouble([57.02,57.02,58.02,58.02,58.02,59.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,57.02,57.02,58.02,58.02,58.02,59.02,59.02,59.02,60.02,60.02,60.02,61.02,61.02,61.02,62.02,62.02,62.02,63.02,63.02,63.02,64.02,64.02,64.02,65.02,65.02,65.02,66.02,66.02,66.02,67.02,67.02,67.02,68.02,68.02,71.02,71.02,70.04,71.04,72.04,73.04,74.04,75.04,76.04,77.04,78.04,79.04,80.04,81.04,82.04,83.04,84.04,85.04,86.04,87.04,88.04,89.04,90.04,91.04,92.04,93.04,94.04,95.04,96.04,97.04,98.04,99.04,82.02,82.02,71.02,71.02,104.04,105.04,106.04,107.04,108.04,109.04,110.04,111.04,112.04,113.04,114.04,115.04,116.04,117.04,118.04,119.04,120.04,121.04,122.04,123.04,124.04,125.04,126.04,127.04,128.04,129.04,130.04,131.04,132.04,133.04,82.02,82.02,71.02,71.02,138.04,139.04,140.04,141.04,142.04,143.04,144.04,145.04,146.04,147.04,148.04,149.04,150.04,151.04,152.04,153.04,154.04,155.04,156.04,157.04,158.04,159.04,160.04,161.04,162.04,163.04,164.04,165.04,166.04,167.04,82.02,82.02,85.02,85.02,172.04,173.04,174.04,175.04,176.04,177.04,178.04,179.04,180.04,181.04,182.04,183.04,184.04,185.04,186.04,187.04,188.04,189.04,190.04,191.04,192.04,193.04,194.04,195.04,196.04,197.04,198.04,199.04,200.04,201.04,96.02,96.02,85.02,85.02,206.04,207.04,208.04,209.04,210.04,211.04,212.04,213.04,214.04,215.04,216.04,217.04,218.04,219.04,220.04,221.04,222.04,223.04,224.04,225.04,226.04,227.04,228.04,229.04,230.04,231.04,232.04,233.04,234.04,235.04,96.02,96.02,85.02,85.02,240.04,241.04,242.04,243.04,244.04,245.04,246.04,247.04,248.04,249.04,250.04,251.04,252.04,253.04,254.04,255.04,256.04,257.04,258.04,259.04,260.04,261.04,262.04,263.04,264.04,265.04,266.04,267.04,268.04,269.04,96.02,96.02,99.02,99.02,274.04,275.04,276.04,277.04,278.04,279.04,280.04,281.04,282.04,283.04,284.04,285.04,286.04,287.04,288.04,289.04,290.04,291.04,292.04,293.04,294.04,295.04,296.04,297.04,298.04,299.04,300.04,301.04,302.04,303.04,110.02,110.02,99.02,99.02,308.04,309.04,310.04,311.04,312.04,313.04,314.04,315.04,316.04,317.04,318.04,319.04,320.04,321.04,322.04,323.04,324.04,325.04,326.04,327.04,328.04,329.04,330.04,331.04,332.04,333.04,334.04,335.04,336.04,337.04,110.02,110.02,99.02,99.02,342.04,343.04,344.04,345.04,346.04,347.04,348.04,349.04,350.04,351.04,352.04,353.04,354.04,355.04,356.04,357.04,358.04,359.04,360.04,361.04,362.04,363.04,364.04,365.04,366.04,367.04,368.04,369.04,370.04,371.04,110.02,110.02,113.02,113.02,114.02,114.02,114.02,115.02,115.02,115.02,116.02,116.02,116.02,117.02,117.02,117.02,118.02,118.02,118.02,119.02,119.02,119.02,120.02,120.02,120.02,121.02,121.02,121.02,122.02,122.02,122.02,123.02,123.02,123.02,124.02,124.02,113.02,113.02,114.02,114.02,114.02,115.02,115.02,115.02,116.02,116.02,116.02,117.02,117.02,117.02,118.02,118.02,118.02,119.02,119.02,119.02,120.02,120.02,120.02,121.02,121.02,121.02,122.02,122.02,122.02,123.02,123.02,123.02,124.02,124.02])
15527         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
15528         exp20=DataArrayDouble([17.02,17.02,18.02,18.02,18.02,19.02,19.02,19.02,20.02,20.02,20.02,21.02,21.02,21.02,22.02,22.02,17.02,17.02,18.02,18.02,18.02,19.02,19.02,19.02,20.02,20.02,20.02,21.02,21.02,21.02,22.02,22.02,31.02,31.02,34.05,35.05,36.05,37.05,38.05,39.05,40.05,41.05,42.05,43.05,44.05,45.05,36.02,36.02,31.02,31.02,50.05,51.05,52.05,53.05,54.05,55.05,56.05,57.05,58.05,59.05,60.05,61.05,36.02,36.02,31.02,31.02,66.05,67.05,68.05,69.05,70.05,71.05,72.05,73.05,74.05,75.05,76.05,77.05,36.02,36.02,45.02,45.02,82.05,83.05,84.05,85.05,86.05,87.05,88.05,89.05,90.05,91.05,92.05,93.05,50.02,50.02,45.02,45.02,98.05,99.05,100.05,101.05,102.05,103.05,104.05,105.05,106.05,107.05,108.05,109.05,50.02,50.02,45.02,45.02,114.05,115.05,116.05,117.05,118.05,119.05,120.05,121.05,122.05,123.05,124.05,125.05,50.02,50.02,59.02,59.02,130.05,131.05,132.05,133.05,134.05,135.05,136.05,137.05,138.05,139.05,140.05,141.05,64.02,64.02,59.02,59.02,146.05,147.05,148.05,149.05,150.05,151.05,152.05,153.05,154.05,155.05,156.05,157.05,64.02,64.02,59.02,59.02,162.05,163.05,164.05,165.05,166.05,167.05,168.05,169.05,170.05,171.05,172.05,173.05,64.02,64.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02,73.02,73.02,74.02,74.02,74.02,75.02,75.02,75.02,76.02,76.02,76.02,77.02,77.02,77.02,78.02,78.02])
15529         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
15530         exp21=DataArrayDouble([49.02,49.02,50.02,50.02,50.02,51.02,51.02,51.02,52.02,52.02,52.02,53.02,53.02,53.02,54.02,54.02,49.02,49.02,50.02,50.02,50.02,51.02,51.02,51.02,52.02,52.02,52.02,53.02,53.02,53.02,54.02,54.02,63.02,63.02,34.06,35.06,36.06,37.06,38.06,39.06,40.06,41.06,42.06,43.06,44.06,45.06,68.02,68.02,63.02,63.02,50.06,51.06,52.06,53.06,54.06,55.06,56.06,57.06,58.06,59.06,60.06,61.06,68.02,68.02,63.02,63.02,66.06,67.06,68.06,69.06,70.06,71.06,72.06,73.06,74.06,75.06,76.06,77.06,68.02,68.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02,77.02,77.02,78.02,78.02,78.02,79.02,79.02,79.02,80.02,80.02,80.02,81.02,81.02,81.02,82.02,82.02])
15531         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
15532         exp22=DataArrayDouble([15.03,15.03,16.03,16.03,16.03,17.03,17.03,17.03,18.03,18.03,18.03,19.03,19.03,19.03,20.03,20.03,15.03,15.03,16.03,16.03,16.03,17.03,17.03,17.03,18.03,18.03,18.03,19.03,19.03,19.03,20.03,20.03,29.03,29.03,34.07,35.07,36.07,37.07,38.07,39.07,40.07,41.07,42.07,43.07,44.07,45.07,34.03,34.03,29.03,29.03,50.07,51.07,52.07,53.07,54.07,55.07,56.07,57.07,58.07,59.07,60.07,61.07,34.03,34.03,29.03,29.03,66.07,67.07,68.07,69.07,70.07,71.07,72.07,73.07,74.07,75.07,76.07,77.07,34.03,34.03,43.03,43.03,82.07,83.07,84.07,85.07,86.07,87.07,88.07,89.07,90.07,91.07,92.07,93.07,48.03,48.03,43.03,43.03,98.07,99.07,100.07,101.07,102.07,103.07,104.07,105.07,106.07,107.07,108.07,109.07,48.03,48.03,43.03,43.03,114.07,115.07,116.07,117.07,118.07,119.07,120.07,121.07,122.07,123.07,124.07,125.07,48.03,48.03,57.03,57.03,130.07,131.07,132.07,133.07,134.07,135.07,136.07,137.07,138.07,139.07,140.07,141.07,62.03,62.03,57.03,57.03,146.07,147.07,148.07,149.07,150.07,151.07,152.07,153.07,154.07,155.07,156.07,157.07,62.03,62.03,57.03,57.03,162.07,163.07,164.07,165.07,166.07,167.07,168.07,169.07,170.07,171.07,172.07,173.07,62.03,62.03,71.03,71.03,178.07,179.07,180.07,181.07,182.07,183.07,184.07,185.07,186.07,187.07,188.07,189.07,76.03,76.03,71.03,71.03,194.07,195.07,196.07,197.07,198.07,199.07,200.07,201.07,202.07,203.07,204.07,205.07,76.03,76.03,71.03,71.03,210.07,211.07,212.07,213.07,214.07,215.07,216.07,217.07,218.07,219.07,220.07,221.07,76.03,76.03,85.03,85.03,226.07,227.07,228.07,229.07,230.07,231.07,232.07,233.07,234.07,235.07,236.07,237.07,90.03,90.03,85.03,85.03,242.07,243.07,244.07,245.07,246.07,247.07,248.07,249.07,250.07,251.07,252.07,253.07,90.03,90.03,85.03,85.03,258.07,259.07,260.07,261.07,262.07,263.07,264.07,265.07,266.07,267.07,268.07,269.07,90.03,90.03,99.03,99.03,274.07,275.07,276.07,277.07,278.07,279.07,280.07,281.07,282.07,283.07,284.07,285.07,104.03,104.03,99.03,99.03,290.07,291.07,292.07,293.07,294.07,295.07,296.07,297.07,298.07,299.07,300.07,301.07,104.03,104.03,99.03,99.03,306.07,307.07,308.07,309.07,310.07,311.07,312.07,313.07,314.07,315.07,316.07,317.07,104.03,104.03,113.03,113.03,114.03,114.03,114.03,115.03,115.03,115.03,116.03,116.03,116.03,117.03,117.03,117.03,118.03,118.03,113.03,113.03,114.03,114.03,114.03,115.03,115.03,115.03,116.03,116.03,116.03,117.03,117.03,117.03,118.03,118.03])
15533         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
15534         exp23=DataArrayDouble([22.03,22.03,23.03,23.03,23.03,24.03,24.03,24.03,25.03,25.03,25.03,26.03,26.03,22.03,22.03,23.03,23.03,23.03,24.03,24.03,24.03,25.03,25.03,25.03,26.03,26.03,36.03,36.03,28.08,29.08,30.08,31.08,32.08,33.08,34.08,35.08,36.08,40.03,40.03,36.03,36.03,41.08,42.08,43.08,44.08,45.08,46.08,47.08,48.08,49.08,40.03,40.03,36.03,36.03,54.08,55.08,56.08,57.08,58.08,59.08,60.08,61.08,62.08,40.03,40.03,50.03,50.03,67.08,68.08,69.08,70.08,71.08,72.08,73.08,74.08,75.08,54.03,54.03,50.03,50.03,80.08,81.08,82.08,83.08,84.08,85.08,86.08,87.08,88.08,54.03,54.03,50.03,50.03,93.08,94.08,95.08,96.08,97.08,98.08,99.08,100.08,101.08,54.03,54.03,64.03,64.03,106.08,107.08,108.08,109.08,110.08,111.08,112.08,113.08,114.08,68.03,68.03,64.03,64.03,119.08,120.08,121.08,122.08,123.08,124.08,125.08,126.08,127.08,68.03,68.03,64.03,64.03,132.08,133.08,134.08,135.08,136.08,137.08,138.08,139.08,140.08,68.03,68.03,78.03,78.03,145.08,146.08,147.08,148.08,149.08,150.08,151.08,152.08,153.08,82.03,82.03,78.03,78.03,158.08,159.08,160.08,161.08,162.08,163.08,164.08,165.08,166.08,82.03,82.03,78.03,78.03,171.08,172.08,173.08,174.08,175.08,176.08,177.08,178.08,179.08,82.03,82.03,92.03,92.03,93.03,93.03,93.03,94.03,94.03,94.03,95.03,95.03,95.03,96.03,96.03,92.03,92.03,93.03,93.03,93.03,94.03,94.03,94.03,95.03,95.03,95.03,96.03,96.03])
15535         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
15536         exp24=DataArrayDouble([19.03,19.03,20.03,20.03,20.03,21.03,21.03,21.03,22.03,22.03,22.03,23.03,23.03,19.03,19.03,20.03,20.03,20.03,21.03,21.03,21.03,22.03,22.03,22.03,23.03,23.03,33.03,33.03,28.09,29.09,30.09,31.09,32.09,33.09,34.09,35.09,36.09,37.03,37.03,33.03,33.03,41.09,42.09,43.09,44.09,45.09,46.09,47.09,48.09,49.09,37.03,37.03,33.03,33.03,54.09,55.09,56.09,57.09,58.09,59.09,60.09,61.09,62.09,37.03,37.03,47.03,47.03,67.09,68.09,69.09,70.09,71.09,72.09,73.09,74.09,75.09,51.03,51.03,47.03,47.03,80.09,81.09,82.09,83.09,84.09,85.09,86.09,87.09,88.09,51.03,51.03,47.03,47.03,93.09,94.09,95.09,96.09,97.09,98.09,99.09,100.09,101.09,51.03,51.03,61.03,61.03,106.09,107.09,108.09,109.09,110.09,111.09,112.09,113.09,114.09,65.03,65.03,61.03,61.03,119.09,120.09,121.09,122.09,123.09,124.09,125.09,126.09,127.09,65.03,65.03,61.03,61.03,132.09,133.09,134.09,135.09,136.09,137.09,138.09,139.09,140.09,65.03,65.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03,75.03,75.03,76.03,76.03,76.03,77.03,77.03,77.03,78.03,78.03,78.03,79.03,79.03])
15537         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
15538         exp25=DataArrayDouble([61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,61.03,61.03,62.03,62.03,62.03,63.03,63.03,63.03,64.03,64.03,64.03,65.03,65.03,75.03,75.03,28.1,29.1,30.1,31.1,32.1,33.1,34.1,35.1,36.1,79.03,79.03,75.03,75.03,41.1,42.1,43.1,44.1,45.1,46.1,47.1,48.1,49.1,79.03,79.03,75.03,75.03,54.1,55.1,56.1,57.1,58.1,59.1,60.1,61.1,62.1,79.03,79.03,89.03,89.03,67.1,68.1,69.1,70.1,71.1,72.1,73.1,74.1,75.1,93.03,93.03,89.03,89.03,80.1,81.1,82.1,83.1,84.1,85.1,86.1,87.1,88.1,93.03,93.03,89.03,89.03,93.1,94.1,95.1,96.1,97.1,98.1,99.1,100.1,101.1,93.03,93.03,103.03,103.03,106.1,107.1,108.1,109.1,110.1,111.1,112.1,113.1,114.1,107.03,107.03,103.03,103.03,119.1,120.1,121.1,122.1,123.1,124.1,125.1,126.1,127.1,107.03,107.03,103.03,103.03,132.1,133.1,134.1,135.1,136.1,137.1,138.1,139.1,140.1,107.03,107.03,117.03,117.03,118.03,118.03,118.03,119.03,119.03,119.03,120.03,120.03,120.03,121.03,121.03,117.03,117.03,118.03,118.03,118.03,119.03,119.03,119.03,120.03,120.03,120.03,121.03,121.03])
15539         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
15540         pass
15541
15542     def testSwig2AMR11(self):
15543         """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
15544         coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
15545         fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
15546         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15547         exp0=DataArrayDouble([252.,252.,253.,253.,254.,254.,255.,255.,256.,256.,257.,257.,252.,252.,253.,253.,254.,254.,255.,255.,256.,256.,257.,257.,262.,262.,263.,263.,264.,264.,265.,265.,266.,266.,267.,267.,262.,262.,263.,263.,264.,264.,265.,265.,266.,266.,267.,267.,262.,262.,263.,263.,264.,264.,265.,265.,266.,266.,267.,267.,272.,272.,273.,273.,274.,274.,275.,275.,276.,276.,277.,277.,272.,272.,273.,273.,274.,274.,275.,275.,276.,276.,277.,277.,272.,272.,273.,273.,274.,274.,275.,275.,276.,276.,277.,277.,282.,282.,283.,283.,284.,284.,285.,285.,286.,286.,287.,287.,282.,282.,283.,283.,284.,284.,285.,285.,286.,286.,287.,287.])
15548         exp1=DataArrayDouble([362.,362.,363.,363.,364.,364.,365.,365.,366.,366.,367.,367.,362.,362.,363.,363.,364.,364.,365.,365.,366.,366.,367.,367.,372.,372.,373.,373.,374.,374.,375.,375.,376.,376.,377.,377.,372.,372.,373.,373.,374.,374.,375.,375.,376.,376.,377.,377.,372.,372.,373.,373.,374.,374.,375.,375.,376.,376.,377.,377.,382.,382.,383.,383.,384.,384.,385.,385.,386.,386.,387.,387.,382.,382.,383.,383.,384.,384.,385.,385.,386.,386.,387.,387.,382.,382.,383.,383.,384.,384.,385.,385.,386.,386.,387.,387.,392.,392.,393.,393.,394.,394.,395.,395.,396.,396.,397.,397.,392.,392.,393.,393.,394.,394.,395.,395.,396.,396.,397.,397.])
15549         exp2=DataArrayDouble([472.,472.,473.,473.,474.,474.,475.,475.,476.,476.,477.,477.,472.,472.,473.,473.,474.,474.,475.,475.,476.,476.,477.,477.,482.,482.,483.,483.,484.,484.,485.,485.,486.,486.,487.,487.,482.,482.,483.,483.,484.,484.,485.,485.,486.,486.,487.,487.,482.,482.,483.,483.,484.,484.,485.,485.,486.,486.,487.,487.,492.,492.,493.,493.,494.,494.,495.,495.,496.,496.,497.,497.,492.,492.,493.,493.,494.,494.,495.,495.,496.,496.,497.,497.,492.,492.,493.,493.,494.,494.,495.,495.,496.,496.,497.,497.,502.,502.,503.,503.,504.,504.,505.,505.,506.,506.,507.,507.,502.,502.,503.,503.,504.,504.,505.,505.,506.,506.,507.,507.])
15550         exp3=DataArrayDouble([582.,582.,583.,583.,584.,584.,585.,585.,586.,586.,587.,587.,582.,582.,583.,583.,584.,584.,585.,585.,586.,586.,587.,587.,592.,592.,593.,593.,594.,594.,595.,595.,596.,596.,597.,597.,592.,592.,593.,593.,594.,594.,595.,595.,596.,596.,597.,597.,592.,592.,593.,593.,594.,594.,595.,595.,596.,596.,597.,597.,602.,602.,603.,603.,604.,604.,605.,605.,606.,606.,607.,607.,602.,602.,603.,603.,604.,604.,605.,605.,606.,606.,607.,607.,602.,602.,603.,603.,604.,604.,605.,605.,606.,606.,607.,607.,612.,612.,613.,613.,614.,614.,615.,615.,616.,616.,617.,617.,612.,612.,613.,613.,614.,614.,615.,615.,616.,616.,617.,617.])
15551         exp4=DataArrayDouble([692.,692.,693.,693.,694.,694.,695.,695.,696.,696.,697.,697.,692.,692.,693.,693.,694.,694.,695.,695.,696.,696.,697.,697.,702.,702.,703.,703.,704.,704.,705.,705.,706.,706.,707.,707.,702.,702.,703.,703.,704.,704.,705.,705.,706.,706.,707.,707.,702.,702.,703.,703.,704.,704.,705.,705.,706.,706.,707.,707.,712.,712.,713.,713.,714.,714.,715.,715.,716.,716.,717.,717.,712.,712.,713.,713.,714.,714.,715.,715.,716.,716.,717.,717.,712.,712.,713.,713.,714.,714.,715.,715.,716.,716.,717.,717.,722.,722.,723.,723.,724.,724.,725.,725.,726.,726.,727.,727.,722.,722.,723.,723.,724.,724.,725.,725.,726.,726.,727.,727.])
15552         exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
15553         self.assertTrue(fine.isEqual(exp,1e-12))
15554         #
15555         fine.iota()
15556         coarse.iota(0.5)
15557         MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
15558         amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
15559         amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
15560         att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15561         att.alloc()
15562         exp1=DataArrayDouble(990) ; exp1.iota(0.5)
15563         ids=DataArrayInt([373,374,375,376,383,384,385,386,483,484,485,486,493,494,495,496,593,594,595,596,603,604,605,606])
15564         vals=DataArrayDouble([11004.,11052.,11100.,11148.,11868.,11916.,11964.,12012.,22524.,22572.,22620.,22668.,23388.,23436.,23484.,23532.,34044.,34092.,34140.,34188.,34908.,34956.,35004.,35052.])
15565         exp1[ids]=vals
15566         self.assertTrue(coarse.isEqual(exp1,1e-12))
15567         #
15568         MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
15569         exp2=DataArrayDouble(990) ; exp2.iota(0.5)
15570         exp2[ids]=vals/24.
15571         self.assertTrue(coarse.isEqual(exp2,1e-12))
15572         #
15573         coarse.iota(0.5) ; fine.iota(0.1)
15574         MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15575         #
15576         coarse.iota(0.5) ; fine.iota(0.1)
15577         MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15578         exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
15579         self.assertTrue(fine[:240].isEqual(exp00,1e-12))
15580         exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
15581         self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
15582         self.assertTrue(fine[240:-240].isEqual(DataArrayDouble([362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,372.5,372.5,266.1,267.1,268.1,269.1,270.1,271.1,272.1,273.1,377.5,377.5,372.5,372.5,278.1,279.1,280.1,281.1,282.1,283.1,284.1,285.1,377.5,377.5,372.5,372.5,290.1,291.1,292.1,293.1,294.1,295.1,296.1,297.1,377.5,377.5,382.5,382.5,302.1,303.1,304.1,305.1,306.1,307.1,308.1,309.1,387.5,387.5,382.5,382.5,314.1,315.1,316.1,317.1,318.1,319.1,320.1,321.1,387.5,387.5,382.5,382.5,326.1,327.1,328.1,329.1,330.1,331.1,332.1,333.1,387.5,387.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,372.5,372.5,386.1,387.1,388.1,389.1,390.1,391.1,392.1,393.1,377.5,377.5,372.5,372.5,398.1,399.1,400.1,401.1,402.1,403.1,404.1,405.1,377.5,377.5,372.5,372.5,410.1,411.1,412.1,413.1,414.1,415.1,416.1,417.1,377.5,377.5,382.5,382.5,422.1,423.1,424.1,425.1,426.1,427.1,428.1,429.1,387.5,387.5,382.5,382.5,434.1,435.1,436.1,437.1,438.1,439.1,440.1,441.1,387.5,387.5,382.5,382.5,446.1,447.1,448.1,449.1,450.1,451.1,452.1,453.1,387.5,387.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,372.5,372.5,506.1,507.1,508.1,509.1,510.1,511.1,512.1,513.1,377.5,377.5,372.5,372.5,518.1,519.1,520.1,521.1,522.1,523.1,524.1,525.1,377.5,377.5,372.5,372.5,530.1,531.1,532.1,533.1,534.1,535.1,536.1,537.1,377.5,377.5,382.5,382.5,542.1,543.1,544.1,545.1,546.1,547.1,548.1,549.1,387.5,387.5,382.5,382.5,554.1,555.1,556.1,557.1,558.1,559.1,560.1,561.1,387.5,387.5,382.5,382.5,566.1,567.1,568.1,569.1,570.1,571.1,572.1,573.1,387.5,387.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,362.5,362.5,363.5,363.5,364.5,364.5,365.5,365.5,366.5,366.5,367.5,367.5,372.5,372.5,626.1,627.1,628.1,629.1,630.1,631.1,632.1,633.1,377.5,377.5,372.5,372.5,638.1,639.1,640.1,641.1,642.1,643.1,644.1,645.1,377.5,377.5,372.5,372.5,650.1,651.1,652.1,653.1,654.1,655.1,656.1,657.1,377.5,377.5,382.5,382.5,662.1,663.1,664.1,665.1,666.1,667.1,668.1,669.1,387.5,387.5,382.5,382.5,674.1,675.1,676.1,677.1,678.1,679.1,680.1,681.1,387.5,387.5,382.5,382.5,686.1,687.1,688.1,689.1,690.1,691.1,692.1,693.1,387.5,387.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,392.5,392.5,393.5,393.5,394.5,394.5,395.5,395.5,396.5,396.5,397.5,397.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,482.5,482.5,746.1,747.1,748.1,749.1,750.1,751.1,752.1,753.1,487.5,487.5,482.5,482.5,758.1,759.1,760.1,761.1,762.1,763.1,764.1,765.1,487.5,487.5,482.5,482.5,770.1,771.1,772.1,773.1,774.1,775.1,776.1,777.1,487.5,487.5,492.5,492.5,782.1,783.1,784.1,785.1,786.1,787.1,788.1,789.1,497.5,497.5,492.5,492.5,794.1,795.1,796.1,797.1,798.1,799.1,800.1,801.1,497.5,497.5,492.5,492.5,806.1,807.1,808.1,809.1,810.1,811.1,812.1,813.1,497.5,497.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,482.5,482.5,866.1,867.1,868.1,869.1,870.1,871.1,872.1,873.1,487.5,487.5,482.5,482.5,878.1,879.1,880.1,881.1,882.1,883.1,884.1,885.1,487.5,487.5,482.5,482.5,890.1,891.1,892.1,893.1,894.1,895.1,896.1,897.1,487.5,487.5,492.5,492.5,902.1,903.1,904.1,905.1,906.1,907.1,908.1,909.1,497.5,497.5,492.5,492.5,914.1,915.1,916.1,917.1,918.1,919.1,920.1,921.1,497.5,497.5,492.5,492.5,926.1,927.1,928.1,929.1,930.1,931.1,932.1,933.1,497.5,497.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,482.5,482.5,986.1,987.1,988.1,989.1,990.1,991.1,992.1,993.1,487.5,487.5,482.5,482.5,998.1,999.1,1000.1,1001.1,1002.1,1003.1,1004.1,1005.1,487.5,487.5,482.5,482.5,1010.1,1011.1,1012.1,1013.1,1014.1,1015.1,1016.1,1017.1,487.5,487.5,492.5,492.5,1022.1,1023.1,1024.1,1025.1,1026.1,1027.1,1028.1,1029.1,497.5,497.5,492.5,492.5,1034.1,1035.1,1036.1,1037.1,1038.1,1039.1,1040.1,1041.1,497.5,497.5,492.5,492.5,1046.1,1047.1,1048.1,1049.1,1050.1,1051.1,1052.1,1053.1,497.5,497.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,472.5,472.5,473.5,473.5,474.5,474.5,475.5,475.5,476.5,476.5,477.5,477.5,482.5,482.5,1106.1,1107.1,1108.1,1109.1,1110.1,1111.1,1112.1,1113.1,487.5,487.5,482.5,482.5,1118.1,1119.1,1120.1,1121.1,1122.1,1123.1,1124.1,1125.1,487.5,487.5,482.5,482.5,1130.1,1131.1,1132.1,1133.1,1134.1,1135.1,1136.1,1137.1,487.5,487.5,492.5,492.5,1142.1,1143.1,1144.1,1145.1,1146.1,1147.1,1148.1,1149.1,497.5,497.5,492.5,492.5,1154.1,1155.1,1156.1,1157.1,1158.1,1159.1,1160.1,1161.1,497.5,497.5,492.5,492.5,1166.1,1167.1,1168.1,1169.1,1170.1,1171.1,1172.1,1173.1,497.5,497.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,502.5,502.5,503.5,503.5,504.5,504.5,505.5,505.5,506.5,506.5,507.5,507.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,592.5,592.5,1226.1,1227.1,1228.1,1229.1,1230.1,1231.1,1232.1,1233.1,597.5,597.5,592.5,592.5,1238.1,1239.1,1240.1,1241.1,1242.1,1243.1,1244.1,1245.1,597.5,597.5,592.5,592.5,1250.1,1251.1,1252.1,1253.1,1254.1,1255.1,1256.1,1257.1,597.5,597.5,602.5,602.5,1262.1,1263.1,1264.1,1265.1,1266.1,1267.1,1268.1,1269.1,607.5,607.5,602.5,602.5,1274.1,1275.1,1276.1,1277.1,1278.1,1279.1,1280.1,1281.1,607.5,607.5,602.5,602.5,1286.1,1287.1,1288.1,1289.1,1290.1,1291.1,1292.1,1293.1,607.5,607.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,592.5,592.5,1346.1,1347.1,1348.1,1349.1,1350.1,1351.1,1352.1,1353.1,597.5,597.5,592.5,592.5,1358.1,1359.1,1360.1,1361.1,1362.1,1363.1,1364.1,1365.1,597.5,597.5,592.5,592.5,1370.1,1371.1,1372.1,1373.1,1374.1,1375.1,1376.1,1377.1,597.5,597.5,602.5,602.5,1382.1,1383.1,1384.1,1385.1,1386.1,1387.1,1388.1,1389.1,607.5,607.5,602.5,602.5,1394.1,1395.1,1396.1,1397.1,1398.1,1399.1,1400.1,1401.1,607.5,607.5,602.5,602.5,1406.1,1407.1,1408.1,1409.1,1410.1,1411.1,1412.1,1413.1,607.5,607.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,592.5,592.5,1466.1,1467.1,1468.1,1469.1,1470.1,1471.1,1472.1,1473.1,597.5,597.5,592.5,592.5,1478.1,1479.1,1480.1,1481.1,1482.1,1483.1,1484.1,1485.1,597.5,597.5,592.5,592.5,1490.1,1491.1,1492.1,1493.1,1494.1,1495.1,1496.1,1497.1,597.5,597.5,602.5,602.5,1502.1,1503.1,1504.1,1505.1,1506.1,1507.1,1508.1,1509.1,607.5,607.5,602.5,602.5,1514.1,1515.1,1516.1,1517.1,1518.1,1519.1,1520.1,1521.1,607.5,607.5,602.5,602.5,1526.1,1527.1,1528.1,1529.1,1530.1,1531.1,1532.1,1533.1,607.5,607.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,582.5,582.5,583.5,583.5,584.5,584.5,585.5,585.5,586.5,586.5,587.5,587.5,592.5,592.5,1586.1,1587.1,1588.1,1589.1,1590.1,1591.1,1592.1,1593.1,597.5,597.5,592.5,592.5,1598.1,1599.1,1600.1,1601.1,1602.1,1603.1,1604.1,1605.1,597.5,597.5,592.5,592.5,1610.1,1611.1,1612.1,1613.1,1614.1,1615.1,1616.1,1617.1,597.5,597.5,602.5,602.5,1622.1,1623.1,1624.1,1625.1,1626.1,1627.1,1628.1,1629.1,607.5,607.5,602.5,602.5,1634.1,1635.1,1636.1,1637.1,1638.1,1639.1,1640.1,1641.1,607.5,607.5,602.5,602.5,1646.1,1647.1,1648.1,1649.1,1650.1,1651.1,1652.1,1653.1,607.5,607.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5,612.5,612.5,613.5,613.5,614.5,614.5,615.5,615.5,616.5,616.5,617.5,617.5]),1e-12))
15583         pass
15584
15585     def testSwig2AMR12(self):
15586         """ This test check the MEDCouplingAMRAttribute.projectTo method."""
15587         amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15588         amr0.addPatch([(3,8),(0,3)],[2,2])
15589         amr0.addPatch([(3,8),(3,6)],[2,2])
15590         att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
15591         att0.alloc()
15592         att0.getFieldOn(amr0,"YY").iota(0.01)
15593         att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
15594         att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
15595         amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15596         amr1.addPatch([(2,5),(1,4)],[2,2])
15597         att1=att0.projectTo(amr1)
15598         self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
15599         self.assertTrue(att1.getFieldOn(amr1[0].getMesh(),"YY").isEqualWithoutConsideringStr(DataArrayDouble([31.01,31.01,32.01,32.01,33.01,33.01,34.01,34.01,35.01,35.01,31.01,31.01,32.01,32.01,33.01,33.01,34.01,34.01,35.01,35.01,45.01,45.01,46.01,46.01,58.02,59.02,60.02,61.02,49.01,49.01,45.01,45.01,46.01,46.01,72.02,73.02,74.02,75.02,49.01,49.01,59.01,59.01,60.01,60.01,86.02,87.02,88.02,89.02,63.01,63.01,59.01,59.01,60.01,60.01,100.02,101.02,102.02,103.02,63.01,63.01,73.01,73.01,74.01,74.01,30.03,31.03,32.03,33.03,77.01,77.01,73.01,73.01,74.01,74.01,44.03,45.03,46.03,47.03,77.01,77.01,87.01,87.01,88.01,88.01,89.01,89.01,90.01,90.01,91.01,91.01,87.01,87.01,88.01,88.01,89.01,89.01,90.01,90.01,91.01,91.01]),1e-12))
15600         #
15601         amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15602         amr0.addPatch([(2,5),(2,7)],[2,2])
15603         amr0.addPatch([(5,8),(2,7)],[2,2])
15604         att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
15605         att0.alloc()
15606         att0.getFieldOn(amr0,"YY").iota(0.01)
15607         att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
15608         att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
15609         amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15610         amr1.addPatch([(3,6),(2,7)],[2,2])
15611         amr1.addPatch([(6,9),(2,7)],[2,2])
15612         att1=att0.projectTo(amr1)
15613         self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
15614         self.assertTrue(att1.getFieldOn(amr1[0].getMesh(),"YY").isEqualWithoutConsideringStr(DataArrayDouble([46.01,46.01,47.01,47.01,48.01,48.01,49.01,49.01,50.01,50.01,46.01,46.01,47.01,47.01,48.01,48.01,49.01,49.01,50.01,50.01,60.01,60.01,24.02,25.02,26.02,27.02,22.03,23.03,64.01,64.01,60.01,60.01,34.02,35.02,36.02,37.02,32.03,33.03,64.01,64.01,74.01,74.01,44.02,45.02,46.02,47.02,42.03,43.03,78.01,78.01,74.01,74.01,54.02,55.02,56.02,57.02,52.03,53.03,78.01,78.01,88.01,88.01,64.02,65.02,66.02,67.02,62.03,63.03,92.01,92.01,88.01,88.01,74.02,75.02,76.02,77.02,72.03,73.03,92.01,92.01,102.01,102.01,84.02,85.02,86.02,87.02,82.03,83.03,106.01,106.01,102.01,102.01,94.02,95.02,96.02,97.02,92.03,93.03,106.01,106.01,116.01,116.01,104.02,105.02,106.02,107.02,102.03,103.03,120.01,120.01,116.01,116.01,114.02,115.02,116.02,117.02,112.03,113.03,120.01,120.01,130.01,130.01,131.01,131.01,132.01,132.01,133.01,133.01,134.01,134.01,130.01,130.01,131.01,131.01,132.01,132.01,133.01,133.01,134.01,134.01]),1e-12))
15615         self.assertTrue(att1.getFieldOn(amr1[1].getMesh(),"YY").isEqualWithoutConsideringStr(DataArrayDouble([49.01,49.01,50.01,50.01,51.01,51.01,52.01,52.01,53.01,53.01,49.01,49.01,50.01,50.01,51.01,51.01,52.01,52.01,53.01,53.01,63.01,63.01,24.03,25.03,26.03,27.03,66.01,66.01,67.01,67.01,63.01,63.01,34.03,35.03,36.03,37.03,66.01,66.01,67.01,67.01,77.01,77.01,44.03,45.03,46.03,47.03,80.01,80.01,81.01,81.01,77.01,77.01,54.03,55.03,56.03,57.03,80.01,80.01,81.01,81.01,91.01,91.01,64.03,65.03,66.03,67.03,94.01,94.01,95.01,95.01,91.01,91.01,74.03,75.03,76.03,77.03,94.01,94.01,95.01,95.01,105.01,105.01,84.03,85.03,86.03,87.03,108.01,108.01,109.01,109.01,105.01,105.01,94.03,95.03,96.03,97.03,108.01,108.01,109.01,109.01,119.01,119.01,104.03,105.03,106.03,107.03,122.01,122.01,123.01,123.01,119.01,119.01,114.03,115.03,116.03,117.03,122.01,122.01,123.01,123.01,133.01,133.01,134.01,134.01,135.01,135.01,136.01,136.01,137.01,137.01,133.01,133.01,134.01,134.01,135.01,135.01,136.01,136.01,137.01,137.01]),1e-12))
15616         pass
15617
15618     def testSwig2AMR13(self):
15619         """ non regression test"""
15620         for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
15621             amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15622             amr.addPatch([(1,3),(0,2)],fact)
15623             amr.addPatch([(1,3),(3,4)],fact)
15624             att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15625             att.alloc()
15626             att.getFieldOn(amr,"YY").iota(0.1)
15627             att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
15628             att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
15629             att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
15630             exp=DataArrayDouble(64) ; exp.iota(0.1)
15631             self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
15632             exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
15633             self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
15634             exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
15635             self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
15636             pass
15637         pass
15638     
15639     def testSwig2AMR14(self):
15640         """ non regression linked to VTHB write."""
15641         fact=[2,2] ; fact2=[3,3]
15642         amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15643         amr.addPatch([(1,3),(0,2)],fact)
15644         amr.addPatch([(1,3),(3,4)],fact)
15645         amr[0].addPatch([(1,3),(1,3)],fact2)
15646         amr[1].addPatch([(1,3),(1,2)],fact2)
15647         att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15648         att.alloc()
15649         att.getFieldOn(amr,"YY").iota(0.1)
15650         att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
15651         att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
15652         att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
15653         att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
15654         self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
15655         self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
15656         self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
15657         self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
15658         pass
15659
15660     def testSwig2Intersect2DMeshWith1DLine1(self):
15661         """A basic test with no colinearity between m1 and m2."""
15662         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15663         m1=i.buildUnstructured()
15664         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([0.75,3.5,3.75,1.75],2,2)) ; m2.allocateCells() ; m2.insertNextCell(NORM_SEG2,[0,1])
15665         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15666         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,11,10,15,16,4,18,17,22,23,4,19,18,23,24,5,16,15,20,21,31,5,21,22,17,28,31,5,16,31,28,5,17,29,28,5,12,11,16,28,29,5,17,18,30,29,5,13,12,29,30,5,18,19,14,27,30,5,13,30,27,5,9,8,13,27,14])))
15667         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,31,1,31,28,1,28,29,1,29,30,1,30,27,1,27,26])))
15668         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,56,62,66,70,76,81,86,92,96,102])))
15669         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18])))
15670         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15671         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15672         self.assertTrue(a.getCoords()[25:25+2].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15673         self.assertTrue(a.getCoords()[27:].isEqualWithoutConsideringStr(DataArrayDouble([(3.3214285714285716,2.),(1.6071428571428572,3.),(2.,2.7708333333333335),(3.,2.1875),(1.,3.354166666666667)]),1e-12))
15674         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,4,5,6,8,14,15,12,13,13,9,9,10,10,11,11,7])))
15675         self.assertTrue(d.isEqual(DataArrayInt([(10,10),(11,12),(13,14),(15,16),(17,18),(19,19)])))
15676         pass
15677
15678     def testSwig2Intersect2DMeshWith1DLine2(self):
15679         """A basic test with colinearity between m1 and m2 and the last cell of m2 outside m1."""
15680         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15681         m1=i.buildUnstructured()
15682         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([0.5,2.,2.25,2.,2.5,2.,2.75,2.,3.,2.,4.,2.,5.,2.],7,2)) ; m2.allocateCells()
15683         for i in xrange(6):
15684             m2.insertNextCell(NORM_SEG2,[i,i+1])
15685             pass
15686         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15687         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24,5,6,5,10,25,11,5,7,6,11,12,5,8,7,12,26,27,28,13,5,9,8,13,14,5,11,25,10,15,16,5,12,11,16,17,5,13,28,27,26,12,17,18,5,14,13,18,19])))
15688         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,51,59,64,70,75,83,88])))
15689         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,11,1,11,12,1,12,26,1,26,27,1,27,28,1,28,13,1,13,14,1,14,31])))
15690         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
15691         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15692         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15693         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15694         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,12,13,14,15,4,5,6,7,8,9,10,11])))
15695         self.assertTrue(d.isEqual(DataArrayInt([(12,8),(13,9),(14,10),(14,10),(14,10),(14,10),(15,11),(-1,-1)])))
15696         pass
15697
15698     def testSwig2Intersect2DMeshWith1DLine3(self):
15699         """m2 fully included in cell #12. of m1"""
15700         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15701         m1=i.buildUnstructured()
15702         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(0.75,3.25),(0.5,3.5),(0.25,3.25)])) ; m2.allocateCells()
15703         for i in xrange(2):
15704             m2.insertNextCell(NORM_SEG2,[i,i+1])
15705             pass
15706         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15707         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,13,12,17,18,4,14,13,18,19,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24,5,16,15,20,21])))
15708         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80])))
15709         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,26,1,26,27])))
15710         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
15711         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15712         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15713         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15714         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,12])))
15715         self.assertTrue(d.isEqual(DataArrayInt([(15,15),(15,15)])))
15716         pass
15717
15718     def testSwig2Intersect2DMeshWith1DLine4(self):
15719         """A special case where an edge is simultaneously a cut and colinear. This tests also checks negative values in descending edges of m1."""
15720         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15721         m1=i.buildUnstructured()
15722         part=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15])
15723         m1_1=m1[part]
15724         m1_2=m1[part.buildComplement(m1.getNumberOfCells())]
15725         m1=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1_1,m1_2.buildSpreadZonesWithPoly())
15726         m1.zipCoords()
15727         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(3.5,2.),(0.5,2.)])) ; m2.allocateCells()
15728         m2.insertNextCell(NORM_SEG2,[0,1])
15729         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15730         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,15,14,19,20,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,5,6,5,10,25,11,5,9,8,12,24,13,5,11,25,10,14,15,5,13,24,12,17,18,5,8,7,6,11,12,5,15,16,17,12,11])))
15731         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,52,58,64,70,76])))
15732         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,24,12,1,12,11,1,11,25])))
15733         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9])))
15734         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15735         self.assertTrue(a.getCoords()[:24].isEqual(m1.getCoords(),1e-12))
15736         self.assertTrue(a.getCoords()[24:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15737         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,8,9,10,11,4,5,6,7,12,12])))
15738         self.assertTrue(d.isEqual(DataArrayInt([(9,11),(12,13),(8,10)])))
15739         pass
15740
15741     def testSwig2Intersect2DMeshWith1DLine5(self):
15742         """A test focusing on a special case for cut."""
15743         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15744         m1=i.buildUnstructured()
15745         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(1.,0.),(3.,2.),(1.,4.)])) ; m2.allocateCells()
15746         for i in xrange(2):
15747             m2.insertNextCell(NORM_SEG2,[i,i+1])
15748             pass
15749         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15750         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,5,6,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,14,13,18,19,4,16,15,20,21,4,18,17,22,23,4,19,18,23,24,5,6,7,1,5,2,1,7,5,12,13,7,5,8,7,13,5,12,17,13,5,18,13,17,5,16,21,17,5,22,17,21])))
15751         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,64,68,72,76,80,84,88,92])))
15752         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,1,7,1,7,13,1,13,17,1,17,21])))
15753         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12])))
15754         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15755         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15756         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15757         self.assertTrue(c.isEqual(DataArrayInt([0,2,3,4,5,7,8,9,11,12,14,15,1,1,6,6,10,10,13,13])))
15758         self.assertTrue(d.isEqual(DataArrayInt([(12,13),(14,15),(16,17),(18,19)])))
15759         pass
15760
15761     def testIntersect2DMeshWith1DLine6(self):
15762         """ Basic test for Intersect2DMeshWith1DLine: a vertical line intersecting a square. """
15763         m1c = MEDCouplingCMesh()
15764         coordX = DataArrayDouble([-1., 1., 2])
15765         m1c.setCoordsAt(0,coordX)
15766         coordY = DataArrayDouble([0., 2.])
15767         m1c.setCoordsAt(1,coordY);
15768         m1 = m1c.buildUnstructured()
15769
15770         # A simple line:
15771         m2 = MEDCouplingUMesh("bla", 1)
15772         coord2 = DataArrayDouble([0.,-1.0,  0.,1.,  0.,3.,  0.5,2.2], 4, 2)
15773         conn2 = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,2,3])
15774         connI2 = DataArrayInt([0,3,7])
15775         m2.setCoords(coord2)
15776         m2.setConnectivity(conn2, connI2)
15777
15778         # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15779         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)        
15780         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,2,1,4,5,32,0,3,11,7,10,14,15,16,17,18,32,4,1,10,7,11,19,20,21,22,23])))
15781         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,16,27])))
15782         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,6,10,1,10,7,2,7,11,12,2,11,8,13])))
15783         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,14])))
15784         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15785         self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
15786         self.assertTrue(a.getCoords()[6:10].isEqual(m2.getCoords(),1e-12))
15787         self.assertTrue(a.getCoords()[10:].isEqual(DataArrayDouble([(0.,0.),(0.5164175471673584,2.),(0.3796918047064557,1.43726403104512),(0.3796918047064557,2.56273596895488),(-1.,1.),(-0.24179122641632078,2.),(0.3796918047064558,1.4372640310451201),(0.,0.5),(-0.5,0.),(1.,1.),(0.5,0.),(0.,0.5),(0.3796918047064558,1.4372640310451201),(0.7582087735836792,2.)]),1e-12))
15788         self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
15789         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(-1,-1)])))
15790         pass
15791
15792     def testSwig2Intersect2DMeshWith1DLine7(self):
15793         """ Star pattern (a triangle intersecting another one upside down) """
15794         coords1 = DataArrayDouble([-2.,1.,   2.,1.,  0.,-2.], 3,2)
15795         coords2 = DataArrayDouble([0.,2.,   2.,-1.,  -2.,-1.,  0.,3.], 4,2)
15796         m1 = MEDCouplingUMesh("triangle", 2)
15797         m2 = MEDCouplingUMesh("tri_line", 1)
15798         m1.setCoords(coords1)
15799         m2.setCoords(coords2)
15800         m1.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2]), DataArrayInt([0,4]))
15801         m2.setConnectivity(DataArrayInt([NORM_SEG2,0,1,NORM_SEG2,1,2,NORM_SEG2,2,3]), DataArrayInt([0,3,6,9]))
15802     # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15803         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15804         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([5,1,9,7,5,2,11,10,5,0,8,12,5,7,9,10,11,12,8])))
15805         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,19])))
15806         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,3,7,1,7,9,1,9,4,1,4,10,1,10,11,1,11,5,1,5,12,1,12,8,1,8,6])))
15807         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24,27])))
15808         self.assertTrue(a.getCoords()[:3].isEqual(m1.getCoords(),1e-12))
15809         self.assertTrue(a.getCoords()[3:7].isEqual(m2.getCoords(),1e-12))
15810         self.assertTrue(a.getCoords()[7:].isEqual(DataArrayDouble([(0.6666666666666666,1.),(-1.,1.),(1.3333333333333333,1.1102230246251565e-16),(0.6666666666666665,-0.9999999999999996),(-0.6666666666666667,-1.),(-1.4285714285714284,0.14285714285714302)]),1e-12))
15811         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15812         self.assertTrue(c.isEqual(DataArrayInt([0,0,0,0])))
15813         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,3),(-1,-1),(-1,-1),(1,3),(-1,-1),(-1,-1),(2,3),(-1,-1)])))
15814         pass
15815     
15816     def testSwig2Intersect2DMeshWith1DLine8(self):
15817         """ Line pieces ending (or fully located) in the middle of a cell """
15818         m1c = MEDCouplingCMesh()
15819         m1c.setCoordsAt(0,DataArrayDouble([-1., 1.]))
15820         m1c.setCoordsAt(1,DataArrayDouble([-1., 1.]));
15821         m1 = m1c.buildUnstructured()
15822         coords2 = DataArrayDouble([0.,0.,  0.,1.5, -1.5,0.,  0.5,0.0,  0.0,-0.5, 1.1,-0.6], 6,2)
15823         m2 = MEDCouplingUMesh("piecewise_line", 1)
15824         m2.setCoords(coords2)
15825         c = DataArrayInt([NORM_SEG2,2,1, NORM_SEG2,1,4, NORM_SEG2,4,3,  NORM_SEG2,3,5])
15826         cI = DataArrayInt([0,3,6,9,12])
15827         m2.setConnectivity(c, cI)
15828         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15829         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([5,2,11,10,5,3,13,7,8,12,5,1,0,10,11,12,8,7,13])))
15830         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,10,19])))
15831         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,6,10,1,10,11,1,11,5,1,5,12,1,12,8,1,8,7,1,7,13,1,13,9])))
15832         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
15833         self.assertTrue(a.getCoords()[:4].isEqual(m1.getCoords(),1e-12))
15834         self.assertTrue(a.getCoords()[4:10].isEqual(m2.getCoords(),1e-12))
15835         self.assertTrue(a.getCoords()[10:].isEqual(DataArrayDouble([(-1.,0.5),(-0.5,1.),(0.,1.),(1.,-0.5)]),1e-12))
15836         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15837         self.assertTrue(c.isEqual(DataArrayInt([0,0,0])))
15838         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
15839         pass
15840
15841     def testSwig2Intersect2DMeshWith1DLine9(self):
15842         """ Intersection with a line whose connectivity is not consecutive """
15843         m1c = MEDCouplingCMesh()
15844         coordX = DataArrayDouble([-1., 1., 2])
15845         m1c.setCoordsAt(0,coordX)
15846         coordY = DataArrayDouble([0., 2.])
15847         m1c.setCoordsAt(1,coordY);
15848         m1 = m1c.buildUnstructured()
15849         # A simple line:
15850         m2 = MEDCouplingUMesh("bla", 1)
15851         coord2 = DataArrayDouble([0.,1.5,  0.5,1.,  0.0,0.5,  0.0,3.0,  0.0,-1.0], 5, 2)
15852         conn2 = DataArrayInt([NORM_SEG2,3,0,NORM_SEG3,0,2,1,NORM_SEG2,2,4])
15853         connI2 = DataArrayInt([0,3,7,10])
15854         m2.setCoords(coord2)
15855         m2.setConnectivity(conn2, connI2)
15856         # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15857         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15858         self.assertTrue(a.getNodalConnectivity().isEqual(DataArrayInt([4,2,1,4,5,32,4,1,11,8,6,12,14,15,16,17,18,19,32,0,3,12,6,8,11,20,21,22,23,24,25])))
15859         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,18,31])))
15860         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,9,12,1,12,6,2,6,8,13,1,8,11,1,11,10])))
15861         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,13,16])))
15862         self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
15863         self.assertTrue(a.getCoords()[6:11].isEqual(m2.getCoords(),1e-12))
15864         self.assertTrue(a.getCoords()[11:].isEqual(DataArrayDouble([(0.,0.),(0.,2.),(0.5,1.),(1.,1.),(0.5,0.),(0.,0.25),(0.5,1.),(0.,1.75),(0.5,2.),(-1.,1.),(-0.5,2.),(0.,1.75),(0.5,1.),(0.,0.25),(-0.5,0.)]),1e-12))
15865         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15866         self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
15867         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
15868         pass
15869
15870     def testSwig2Intersect2DMeshWith1DLine10(self):
15871         """ Intersection between a circle and various lines """
15872         eps = 1.0e-8
15873         m_circ = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 2.0)
15874         coords = [0.0,3.0,0.0,-3.0]
15875         connec = [0,1]
15876         m_line = MEDCouplingUMesh("seg", 1)  
15877         m_line.allocateCells(1)
15878         meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
15879         m_line.setCoords(meshCoords)
15880         m_line.insertNextCell(NORM_SEG2, connec)
15881         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m_circ, m_line, eps)
15882         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15883         self.assertTrue(a.getCoords()[:m_circ.getNumberOfNodes()].isEqual(m_circ.getCoords(),1e-12))
15884         self.assertTrue(a.getCoords()[m_circ.getNumberOfNodes():m_circ.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15885         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(2.,0.),(1.4142135623730951,1.414213562373095),(0.,2.),(-1.414213562373095,1.4142135623730951),(-2.,0.),(-1.4142135623730954,-1.414213562373095),(0.,-2.),(1.4142135623730947,-1.4142135623730954),(0.,3.),(0.,-3.),(0.,-2.),(0.,2.),(2.,0.),(0.7653668647301797,-1.8477590650225735),(0.,0.),(0.7653668647301797,1.8477590650225735),(-2,0.),(-0.7653668647301795,1.8477590650225735),(0.,0.),(-0.7653668647301795,-1.8477590650225735)]),1e-12))
15886         self.assertEqual([32,1,7,10,11,12,13,14,15,32,5,3,11,10,16,17,18,19],a.getNodalConnectivity().getValues())
15887         self.assertEqual([0,9,18],  a.getNodalConnectivityIndex().getValues())
15888         self.assertEqual([1,8,11,1,11,10,1,10,9],b.getNodalConnectivity().getValues())
15889         self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
15890         self.assertTrue(a.getCoords()[:8].isEqual(m_circ.getCoords(),1e-12))
15891         self.assertTrue(a.getCoords()[8:10].isEqual(m_line.getCoords(),1e-12))
15892         coo_tgt = DataArrayDouble([2.,0.,1.4142135623730951,1.414213562373095,1.2246467991473532e-16,2.,-1.414213562373095,1.4142135623730951,-2.,0.,-1.4142135623730954,-1.414213562373095,-3.6739403974420594e-16,-2.,1.4142135623730947,-1.4142135623730954,0.,3.,0.,-3.,0.,-2.,0.,2.,2.,0.,0.7653668647301797,-1.8477590650225735,0.,0.,0.7653668647301797,1.8477590650225735,-2.,0.,-0.7653668647301795,1.8477590650225735,0.,0.,-0.7653668647301795,-1.8477590650225735])
15893         self.assertTrue(a.getCoords().isEqualWithoutConsideringStr(coo_tgt,1.0e-12))
15894         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15895         self.assertEqual([0,0],c.getValues())
15896         self.assertEqual([-1,-1,0,1,-1,-1],d.getValues())
15897
15898     def testSwig2Intersect2DMeshWith1DLine11(self):
15899         """ Quad line re-entering a square cell """
15900         eps = 1.0e-8
15901         m = MEDCouplingUMesh("box", 2)
15902         m.setCoords(DataArrayDouble([-1., -1., -1., 1., 1., 1., 1., -1.0],4,2))
15903         c, cI = [NORM_POLYGON, 0, 1, 2, 3], [0, 5]
15904         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15905         m.checkCoherency()
15906         coords2 = [0., 1.3, -1.3, 0., -0.6, 0.6, 0., -1.3, -0.5, -0.5]
15907         connec2, cI2 = [NORM_SEG3, 0, 1, 2, NORM_SEG3, 1, 3, 4], [0,4,8]
15908         m_line = MEDCouplingUMesh("seg", 1)  
15909         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15910         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15911         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15912         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15913         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15914         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15915         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(-1.,-1.),(-1.,1.),(1.,1.),(1.,-1.),(0.,1.3),(-1.3,0.),(-0.6,0.6),(0.,-1.3),(-0.5,-0.5),(-1.,0.23453685964236054),(-1.,-0.13033276368660177),(-0.2345368596423598,1.),(-0.1303327636866019,-1.),(-0.11489196370692323,1.1481421036683868),(-0.6,0.6),(-1.1481421036683859,0.11489196370692323),(-1.147455889106615,-0.0593103465193594),(-0.5,-0.5),(-0.0593103465193594,-1.147455889106615),(1.,0.),(0.4348336181566991,-1.),(-0.5651663818433009,-1.),(-1.,-0.5651663818433009),(-1.,0.05210204797787939),(-0.6,0.6),(0.3827315701788201,1.),(-0.6172684298211799,1.),(-0.6,0.6),(-1.,0.6172684298211802),(-0.6,0.6),(0.3827315701788201,1.),(1.,0.),(0.4348336181566991,-1.),(-0.5,-0.5),(-1.,0.05210204797787939),(-1.,-0.5651663818433009),(-0.5,-0.5),(-0.5651663818433009,-1.)]),1e-12))
15916         self.assertEqual([32,9,11,2,3,12,10,29,30,31,32,33,34,32,0,10,12,35,36,37,32,1,11,9,26,27,28],a.getNodalConnectivity().getValues())
15917         self.assertEqual([0,13,20,27],a.getNodalConnectivityIndex().getValues())
15918         self.assertEqual([2,4,11,13,2,11,9,14,2,9,5,15,2,5,10,16,2,10,12,17,2,12,7,18],b.getNodalConnectivity().getValues())
15919         self.assertEqual([0,4,8,12,16,20,24],b.getNodalConnectivityIndex().getValues())
15920         self.assertTrue(a.getCoords()[:4].isEqual(m.getCoords(),1e-12))
15921         self.assertTrue(a.getCoords()[4:9].isEqual(m_line.getCoords(),1e-12))
15922         self.assertTrue(DataArrayInt([0,0,0]).isEqual(c))
15923         self.assertTrue(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(0,1),(-1,-1)]).isEqual(d))
15924         pass
15925
15926     def testSwig2Intersect2DMeshWith1DLine12(self):
15927         """ Two squares one in the other intersected by an horizontal line """
15928         eps = 1.0e-8
15929         m = MEDCouplingUMesh("boxbox", 2)
15930         m.setCoords(DataArrayDouble([-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,-0.25,-0.25,-0.25,0.25,0.25,0.25,0.25,-0.25],8,2))
15931         c = [NORM_POLYGON, 4, 5, 6, 7, NORM_POLYGON, 0, 1, 5, 4, NORM_POLYGON, 1, 2, 3, 0, 4, 7, 6, 5]
15932         cI = [0, 5, 10, 19]
15933         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15934         m.checkCoherency()
15935         coords2 = [-1., 0.25, 1., 0.25]
15936         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
15937         m_line = MEDCouplingUMesh.New("seg", 1)  
15938         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15939         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15940         m_line2 = m_line.deepCpy()
15941         m2 = m.deepCpy()
15942         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15943         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15944         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15945         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15946         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(-0.5,-0.5),(-0.5,0.5),(0.5,0.5),(0.5,-0.5),(-0.25,-0.25),(-0.25,0.25),(0.25,0.25),(0.25,-0.25),(-1.,0.25),(1.,0.25),(-0.5,0.25),(0.5,0.25)]),1e-12))
15947         self.assertEqual([5,4,5,6,7,5,1,5,10,5,4,0,10,5,5,5,1,2,11,6,5,3,0,4,7,6,11],a.getNodalConnectivity().getValues())
15948         self.assertEqual([0,5,9,14,20,27],a.getNodalConnectivityIndex().getValues())
15949         self.assertEqual([1,8,10,1,10,5,1,5,6,1,6,11,1,11,9],b.getNodalConnectivity().getValues())
15950         self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
15951         self.assertTrue(c.isEqual(DataArrayInt([0,1,1,2,2])))
15952         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
15953         pass
15954
15955     def testSwig2Intersect2DMeshWith1DLine13(self):
15956         """ A square (side length) in a circle intersected by a simple horizontal line """
15957         import math
15958         eps = 1.0e-8
15959         m = MEDCouplingUMesh("boxcircle", 2)
15960         sq2 = math.sqrt(2.0)
15961         soth = (sq2+1.0)/2.0
15962         coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1., 
15963          1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
15964         coo = DataArrayDouble(coo); coo.rearrange(2) 
15965         m.setCoords(coo)
15966         c = [NORM_QPOLYG, 8, 9, 10, 11, 12, 13, 14, 15, NORM_QPOLYG, 3, 1, 10, 9, 2, 17, 13, 16, NORM_QPOLYG, 1, 7, 5, 3, 9, 8, 11, 10, 0, 6, 4, 16, 12, 15, 14, 17]
15967         cI = [0, 9, 18, 35]
15968         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15969         m.checkCoherency()
15970         coords2 = [-2., 1., 2., 1.0]
15971         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
15972         m_line = MEDCouplingUMesh("seg", 1)  
15973         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15974         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15975         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15976         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15977         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15978         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15979         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(2.,0.),(1.4142135623730951,1.4142135623730951),(0.,2.),(-1.4142135623730951,1.4142135623730951),(-2.,0.),(-1.4142135623730951,-1.4142135623730951),(0.,-2.),(1.4142135623730951,-1.4142135623730951),(-1.,-1.),(-1.,1.),(1.,1.),(1.,-1.),(-1.,0.),(0.,1.),(1.,0.),(0.,-1.),(-1.2071067811865475,1.2071067811865475),(1.2071067811865475,1.2071067811865475),(-2.,1.),(2.,1.),(1.7320508075688772,1.),(-1.7320508075688772,1.),(-1.2071067811865475,1.2071067811865475),(-1.3660254037844386,1.),(-1.58670668058247,1.2175228580174415),(0.,-1.),(1.,0.),(1.2071067811865475,1.2071067811865475),(1.5867066805824703,1.2175228580174413),(1.9828897227476205,-0.26105238444010315),(0.,-2.),(-1.9828897227476205,-0.2610523844401032),(-1.3660254037844386,1.),(-1.,0.),(1.5867066805824703,1.2175228580174413),(1.3660254037844386,1.),(1.2071067811865475,1.2071067811865475),(0.,-2.),(-1.9828897227476205,-0.2610523844401032),(-1.3660254037844386,1.),(-1.,0.),(0.,-1.),(1.,0.),(1.3660254037844386,1.),(1.9828897227476205,-0.26105238444010315)]),1e-12))
15980         self.assertEqual([32,8,9,10,11,12,13,14,15,32,3,1,10,9,2,17,13,16,32,3,9,21,22,23,24,32,1,20,10,34,35,36,32,7,5,21,9,8,11,10,20,37,38,39,40,41,42,43,44],a.getNodalConnectivity().getValues())
15981         self.assertEqual([0,9,18,25,32,49],a.getNodalConnectivityIndex().getValues())
15982         self.assertEqual([1,18,21,1,21,9,1,9,10,1,10,20,1,20,19],b.getNodalConnectivity().getValues())
15983         self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
15984         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
15985         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(3,4),(-1,-1)])))
15986         pass
15987
15988     def testSwig2Intersect2DMeshWith1DLine14(self):
15989         """ A circle in a circle intersected by a simple horizontal line, not tangent to the circles """
15990         eps = 1.0e-8
15991         m = MEDCouplingUMesh("boxcircle", 2)
15992         coo = [2.,0.,1.4142135623730951,1.414213562373095,0.,2.,-1.414213562373095,1.4142135623730951,-2.,0.,-1.4142135623730954,-1.414213562373095,0.,-2.,
15993                1.4142135623730947,-1.4142135623730954,1.,0.,0.7071067811865476,0.7071067811865475,0.,1.,-0.7071067811865475,0.7071067811865476,-1.,0.,-0.7071067811865477,-0.7071067811865475,
15994                0.,-1.,0.7071067811865474,-0.7071067811865477,1.060660171779821,-1.0606601717798214,-1.0606601717798214,-1.0606601717798212]
15995         coo = DataArrayDouble(coo); coo.rearrange(2) 
15996         m.setCoords(coo)
15997         c = [NORM_QPOLYG, 15, 13, 11, 9, 14, 12, 10, 8, NORM_QPOLYG, 7, 5, 13, 15, 6, 17, 14, 16, NORM_QPOLYG, 5, 3, 1, 7, 15, 9, 11, 13, 4, 2, 0, 16, 8, 10, 12, 17]
15998         cI = [0, 9, 18, 35] 
15999         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
16000         m.checkCoherency()
16001         coords2 = [-2., 0., 2., 0.]
16002         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
16003         m_line = MEDCouplingUMesh.New("seg", 1)  
16004         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
16005         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
16006         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
16007         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
16008         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
16009         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
16010         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(2.,0.),(1.4142135623730951,1.414213562373095),(0.,2.),(-1.414213562373095,1.4142135623730951),(-2.,0.),(-1.4142135623730954,-1.414213562373095),(0.,-2.),(1.4142135623730947,-1.4142135623730954),(1.,0.),(0.7071067811865476,0.7071067811865475),(0.,1.),(-0.7071067811865475,0.7071067811865476),(-1.,0.),(-0.7071067811865477,-0.7071067811865475),(0.,-1.),(0.7071067811865474,-0.7071067811865477),(1.060660171779821,-1.0606601717798214),(-1.0606601717798214,-1.0606601717798212),(-2.,0.),(2.,0.),(-1.,0.),(1.,0.),(0.,2.),(1.8477590650225735,0.7653668647301795),(1.8477590650225735,-0.7653668647301797),(1.060660171779821,-1.0606601717798214),(0.9238795325112867,-0.38268343236508984),(0.9238795325112867,0.3826834323650897),(0.,1.),(-0.9238795325112867,0.3826834323650896),(-1.5,0.),(-1.8477590650225735,0.7653668647301792),(-1.0606601717798214,-1.0606601717798212),(-1.8477590650225733,-0.7653668647301799),(-1.5,0.),(-0.9238795325112866,-0.38268343236508995),(0.,1.),(-0.9238795325112867,0.3826834323650896),(-1.5,0.),(-1.8477590650225735,0.7653668647301792),(0.,2.),(1.8477590650225735,0.7653668647301795),(1.5,0.),(0.9238795325112867,0.3826834323650897),(1.060660171779821,-1.0606601717798214),(0.9238795325112867,-0.38268343236508984),(1.5,0.),(1.8477590650225735,-0.7653668647301797),(0.,1.),(0.9238795325112867,0.3826834323650897),(0.,0.),(-0.9238795325112867,0.3826834323650896),(0.,-1.),(-0.9238795325112866,-0.38268343236508995),(0.,0.),(0.9238795325112867,-0.38268343236508984)]),1e-12))
16011         self.assertEqual([32,7,5,13,15,6,17,14,16,32,9,11,20,18,3,1,19,21,36,37,38,39,40,41,42,43,32,7,15,21,19,44,45,46,47,32,13,5,18,20,32,33,34,35,32,11,9,21,20,48,49,50,51,32,15,13,20,21,52,53,54,55],a.getNodalConnectivity().getValues())
16012         self.assertEqual([0,9,26,35,44,53,62],a.getNodalConnectivityIndex().getValues())
16013         self.assertEqual([1,18,20,1,20,21,1,21,19],b.getNodalConnectivity().getValues())
16014         self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
16015         self.assertTrue(c.isEqual(DataArrayInt([1,2,2,2,0,0])))
16016         self.assertTrue(d.isEqual(DataArrayInt([(1,3),(4,5),(1,2)])))
16017         pass
16018
16019     def testSwig2Intersect2DMeshWith1DLine15(self):
16020         """ Same as testSwig2Intersect2DMeshWith1DLine13 except that the line is colinear AND splits on of the common edge of 2D mesh."""
16021         import math
16022         eps = 1.0e-8
16023         m = MEDCouplingUMesh("boxcircle", 2)
16024         sq2 = math.sqrt(2.0)
16025         soth = (sq2+1.0)/2.0
16026         coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1., 
16027          1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
16028         coo = DataArrayDouble(coo); coo.rearrange(2) 
16029         m.setCoords(coo)
16030         c = [NORM_QPOLYG, 8, 9, 10, 11, 12, 13, 14, 15, NORM_QPOLYG, 3, 1, 10, 9, 2, 17, 13, 16, NORM_QPOLYG, 1, 7, 5, 3, 9, 8, 11, 10, 0, 6, 4, 16, 12, 15, 14, 17]
16031         cI = [0, 9, 18, 35]
16032         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
16033         m.checkCoherency()
16034         coords2 = [(-2., 1.),(2.,1.),(0.,1)]
16035         connec2, cI2 = [NORM_SEG2, 0, 2, NORM_SEG2, 2, 1], [0,3,6]
16036         m_line = MEDCouplingUMesh("seg", 1)  
16037         m_line.setCoords(DataArrayDouble(coords2))
16038         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
16039         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
16040         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
16041         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
16042         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
16043         self.assertTrue(a.getCoords().isEqual(DataArrayDouble([(2.,0.),(1.4142135623730951,1.4142135623730951),(0.,2.),(-1.4142135623730951,1.4142135623730951),(-2.,0.),(-1.4142135623730951,-1.4142135623730951),(0.,-2.),(1.4142135623730951,-1.4142135623730951),(-1.,-1.),(-1.,1.),(1.,1.),(1.,-1.),(-1.,0.),(0.,1.),(1.,0.),(0.,-1.),(-1.2071067811865475,1.2071067811865475),(1.2071067811865475,1.2071067811865475),(-2.,1.),(2.,1.),(0.,1.),(1.7320508075688776,1.),(-1.7320508075688776,1.),(-0.5,1.),(0.5,1.),(0.5,1.),(-0.5,1.),(-1.2071067811865475,1.2071067811865475),(-1.3660254037844388,1.),(-1.58670668058247,1.2175228580174415),(0.,-1.),(1.,0.),(1.2071067811865475,1.2071067811865475),(1.5867066805824703,1.2175228580174413),(1.9828897227476205,-0.26105238444010315),(0.,-2.),(-1.9828897227476205,-0.2610523844401032),(-1.3660254037844388,1.),(-1.,0.),(1.5867066805824703,1.2175228580174413),(1.3660254037844388,1.),(1.2071067811865475,1.2071067811865475),(0.,-2.),(-1.9828897227476205,-0.2610523844401032),(-1.3660254037844388,1.),(-1.,0.),(0.,-1.),(1.,0.),(1.3660254037844388,1.),(1.9828897227476205,-0.26105238444010315)]),1e-12))
16044         self.assertEqual([32,8,9,20,10,11,12,23,24,14,15,32,3,1,10,20,9,2,17,25,26,16,32,3,9,22,27,28,29,32,1,21,10,39,40,41,32,7,5,22,9,8,11,10,21,42,43,44,45,46,47,48,49],a.getNodalConnectivity().getValues())
16045         self.assertEqual([0,11,22,29,36,53],a.getNodalConnectivityIndex().getValues())
16046         self.assertEqual([1,18,22,1,22,9,1,9,20,1,20,10,1,10,21,1,21,19],b.getNodalConnectivity().getValues())
16047         self.assertEqual([0,3,6,9,12,15,18],b.getNodalConnectivityIndex().getValues())
16048         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
16049         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(1,0),(3,4),(-1,-1)])))
16050         pass
16051
16052     def testOrderConsecutiveCells1D1(self):
16053         """A line in several unconnected pieces:"""
16054         m2 = MEDCouplingUMesh.New("bla", 1)
16055         c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
16056                                NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
16057                                NORM_SEG2,11,12,NORM_SEG2,12,13,
16058                                NORM_SEG2,14,15])
16059         cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
16060         coords2 = DataArrayDouble([float(i) for i in range(32)], 16,2)
16061         m2.setCoords(coords2);
16062         m2.setConnectivity(c, cI);
16063         m2.checkCoherency2(1.0e-8);
16064       
16065         # Shuffle a bit :-)
16066         m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
16067         res = m2.orderConsecutiveCells1D()
16068         expRes = [0,3,6,8,1,4,2,7,5]
16069         self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
16070         self.assertEqual(expRes, res.getValues())
16071       
16072         # A closed line (should also work)
16073         m3 = MEDCouplingUMesh.New("bla3", 1)
16074         conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
16075         coord3 = coords2[0:5]
16076         c.reAlloc(10)
16077         cI.reAlloc(4)
16078         
16079         m3.setCoords(coord3)
16080         m3.setConnectivity(conn3A, cI)
16081         m3.checkCoherency2(1.0e-8)
16082         res2 = m3.orderConsecutiveCells1D()
16083         expRes2 = [0,1,2]
16084         self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
16085         self.assertEqual(expRes2, res2.getValues())
16086         pass
16087
16088     def testDADApplyFuncOnThis1(self):
16089         d=DataArrayDouble(5) ; d.iota(0.)
16090         d.applyFuncOnThis("2*x+1")
16091         self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
16092         d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
16093         d.applyFuncOnThis("2*x+1")
16094         self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
16095         d.applyFuncOnThis("1+2*3")
16096         self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
16097         pass
16098
16099     def testSwig2PointSetComputeFetchedNodeIds1(self):
16100         arr=DataArrayDouble(6) ; arr.iota()
16101         m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
16102         m=m.buildUnstructured()
16103         m0=m[[0,1,5,6,25,26,30,31,124]]
16104         ref=DataArrayInt([0,1,2,6,7,8,12,13,14,36,37,38,42,43,44,48,49,50,72,73,74,78,79,80,84,85,86,172,173,178,179,208,209,214,215])
16105         self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
16106         self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
16107         self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
16108         m0.convertAllToPoly()
16109         self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
16110         self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
16111         pass
16112
16113     def testSwig2PartDefinition1(self):
16114         pd=PartDefinition.New(5,22,3)
16115         self.assertTrue(isinstance(pd,SlicePartDefinition))
16116         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
16117         self.assertEqual(pd.getNumberOfElems(),6)
16118         self.assertEqual(pd.getEffectiveStop(),23)
16119         pd=PartDefinition.New(5,23,3)
16120         self.assertTrue(isinstance(pd,SlicePartDefinition))
16121         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
16122         self.assertEqual(pd.getNumberOfElems(),6)
16123         self.assertEqual(pd.getEffectiveStop(),23)
16124         self.assertEqual(pd.getSlice(),slice(5,23,3))
16125         pd=PartDefinition.New(5,22,1)
16126         self.assertTrue(isinstance(pd,SlicePartDefinition))
16127         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
16128         self.assertEqual(pd.getNumberOfElems(),17)
16129         self.assertEqual(pd.getEffectiveStop(),22)
16130         pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
16131         self.assertTrue(isinstance(pd,SlicePartDefinition))
16132         self.assertEqual(pd.getNumberOfElems(),8)
16133         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
16134         self.assertEqual(pd.getEffectiveStop(),29)
16135         pd=SlicePartDefinition(5,22,1)
16136         self.assertTrue(isinstance(pd,SlicePartDefinition))
16137         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
16138         self.assertEqual(pd.getNumberOfElems(),17)
16139         self.assertEqual(pd.getEffectiveStop(),22)
16140         d=DataArrayInt([2,4,5,6,10])
16141         pd=PartDefinition.New(d)
16142         self.assertTrue(isinstance(pd,DataArrayPartDefinition))
16143         self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
16144         pd=DataArrayPartDefinition(d)
16145         self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
16146         pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
16147         self.assertTrue(isinstance(pd,DataArrayPartDefinition))
16148         self.assertEqual(pd.getNumberOfElems(),8)
16149         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
16150         pass
16151
16152     def testSwig2SortEachPairToMakeALinkedList1(self):
16153         d=DataArrayInt([(50,49),(50,51),(51,52),(53,52),(53,54),(55,54),(55,56),(56,57),(58,57),(58,59),(60,59),(60,61),(61,62),(63,62),(63,64),(65,64),(65,66),(66,67)])
16154         d.sortEachPairToMakeALinkedList()
16155         self.assertTrue(d.isEqual(DataArrayInt([(49,50),(50,51),(51,52),(52,53),(53,54),(54,55),(55,56),(56,57),(57,58),(58,59),(59,60),(60,61),(61,62),(62,63),(63,64),(64,65),(65,66),(66,67)])))
16156         pass
16157
16158     def testSwig2DAIIsRange(self):
16159         d=DataArrayInt([2,6,10])
16160         a,b=d.isRange()
16161         self.assertTrue(a)
16162         self.assertEqual(b,slice(2,11,4))
16163         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16164         #
16165         d=DataArrayInt([2,7,10])
16166         a,b=d.isRange()
16167         self.assertTrue(not a)
16168         self.assertTrue(b is None)
16169         #
16170         d=DataArrayInt([22,17,12])
16171         a,b=d.isRange()
16172         self.assertTrue(a)
16173         self.assertEqual(b,slice(22,11,-5))
16174         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16175         #
16176         d=DataArrayInt([22,16,12])
16177         a,b=d.isRange()
16178         self.assertTrue(not a)
16179         self.assertTrue(b is None)
16180         #
16181         d=DataArrayInt([33])
16182         a,b=d.isRange()
16183         self.assertTrue(a)
16184         self.assertEqual(b,slice(33,34,1))
16185         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16186         #
16187         d=DataArrayInt([])
16188         a,b=d.isRange()
16189         self.assertTrue(a)
16190         self.assertEqual(b,slice(0,0,1))
16191         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16192         #
16193         d=DataArrayInt([2,6,10,2])
16194         a,b=d.isRange()
16195         self.assertTrue(not a)
16196         self.assertTrue(b is None)
16197         pass
16198
16199     def testSwig2PartDefinitionComposeWith1(self):
16200         f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
16201         g=PartDefinition.New(4,14,1)
16202         h=f.composeWith(g)
16203         self.assertTrue(isinstance(h,DataArrayPartDefinition))
16204         self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
16205         f2=f.tryToSimplify()
16206         g2=g.tryToSimplify()
16207         self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
16208         self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
16209         p=PartDefinition.New(DataArrayInt([2,6,10]))
16210         p2=p.tryToSimplify()
16211         self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
16212         self.assertTrue(isinstance(p2,SlicePartDefinition))
16213         self.assertEqual(p2.getSlice(),slice(2,11,4))
16214         pass
16215
16216     def testSwig2DAIGetIdsStrictlyNegative1(self):
16217         d=DataArrayInt([4,-5,-1,0,3,99,-7])
16218         self.assertTrue(d.getIdsStrictlyNegative().isEqual(DataArrayInt([1,2,6])))
16219         pass
16220
16221     def testSwig2DAIReplaceOneValByInThis1(self):
16222         d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
16223         d.replaceOneValByInThis(-5,900)
16224         self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
16225         pass
16226
16227     def testSwig2DAIGetMinMaxValues1(self):
16228         d=DataArrayInt([4,-5,-1,0,3,99,-7])
16229         a,b=d.getMinMaxValues()
16230         self.assertEqual(a,-7)
16231         self.assertEqual(b,99)
16232         pass
16233
16234     def testSwig2DAIBuildUniqueNotSorted1(self):
16235         d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
16236         self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
16237         pass
16238
16239     def testSwig2UMeshChangeOrientationOfCells1(self):
16240         """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
16241         m=MEDCouplingUMesh("mesh",1)
16242         c=DataArrayInt([NORM_SEG2,4,5,NORM_SEG2,10,8,NORM_SEG3,20,7,33,NORM_SEG3,13,15,12,NORM_SEG2,3,2,NORM_SEG4,5,6,8,10,NORM_SEG4,34,33,3,2])
16243         cI=DataArrayInt([0,3,6,10,14,17,22,27])
16244         m.setConnectivity(c,cI)
16245         m.changeOrientationOfCells()
16246         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_SEG2,5,4,NORM_SEG2,8,10,NORM_SEG3,7,20,33,NORM_SEG3,15,13,12,NORM_SEG2,2,3,NORM_SEG4,6,5,10,8,NORM_SEG4,33,34,2,3])))
16247         self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
16248         # testing 2D cells
16249         m=MEDCouplingUMesh("mesh",2)
16250         c=DataArrayInt([NORM_TRI3,0,1,2,NORM_QUAD4,3,4,5,6,NORM_POLYGON,7,8,9,10,11,NORM_TRI6,12,13,14,15,16,17,NORM_QUAD8,18,19,20,21,22,23,24,25,NORM_QPOLYG,26,27,28,29,30,31,32,33,34,35])
16251         cI=DataArrayInt([0,4,9,15,22,31,42])
16252         m.setConnectivity(c,cI)
16253         m.changeOrientationOfCells()
16254         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_TRI3,0,2,1,NORM_QUAD4,3,6,5,4,NORM_POLYGON,7,11,10,9,8,NORM_TRI6,12,14,13,17,16,15,NORM_QUAD8,18,21,20,19,25,24,23,22,NORM_QPOLYG,26,30,29,28,27,35,34,33,32,31])))
16255         self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
16256         pass
16257     pass
16258
16259 if __name__ == '__main__':
16260     unittest.main()