Salome HOME
MEDCouplingUMesh.buildExtrudedMesh feature changed. No more zipCoords performed.
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingBasicsTest.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2015  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         m1.zipCoords()
783         m3=m1.buildExtrudedMesh(m2,0);
784         expected1=[1,3,2,0,6,5,7,10,11,8,12,9,14,13,4]
785         rexpected1=[3, 0, 2, 1, 14, 5, 4, 6, 9, 11, 7, 8, 10, 13, 12]
786         m3.renumberCells(expected1,False);
787         m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
788         self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(0));
789         self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(1));
790         self.assertEqual(NORM_POLYHED,m4.getTypeOfCell(2));
791         self.assertEqual(NORM_PENTA6,m4.getTypeOfCell(7));
792         f=m4.getMeasureField(True);
793         arr=f.getArray();
794         self.assertEqual(15,arr.getNumberOfTuples());
795         self.assertEqual(1,arr.getNumberOfComponents());
796         arrPtr=arr.getValues();
797         expected2=[0.075,0.0375,0.0375,0.075,0.075,
798                    0.1125,0.05625,0.05625,0.1125,0.1125,
799                    0.0625,0.03125,0.03125,0.0625,0.0625]
800         for i in xrange(15):
801             self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],16);
802             pass
803         m5=m4.build3DUnstructuredMesh();
804         m5.zipCoords()
805         self.assertTrue(m5.isEqual(m3,1e-12));
806         f=m5.getMeasureField(True);
807         f.setMesh(m4)
808         self.assertTrue(isinstance(f.getMesh(),MEDCouplingExtrudedMesh))
809         arr=f.getArray();
810         arrPtr=arr.getValues();
811         for i in xrange(15):
812             self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],15);
813             pass
814         pass
815
816     def testFindCommonNodes(self):
817         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
818         comm,commI=targetMesh.findCommonNodes(1e-10,-1);
819         self.assertEqual(1,commI.getNumberOfTuples());
820         self.assertEqual(0,comm.getNumberOfTuples());
821         o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
822         self.assertEqual(27,newNbOfNodes);
823         self.assertEqual(27,o2n.getNumberOfTuples());
824         o2nExp1=range(27)
825         self.assertEqual(o2nExp1,list(o2n.getValues()));
826         #
827         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
828         self.assertEqual(31,targetMesh.getNumberOfNodes());
829         comm,commI=targetMesh.findCommonNodes(1e-10);# testing default parameter
830         self.assertEqual(3,commI.getNumberOfTuples());
831         self.assertEqual(6,comm.getNumberOfTuples());
832         commExpected=[1,27,28,29,23,30]
833         commIExpected=[0,4,6]
834         self.assertEqual(commExpected,list(comm.getValues()));
835         self.assertEqual(commIExpected,list(commI.getValues()));
836         o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
837         self.assertEqual(31,o2n.getNumberOfTuples());
838         self.assertEqual(27,newNbOfNodes);
839         o2nExp2=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
840                  21,22,23,24,25,26,1,1,1,23]
841         self.assertEqual(o2nExp2,list(o2n.getValues()));
842         #
843         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
844         time=targetMesh.getTimeOfThis();
845         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
846         targetMesh.updateTime();
847         self.assertEqual(time,targetMesh.getTimeOfThis());
848         self.assertTrue(not areNodesMerged);
849         #
850         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
851         time=targetMesh.getTimeOfThis();
852         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
853         targetMesh.updateTime();
854         self.assertTrue(time!=targetMesh.getTimeOfThis());
855         self.assertTrue(areNodesMerged);
856         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,
857                  18,4,5,8,7,13,14,17,16,
858                  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,
859                  18,13,14,17,16,22,23,26,25]
860         self.assertEqual(72,targetMesh.getNodalConnectivity().getNumberOfTuples());
861         self.assertEqual(connExp,list(targetMesh.getNodalConnectivity().getValues()));
862         self.assertEqual(27,targetMesh.getCoords().getNumberOfTuples());
863         coordsExp=[ 0., 0., 0., 50., 0., 0. , 200., 0., 0.  , 0., 50., 0., 50., 50., 0. ,
864                     200., 50., 0.,   0., 200., 0., 50., 200., 0. , 200., 200., 0. ,
865                     0., 0., 50., 50., 0., 50. , 200., 0., 50.  , 0., 50., 50., 50.,
866                     50., 50. , 200., 50., 50.,   0., 200., 50., 50., 200., 50. ,
867                     200., 200., 50. , 0., 0., 200., 50., 0., 200. , 200., 0., 200.  
868                     , 0., 50., 200., 50., 50., 200. , 200., 50., 200., 
869                     0., 200., 200., 50., 200., 200. , 200., 200., 200. ]
870         self.assertEqual(coordsExp,targetMesh.getCoords().getValues());
871         # 2D
872         targetMesh=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
873         self.assertEqual(18,targetMesh.getNumberOfNodes());
874         time=targetMesh.getTimeOfThis();
875         o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
876         self.assertTrue(time!=targetMesh.getTimeOfThis());
877         self.assertTrue(areNodesMerged);
878         self.assertEqual(9,targetMesh.getNumberOfNodes());
879         connExp2=[4,0,4,3,1, 3,1,3,2, 3,3,5,2, 4,4,6,7,3, 4,7,8,5,3]
880         self.assertEqual(23,targetMesh.getNodalConnectivity().getNumberOfTuples());
881         self.assertEqual(connExp2,list(targetMesh.getNodalConnectivity().getValues()));
882         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]
883         self.assertEqual(9,targetMesh.getCoords().getNumberOfTuples());
884         self.assertEqual(coordsExp2,targetMesh.getCoords().getValues());
885         pass
886
887     def testCheckButterflyCells(self):
888         sourceMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
889         cells=sourceMesh.checkButterflyCells();
890         self.assertEqual(0,len(cells));
891         conn=sourceMesh.getNodalConnectivity()
892         tmp=conn.getIJ(15,0)
893         conn.setIJ(15,0,conn.getIJ(16,0))
894         conn.setIJ(16,0,tmp)
895         cells=sourceMesh.checkButterflyCells();
896         self.assertEqual(1,len(cells));
897         self.assertEqual([3],cells.getValues());
898         tmp=conn.getIJ(15,0)
899         conn.setIJ(15,0,conn.getIJ(16,0))
900         conn.setIJ(16,0,tmp)
901         cells=sourceMesh.checkButterflyCells();
902         self.assertEqual(0,len(cells));
903         # 3D surf
904         sourceMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
905         cells=sourceMesh.checkButterflyCells();
906         self.assertEqual(0,len(cells));
907         conn=sourceMesh.getNodalConnectivity()
908         tmp=conn.getIJ(15,0)
909         conn.setIJ(15,0,conn.getIJ(16,0))
910         conn.setIJ(16,0,tmp)
911         cells=sourceMesh.checkButterflyCells();
912         self.assertEqual(1,len(cells));
913         self.assertEqual([3],cells.getValues());
914         tmp=conn.getIJ(15,0)
915         conn.setIJ(15,0,conn.getIJ(16,0))
916         conn.setIJ(16,0,tmp)
917         cells=sourceMesh.checkButterflyCells();
918         self.assertEqual(0,len(cells));
919         pass
920
921     def testMergeMesh1(self):
922         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
923         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
924         vec=[1.,0.]
925         m2.translate(vec);
926         m3=m1.mergeMyselfWith(m2);
927         self.assertTrue(isinstance(m3,MEDCouplingUMesh));
928         m3.checkCoherency();
929         m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
930         self.assertTrue(m3.isEqual(m4,1.e-12));
931         da,isMerged,newNbOfNodes=m3.mergeNodes(1.e-12);
932         self.assertEqual(11,m3.getNumberOfNodes());
933         self.assertTrue(isMerged);
934         pass
935
936     def testMergeMeshOnSameCoords1(self):
937         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
938         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
939         cells=range(5);
940         m2.convertToPolyTypes(cells);
941         m1.tryToShareSameCoords(m2,1e-12);
942         m3=MEDCouplingDataForTest.build2DTargetMesh_1();
943         m3.tryToShareSameCoords(m2,1e-12);
944         meshes=[m1,m2,m3]
945         m4=MEDCouplingUMesh.MergeUMeshesOnSameCoords(meshes);
946         m4.checkCoherency();
947         self.assertEqual(15,m4.getNumberOfCells());
948         cells1=[0,1,2,3,4]
949         m1_1=m4.buildPartOfMySelf(cells1,True);
950         m1_1.setName(m1.getName());
951         self.assertTrue(m1.isEqual(m1_1,1e-12));
952         cells2=[5,6,7,8,9]
953         m2_1=m4.buildPartOfMySelf(cells2,True);
954         m2_1.setName(m2.getName());
955         self.assertTrue(m2.isEqual(m2_1,1e-12));
956         cells3=[10,11,12,13,14]
957         m3_1=m4.buildPartOfMySelf(cells3,True);
958         m3_1.setName(m3.getName());
959         self.assertTrue(m3.isEqual(m3_1,1e-12));
960         pass
961
962     def testMergeField1(self):
963         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
964         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
965         vec=[1.,0.]
966         m2.translate(vec);
967         f1=m1.getMeasureField(True);
968         f2=m2.getMeasureField(True);
969         f3=MEDCouplingFieldDouble.MergeFields(f1,f2);
970         f3.checkCoherency();
971         m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
972         self.assertTrue(f3.getMesh().isEqual(m4,1.e-12));
973         name=f3.getName();
974         self.assertEqual(name,"MeasureOfMesh_");
975         self.assertEqual(f3.getTypeOfField(),ON_CELLS);
976         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
977         self.assertEqual(1,f3.getNumberOfComponents());
978         self.assertEqual(7,f3.getNumberOfTuples());
979         values=[0.25,0.125,0.125,0.25,0.25,0.5,0.5]
980         tmp=f3.getArray().getValues();
981         self.assertEqual(len(values),len(tmp))
982         for i in xrange(7):
983             self.assertTrue(abs(values[i]-tmp[i])<1e-12)
984             pass
985         pass
986
987     def testFillFromAnalytic(self):
988         m=MEDCouplingDataForTest.build2DTargetMesh_1();
989         m.setTime(3.4,5,6); m.setTimeUnit("us");
990         f1=m.fillFromAnalytic(ON_CELLS,1,"x+y");
991         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
992         self.assertEqual("us",f1.getTimeUnit())
993         f1.checkCoherency();                    
994         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
995         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
996         self.assertEqual(1,f1.getNumberOfComponents());
997         self.assertEqual(5,f1.getNumberOfTuples());
998         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
999         tmp=f1.getArray().getValues();
1000         self.assertEqual(len(values1),len(tmp))
1001         for i in xrange(len(tmp)):
1002             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1003             pass
1004         #
1005         f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1006         f1.checkCoherency();
1007         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1008         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1009         self.assertEqual(1,f1.getNumberOfComponents());
1010         self.assertEqual(9,f1.getNumberOfTuples());
1011         values2=[-0.6,-0.1,0.4,-0.1,0.4,0.9,0.4,0.9,1.4]
1012         tmp=f1.getArray().getValues();
1013         self.assertEqual(len(values2),len(tmp))
1014         for i in xrange(len(tmp)):
1015             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1016             pass
1017         #
1018         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1019         f1.checkCoherency();
1020         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1021         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1022         self.assertEqual(2,f1.getNumberOfComponents());
1023         self.assertEqual(9,f1.getNumberOfTuples());
1024         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]
1025         tmp=f1.getArray().getValues();
1026         self.assertEqual(len(values3),len(tmp))
1027         for i in xrange(len(tmp)):
1028             self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1029             pass
1030         values4=f1.accumulate();
1031         self.assertEqual(2,len(values4))
1032         self.assertTrue(abs(3.6-values4[0])<1.e-12);
1033         self.assertTrue(abs(7.2-values4[1])<1.e-12);
1034         values4=f1.integral(True);
1035         self.assertEqual(2,len(values4))
1036         self.assertTrue(abs(0.5-values4[0])<1.e-12);
1037         self.assertTrue(abs(1.-values4[1])<1.e-12);
1038         #
1039         self.assertRaises(InterpKernelException,m.fillFromAnalytic,ON_NODES,1,"1./(x-0.2)");
1040         pass
1041
1042     def testFillFromAnalytic2(self):
1043         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1044         f1=m.fillFromAnalytic(ON_CELLS,1,"y+x");
1045         f1.checkCoherency();
1046         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
1047         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1048         self.assertEqual(1,f1.getNumberOfComponents());
1049         self.assertEqual(5,f1.getNumberOfTuples());
1050         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
1051         tmp=f1.getArray().getValues();
1052         self.assertEqual(len(values1),len(tmp))
1053         for i in xrange(len(values1)):
1054             self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
1055             pass
1056         #
1057         f1=m.fillFromAnalytic(ON_NODES,1,"y+2*x");
1058         f1.checkCoherency();
1059         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1060         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1061         self.assertEqual(1,f1.getNumberOfComponents());
1062         self.assertEqual(9,f1.getNumberOfTuples());
1063         values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1064         tmp=f1.getArray().getValues();
1065         self.assertEqual(len(values2),len(tmp))
1066         for i in xrange(len(values2)):
1067             self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
1068             pass
1069         f1=m.fillFromAnalytic(ON_NODES,1,"2.*x+y");
1070         f1.checkCoherency();
1071         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1072         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1073         self.assertEqual(1,f1.getNumberOfComponents());
1074         self.assertEqual(9,f1.getNumberOfTuples());
1075         tmp=f1.getArray().getValues();
1076         values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1077         self.assertEqual(len(values2Bis),len(tmp))
1078         for i in xrange(len(values2Bis)):
1079             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
1080             pass
1081         #
1082         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1083         f1.checkCoherency();
1084         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1085         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1086         self.assertEqual(2,f1.getNumberOfComponents());
1087         self.assertEqual(9,f1.getNumberOfTuples());
1088         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]
1089         tmp=f1.getArray().getValues();
1090         self.assertEqual(len(values3),len(tmp))
1091         for i in xrange(len(values3)):
1092             self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
1093             pass
1094         values4=f1.accumulate();
1095         self.assertTrue(abs(3.6-values4[0])<1.e-12);
1096         self.assertTrue(abs(7.2-values4[1])<1.e-12);
1097         values4=f1.integral(True);
1098         self.assertTrue(abs(0.5-values4[0])<1.e-12);
1099         self.assertTrue(abs(1.-values4[1])<1.e-12);
1100         pass
1101
1102     def testApplyFunc(self):
1103         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1104         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1105         f1.checkCoherency();
1106         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1107         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1108         self.assertEqual(2,f1.getNumberOfComponents());
1109         self.assertEqual(9,f1.getNumberOfTuples());
1110         f1.applyFunc(1,"x+y");
1111         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1112         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1113         self.assertEqual(1,f1.getNumberOfComponents());
1114         self.assertEqual(9,f1.getNumberOfTuples());
1115         values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1116         tmp=f1.getArray().getValues();
1117         self.assertEqual(len(values1),len(tmp))
1118         for i in xrange(len(tmp)):
1119             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1120             pass
1121         pass
1122
1123     def testApplyFunc2(self):
1124         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1125         f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1126         f1.checkCoherency();
1127         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1128         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1129         self.assertEqual(2,f1.getNumberOfComponents());
1130         self.assertEqual(9,f1.getNumberOfTuples());
1131         #
1132         f2=f1.clone(True);
1133         self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a+b+c+d");
1134         self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a/0");
1135         self.assertRaises(InterpKernelException, f2.applyFunc, "a/0");
1136         f2.applyFunc("abs(u)^2.4+2*u");
1137         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1138         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1139         self.assertEqual(2,f1.getNumberOfComponents());
1140         self.assertEqual(9,f1.getNumberOfTuples());
1141         values2=[-0.9065304805418678, -0.85105859001709905, -0.19601892829446504, -0.37898777756476987,
1142                  0.91090317490482353, 2.1853504664669781, -0.19601892829446504, -0.37898777756476987,
1143                  0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1144                  0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1145                  5.0423700574830965, 17.435300118916864]
1146         tmp=f2.getArray().getValues();
1147         self.assertEqual(len(tmp),len(values2))
1148         for i in xrange(len(tmp)):
1149             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1150             pass
1151         #
1152         f1.applyFunc(1,"x+y");
1153         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1154         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1155         self.assertEqual(1,f1.getNumberOfComponents());
1156         self.assertEqual(9,f1.getNumberOfTuples());
1157         values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1158         tmp=f1.getArray().getValues();
1159         self.assertEqual(len(tmp),len(values1))
1160         for i in xrange(len(tmp)):
1161             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1162             pass
1163         pass
1164
1165     def testOperationsOnFields(self):
1166         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1167         f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1168         f2=m.fillFromAnalytic(ON_NODES,1,"x+y");
1169         f1.checkCoherency();
1170         f2.checkCoherency();
1171         f3=f1+f2;
1172         f3.checkCoherency();
1173         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1174         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1175         values1=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1176         tmp=f3.getArray().getValues();
1177         self.assertEqual(len(values1),len(tmp))
1178         for i in xrange(len(tmp)):
1179             self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1180             pass
1181         #
1182         f3=f1*f2;
1183         f3.checkCoherency();
1184         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1185         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1186         values2=[0.36,0.01,0.16,0.01,0.16,0.81,0.16,0.81,1.96]
1187         tmp=f3.getArray().getValues();
1188         self.assertEqual(len(values2),len(tmp))
1189         for i in xrange(len(tmp)):
1190             self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1191             pass
1192         #
1193         f3=f1+f2;
1194         f4=f1-f3;
1195         f4.checkCoherency();
1196         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1197         self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1198         values3=[0.6,0.1,-0.4,0.1,-0.4,-0.9,-0.4,-0.9,-1.4]
1199         tmp=f4.getArray().getValues();
1200         self.assertEqual(len(values3),len(tmp))
1201         for i in xrange(len(tmp)):
1202             self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1203             pass
1204         #
1205         f3=f1+f2;
1206         f4=f3/f2;
1207         f4.checkCoherency();
1208         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1209         self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1210         tmp=f4.getArray().getValues();
1211         for i in xrange(len(tmp)):
1212             self.assertTrue(abs(tmp[i]-2.)<1.e-12)
1213             pass
1214         #
1215         f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
1216         f4.checkCoherency();
1217         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1218         self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1219         self.assertRaises(InterpKernelException,f1.__add__,f4);
1220         f5=f4.buildNewTimeReprFromThis(ONE_TIME,False);
1221         self.assertEqual(f5.getTypeOfField(),ON_NODES);
1222         self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1223         f3=f1+f5;
1224         tmp=f3.getArray().getValues();
1225         values4=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1226         self.assertEqual(len(values3),len(tmp))
1227         for i in xrange(len(tmp)):
1228             self.assertTrue(abs(tmp[i]-values4[i])<1.e-12)
1229             pass
1230         #
1231         f4=f2.buildNewTimeReprFromThis(NO_TIME,True);
1232         f4.checkCoherency();
1233         self.assertEqual(f4.getTypeOfField(),ON_NODES);
1234         self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1235         self.assertRaises(InterpKernelException,f1.__add__,f4);
1236         f5=f4.buildNewTimeReprFromThis(ONE_TIME,True);
1237         self.assertEqual(f5.getTypeOfField(),ON_NODES);
1238         self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1239         f3=f1+f5;
1240         tmp=f3.getArray().getValues();
1241         values5=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1242         self.assertEqual(len(values5),len(tmp))
1243         for i in xrange(len(tmp)):
1244             self.assertTrue(abs(tmp[i]-values5[i])<1.e-12)
1245             pass
1246         pass
1247
1248     def testOperationsOnFields2(self):
1249         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1250         m.setTime(3.4,5,6); m.setTimeUnit("us");
1251         f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1252         f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1253         f3=f1/f2;
1254         f3.checkCoherency();
1255         self.assertEqual(f3.getTypeOfField(),ON_NODES);
1256         self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1257         expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1258                    0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1259                    0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1260         self.assertEqual(1,f3.getNumberOfComponents());
1261         self.assertEqual(9,f3.getNumberOfTuples());
1262         val=f3.getArray().getValues();
1263         for i in xrange(9):
1264             self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1265         #
1266         f1=m.buildOrthogonalField();
1267         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
1268         self.assertEqual("us",f1.getTimeUnit())
1269         f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1270         f3=f1*f2;
1271         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]
1272         val=f3.getArray().getValues();
1273         for i in xrange(15):
1274             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1275             pass
1276         #
1277         f3=f2*f1;
1278         val=f3.getArray().getValues();
1279         for i in xrange(15):
1280             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1281             pass
1282         pass
1283
1284     def testOperationsOnFields3(self):
1285         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1286         f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1287         f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1288         f1/=f2
1289         f1.checkCoherency();
1290         self.assertEqual(f1.getTypeOfField(),ON_NODES);
1291         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1292         expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1293                    0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1294                    0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1295         self.assertEqual(1,f1.getNumberOfComponents());
1296         self.assertEqual(9,f1.getNumberOfTuples());
1297         val=f1.getArray().getValues();
1298         for i in xrange(9):
1299             self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1300             pass
1301         #
1302         f1=m.buildOrthogonalField();
1303         f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1304         f1*=f2
1305         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]
1306         val=f1.getArray().getValues();
1307         for i in xrange(15):
1308             self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1309             pass
1310         #
1311         f1=m.buildOrthogonalField();
1312         # to avoid valgrind leaks
1313         # self.assertRaises(InterpKernelException,f2.__imul__,f1);
1314         pass
1315
1316     def testOperationsOnFields4(self):
1317         m=MEDCouplingDataForTest.build2DTargetMesh_1();
1318         nbOfCells=m.getNumberOfCells();
1319         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
1320         f1.setMesh(m);
1321         array=DataArrayDouble.New();
1322         f1.setArray(array);
1323         self.assertRaises(InterpKernelException,f1.setEndArray,array);
1324         self.assertRaises(InterpKernelException,f1.getEndArray);
1325         arr1=[0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.]
1326         arr2=[5.,15.,25.,6.,16.,26.,7.,17.,27.,8.,18.,28.,9.,19.,29.]
1327         array.setValues(arr1,nbOfCells,3);
1328         f1.setStartTime(2.,0,0);
1329         f1.setEndTime(3.,0,0);
1330         f1.checkCoherency();
1331         pos=[0.3,-0.2]
1332         res=f1.getValueOn(pos);
1333         self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1334         self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1335         self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1336         res=None
1337         res=f1.getValueOn(pos,2.2);
1338         self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1339         self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1340         self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1341         res=None
1342         self.assertRaises(InterpKernelException,f1.getValueOn,pos,3.2)
1343         f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
1344         f2.setMesh(m);
1345         f2.setArray(f1.getArray());
1346         f2.setStartTime(2.,3,0);
1347         f2.setEndTime(4.,13,0);
1348         self.assertRaises(InterpKernelException,f2.checkCoherency)
1349         array2=DataArrayDouble.New();
1350         array2.setValues(arr2,nbOfCells,3);
1351         f2.setEndArray(array2);
1352         f2.checkCoherency();
1353         #
1354         res=None
1355         res=f2.getValueOn(pos,3.21);
1356         self.assertTrue(abs(4.025-res[0])<1.e-12);
1357         self.assertTrue(abs(14.025-res[1])<1.e-12);
1358         self.assertTrue(abs(24.025-res[2])<1.e-12);
1359         f3=f2.clone(True);
1360         self.assertTrue(f2.isEqual(f3,1e-12,1e-12));
1361         f3.getEndArray().setIJ(0,0,5.001);
1362         self.assertTrue(not f2.isEqual(f3,1e-12,1e-12));
1363         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1364         f3.setStartTime(2.1,3,0);
1365         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1366         f3.setStartTime(2.,3,0);
1367         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1368         f3.setStartTime(2.,4,0);
1369         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1370         f3.setStartTime(2.,3,1);
1371         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1372         f3.setStartTime(2.,3,0);
1373         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1374         f3.setEndTime(4.1,13,0);
1375         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1376         f3.setEndTime(4.,13,0);
1377         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1378         f3.setEndTime(4.,14,0);
1379         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1380         f3.setEndTime(4.,13,1);
1381         self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1382         f3.setEndTime(4.,13,0);
1383         self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1384         f4=f2+f2
1385         res=None
1386         res=f4.getValueOn(pos,3.21);
1387         self.assertTrue(abs(8.05-res[0])<1.e-12);
1388         self.assertTrue(abs(28.05-res[1])<1.e-12);
1389         self.assertTrue(abs(48.05-res[2])<1.e-12);
1390         f4+=f2;
1391         res=None
1392         res=f4.getValueOn(pos,3.21);
1393         self.assertTrue(abs(12.075-res[0])<1.e-12);
1394         self.assertTrue(abs(42.075-res[1])<1.e-12);
1395         self.assertTrue(abs(72.075-res[2])<1.e-12);
1396         pass
1397     
1398     def testMergeNodesOnField(self):
1399         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1400         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1401         f1.mergeNodes(1e-10);
1402         #
1403         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1404         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1405         tmp=f1.getArray()
1406         tmp.setIJ(0,0,1000.);
1407         f1.mergeNodes(1e-10);
1408         #
1409         targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1410         f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1411         tmp=f1.getArray()
1412         tmp.setIJ(1,0,1000.);
1413         self.assertRaises(InterpKernelException,f1.mergeNodes,1.e-10)
1414         pass
1415
1416     def testCheckConsecutiveCellTypes(self):
1417         sourceMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1418         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1419         self.assertTrue(sourceMesh.checkConsecutiveCellTypes());
1420         order1=[NORM_TRI3,NORM_QUAD4]
1421         order2=[NORM_QUAD4,NORM_TRI3]
1422         self.assertTrue(not targetMesh.checkConsecutiveCellTypes());
1423         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1424         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1425         da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order1);
1426         self.assertEqual(5,da.getNumberOfTuples());
1427         self.assertEqual(1,da.getNumberOfComponents());
1428         expected1=[2,0,1,3,4]
1429         self.assertTrue(expected1==list(da.getValues()));
1430         da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order2);
1431         self.assertEqual(5,da.getNumberOfTuples());
1432         self.assertEqual(1,da.getNumberOfComponents());
1433         expected2=[0,3,4,1,2]
1434         self.assertTrue(expected2==list(da.getValues()));
1435         renumber1=[4,0,1,2,3]
1436         targetMesh.renumberCells(renumber1,False);
1437         self.assertTrue(targetMesh.checkConsecutiveCellTypes());
1438         self.assertTrue(targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1439         self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1440         pass
1441
1442     def testRearrange2ConsecutiveCellTypes(self):
1443         m1_1=MEDCouplingDataForTest.build2DSourceMesh_1();
1444         m2_1=MEDCouplingDataForTest.build2DTargetMesh_1();
1445         arr1=m1_1.rearrange2ConsecutiveCellTypes();
1446         m1_2=MEDCouplingDataForTest.build2DSourceMesh_1();
1447         self.assertTrue(m1_2.isEqual(m1_1,1e-12));
1448         expected1=[0,1]
1449         self.assertEqual(2,arr1.getNumberOfTuples());
1450         self.assertEqual(1,arr1.getNumberOfComponents());
1451         self.assertEqual(expected1,arr1.getValues());
1452         expected2=[0,3,4,1,2]
1453         arr1=m2_1.rearrange2ConsecutiveCellTypes();
1454         self.assertEqual(5,arr1.getNumberOfTuples());
1455         self.assertEqual(1,arr1.getNumberOfComponents());
1456         self.assertEqual(expected2,list(arr1.getValues()));
1457         m2_2=MEDCouplingDataForTest.build2DTargetMesh_1();
1458         self.assertEqual(5,arr1.getNumberOfTuples());
1459         self.assertEqual(1,arr1.getNumberOfComponents());
1460         self.assertEqual(expected2,list(arr1.getValues()));
1461         self.assertTrue(not m2_2.isEqual(m2_1,1e-12));
1462         m2_2.renumberCells(expected2,False);
1463         self.assertTrue(m2_2.isEqual(m2_1,1e-12));
1464         pass
1465
1466     def testSplitByType(self):
1467         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1468         v=m1.splitByType();
1469         self.assertEqual(3,len(v));
1470         m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(v);
1471         m2.setName(m1.getName());
1472         self.assertTrue(m1.isEqual(m2,1.e-12));
1473         pass
1474
1475     def testFuseUMeshesOnSameCoords(self):
1476         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1477         cells1=[2,3,4]
1478         m3=m2.buildPartOfMySelf(cells1,True);
1479         self.assertTrue(isinstance(m3,MEDCouplingUMesh))
1480         cells2=[1,2,4]
1481         m4=m2.buildPartOfMySelf(cells2,True);
1482         self.assertTrue(isinstance(m4,MEDCouplingUMesh))
1483         cells3=[1,2]
1484         m5=m2.buildPartOfMySelf(cells3,True);
1485         self.assertTrue(isinstance(m5,MEDCouplingUMesh))
1486         meshes=[m3,m4,m5]
1487         #
1488         m7,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1489         self.assertEqual(4,m7.getNumberOfCells());
1490         self.assertEqual(3,len(corr));
1491         expectedVals1=[3,3,2]
1492         expectedVals2=[[0,1,2],[3,0,2],[3,0]]
1493         for i in xrange(3):
1494             arr=corr[i];
1495             self.assertEqual(1,arr.getNumberOfComponents());
1496             nbOfVals=expectedVals1[i];
1497             self.assertEqual(nbOfVals,arr.getNumberOfTuples());
1498             vals=arr.getValues();
1499             self.assertEqual(expectedVals2[i],list(vals));
1500             pass
1501         arr2,fidsOfGroups=DataArrayInt.MakePartition(corr,m7.getNumberOfCells());
1502         fidExp=[5,1,3,4]
1503         fidsGrp=[[1,3,5],[3,4,5],[4,5]]
1504         self.assertEqual(3,len(fidsOfGroups));
1505         self.assertEqual(1,arr2.getNumberOfComponents());
1506         self.assertEqual(4,arr2.getNumberOfTuples());
1507         self.assertEqual(fidExp,list(arr2.getValues()));
1508         for i in xrange(3):
1509             nbOfVals=expectedVals1[i];
1510             self.assertEqual(list(fidsOfGroups[i]),fidsGrp[i]);
1511             pass
1512         pass
1513
1514     def testFuseUMeshesOnSameCoords2(self):
1515         m1,m2=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
1516         part1=[2,3,6,4,10]
1517         m3=m1.buildPartOfMySelf(part1,True);
1518         part2=[5,6,4,7]
1519         m4=m1.buildPartOfMySelf(part2,True);
1520         meshes=[m1,m3,m3,m4]
1521         m5,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1522         self.assertEqual(18,m5.getNumberOfCells());
1523         exp2=[
1524             [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
1525             [2,3,6,4,10],
1526             [2,3,6,4,10],
1527             [5,6,4,7]]
1528         i=0;
1529         for it in corr:
1530             self.assertEqual(exp2[i],list(it.getValues()));
1531             i+=1
1532             pass
1533         pass
1534
1535     def testBuildOrthogonalField(self):
1536         targetMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1537         field=targetMesh.buildOrthogonalField();
1538         expected=[0.70710678118654746,0.,-0.70710678118654746]
1539         self.assertEqual(5,field.getNumberOfTuples());
1540         self.assertEqual(3,field.getNumberOfComponents());
1541         vals=field.getArray().getValues();
1542         for i in xrange(15):
1543             self.assertTrue(abs(expected[i%3]-vals[i])<1e-12);
1544         # testing
1545         targetCoords=[0.,0.,0.,0.5,0.,0.5,1.,0.,1.,0.,1.,0.]
1546         targetConn=[0,1,2,3]
1547         targetMesh=MEDCouplingUMesh.New();
1548         targetMesh.setMeshDimension(2);
1549         targetMesh.allocateCells(1);
1550         targetMesh.insertNextCell(NORM_QUAD4,targetConn[0:4])
1551         targetMesh.finishInsertingCells();
1552         myCoords=DataArrayDouble.New();
1553         myCoords.setValues(targetCoords,4,3);
1554         targetMesh.setCoords(myCoords);
1555         field=targetMesh.buildOrthogonalField();
1556         self.assertEqual(1,field.getNumberOfTuples());
1557         self.assertEqual(3,field.getNumberOfComponents());
1558         vals=field.getArray().getValues();
1559         self.assertTrue(abs(-0.70710678118654746-vals[0])<1e-12);
1560         self.assertTrue(abs(0.-vals[1])<1e-12);
1561         self.assertTrue(abs(0.70710678118654746-vals[2])<1e-12);
1562         pass
1563
1564     def testGetCellsContainingPoint(self):
1565         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1566         pos=[0.,0.,0.4,0.4,0.,0.4,0.1,0.1,0.25,0.,0.65,0.]
1567         #2D basic
1568         t1,t2=targetMesh.getCellsContainingPoints(pos,6,1e-12);
1569         self.assertEqual(6,t1.getNumberOfTuples());
1570         self.assertEqual(1,t1.getNumberOfComponents());
1571         self.assertEqual(7,t2.getNumberOfTuples());
1572         self.assertEqual(1,t2.getNumberOfComponents());
1573         expectedValues1=[0,4,3,0,1,2]
1574         expectedValues2=[0,1,2,3,4,5,6]
1575         self.assertEqual(list(t1.getValues()),expectedValues1);
1576         self.assertEqual(list(t2.getValues()),expectedValues2);
1577         #2D with no help of bounding box.
1578         center=[0.2,0.2]
1579         MEDCouplingPointSet.Rotate2DAlg(center,0.78539816339744830962,6,pos);
1580         targetMesh.rotate(center,0.78539816339744830962);
1581         t1=None
1582         t2=None
1583         t1,t2=targetMesh.getCellsContainingPoints(pos,1e-12);
1584         self.assertEqual(6,t1.getNumberOfTuples());
1585         self.assertEqual(7,t2.getNumberOfTuples());
1586         self.assertEqual(list(t1.getValues()),expectedValues1);
1587         self.assertEqual(list(t2.getValues()),expectedValues2);
1588         t1,t2=targetMesh.getCellsContainingPoints(DataArrayDouble.New(pos,6,2),1e-12);
1589         self.assertEqual(6,t1.getNumberOfTuples());
1590         self.assertEqual(7,t2.getNumberOfTuples());
1591         self.assertEqual(list(t1.getValues()),expectedValues1);
1592         self.assertEqual(list(t2.getValues()),expectedValues2);
1593         self.assertRaises(InterpKernelException,targetMesh.getCellsContainingPoints,DataArrayDouble.New(pos,4,3),1e-12);
1594         #2D outside
1595         pos1bis=[-0.3303300858899107,-0.11819805153394641]
1596         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos1bis,1e-12));
1597         #test limits 2D
1598         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1599         pos2=[0.2,-0.05]
1600         t1=None
1601         t1=targetMesh.getCellsContainingPoint(pos2,1e-12)
1602         self.assertEqual(2,len(t1));
1603         expectedValues3=[0,1]
1604         self.assertEqual(list(t1.getValues()),expectedValues3);
1605         pos3=[0.2,0.2]
1606         t1=None
1607         t1=targetMesh.getCellsContainingPoint(pos3,1e-12);
1608         self.assertEqual(5,len(t1));
1609         expectedValues4=[0,1,2,3,4]
1610         self.assertEqual(list(t1.getValues()),expectedValues4);
1611         self.assertEqual(0,targetMesh.getCellContainingPoint(pos3,1e-12));
1612         #3D
1613         targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1614         pos4=[25.,25.,25.]
1615         self.assertEqual(0,targetMesh.getCellContainingPoint(pos4,1e-12));
1616         pos5=[50.,50.,50.]
1617         t1=None
1618         t1=targetMesh.getCellsContainingPoint(pos5,1e-12);
1619         self.assertEqual(8,len(t1));
1620         expectedValues5=[0,1,2,3,4,5,6,7]
1621         self.assertEqual(list(t1.getValues()),expectedValues5);
1622         pos6=[0., 50., 0.]
1623         t1=None
1624         t1=targetMesh.getCellsContainingPoint(pos6,1e-12);
1625         self.assertEqual(2,len(t1));
1626         expectedValues6=[0,2]
1627         self.assertEqual(list(t1.getValues()),expectedValues6);
1628         #3D outside
1629         pos7=[-1.0,-1.0,0.]
1630         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos7,1e-12));
1631         #3D outside 2
1632         center2=[0.,0.,0.]
1633         vec2=[0.,-1.,0.]
1634         targetMesh.rotate(center2,vec2,0.78539816339744830962);
1635         pos8=[-25.,25.,12.]
1636         self.assertEqual(-1,targetMesh.getCellContainingPoint(pos8,1e-12));
1637         pass
1638
1639     def testGetValueOn1(self):
1640         targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1641         fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
1642         nbOfCells=targetMesh.getNumberOfCells();
1643         fieldOnCells.setMesh(targetMesh);
1644         array=DataArrayDouble.New();
1645         tmp=2*nbOfCells*[None]
1646         for i in xrange(nbOfCells):
1647             tmp[2*i]=7.+float(i);
1648             tmp[2*i+1]=17.+float(i)
1649             pass
1650         array.setValues(tmp,nbOfCells,2);
1651         fieldOnCells.setArray(array);
1652         #
1653         pos1=[0.25,0.]
1654         res=fieldOnCells.getValueOn(pos1);
1655         self.assertEqual(2,len(res))
1656         self.assertTrue(abs(8.-res[0])<1e-12);
1657         self.assertTrue(abs(18.-res[1])<1e-12);
1658         #
1659         #
1660         targetMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1661         fieldOnNodes=MEDCouplingFieldDouble.New(ON_NODES);
1662         nbOfNodes=targetMesh.getNumberOfNodes();
1663         fieldOnNodes.setMesh(targetMesh);
1664         array=DataArrayDouble.New();
1665         tmp=2*nbOfNodes*[None]
1666         for i in xrange(nbOfNodes):
1667             tmp[2*i]=17.+float(i);
1668             tmp[2*i+1]=27.+float(i)
1669             pass
1670         array.setValues(tmp,nbOfNodes,2);
1671         fieldOnNodes.setArray(array);
1672         #
1673         pos2=[-0.13333333333333333,-0.13333333333333333]
1674         res=None
1675         res=fieldOnNodes.getValueOn(pos2);
1676         self.assertEqual(2,len(res))
1677         self.assertTrue(abs(17.5-res[0])<1e-12);
1678         self.assertTrue(abs(27.5-res[1])<1e-12);
1679         pos3=[0.033333333333333326,0.36666666666666664]
1680         res=None
1681         res=fieldOnNodes.getValueOn(pos3);
1682         self.assertEqual(2,len(res))
1683         self.assertTrue(abs(18.666666666666667-res[0])<1e-12);
1684         self.assertTrue(abs(28.666666666666667-res[1])<1e-12);
1685         pass
1686
1687     def testCMesh0(self):
1688         mesh=MEDCouplingCMesh.New();
1689         meshEmpty=mesh.clone(True);
1690         self.assertTrue(meshEmpty.isEqual(mesh, 1e-12));
1691         
1692         coordsX=DataArrayDouble.New();
1693         arrX=[ -1., 1., 2., 4. ]
1694         coordsX.setValues(arrX, 4, 1);
1695         coordsY=DataArrayDouble.New();
1696         arrY=[ -2., 2., 4., 8. ]
1697         coordsY.setValues(arrY, 4, 1);
1698         coordsZ=DataArrayDouble.New();
1699         arrZ=[ -3., 3., 6., 12. ]
1700         coordsZ.setValues(arrZ, 4, 1);
1701         mesh.setCoords(coordsX, coordsY, coordsZ);
1702         #
1703         fieldOnNodes=mesh.fillFromAnalytic(ON_NODES, 1, "x+y/2.+z/3.");
1704         self.assertEqual(1, fieldOnNodes.getNumberOfComponents());
1705         self.assertEqual(64, fieldOnNodes.getNumberOfTuples());
1706         expected1=[-3., -1., 0., 2., -1., 1., 2., 4., 0., 2., 3., 5., 2., 4., 5., 7., -1., 1., 2.,
1707                     4., 1., 3., 4., 6., 2., 4., 5., 7., 4., 6., 7., 9., 0., 2., 3., 5., 2., 4., 5.,
1708                     7., 3., 5., 6., 8., 5., 7., 8., 10., 2., 4., 5.,
1709                     7., 4., 6., 7., 9., 5., 7., 8., 10., 7., 9., 10., 12.];
1710         
1711         val=fieldOnNodes.getArray().getValues();
1712         for i in xrange(64):
1713           self.assertAlmostEqual(expected1[i], val[i], 12)
1714         res=fieldOnNodes.getValueOnPos(1, 3, 2);
1715         self.assertAlmostEqual(7., res[0], 12);
1716         #
1717         fieldOnCells=mesh.fillFromAnalytic(ON_CELLS, 1, "x+y/2.+z/3.");
1718         self.assertEqual(1, fieldOnCells.getNumberOfComponents());
1719         self.assertEqual(27, fieldOnCells.getNumberOfTuples());
1720         val=fieldOnCells.getArray().getValues();
1721         expected2=[0, 1.5, 3, 1.5, 3, 4.5, 3, 4.5, 6, 1.5, 3, 4.5, 3, 4.5,
1722                     6, 4.5, 6, 7.5, 3, 4.5, 6, 4.5, 6, 7.5, 6, 7.5, 9];
1723         for i in xrange(27):
1724           self.assertAlmostEqual(expected2[i], val[i], 12);
1725         #res=fieldOnCells.getValueOnPos(1,2,1);
1726         #self.assertAlmostEqual(6.,res,12);
1727         #
1728         meshDeepCopy=mesh.deepCpy();
1729         meshClone=mesh.clone(False);
1730         
1731         meshEmpty.copyTinyStringsFrom(mesh);
1732         #no data in meshEmpty, expected False
1733         self.assertTrue(not meshEmpty.isEqual(mesh, 1e-12));
1734         
1735         self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1736         meshDeepCopy.copyTinyStringsFrom(mesh);
1737         self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1738         self.assertTrue(meshClone.isEqual(mesh, 1e-12));
1739         
1740         self.assertEqual(CARTESIAN, mesh.getType());
1741         self.assertEqual(CARTESIAN, meshEmpty.getType());
1742         self.assertEqual(CARTESIAN, meshDeepCopy.getType());
1743         self.assertEqual(CARTESIAN, meshClone.getType());
1744         pass
1745
1746     def testCMesh1(self):
1747         mesh1=MEDCouplingCMesh.New();
1748         coordsX1=DataArrayDouble.New();
1749         arrX1=[ -1., 1., 2., 4. ]
1750         coordsX1.setValues(arrX1, 4, 1);
1751         coordsY1=DataArrayDouble.New();
1752         arrY1=[ -2., 2., 4., 8. ]
1753         coordsY1.setValues(arrY1, 4, 1);
1754         coordsZ1=DataArrayDouble.New();
1755         arrZ1=[ -3., 3., 6., 12. ]
1756         coordsZ1.setValues(arrZ1, 4, 1);
1757         mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1758         
1759         mesh2=MEDCouplingCMesh.New();
1760         coordsX2=DataArrayDouble.New();
1761         arrX2=[ -1., 1., 2., 4. ]
1762         coordsX2.setValues(arrX2, 4, 1);
1763         coordsY2=DataArrayDouble.New();
1764         arrY2=[ -2., 2., 4., 8. ]
1765         coordsY2.setValues(arrY2, 4, 1);
1766         coordsZ2=DataArrayDouble.New();
1767         arrZ2=[ -3., 3., 6., 12.+1e-6 ]
1768         coordsZ2.setValues(arrZ2, 4, 1);
1769         mesh2.setCoords(coordsX2, coordsY2, coordsZ2);
1770         
1771         mesh3=MEDCouplingCMesh.New();
1772         coordsX3=DataArrayDouble.New();
1773         arrX3=[-1.]
1774         coordsX3.setValues(arrX3, 1, 1);
1775         coordsY3=DataArrayDouble.New();
1776         arrY3=[-2.]
1777         coordsY3.setValues(arrY3, 1, 1);
1778         coordsZ3=DataArrayDouble.New();
1779         arrZ3=[-3.]
1780         coordsZ3.setValues(arrZ3, 1, 1);
1781         mesh3.setCoords(coordsX3, coordsY3, coordsZ3);
1782         
1783         self.assertEqual(3, mesh1.getSpaceDimension());
1784         self.assertEqual(3, mesh1.getMeshDimension());
1785         
1786         self.assertTrue(not mesh1.isEqual(mesh2, 1e-12));
1787         self.assertTrue(not mesh2.isEqual(mesh1, 1e-12));
1788         self.assertTrue(not mesh2.isEqualWithoutConsideringStr(mesh1, 1e-12));
1789         self.assertTrue(mesh1.isEqual(mesh2, 1e-5));
1790         self.assertTrue(not mesh1.isEqual(mesh2, 1e-7));
1791         
1792         self.assertRaises(InterpKernelException, mesh3.checkCoherency1, 1e-12);
1793         mesh1.checkCoherency2(1e-12);
1794         self.assertEqual(NORM_HEXA8, mesh1.getTypeOfCell(1));
1795         
1796         self.assertEqual(NORM_HEXA8, mesh1.getAllGeoTypes()[0]);
1797         self.assertEqual(27, mesh1.getNumberOfCellsWithType(NORM_HEXA8));
1798         self.assertRaises(InterpKernelException, mesh1.getNumberOfCellsWithType, NORM_QUAD4);
1799         
1800         coo=mesh1.getCoordinatesOfNode(0);
1801         self.assertEqual(3, len(coo));
1802         self.assertAlmostEqual(-1., coo[0], 14);
1803         self.assertAlmostEqual(-2., coo[1], 14);
1804         self.assertAlmostEqual(-3., coo[2], 14);
1805         coo=mesh1.getCoordinatesOfNode(63);
1806         self.assertEqual(3, len(coo));
1807         self.assertAlmostEqual(4., coo[0], 14);
1808         self.assertAlmostEqual(8., coo[1], 14);
1809         self.assertAlmostEqual(12., coo[2], 14);
1810         
1811         a=str(mesh1)
1812         repr=mesh1.simpleRepr();
1813         repr=mesh1.advancedRepr();
1814         self.assertTrue("Cartesian" in repr);
1815         self.assertTrue("Number of components : 1" in repr);
1816         self.assertTrue("Number of tuples : 4" in repr);
1817         self.assertTrue("Z Array :" in repr);
1818         pass
1819
1820     def testCMesh2(self):
1821         mesh1=MEDCouplingCMesh.New();
1822         coordsX1=DataArrayDouble.New();
1823         arrX1=[ -1., 1., 2., 4. ]
1824         coordsX1.setValues(arrX1, 4, 1);
1825         coordsY1=DataArrayDouble.New();
1826         arrY1=[ -2., 2., 4., 8. ]
1827         coordsY1.setValues(arrY1, 4, 1);
1828         coordsZ1=DataArrayDouble.New();
1829         arrZ1=[ -3., 3., 6., 12. ]
1830         coordsZ1.setValues(arrZ1, 4, 1);
1831         mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1832         
1833         dis=mesh1.getDistributionOfTypes();
1834         self.assertEqual(1, len(dis));
1835         self.assertEqual(NORM_HEXA8, dis[0][0]);
1836         self.assertEqual(27, dis[0][1]);
1837         self.assertEqual(-1, dis[0][2]);
1838         
1839         idsPerType=[]
1840         self.assertTrue(not mesh1.checkTypeConsistencyAndContig(dis, idsPerType));
1841         dis[0][0]=NORM_QUAD4;
1842         self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1843         dis[0][0]=NORM_HEXA8;
1844         dis[0][2]=0;
1845         ids=DataArrayInt.New();
1846         ids.alloc(10, 1);
1847         ids.fillWithValue(23);
1848         idsPerType=[ids];
1849         check=mesh1.checkTypeConsistencyAndContig(dis, idsPerType);
1850         self.assertTrue(check);
1851         self.assertTrue(check.isEqual(ids));
1852         
1853         code, idsInPflPerType, pfls=mesh1.splitProfilePerType(ids);
1854         self.assertEqual(1, len(code));
1855         self.assertEqual(NORM_HEXA8, code[0][0]);
1856         self.assertEqual(10, code[0][1]);
1857         self.assertEqual(0, code[0][2]);
1858         self.assertEqual(1, len(idsInPflPerType));
1859         self.assertEqual(1, len(pfls));
1860         self.assertTrue(idsInPflPerType[0].isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9])));
1861         self.assertTrue(pfls[0].isEqual(ids));
1862         
1863         cells1=[0, 1, 25, 26]
1864         partMesh1=mesh1.buildPart(cells1)
1865         self.assertTrue(isinstance(partMesh1,MEDCouplingMesh))
1866         self.assertEqual(4, partMesh1.getNumberOfCellsWithType(NORM_HEXA8));
1867         self.assertEqual(64, mesh1.getNumberOfNodes());
1868         self.assertEqual(64, partMesh1.getNumberOfNodes());
1869         
1870         cells2=[25, 26]
1871         partMesh2, arr1=mesh1.buildPartAndReduceNodes(cells2)
1872         self.assertTrue(isinstance(partMesh2,MEDCouplingCMesh))
1873         self.assertEqual(2,partMesh2.getNumberOfCellsWithType(NORM_HEXA8));
1874         self.assertEqual(12,partMesh2.getNumberOfNodes());
1875         
1876         cells3=[2, 3]
1877         partMesh3, arr2=partMesh1.buildPartAndReduceNodes(cells3)
1878         self.assertTrue(isinstance(partMesh3,MEDCouplingUMesh))
1879         self.assertEqual(2, partMesh3.getNumberOfCellsWithType(NORM_HEXA8));
1880         self.assertEqual(12, partMesh3.getNumberOfNodes());
1881         
1882         self.assertRaises(InterpKernelException, mesh1.simplexize, 0);
1883         self.assertRaises(InterpKernelException, mesh1.getMeasureFieldOnNode, True);
1884         
1885         #double bbox1[6];
1886         #double bbox2[6];
1887         bbox1=mesh1.getBoundingBox(); #[(-1.0, 4.0), (-2.0, 8.0), (-3.0, 12.0)]
1888         bbox2=partMesh1.getBoundingBox();
1889         self.assertTrue(bbox1==bbox2);
1890         bbox1=partMesh3.getBoundingBox();
1891         bbox2=partMesh2.getBoundingBox();
1892         self.assertTrue(bbox1==bbox2);
1893         
1894         self.assertRaises(InterpKernelException, mesh1.buildOrthogonalField);
1895         mesh2d=MEDCouplingCMesh.New();
1896         mesh2d.setCoords(coordsX1, coordsY1);
1897         f1=mesh2d.buildOrthogonalField();
1898         
1899         pass
1900
1901     def testScale(self):
1902         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1903         pos=[0.2,0.2]
1904         mesh.scale(pos,0.5);
1905         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,
1906                    -0.05,0.45, 0.2,0.45, 0.45,0.45]
1907         val=mesh.getCoords().getValues();
1908         self.assertEqual(18,len(val))
1909         for i in xrange(18):
1910             self.assertTrue(abs(expected1[i]-val[i])<1e-12);
1911             pass
1912         pass
1913
1914     def testTryToShareSameCoords(self):
1915         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1916         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
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         m1.tryToShareSameCoords(m2,1e-12);
1921         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1922         m2.tryToShareSameCoords(m1,1e-12);
1923         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1924         #
1925         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1926         m2=MEDCouplingDataForTest.build2DTargetMesh_2();
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         m1.tryToShareSameCoords(m2,1e-12);
1931         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1932         m2.tryToShareSameCoords(m1,1e-12);
1933         self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1934         #
1935         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1936         m2=MEDCouplingDataForTest.build2DSourceMesh_1();
1937         self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1938         self.assertRaises(InterpKernelException,m1.tryToShareSameCoords,m2,1e-12)
1939         pass
1940
1941     def testFindNodeOnPlane(self):
1942         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1943         pt=[300.,300.,0.]
1944         v=[0.,0.,2.]
1945         n=mesh.findNodesOnPlane(pt,v,1e-12);
1946         self.assertEqual(9,len(n));
1947         m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1948         self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1949         me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1950         da=me.getMesh3DIds();
1951         self.assertEqual(8,me.getNumberOfCells());
1952         expected=[0,1,2,3,4,5,6,7]
1953         val=da.getValues();
1954         self.assertEqual(expected,list(val));
1955         #
1956         m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1957         self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1958         me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1959         da=me.getMesh3DIds();
1960         self.assertEqual(8,me.getNumberOfCells());
1961         expected=[0,1,2,3,4,5,6,7]
1962         val=da.getValues();
1963         self.assertEqual(expected,list(val));
1964         pass
1965
1966     def testRenumberCells(self):
1967         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1968         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1969         self.assertTrue(m.isEqual(m2,0));
1970         arr=[12,3,25,2,26]
1971         m.renumberCells(arr,True);
1972         self.assertTrue(not m.isEqual(m2,0));
1973         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(0));
1974         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
1975         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(2));
1976         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
1977         self.assertEqual(NORM_QUAD4,m.getTypeOfCell(4));
1978         arr2=[5,-1,-5,4,8]
1979         m.renumberCells(arr2,True);
1980         self.assertTrue(m.isEqual(m2,0));
1981         pass
1982
1983     def testChangeSpaceDimension(self):
1984         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1985         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1986         #
1987         self.assertEqual(3,m1.getSpaceDimension());
1988         m1.changeSpaceDimension(2);
1989         self.assertEqual(2,m1.getSpaceDimension());
1990         m1.setName(m2.getName());
1991         self.assertTrue(m1.isEqual(m2,1e-12));
1992         m1.changeSpaceDimension(3);
1993         self.assertEqual(3,m1.getSpaceDimension());
1994         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.]
1995         val=m1.getCoords().getValues();
1996         for i in xrange(27):
1997             self.assertTrue(abs(expected[i]-val[i])<1e-14);
1998             pass
1999         pass
2000
2001     def testGaussPointField1(self):
2002         _a=0.446948490915965;
2003         _b=0.091576213509771;
2004         _p1=0.11169079483905;
2005         _p2=0.0549758718227661;
2006         refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2007         gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
2008                  2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]
2009         wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2010         _refCoo1=refCoo1
2011         _gsCoo1=gsCoo1
2012         _wg1=wg1
2013         #
2014         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2015         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2016         f.setMesh(m);
2017         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2018         self.assertEqual(0,f.getNbOfGaussLocalization());
2019         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2020         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1); # not a bug only to check that it works well
2021         self.assertRaises(InterpKernelException,f.setGaussLocalizationOnType,NORM_QUAD4,_refCoo1,_gsCoo1,_wg1)
2022         self.assertEqual(1,f.getNbOfGaussLocalization());
2023         refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2024         _refCoo2=refCoo2
2025         _gsCoo1=_gsCoo1[0:4]
2026         _wg1=_wg1[0:2]
2027         f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2028         self.assertEqual(2,f.getNbOfGaussLocalization());
2029         array=DataArrayDouble.New();
2030         ptr=18*2*[None]
2031         for i in xrange(18*2):
2032             ptr[i]=float(i+1)
2033         array.setValues(ptr,18,2);
2034         ptr=array.getPointer();
2035         f.setArray(array);
2036         f.setName("MyFirstFieldOnGaussPoint");
2037         f.checkCoherency();
2038         self.assertAlmostEqual(27.,f.getIJK(2,5,0),14);
2039         self.assertAlmostEqual(16.,f.getIJK(1,5,1),14);
2040         #
2041         f.clearGaussLocalizations();
2042         self.assertEqual(0,f.getNbOfGaussLocalization());
2043         self.assertRaises(InterpKernelException,f.checkCoherency);
2044         ids1=[0,1,3,4]
2045         self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,ids1,_refCoo2,_gsCoo1,_wg1);
2046         self.assertEqual(0,f.getNbOfGaussLocalization());
2047         ids2=[0,4]
2048         f.setGaussLocalizationOnCells(ids2,_refCoo2,_gsCoo1,_wg1);
2049         self.assertEqual(1,f.getNbOfGaussLocalization());
2050         self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2051         self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneCell,1);
2052         ids3=[1,2]
2053         f.setGaussLocalizationOnCells(ids3,_refCoo1,_gsCoo1,_wg1);
2054         self.assertEqual(2,f.getNbOfGaussLocalization());
2055         self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2056         self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(1));
2057         self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(2));
2058         self.assertRaises(InterpKernelException,f.checkCoherency);#<- cell 3 has no localization
2059         ids4=[3]
2060         _gsCoo2=_gsCoo1;
2061         _wg2=_wg1;
2062         _gsCoo2[0]=0.8888777776666;
2063         _wg2[0]=0.1234567892377;
2064         f.setGaussLocalizationOnCells(ids4,_refCoo2,_gsCoo2,_wg2);
2065         self.assertEqual(3,f.getNbOfGaussLocalization());
2066         tmpIds=f.getCellIdsHavingGaussLocalization(0);
2067         self.assertEqual(ids2,list(tmpIds.getValues()));
2068         self.assertRaises(InterpKernelException,f.checkCoherency);#<- it's always not ok because undelying array not with the good size.
2069         array2=f.getArray().substr(0,10);
2070         f.setArray(array2);
2071         f.checkCoherency();#<- here it is OK
2072         f2=f.clone(True);
2073         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2074         gl1=f2.getGaussLocalization(0);
2075         tmp=gl1.getGaussCoord(1,1);
2076         self.assertAlmostEqual(2.07*_b-1,tmp,14);
2077         gl1.setGaussCoord(1,1,0.07);
2078         self.assertTrue(not f.isEqual(f2,1e-14,1e-14));
2079         gl1.setGaussCoord(1,1,tmp);
2080         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2081         f2.checkCoherency();
2082         pass
2083
2084     def testGaussPointNEField1(self):
2085         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2086         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2087         f.setMesh(m);
2088         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2089         f.setName("MyFirstFieldOnNE");
2090         f.setDescription("MyDescriptionNE");
2091         array=DataArrayDouble.New();
2092         tmp=18*2*[None]
2093         for i in xrange(18*2):
2094             tmp[i]=float(i+7)
2095             pass
2096         array.setValues(tmp,18,2);
2097         ptr=array.getPointer();
2098         f.setArray(array);
2099         #
2100         f.checkCoherency();
2101         f2=f.clone(True);
2102         self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2103         self.assertAlmostEqual(21.,f.getIJK(2,0,0),14);
2104         self.assertAlmostEqual(18.,f.getIJK(1,1,1),14);
2105         pass
2106
2107     def testCellOrientation1(self):
2108         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2109         vec=[0.,0.,-1.]
2110         self.assertRaises(InterpKernelException,m.are2DCellsNotCorrectlyOriented,vec,False);
2111         m.changeSpaceDimension(3);
2112         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2113         self.assertTrue(len(res1)==0);
2114         vec[2]=1.;
2115         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2116         self.assertEqual(5,len(res1));
2117         #
2118         vec[2]=-1.;
2119         # connectivity inversion
2120         conn=m.getNodalConnectivity().getValues();
2121         tmp=conn[11];
2122         conn[11]=conn[12];
2123         conn[12]=tmp;
2124         m.getNodalConnectivity().setValues(conn,len(conn),1)
2125         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2126         self.assertEqual(1,len(res1));
2127         self.assertEqual(2,res1.getValues()[0]);
2128         m.orientCorrectly2DCells(vec,False);
2129         res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2130         self.assertTrue(len(res1)==0);
2131         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
2132         m2.changeSpaceDimension(3);
2133         self.assertTrue(m.isEqual(m2,1e-12));
2134         pass
2135
2136     def testCellOrientation2(self):
2137         m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2138         res1=m2.arePolyhedronsNotCorrectlyOriented();
2139         self.assertEqual(6,len(res1));
2140         m2.orientCorrectlyPolyhedrons();
2141         res1=m2.arePolyhedronsNotCorrectlyOriented();
2142         self.assertTrue(len(res1)==0);
2143         m2.checkCoherency();
2144         self.assertEqual(18,m2.getNumberOfCells());
2145         cellIds2=[0,6,12]
2146         m2.convertToPolyTypes(cellIds2);
2147         m2.orientCorrectlyPolyhedrons();
2148         res1=m2.arePolyhedronsNotCorrectlyOriented();
2149         self.assertTrue(len(res1)==0);
2150         f2=m2.getMeasureField(False);
2151         f2Ptr=f2.getArray().getValues();
2152         #Test to check global reverse in MEDCouplingUMesh::tryToCorrectPolyhedronOrientation
2153         m3=MEDCouplingDataForTest.build2DTargetMesh_1();
2154         vec=[0.,0.,1.]
2155         m3.changeSpaceDimension(3);
2156         ids2=[0,1,2,3,4]
2157         m3.convertToPolyTypes(ids2);
2158         m3.orientCorrectly2DCells(vec,False);
2159         m4=MEDCouplingDataForTest.buildCU1DMesh_U();
2160         m4.changeSpaceDimension(3);
2161         center=[0.,0.,0.]
2162         vector=[0.,1.,0.]
2163         m4.rotate(center,vector,-pi/2.);
2164         m5=m3.buildExtrudedMesh(m4,0);
2165         res1=m5.arePolyhedronsNotCorrectlyOriented();
2166         self.assertEqual(15,len(res1));
2167         m5.orientCorrectlyPolyhedrons();
2168         res1=m5.arePolyhedronsNotCorrectlyOriented();
2169         self.assertTrue(len(res1)==0);
2170         f3=m5.getMeasureField(False);
2171         self.assertEqual(15,f3.getArray().getNumberOfTuples());
2172         self.assertEqual(1,f3.getNumberOfComponents());
2173         f3Ptr=f3.getArray().getValues();
2174         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];
2175         for i in xrange(15):
2176             self.assertTrue(abs(expected1[i]-f3Ptr[i])<1e-12);
2177             pass
2178         f4=m5.getBarycenterAndOwner();
2179         self.assertEqual(15,f4.getNumberOfTuples());
2180         self.assertEqual(3,f4.getNumberOfComponents());
2181         f4Ptr=f4.getValues();
2182         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];
2183         for i in xrange(45):
2184             self.assertTrue(abs(expected2[i]-f4Ptr[i])<1e-12);
2185             pass
2186         pass
2187
2188     def testCellOrientation3(self):
2189         from cmath import rect  
2190
2191         c = [rect(1.0, i*pi/4.0) for i in range(8)]
2192         coords = [c[-1].real,c[-1].imag,  c[3].real,c[3].imag,
2193                    c[5].real,c[5].imag,  c[1].real,c[1].imag]
2194         connec = [0,1,2,3] 
2195         baseMesh = MEDCouplingUMesh.New("circle", 2)  
2196         baseMesh.allocateCells(1)
2197         meshCoords = DataArrayDouble.New(coords, 4, 2)
2198         baseMesh.setCoords(meshCoords)
2199         baseMesh.insertNextCell(NORM_QPOLYG, connec)  # a circle
2200         baseMesh.finishInsertingCells()  
2201         baseMesh.changeSpaceDimension(3)
2202         Oz = [0.0, 0.0, -1.0] 
2203         cell_lst = baseMesh.are2DCellsNotCorrectlyOriented(Oz, False)
2204         self.assertEqual(cell_lst.getNumberOfTuples(), 0)
2205         Oz[2] = 1.0
2206         cell_lst = baseMesh.are2DCellsNotCorrectlyOriented(Oz, False)
2207         self.assertEqual(cell_lst.getNumberOfTuples(), 1)
2208
2209     def testPolyhedronBarycenter(self):
2210         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];
2211         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];
2212         meshN=MEDCouplingUMesh.New();
2213         meshN.setName("ForBary");
2214         meshN.setMeshDimension(3);
2215         meshN.allocateCells(4);
2216         meshN.insertNextCell(NORM_POLYHED,29,connN[0:29])
2217         meshN.finishInsertingCells();
2218         myCoords=DataArrayDouble.New();
2219         myCoords.setValues(coords,9,3);
2220         meshN.setCoords(myCoords);
2221         meshN.checkCoherency();
2222         #
2223         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2224         meshN.orientCorrectlyPolyhedrons();
2225         self.assertTrue(len(res1)==0);
2226         da=meshN.getBarycenterAndOwner();
2227         self.assertEqual(1,da.getNumberOfTuples());
2228         self.assertEqual(3,da.getNumberOfComponents());
2229         daPtr=da.getValues();
2230         ref=meshN.getCoords().getValues()[24:];
2231         for i in xrange(3):
2232             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2233             pass
2234         #
2235         center=[0.,0.,0.]
2236         vec=[0.,2.78,0.]
2237         da=meshN.getBarycenterAndOwner();
2238         daPtr=da.getValues();
2239         ref=meshN.getCoords().getValues()[24:];
2240         for i in xrange(3):
2241             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2242             pass
2243         #
2244         meshN.rotate(center,vec,pi/7.);
2245         meshN.translate(vec);
2246         da=meshN.getBarycenterAndOwner();
2247         daPtr=da.getValues();
2248         ref=meshN.getCoords().getValues()[24:];
2249         for i in xrange(3):
2250             self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2251             pass
2252         #
2253         center2=[1.12,3.45,6.78]
2254         vec2=[4.5,9.3,2.8]
2255         meshN.rotate(center2,vec2,e);
2256         meshN.translate(vec2);
2257         da=meshN.getBarycenterAndOwner();
2258         daPtr=da.getValues();
2259         ref=meshN.getCoords().getValues()[24:];
2260         for i in xrange(3):
2261             self.assertTrue(abs(ref[i]-daPtr[i])<1e-10);
2262             pass
2263         pass
2264
2265     def testNormL12Integ1D(self):
2266         m1=MEDCouplingDataForTest.build1DTargetMesh_3();
2267         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2268         f1.setMesh(m1);
2269         array=DataArrayDouble.New();
2270         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]
2271         array.setValues(arr,m1.getNumberOfCells(),3);
2272         f1.setArray(array);
2273         #
2274         f3=m1.getBarycenterAndOwner();
2275         self.assertEqual(4,f3.getNumberOfTuples());
2276         self.assertEqual(1,f3.getNumberOfComponents());
2277         expected9=[0.75,5.105,0.8,5.155]
2278         ptr=f3.getValues();
2279         for i in xrange(4):
2280             self.assertTrue(abs(expected9[i]-ptr[i])<1e-12);
2281             pass
2282         #
2283         f2=m1.getMeasureField(False);
2284         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2285         self.assertEqual(1,f2.getNumberOfComponents());
2286         expected1=[0.5,0.21,-0.6,-0.31]
2287         ptr=f2.getArray().getValues();
2288         for i in xrange(4):
2289             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2290             pass
2291         expected2=[0.5,0.21,0.6,0.31]
2292         f2=m1.getMeasureField(True);
2293         ptr=f2.getArray().getValues();
2294         for i in xrange(4):
2295             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2296             pass
2297         #integral
2298         self.assertTrue(4,f1.getNumberOfTuples())
2299         res=f1.integral(False);
2300         self.assertTrue(3,len(res))
2301         expected3=[0.9866,-0.3615,0.4217]
2302         for i in xrange(3):
2303             self.assertTrue(abs(expected3[i]-res[i])<1e-12);
2304             pass
2305         self.assertTrue(abs(expected3[0]-f1.integral(0,False))<1e-12);
2306         self.assertTrue(abs(expected3[1]-f1.integral(1,False))<1e-12);
2307         self.assertTrue(abs(expected3[2]-f1.integral(2,False))<1e-12);
2308         res=f1.integral(True);
2309         expected4=[-3.4152,8.7639,-14.6879]
2310         for i in xrange(3):
2311             self.assertTrue(abs(expected4[i]-res[i])<1e-12);
2312             pass
2313         #normL1
2314         res=f1.normL1();
2315         self.assertTrue(3,len(res))
2316         expected5=[6.979506172839505, 16.89018518518518, 27.02969135802469]
2317         for i in xrange(3):
2318             self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2319             pass
2320         self.assertTrue(abs(expected5[0]-f1.normL1(0))<1e-12);
2321         self.assertTrue(abs(expected5[1]-f1.normL1(1))<1e-12);
2322         self.assertTrue(abs(expected5[2]-f1.normL1(2))<1e-12);
2323         #normL2
2324         res=f1.normL2();
2325         self.assertTrue(3,len(res))
2326         expected7=[7.090910979452395, 16.9275542960123, 27.053271464160858]
2327         for i in xrange(3):
2328             self.assertTrue(abs(expected7[i]-res[i])<1e-9);
2329             pass
2330         self.assertTrue(abs(expected7[0]-f1.normL2(0))<1e-9);
2331         self.assertTrue(abs(expected7[1]-f1.normL2(1))<1e-9);
2332         self.assertTrue(abs(expected7[2]-f1.normL2(2))<1e-9);
2333         #buildMeasureField
2334         f4=f1.buildMeasureField(False);
2335         self.assertTrue(abs(-0.2-f4.accumulate(0))<1e-12);
2336         f4=f1.buildMeasureField(True);
2337         self.assertTrue(abs(1.62-f4.accumulate(0))<1e-12);
2338         # Testing with 2D Curve
2339         m1=MEDCouplingDataForTest.build2DCurveTargetMesh_3();
2340         f2=m1.getMeasureField(False);
2341         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2342         self.assertEqual(1,f2.getNumberOfComponents());
2343         ptr=f2.getArray().getValues();
2344         for i in xrange(4):
2345             self.assertTrue(abs(sqrt(2.)*expected2[i]-ptr[i])<1e-12);
2346             pass
2347         f2=m1.getMeasureField(True);
2348         self.assertEqual(4,f2.getArray().getNumberOfTuples());
2349         self.assertEqual(1,f2.getNumberOfComponents());
2350         ptr=f2.getArray().getValues();
2351         for i in xrange(4):
2352             self.assertTrue(abs(expected2[i]*sqrt(2.)-ptr[i])<1e-12);
2353             pass
2354         #bary
2355         f3=m1.getBarycenterAndOwner();
2356         self.assertEqual(4,f3.getNumberOfTuples());
2357         self.assertEqual(2,f3.getNumberOfComponents());
2358         expected10=[0.75,0.75,5.105,5.105,0.8,0.8,5.155,5.155]
2359         ptr=f3.getValues();
2360         for i in xrange(8):
2361             self.assertTrue(abs(expected10[i]-ptr[i])<1e-12);
2362             pass
2363         #
2364         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2365         f1.setMesh(m1);
2366         array=DataArrayDouble.New();
2367         array.setValues(arr,m1.getNumberOfCells(),3);
2368         f1.setArray(array);
2369         res=f1.integral(False);
2370         for i in xrange(3):
2371             self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2372             pass
2373         res=f1.integral(True);
2374         for i in xrange(3):
2375             self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2376             pass
2377         res=f1.normL1();
2378         for i in xrange(3):
2379             self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2380             pass
2381         res=f1.normL2();
2382         for i in xrange(3):
2383             self.assertTrue(abs(expected7[i]-res[i])<1e-12);
2384             pass
2385         pass
2386
2387     def testAreaBary2D(self):
2388         m1=MEDCouplingDataForTest.build2DTargetMesh_3();
2389         f1=m1.getMeasureField(False);
2390         self.assertEqual(10,f1.getArray().getNumberOfTuples());
2391         self.assertEqual(1,f1.getNumberOfComponents());
2392         expected1=[-0.5,-1,-1.5,-0.5,-1,  0.5,1,1.5,0.5,1]
2393         ptr=f1.getArray().getValues();
2394         for i in xrange(10):
2395             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2396             pass
2397         f1=m1.getMeasureField(True);
2398         ptr=f1.getArray().getValues();
2399         for i in xrange(10):
2400             self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2401             pass
2402         f2=m1.getBarycenterAndOwner();
2403         self.assertEqual(10,f2.getNumberOfTuples());
2404         self.assertEqual(2,f2.getNumberOfComponents());
2405         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]
2406         ptr=f2.getValues();
2407         for i in xrange(20):
2408             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2409             pass
2410         m1.changeSpaceDimension(3);
2411         f1=m1.getMeasureField(False);
2412         self.assertEqual(10,f1.getArray().getNumberOfTuples());
2413         self.assertEqual(1,f1.getNumberOfComponents());
2414         ptr=f1.getArray().getValues();
2415         for i in xrange(10):
2416             self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2417             pass
2418         f2=m1.getBarycenterAndOwner();
2419         self.assertEqual(10,f2.getNumberOfTuples());
2420         self.assertEqual(3,f2.getNumberOfComponents());
2421         ptr=f2.getValues();
2422         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.]
2423         for i in xrange(30):
2424             self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2425             pass
2426         pass
2427
2428     def testAreaBary3D(self):
2429         coords=[ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
2430                  0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
2431                  0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
2432                  0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
2433                  -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
2434                  -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
2435                  0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
2436                  0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
2437                  -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
2438                  0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
2439                 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
2440                  -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
2441                  -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
2442                  -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
2443                  -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
2444                  -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
2445                  0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
2446                  0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
2447                  0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
2448                  -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
2449                  -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
2450                 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
2451                  -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
2452                  0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
2453                  0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
2454                  0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
2455                  -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
2456                  -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
2457                 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
2458                  0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
2459                  -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
2460                  0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
2461                  0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
2462                  0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
2463                  -0.0372812069535 , -0.286740286332 , 0.00963701291166 ]
2464         
2465         connN = [ #polyhedron 0
2466             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
2467             , 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
2468             , 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
2469             , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
2470             # polyhedron 1
2471             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
2472             , 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
2473             , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
2474             , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
2475             # polyhedron 2
2476             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
2477             , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
2478             # polyhedron 3
2479             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
2480             , 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
2481             , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
2482             , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
2483         
2484         barys = [ -0.0165220465527 , -0.0190922868195 , 0.158882733414 ,
2485                   0.0287618656076 , 0.135874379934 , -0.14601588119 ,
2486                   -0.147128055553 , 0.0465995097041 , -0.049391174453 ,
2487                   -0.00142506732317 , -0.0996953090351 , -0.115159183132 ]
2488         meshN=MEDCouplingUMesh.New();
2489         meshN.setName("ForBary");
2490         meshN.setMeshDimension(3);
2491         meshN.allocateCells(4);
2492         meshN.insertNextCell(NORM_POLYHED,113,connN);
2493         meshN.insertNextCell(NORM_POLYHED,99,connN[113:]);
2494         meshN.insertNextCell(NORM_POLYHED,43,connN[212:]);
2495         meshN.insertNextCell(NORM_POLYHED,92,connN[255:]);
2496         meshN.finishInsertingCells();
2497         myCoords=DataArrayDouble.New();
2498         myCoords.setValues(coords,69,3);
2499         meshN.setCoords(myCoords);
2500         meshN.checkCoherency();
2501         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2502         meshN.orientCorrectlyPolyhedrons();
2503         res1=meshN.arePolyhedronsNotCorrectlyOriented();
2504         self.assertTrue(len(res1)==0);
2505         #
2506         da=meshN.getBarycenterAndOwner();
2507         self.assertEqual(4,da.getNumberOfTuples());
2508         self.assertEqual(3,da.getNumberOfComponents());
2509         daPtr=da.getValues();
2510         for i in xrange(12):
2511             self.assertTrue(abs(barys[i]-daPtr[i])<1e-12);
2512             pass
2513         pass
2514
2515     def testRenumberCellsForFields(self):
2516         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2517         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2518         f.setMesh(m);
2519         arr=DataArrayDouble.New();
2520         nbOfCells=m.getNumberOfCells();
2521         values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
2522         arr.setValues(values1,nbOfCells,3);
2523         f.setArray(arr);
2524         renumber1=[3,1,0,4,2]
2525         loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
2526         for j in xrange(5):
2527             res=f.getValueOn(loc[2*j:2*j+2]);
2528             for i in xrange(3):
2529                 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2530                 pass
2531             pass
2532         f.renumberCells(renumber1,False);
2533         ptr=f.getArray().getValues();
2534         expected1=[9.,109.,10009.,8.,108.,10008.,11.,111.,10011.,7.,107.,10007.,10.,110.,10010.]
2535         for i in xrange(15):
2536             self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2537             pass
2538         #check that fields remains the same geometrically
2539         for j in xrange(5):
2540             res=f.getValueOn(loc[2*j:2*(j+1)]);
2541             for i in xrange(3):
2542                 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2543                 pass
2544             pass
2545         #On gauss
2546         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2547         f.setMesh(m);
2548         _a=0.446948490915965;
2549         _b=0.091576213509771;
2550         _p1=0.11169079483905;
2551         _p2=0.0549758718227661;
2552         refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2553         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 ];
2554         wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2555         _refCoo1=refCoo1[0:6];
2556         _gsCoo1=gsCoo1[0:12];
2557         _wg1=wg1[0:6];
2558         f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2559         refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2560         _refCoo2=refCoo2[0:8];
2561         _gsCoo1=_gsCoo1[0:4]
2562         _wg1=_wg1[0:2]
2563         f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2564         arr=DataArrayDouble.New();
2565         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.]
2566         arr.setValues(values2,18,2);
2567         f.setArray(arr);
2568         f.checkCoherency();
2569         fCpy=f.clone(True);
2570         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2571         f.renumberCells(renumber1,False);
2572         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2573         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.]
2574         ptr=f.getArray().getValues();
2575         for i in xrange(36):
2576             self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2577             pass
2578         renumber2=[2,1,4,0,3]
2579         f.renumberCells(renumber2,False);
2580         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2581         #GaussNE
2582         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2583         f.setMesh(m);
2584         arr=DataArrayDouble.New();
2585         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.]
2586         arr.setValues(values3,18,2);
2587         f.setArray(arr);
2588         f.checkCoherency();
2589         fCpy=f.clone(True);
2590         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2591         f.renumberCells(renumber1,False);
2592         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2593         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.]
2594         ptr=f.getArray().getValues();
2595         for i in xrange(36):
2596             self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2597             pass
2598         f.renumberCells(renumber2,False);#perform reverse operation of renumbering to check that the resulting field is equal.
2599         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2600         #
2601         pass
2602
2603     def testRenumberNodesForFields(self):
2604         m=MEDCouplingDataForTest.build2DTargetMesh_1();
2605         f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2606         f.setMesh(m);
2607         self.assertEqual(9,f.getNumberOfMeshPlacesExpected());
2608         arr=DataArrayDouble.New();
2609         nbOfNodes=m.getNumberOfNodes();
2610         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.]
2611         arr.setValues(values1,nbOfNodes,3);
2612         f.setArray(arr);
2613         f.checkCoherency();
2614         renumber1=[0,4,1,3,5,2,6,7,8]
2615         loc=[0.5432,-0.2432, 0.5478,0.1528]
2616         expected1=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124]
2617         for j in xrange(2):
2618             res=f.getValueOn(loc[2*j:2*j+2]);
2619             for i in xrange(3):
2620                 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2621                 pass
2622             pass
2623         fCpy=f.clone(True);
2624         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2625         f.renumberNodes(renumber1);
2626         self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2627         for j in xrange(2):
2628             res=f.getValueOn(loc[2*j:2*j+2]);
2629             for i in xrange(3):
2630                 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2631                 pass
2632             pass
2633         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.]
2634         for i in xrange(27):
2635             self.assertTrue(abs(expected2[i]-f.getArray().getValues()[i])<1e-12);
2636             pass
2637         renumber2=[0,2,5,3,1,4,6,7,8]
2638         f.renumberNodes(renumber2);
2639         self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2640         pass
2641
2642     def testConvertQuadraticCellsToLinear(self):
2643         mesh=MEDCouplingDataForTest.build2DTargetMesh_3();
2644         mesh.checkCoherency();
2645         types=mesh.getAllGeoTypes();
2646         types.sort()
2647         self.assertEqual(5,len(types));
2648         expected1=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4, NORM_TRI6, NORM_QUAD8]
2649         expected1.sort()
2650         self.assertEqual(expected1,types);
2651         self.assertTrue(mesh.isPresenceOfQuadratic());
2652         self.assertEqual(62,mesh.getMeshLength());
2653         f1=mesh.getMeasureField(False);
2654         #
2655         mesh.convertQuadraticCellsToLinear();
2656         self.assertTrue(not mesh.isPresenceOfQuadratic());
2657         #
2658         mesh.checkCoherency();
2659         f2=mesh.getMeasureField(False);
2660         self.assertTrue(f1.getArray().isEqual(f2.getArray(),1e-12));
2661         self.assertEqual(48,mesh.getMeshLength());
2662         types2=mesh.getAllGeoTypes();
2663         types2.sort()
2664         self.assertEqual(3,len(types2));
2665         expected2=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4]
2666         expected2.sort()
2667         self.assertEqual(expected2,types2);
2668         pass
2669
2670     def testCheckGeoEquivalWith(self):
2671         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2672         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2673         #First test mesh1
2674         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,0,1e-12);#deepEqual
2675         self.assertTrue(cellCor==None);
2676         self.assertTrue(nodeCor==None);
2677         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,1,1e-12);#fastEqual
2678         self.assertTrue(cellCor==None);
2679         self.assertTrue(nodeCor==None);
2680         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2681         self.assertTrue(cellCor==None);
2682         self.assertTrue(nodeCor==None);
2683         #Second test mesh1 and mesh2 are 2 different meshes instance
2684         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,0,1e-12);#deepEqual
2685         self.assertTrue(cellCor==None);
2686         self.assertTrue(nodeCor==None);
2687         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual
2688         self.assertTrue(cellCor==None);
2689         self.assertTrue(nodeCor==None);
2690         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2691         self.assertTrue(cellCor==None);
2692         self.assertTrue(nodeCor==None);
2693         #Third test : cell permutation by keeping the first the middle and the last as it is.
2694         renum=[0,2,1,3,4,5,6,8,7,9]
2695         mesh2.renumberCells(renum,False);
2696         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2697         self.assertTrue(cellCor==None);
2698         self.assertTrue(nodeCor==None);
2699         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2700         self.assertTrue(cellCor==None);
2701         self.assertTrue(nodeCor==None);
2702         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2703         self.assertTrue(cellCor);
2704         self.assertEqual(10,cellCor.getNumberOfTuples());
2705         self.assertEqual(1,cellCor.getNumberOfComponents());
2706         self.assertEqual(renum,list(cellCor.getValues()))
2707         self.assertTrue(nodeCor==None);
2708         cellCor=0;
2709         self.assertTrue(nodeCor==None);
2710         a,b=mesh1.checkDeepEquivalWith(mesh2,0,1e-12);
2711         self.assertEqual(renum,list(a.getValues()))
2712         self.assertTrue(b==None);
2713         mesh2.setCoords(mesh1.getCoords())
2714         a=mesh1.checkDeepEquivalOnSameNodesWith(mesh2,0,1e-12);
2715         self.assertEqual(renum,list(a.getValues()))
2716         #4th test : cell and node permutation by keeping the first the middle and the last as it is.
2717         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2718         renum2=[0,2,1,3,4,5,6,8,7,9,10]
2719         mesh2.renumberCells(renum,False);
2720         mesh2.renumberNodes(renum2,11);
2721         cellCor=None
2722         nodeCor=None
2723         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2724         self.assertTrue(cellCor==None);
2725         self.assertTrue(nodeCor==None);
2726         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2727         self.assertTrue(cellCor==None);
2728         self.assertTrue(nodeCor==None);
2729         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2730         self.assertTrue(cellCor);
2731         self.assertEqual(10,cellCor.getNumberOfTuples());
2732         self.assertEqual(1,cellCor.getNumberOfComponents());
2733         self.assertEqual(renum,list(cellCor.getValues()))
2734         self.assertTrue(nodeCor);
2735         self.assertEqual(11,nodeCor.getNumberOfTuples());
2736         self.assertEqual(1,nodeCor.getNumberOfComponents());
2737         self.assertEqual(renum2,list(nodeCor.getValues()))
2738         cellCor=0;
2739         nodeCor=0;
2740         #5th test : modification of the last cell to check fastCheck detection.
2741         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2742         renum3=[0,2,1,3,4,5,6,8,9,7]
2743         mesh2.renumberCells(renum3,False);
2744         mesh2.renumberNodes(renum2,11);
2745         cellCor=None
2746         nodeCor=None
2747         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12)
2748         self.assertTrue(cellCor==None);
2749         self.assertTrue(nodeCor==None);
2750         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,1,1e-12)
2751         self.assertTrue(cellCor==None);
2752         self.assertTrue(nodeCor==None);
2753         cellCor,nodeCor=mesh2.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2754         self.assertTrue(cellCor!=None);
2755         self.assertEqual(10,cellCor.getNumberOfTuples());
2756         self.assertEqual(1,cellCor.getNumberOfComponents());
2757         self.assertEqual(renum3,list(cellCor.getValues()))
2758         self.assertTrue(nodeCor!=None);
2759         self.assertEqual(11,nodeCor.getNumberOfTuples());
2760         self.assertEqual(1,nodeCor.getNumberOfComponents());
2761         self.assertEqual(renum2,list(nodeCor.getValues()));
2762         pass
2763
2764     def testCheckGeoEquivalWith2(self):
2765         mesh1=MEDCouplingDataForTest.build2DTargetMesh_4();
2766         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
2767         cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);
2768         self.assertEqual(None,cellCor);
2769         self.assertNotEqual(None,nodeCor);
2770         expected1=[0, 1, 3, 4, 5, 6, 7, 8, 9]
2771         for i in xrange(9):
2772             self.assertEqual(expected1[i],nodeCor.getIJ(i,0));
2773             pass
2774         pass
2775       
2776     def testSwig2CheckDeepEquivalWith1(self):
2777         eps = 1.0e-8
2778         mcart = MEDCouplingCMesh()
2779         mcart.setCoordsAt(0, DataArrayDouble([0.0,1.5,2.0]))
2780         mcart.setCoordsAt(1, DataArrayDouble([1.0,2.5,3.0,4.0]))
2781         m = mcart.buildUnstructured()
2782         m2 = m[1:m.getNumberOfCells()]
2783         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 0, eps)
2784         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 1, eps)
2785         self.assertRaises(InterpKernelException, m.checkDeepEquivalWith, m2, 2, eps)
2786         pass
2787
2788     def testSwig2CheckDeepEquivalWith2(self):
2789         eps = 1.0e-8
2790         m = MEDCouplingUMesh("tst", 2)
2791         m.setCoords(DataArrayDouble([], 0,2))
2792         m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
2793         m2 = m.deepCpy()
2794         m.checkDeepEquivalWith(m2, 0, eps)  # Should not raise!
2795         pass
2796
2797     def testCopyTinyStringsFromOnFields(self):
2798         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2799         nbOfCells=m.getNumberOfCells();
2800         f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2801         f.setMesh(m);
2802         self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2803         f.setName("a");
2804         f.setDescription("b");
2805         a1=DataArrayDouble.New();
2806         a1.alloc(nbOfCells,2);
2807         a1.fillWithZero();
2808         a1.setInfoOnComponent(0,"c");
2809         a1.setInfoOnComponent(1,"d");
2810         a2=a1.deepCpy();
2811         a2.setInfoOnComponent(0,"e");
2812         a2.setInfoOnComponent(1,"f");
2813         f.setArray(a1);
2814         f.setEndArray(a2);
2815         f.setEndTime(3.,3,4);
2816         m.setName("g");
2817         m.getCoords().setInfoOnComponent(0,"h");
2818         m.getCoords().setInfoOnComponent(1,"i");
2819         m.getCoords().setInfoOnComponent(2,"j");
2820         #
2821         f.checkCoherency();
2822         f2=f.clone(True);
2823         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2824         f2.setName("smth");
2825         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2826         f2.copyTinyStringsFrom(f);
2827         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2828         f2.setDescription("GGG");
2829         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2830         f2.copyTinyStringsFrom(f);
2831         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2832         f2.getArray().setInfoOnComponent(0,"mmmm");
2833         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2834         f2.copyTinyStringsFrom(f);
2835         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2836         f2.getEndArray().setInfoOnComponent(1,"mmmm");
2837         self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2838         f2.copyTinyStringsFrom(f);
2839         self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2840         m2=m.clone(True);
2841         self.assertTrue(m2.isEqual(m,1e-12));
2842         m2.setName("123");
2843         self.assertTrue(not m2.isEqual(m,1e-12));
2844         m2.copyTinyStringsFrom(m);
2845         self.assertTrue(m2.isEqual(m,1e-12));
2846         m2.getCoords().setInfoOnComponent(1,"eee");
2847         self.assertTrue(not m2.isEqual(m,1e-12));
2848         m2.copyTinyStringsFrom(m);
2849         self.assertTrue(m2.isEqual(m,1e-12));
2850         pass
2851
2852     def testTryToShareSameCoordsPermute(self):
2853         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2854         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2855         #self.assertTrue(m.getCoords()!=m2.getCoords());
2856         m.tryToShareSameCoordsPermute(m2,1e-12);
2857         #self.assertTrue(m.getCoords()==m2.getCoords());
2858         self.assertTrue(m2.isEqual(m,1e-12));
2859         renum1=[1,2,0,5,8,7,4,3,6]
2860         r1=DataArrayInt.New()
2861         r1.setValues(renum1,len(renum1),1)
2862         m.renumberNodes(r1,9);
2863         #self.assertTrue(m.getCoords()!=m2.getCoords());
2864         self.assertTrue(not m2.isEqual(m,1e-12));
2865         m.tryToShareSameCoordsPermute(m2,1e-12);
2866         #self.assertTrue(m.getCoords()==m2.getCoords());
2867         self.assertTrue(m2.isEqual(m,1e-12));
2868         pass
2869
2870     def testTryToShareSameCoordsPermute2(self):
2871         m1=MEDCouplingDataForTest.build2DTargetMesh_4();
2872         targetCoords=[-0.3,-0.3, 0.2,-0.3, -0.3,0.2, 0.2,0.2 ]
2873         targetConn=[0,2,3,1]
2874         m2=MEDCouplingUMesh.New();
2875         m2.setMeshDimension(2);
2876         m2.allocateCells(1);
2877         m2.insertNextCell(NORM_QUAD4,targetConn[0:4])
2878         m2.finishInsertingCells();
2879         myCoords=DataArrayDouble.New();
2880         myCoords.setValues(targetCoords,4,2);
2881         m2.setCoords(myCoords);
2882         m2.checkCoherency();
2883         m1.checkCoherency();
2884         #
2885         expected1=[0.25,0.125,0.125,0.25,0.25]
2886         f1=m1.getMeasureField(False);
2887         f2=m2.getMeasureField(False);
2888         self.assertEqual(5,f1.getArray().getNumberOfTuples());
2889         self.assertEqual(1,f2.getArray().getNumberOfTuples());
2890         for i in xrange(5):
2891             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2892             pass
2893         self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2894         self.assertRaises(InterpKernelException,m1.tryToShareSameCoordsPermute,m2,1e-12);# <- here in this order the sharing is impossible.
2895         # Let's go for deeper test of tryToShareSameCoordsPermute
2896         m2.tryToShareSameCoordsPermute(m1,1e-12);
2897         f1=m1.getMeasureField(False);
2898         f2=m2.getMeasureField(False);
2899         self.assertEqual(5,f1.getArray().getNumberOfTuples());
2900         self.assertEqual(1,f2.getArray().getNumberOfTuples());
2901         for i in xrange(5):
2902             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2903             pass
2904         self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2905         pass
2906
2907     def testChangeUnderlyingMesh1(self):
2908         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2909         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2910         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2911         f1.setMesh(mesh1);
2912         array=DataArrayDouble.New();
2913         arr=[7., 107., 8., 108., 9., 109., 10., 110., 11., 111., 12., 112., 13., 113., 14., 114., 15., 115., 16., 116.]
2914         array.setValues(arr,mesh1.getNumberOfCells(),2);
2915         f1.setArray(array);
2916         #
2917         renum=[0,2,1,3,4,5,6,8,7,9]
2918         mesh2.renumberCells(renum,False);
2919         #self.assertTrue(f1.getMesh()==mesh1);
2920         f1.changeUnderlyingMesh(mesh1,10,1e-12);# nothing done only to check that nothing done.
2921         #self.assertTrue(f1.getMesh()==mesh1);
2922         f1.changeUnderlyingMesh(mesh2,10,1e-12);
2923         #self.assertTrue(f1.getMesh()==mesh2);
2924         expected1=[7.,107.,9.,109.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.]
2925         for i in xrange(20):
2926             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
2927             pass
2928         #
2929         f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2930         f1.setMesh(mesh1);
2931         array=DataArrayDouble.New();
2932         arr2=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.,17.,117.]
2933         array.setValues(arr2,mesh1.getNumberOfNodes(),2);
2934         f1.setArray(array);
2935         #
2936         renum2=[0,2,10,3,4,5,6,8,7,9,1]
2937         mesh2.renumberNodes(renum2,11);
2938         #self.assertTrue(f1.getMesh()==mesh1);
2939         f1.changeUnderlyingMesh(mesh2,10,1e-12);
2940         #self.assertTrue(f1.getMesh()==mesh2);
2941         expected2=[7.,107.,17.,117.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.,9.,109.]
2942         for i in xrange(22):
2943             self.assertAlmostEqual(expected2[i],f1.getArray().getIJ(0,i),12);
2944             pass
2945         pass
2946
2947     def testGetMaxValue1(self):
2948         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2949         nbOfCells=m.getNumberOfCells();
2950         f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2951         f.setMesh(m);
2952         a1=DataArrayDouble.New();
2953         val1=[3.,4.,5.,6.,7.]
2954         a1.setValues(val1,nbOfCells,1);
2955         a2=DataArrayDouble.New();
2956         val2=[0.,1.,2.,8.,7.]
2957         a2.setValues(val2,nbOfCells,1);
2958         f.setArray(a1);
2959         f.setEndArray(a2);
2960         f.setEndTime(3.,3,4);
2961         f.checkCoherency();
2962         #
2963         self.assertAlmostEqual(8.,f.getMaxValue(),14);
2964         self.assertAlmostEqual(0.,f.getMinValue(),14);
2965         self.assertAlmostEqual(5.,f.getAverageValue(),14);
2966         self.assertAlmostEqual(5.125,f.getWeightedAverageValue(0,True),14);
2967         a1.setIJ(0,2,9.5);
2968         self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2969         self.assertAlmostEqual(0.,f.getMinValue(),14);
2970         a2.setIJ(0,0,9.);
2971         self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2972         self.assertAlmostEqual(1.,f.getMinValue(),14);
2973         pass
2974
2975     def testSubstractInPlaceDM1(self):
2976         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2977         mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2978         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2979         f1.setMesh(mesh1);
2980         array=DataArrayDouble.New();
2981         arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
2982         array.setValues(arr,mesh1.getNumberOfCells(),2);
2983         f1.setArray(array);
2984         #
2985         self.assertEqual(10,f1.getNumberOfTuples());
2986         self.assertEqual(2,f1.getNumberOfComponents());
2987         self.assertEqual(20,f1.getNumberOfValues());
2988         #
2989         renum=[0,2,3,1,4,5,6,8,7,9]
2990         mesh2.renumberCells(renum,False);
2991         #
2992         f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2993         f2.setMesh(mesh2);
2994         array=DataArrayDouble.New();
2995         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]
2996         array.setValues(arr2,mesh2.getNumberOfCells(),2);
2997         f2.setArray(array);
2998         #
2999         f1.substractInPlaceDM(f2,10,1e-12);
3000         f1.applyFunc(1,"abs(x+y+0.2)");
3001         self.assertAlmostEqual(0.,f1.getMaxValue(),13);
3002         pass
3003
3004     def testDotCrossProduct1(self):
3005         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3006         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3007         f1.setTime(2.3,5,6);
3008         f1.setMesh(mesh1);
3009         array=DataArrayDouble.New();
3010         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.]
3011         array.setValues(arr1,mesh1.getNumberOfCells(),3);
3012         f1.setArray(array);
3013         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3014         f2.setTime(7.8,4,5);
3015         f2.setMesh(mesh1);
3016         array=DataArrayDouble.New();
3017         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.]
3018         array.setValues(arr2,mesh1.getNumberOfCells(),3);
3019         f2.setArray(array);
3020         #
3021         f3=f1.dot(f2);
3022         expected1=[842.,1820.,2816.,3830.,4862.,5912.,6980.,8066.,9170.,10292.]
3023         for i in xrange(10):
3024             self.assertAlmostEqual(expected1[i],f3.getIJ(i,0),9);
3025             pass
3026         #
3027         f4=f1.crossProduct(f2);
3028         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.]
3029         for i in xrange(30):
3030             self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
3031             pass
3032         pass
3033
3034     def testMinMaxFields1(self):
3035         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3036         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3037         f1.setTime(2.3,5,6);
3038         f1.setMesh(mesh1);
3039         array=DataArrayDouble.New();
3040         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.]
3041         array.setValues(arr1,mesh1.getNumberOfCells(),3);
3042         f1.setArray(array);
3043         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3044         f2.setTime(7.8,4,5);
3045         f2.setMesh(mesh1);
3046         array=DataArrayDouble.New();
3047         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.]
3048         array.setValues(arr2,mesh1.getNumberOfCells(),3);
3049         f2.setArray(array);
3050         #
3051         f3=f1.max(f2);
3052         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.]
3053         for i in xrange(30):
3054             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),9);
3055             pass
3056         #
3057         f4=f1.min(f2);
3058         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.]
3059         for i in xrange(30):
3060             self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
3061             pass
3062         #
3063         pass
3064
3065     def testApplyLin1(self):
3066         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3067         f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
3068         f1.setMesh(mesh1);
3069         array=DataArrayDouble.New();
3070         arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
3071         array.setValues(arr,mesh1.getNumberOfCells(),2);
3072         f1.setArray(array);
3073         #
3074         f1.applyLin(2.,3.,0);
3075         expected1=[17.,107.,19.,108.,21.,109.,23.,110.,25.,111.,27.,112.,29.,113.,31.,114.,33.,115.,35.,116.]
3076         for i in xrange(20):
3077             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),9);
3078             pass
3079         #
3080         arr2=[2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3081         array=DataArrayDouble.New();
3082         array.setValues(arr2,mesh1.getNumberOfCells(),2);
3083         f1.setEndArray(array);
3084         #
3085         f1.applyLin(4.,5.,1);
3086         #
3087         expected2=[17.,433.,19.,437.,21.,441.,23.,445.,25.,449.,27.,453.,29.,457.,31.,461.,33.,465.,35.,469.]
3088         for i in xrange(20):
3089             self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),9);
3090             pass
3091         expected3=[2.,413.,3.,417.,4.,421.,5.,425.,6.,429.,7.,433.,8.,437.,9.,441.,10.,445.,11.,449.]
3092         for i in xrange(20):
3093             self.assertAlmostEqual(expected3[i],f1.getEndArray().getIJ(0,i),9);
3094             pass
3095         #
3096         pass
3097
3098     def testGetIdsInRange1(self):
3099         mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3100         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3101         f1.setTime(2.3,5,6);
3102         f1.setMesh(mesh1);
3103         array=DataArrayDouble.New();
3104         arr1=[2.,8.,6.,5.,11.,7.,9.,3.,10.,4.]
3105         array.setValues(arr1,mesh1.getNumberOfCells(),1);
3106         f1.setArray(array);
3107         #
3108         f1.checkCoherency();
3109         da=f1.getIdsInRange(2.9,7.1);
3110         self.failUnlessEqual(5,da.getNbOfElems());
3111         expected1=[2,3,5,7,9]
3112         self.failUnlessEqual(expected1,list(da.getValues()));
3113         da=f1.getIdsInRange(8.,12.);
3114         self.failUnlessEqual(4,da.getNbOfElems());
3115         expected2=[1,4,6,8]
3116         self.failUnlessEqual(expected2,list(da.getValues()));
3117         #
3118         pass
3119
3120     def testBuildSubPart1(self):
3121         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3122         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3123         f1.setTime(2.3,5,6);
3124         f1.setMesh(mesh1);
3125         array=DataArrayDouble.New();
3126         arr1=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.]
3127         array.setValues(arr1,mesh1.getNumberOfCells(),2);
3128         f1.setArray(array);
3129         #
3130         part1=[2,1,4]
3131         f2=f1[part1];
3132         f2.zipCoords()
3133         self.failUnlessEqual(3,f2.getNumberOfTuples());
3134         self.failUnlessEqual(2,f2.getNumberOfComponents());
3135         expected1=[5.,105.,4.,104.,7.,107.]
3136         for i in xrange(6):
3137             self.assertAlmostEqual(f2.getIJ(0,i),expected1[i],12);
3138             pass
3139         self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3140         self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3141         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3142         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3143         m2C=f2.getMesh();
3144         self.failUnlessEqual(13,m2C.getMeshLength());
3145         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]
3146         for i in xrange(12):
3147             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3148             pass
3149         expected3=[3,2,3,1,3,0,2,1,4,4,5,3,2]
3150         self.failUnlessEqual(expected3,list(m2C.getNodalConnectivity().getValues()));
3151         expected4=[0,4,8,13]
3152         self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3153         # Test with field on nodes.
3154         f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3155         f1.setTime(2.3,5,6);
3156         f1.setMesh(mesh1);
3157         array=DataArrayDouble.New();
3158         arr2=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3159         array.setValues(arr2,mesh1.getNumberOfNodes(),2);
3160         f1.setArray(array);
3161         part2=[1,2]
3162         f2=f1.buildSubPart(part2);
3163         self.failUnlessEqual(4,f2.getNumberOfTuples());
3164         self.failUnlessEqual(2,f2.getNumberOfComponents());
3165         expected5=[4.,104.,5.,105.,7.,107.,8.,108.]
3166         for i in xrange(8):
3167             self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3168             pass
3169         self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3170         self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3171         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3172         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3173         m2C=f2.getMesh();
3174         self.failUnlessEqual(8,m2C.getMeshLength());
3175         for i in xrange(8):#8 is not an error
3176             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3177             pass
3178         self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:]);
3179         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3180         self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3181         #idem previous because nodes of cell#4 are not fully present in part3
3182         part3=[1,2]
3183         arrr=DataArrayInt.New();
3184         arrr.setValues(part3,2,1);
3185         f2=f1.buildSubPart(arrr);
3186         self.failUnlessEqual(4,f2.getNumberOfTuples());
3187         self.failUnlessEqual(2,f2.getNumberOfComponents());
3188         for i in xrange(8):
3189             self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3190             pass
3191         self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3192         self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3193         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3194         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3195         m2C=f2.getMesh();
3196         self.failUnlessEqual(8,m2C.getMeshLength());
3197         for i in xrange(8):#8 is not an error
3198             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3199             pass
3200         self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3201         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3202         self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3203         #
3204         part4=[1,2,4]
3205         f2=f1.buildSubPart(part4);
3206         self.failUnlessEqual(6,f2.getNumberOfTuples());
3207         self.failUnlessEqual(2,f2.getNumberOfComponents());
3208         expected6=[4.,104.,5.,105.,7.,107.,8.,108.,10.,110.,11.,111.]
3209         for i in xrange(12):
3210             self.assertAlmostEqual(f2.getIJ(0,i),expected6[i],12);
3211             pass
3212         self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3213         self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3214         self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3215         self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3216         m2C=f2.getMesh();
3217         self.failUnlessEqual(13,m2C.getMeshLength());
3218         for i in xrange(12):
3219             self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3220             pass
3221         self.failUnlessEqual(expected3[0:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3222         self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[0:4]);
3223         self.failUnlessEqual(expected3[8:13],list(m2C.getNodalConnectivity().getValues())[8:13]);
3224         self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3225         pass
3226
3227     def testDoublyContractedProduct1(self):
3228         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3229         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3230         f1.setMesh(mesh1);
3231         array=DataArrayDouble.New();
3232         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]
3233         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3234         f1.setArray(array);
3235         f1.checkCoherency();
3236         #
3237         f2=f1.doublyContractedProduct();
3238         f2.checkCoherency();
3239         self.assertEqual(1,f2.getNumberOfComponents());
3240         self.assertEqual(5,f2.getNumberOfTuples());
3241         for i in xrange(5):
3242             self.assertAlmostEqual(3906.56,f2.getIJ(i,0),9);
3243             pass
3244         #
3245         pass
3246
3247     def testDeterminant1(self):
3248         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3249         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
3250         f1.setTime(2.3,5,6);
3251         f1.setEndTime(3.8,7,3);
3252         f1.setMesh(mesh1);
3253         array=DataArrayDouble.New();
3254         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]
3255         array.setValues(arr1,mesh1.getNumberOfCells(),4);
3256         f1.setArray(array);
3257         #4 components
3258         f1.checkCoherency();
3259         f2=f1.determinant();
3260         f2.checkCoherency();
3261         self.assertEqual(CONST_ON_TIME_INTERVAL,f2.getTimeDiscretization());
3262         self.assertEqual(1,f2.getNumberOfComponents());
3263         self.assertEqual(5,f2.getNumberOfValues());
3264         for i in xrange(5):
3265             self.assertAlmostEqual(-2.42,f2.getIJ(i,0),13);
3266             pass
3267         #6 components multi arrays with end array not defined
3268         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3269         f1.setTime(2.3,5,6);
3270         f1.setEndTime(3.8,7,3);
3271         f1.setMesh(mesh1);
3272         array=DataArrayDouble.New();
3273         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,
3274               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]
3275         array.setValues(arr2,mesh1.getNumberOfNodes(),6);
3276         f1.setArray(array);
3277         self.assertRaises(InterpKernelException,f1.checkCoherency);#no end array specified !
3278         #
3279         f2=f1.determinant();
3280         self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3281         self.assertEqual(1,f2.getArray().getNumberOfComponents());
3282         self.assertEqual(9,f2.getNumberOfTuples());
3283         for i in xrange(9):
3284             self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3285             pass
3286         #6 components multi arrays with end array defined
3287         array=DataArrayDouble.New();
3288         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,
3289               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]
3290         array.setValues(arr3,mesh1.getNumberOfNodes(),6);
3291         f1.setEndArray(array);
3292         f1.checkCoherency();
3293         f2=f1.determinant();
3294         f2.checkCoherency();
3295         self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3296         self.assertEqual(1,f2.getNumberOfComponents());
3297         self.assertEqual(9,f2.getNumberOfTuples());
3298         time2,it,order=f2.getTime()
3299         self.assertAlmostEqual(2.3,time2,12);
3300         self.assertEqual(5,it);
3301         self.assertEqual(6,order);
3302         time2,it,order=f2.getEndTime()
3303         self.assertAlmostEqual(3.8,time2,12);
3304         self.assertEqual(7,it);
3305         self.assertEqual(3,order);
3306         for i in xrange(9):
3307             self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3308             self.assertAlmostEqual(1289.685,f2.getEndArray().getIJ(i,0),9);
3309             pass
3310         #9 components
3311         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3312         f1.setTime(7.8,10,2);
3313         f1.setMesh(mesh1);
3314         array=DataArrayDouble.New();
3315         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]
3316         array.setValues(arr4,mesh1.getNumberOfCells(),9);
3317         f1.setArray(array);
3318         #
3319         f1.checkCoherency();
3320         f2=f1.determinant();
3321         f2.checkCoherency();
3322         self.assertEqual(ONE_TIME,f2.getTimeDiscretization());
3323         self.assertEqual(1,f2.getNumberOfComponents());
3324         self.assertEqual(5,f2.getNumberOfTuples());
3325         time2,it,order=f2.getTime()
3326         self.assertAlmostEqual(7.8,time2,12);
3327         self.assertEqual(10,it);
3328         self.assertEqual(2,order);
3329         for i in xrange(5):
3330             self.assertAlmostEqual(3.267,f2.getIJ(i,0),13);
3331             pass
3332         pass
3333
3334     def testEigenValues1(self):
3335         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3336         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3337         f1.setMesh(mesh1);
3338         array=DataArrayDouble.New();
3339         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]
3340         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3341         f1.setArray(array);
3342         f1.checkCoherency();
3343         #
3344         f2=f1.eigenValues();
3345         f2.checkCoherency();
3346         self.assertEqual(3,f2.getNumberOfComponents());
3347         self.assertEqual(5,f2.getNumberOfTuples());
3348         expected1=[13.638813677891717,-4.502313844635971,-2.2364998332557486]
3349         for i in xrange(5):
3350             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3351             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3352             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3353             pass
3354         pass
3355
3356     def testEigenVectors1(self):
3357         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3358         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3359         f1.setMesh(mesh1);
3360         array=DataArrayDouble.New();
3361         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]
3362         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3363         f1.setArray(array);
3364         f1.checkCoherency();
3365         #
3366         f2=f1.eigenVectors();
3367         f2.checkCoherency();
3368         self.assertEqual(9,f2.getNumberOfComponents());
3369         self.assertEqual(5,f2.getNumberOfTuples());
3370         expected1=[0.5424262364180696, 0.5351201064614425, 0.6476266283176001,#eigenvect 0
3371                    0.7381111277307373, 0.06458838384003074, -0.6715804522117897,#eigenvect 1
3372                    -0.4012053603397987, 0.8423032781211455, -0.3599436712889738#eigenvect 2
3373                    ]
3374         for i in xrange(5):
3375             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3376             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3377             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3378             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3379             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3380             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3381             self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3382             self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3383             self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3384             pass
3385         #
3386         pass
3387
3388     def testInverse1(self):
3389         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3390         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3391         f1.setMesh(mesh1);
3392         array=DataArrayDouble.New();
3393         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]
3394         array.setValues(arr1,mesh1.getNumberOfCells(),9);
3395         f1.setArray(array);
3396         f1.checkCoherency();
3397         #
3398         f2=f1.inverse();
3399         f2.checkCoherency();
3400         self.assertEqual(9,f2.getNumberOfComponents());
3401         self.assertEqual(5,f2.getNumberOfTuples());
3402         expected1=[-2.6538108356290113, 2.855831037649208, -1.1111111111111067, 3.461891643709813, -4.775022956841121, 2.2222222222222143, -1.1111111111111054, 2.222222222222214, -1.1111111111111072]
3403         for i in xrange(5):
3404             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3405             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3406             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3407             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3408             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3409             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3410             self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3411             self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3412             self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3413             pass
3414         #
3415         array=DataArrayDouble.New();
3416         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]
3417         array.setValues(arr3,mesh1.getNumberOfCells(),6);
3418         f1.setArray(array);
3419         f1.checkCoherency();
3420         #
3421         f2=f1.inverse();
3422         f2.checkCoherency();
3423         self.assertEqual(6,f2.getNumberOfComponents());
3424         self.assertEqual(5,f2.getNumberOfTuples());
3425         expected3=[-0.3617705098531818, -0.8678630828458127, -0.026843764174972983, 0.5539957431465833, 0.13133439560823013, -0.05301294502145887]
3426         for i in xrange(5):
3427             self.assertAlmostEqual(expected3[0],f2.getIJ(i,0),13);
3428             self.assertAlmostEqual(expected3[1],f2.getIJ(i,1),13);
3429             self.assertAlmostEqual(expected3[2],f2.getIJ(i,2),13);
3430             self.assertAlmostEqual(expected3[3],f2.getIJ(i,3),13);
3431             self.assertAlmostEqual(expected3[4],f2.getIJ(i,4),13);
3432             self.assertAlmostEqual(expected3[5],f2.getIJ(i,5),13);
3433             pass
3434         #
3435         array=DataArrayDouble.New();
3436         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]
3437         array.setValues(arr2,mesh1.getNumberOfCells(),4);
3438         f1.setArray(array);
3439         f1.checkCoherency();
3440         #
3441         f2=f1.inverse();
3442         f2.checkCoherency();
3443         self.assertEqual(4,f2.getNumberOfComponents());
3444         self.assertEqual(5,f2.getNumberOfTuples());
3445         expected2=[-1.8595041322314059, 0.9504132231404963, 1.404958677685951, -0.49586776859504156]
3446         for i in xrange(5):
3447             self.assertAlmostEqual(expected2[0],f2.getIJ(i,0),13);
3448             self.assertAlmostEqual(expected2[1],f2.getIJ(i,1),13);
3449             self.assertAlmostEqual(expected2[2],f2.getIJ(i,2),13);
3450             self.assertAlmostEqual(expected2[3],f2.getIJ(i,3),13);
3451             pass
3452         #
3453         pass
3454
3455     def testTrace1(self):
3456         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3457         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3458         f1.setMesh(mesh1);
3459         array=DataArrayDouble.New();
3460         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]
3461         array.setValues(arr1,mesh1.getNumberOfCells(),9);
3462         f1.setArray(array);
3463         f1.checkCoherency();
3464         #
3465         f2=f1.trace();
3466         f2.checkCoherency();
3467         self.assertEqual(1,f2.getNumberOfComponents());
3468         self.assertEqual(5,f2.getNumberOfTuples());
3469         for i in xrange(5):
3470             self.assertAlmostEqual(15.9,f2.getIJ(i,0),13);
3471             pass
3472         #
3473         array=DataArrayDouble.New();
3474         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]
3475         array.setValues(arr3,mesh1.getNumberOfCells(),6);
3476         f1.setArray(array);
3477         f1.checkCoherency();
3478         #
3479         f2=f1.trace();
3480         f2.checkCoherency();
3481         self.assertEqual(1,f2.getNumberOfComponents());
3482         self.assertEqual(5,f2.getNumberOfTuples());
3483         for i in xrange(5):
3484             self.assertAlmostEqual(25.8,f2.getIJ(i,0),13);
3485             pass
3486         #
3487         array=DataArrayDouble.New();
3488         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]
3489         array.setValues(arr2,mesh1.getNumberOfCells(),4);
3490         f1.setArray(array);
3491         f1.checkCoherency();
3492         #
3493         f2=f1.trace();
3494         f2.checkCoherency();
3495         self.assertEqual(1,f2.getNumberOfComponents());
3496         self.assertEqual(5,f2.getNumberOfTuples());
3497         for i in xrange(5):
3498             self.assertAlmostEqual(5.7,f2.getIJ(i,0),13);
3499             pass
3500         #
3501         pass
3502
3503     def testDeviator1(self):
3504         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3505         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3506         f1.setMesh(mesh1);
3507         array=DataArrayDouble.New();
3508         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]
3509         array.setValues(arr1,mesh1.getNumberOfCells(),6);
3510         f1.setArray(array);
3511         f1.checkCoherency();
3512         #
3513         f2=f1.deviator();
3514         f2.checkCoherency();
3515         self.assertEqual(6,f2.getNumberOfComponents());
3516         self.assertEqual(5,f2.getNumberOfTuples());
3517         expected1=[-1.1,0.,1.1,4.5,5.6,6.7]
3518         for i in xrange(5):
3519             self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3520             self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3521             self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3522             self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3523             self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3524             self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3525             pass
3526         #
3527         pass
3528
3529     def testMagnitude1(self):
3530         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3531         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3532         f1.setMesh(mesh1);
3533         array=DataArrayDouble.New();
3534         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]
3535         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3536         f1.setArray(array);
3537         f1.checkCoherency();
3538         #
3539         f2=f1.magnitude();
3540         f2.checkCoherency();
3541         self.assertEqual(1,f2.getNumberOfComponents());
3542         self.assertEqual(5,f2.getNumberOfTuples());
3543         for i in xrange(5):
3544             self.assertAlmostEqual(8.3606219864313918,f2.getIJ(i,0),13);
3545             pass
3546         #
3547         pass
3548
3549     def testMaxPerTuple1(self):
3550         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3551         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3552         f1.setMesh(mesh1);
3553         array=DataArrayDouble.New();
3554         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]
3555         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3556         f1.setArray(array);
3557         f1.checkCoherency();
3558         #
3559         f2=f1.maxPerTuple();
3560         f2.checkCoherency();
3561         self.assertEqual(1,f2.getNumberOfComponents());
3562         self.assertEqual(5,f2.getNumberOfTuples());
3563         for i in xrange(5):
3564             self.assertAlmostEqual(5.6,f2.getIJ(i,0),13);
3565             pass
3566         #
3567         d2,d2I=array.maxPerTupleWithCompoId()
3568         self.assertEqual(1,d2.getNumberOfComponents());
3569         self.assertEqual(5,d2.getNumberOfTuples());
3570         for i in xrange(5):
3571             self.assertAlmostEqual(5.6,d2.getIJ(i,0),13);
3572             pass
3573         self.assertTrue(d2I.isEqual(DataArrayInt([4,3,2,0,1])))
3574         pass
3575
3576     def testChangeNbOfComponents(self):
3577         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3578         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3579         f1.setMesh(mesh1);
3580         array=DataArrayDouble.New();
3581         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]
3582         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3583         f1.setArray(array);
3584         f1.checkCoherency();
3585         #
3586         f1.changeNbOfComponents(3,7.77);
3587         f1.checkCoherency();
3588         self.assertEqual(3,f1.getNumberOfComponents());
3589         self.assertEqual(5,f1.getNumberOfTuples());
3590         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]
3591         for i in xrange(15):
3592             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),13);
3593             pass
3594         f1.changeNbOfComponents(4,7.77);
3595         f1.checkCoherency();
3596         self.assertEqual(4,f1.getNumberOfComponents());
3597         self.assertEqual(5,f1.getNumberOfTuples());
3598         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]
3599         for i in xrange(20):
3600             self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),13);
3601             pass
3602         #
3603         pass
3604
3605     def testSortPerTuple1(self):
3606         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3607         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3608         f1.setMesh(mesh1);
3609         array=DataArrayDouble.New();
3610         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]
3611         array.setValues(arr1,mesh1.getNumberOfCells(),5);
3612         f1.setArray(array);
3613         f1.checkCoherency();
3614         #
3615         f1.sortPerTuple(True);
3616         f1.checkCoherency();
3617         self.assertEqual(5,f1.getNumberOfComponents());
3618         self.assertEqual(5,f1.getNumberOfTuples());
3619         for i in xrange(5):
3620             self.assertAlmostEqual(arr1[0],f1.getIJ(i,0),13);
3621             self.assertAlmostEqual(arr1[1],f1.getIJ(i,1),13);
3622             self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3623             self.assertAlmostEqual(arr1[3],f1.getIJ(i,3),13);
3624             self.assertAlmostEqual(arr1[4],f1.getIJ(i,4),13);
3625             pass
3626         #
3627         f1.sortPerTuple(False);
3628         f1.checkCoherency();
3629         self.assertEqual(5,f1.getNumberOfComponents());
3630         self.assertEqual(5,f1.getNumberOfTuples());
3631         for i in xrange(5):
3632             self.assertAlmostEqual(arr1[4],f1.getIJ(i,0),13);
3633             self.assertAlmostEqual(arr1[3],f1.getIJ(i,1),13);
3634             self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3635             self.assertAlmostEqual(arr1[1],f1.getIJ(i,3),13);
3636             self.assertAlmostEqual(arr1[0],f1.getIJ(i,4),13);
3637             pass
3638         #
3639         pass
3640
3641     def testIsEqualWithoutConsideringStr1(self):
3642         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3643         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
3644         #
3645         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3646         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3647         mesh2.setName("rr");
3648         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3649         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3650         da1,da2=mesh1.checkGeoEquivalWith(mesh2,2,1e-12);
3651         self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);
3652         mesh2.setName("");
3653         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3654         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3655         mesh2.getCoords().setInfoOnComponent(0,"tty");
3656         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3657         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3658         mesh2.getCoords().setInfoOnComponent(0,"");
3659         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3660         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3661         mesh2.getCoords().setInfoOnComponent(1,"tty");
3662         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3663         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3664         mesh2.getCoords().setInfoOnComponent(1,"");
3665         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3666         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3667         tmp=mesh2.getCoords().getIJ(0,3);
3668         mesh2.getCoords().setIJ(0,3,9999.);
3669         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3670         self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3671         mesh2.getCoords().setIJ(0,3,tmp);
3672         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3673         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3674         tmp2=mesh2.getNodalConnectivity().getIJ(0,4);
3675         mesh2.getNodalConnectivity().setIJ(0,4,0);
3676         self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3677         self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3678         mesh2.getNodalConnectivity().setIJ(0,4,tmp2);
3679         self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3680         self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3681         #
3682         f1=mesh1.getMeasureField(True);
3683         f2=mesh2.getMeasureField(True);
3684         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3685         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3686         f2.setName("ftest");
3687         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3688         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3689         f1.setName("ftest");
3690         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3691         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3692         #
3693         f2.getArray().setInfoOnComponent(0,"eee");
3694         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3695         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3696         f2.getArray().setInfoOnComponent(0,"");
3697         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3698         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3699         #
3700         f2.getArray().setIJ(1,0,0.123);
3701         self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3702         self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3703         f2.getArray().setIJ(1,0,0.125);
3704         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3705         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3706         #
3707         pass
3708     
3709     def testGetNodeIdsOfCell1(self):
3710         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3711         li=mesh1.getNodeIdsOfCell(1)
3712         expected1=[1, 4, 2]
3713         self.assertEqual(expected1,list(li))
3714         li=mesh1.getCoordinatesOfNode(4)
3715         self.assertEqual(2,len(li))
3716         self.assertAlmostEqual(0.2,li[0],13);
3717         self.assertAlmostEqual(0.2,li[1],13);
3718         li=mesh1.getCoords().getValuesAsTuple()
3719         self.assertEqual(9,len(li))
3720         li2=mesh1.getNodalConnectivityIndex().getValuesAsTuple()
3721         self.assertEqual(6,len(li2))
3722         pass
3723
3724     def testGetEdgeRatioField1(self):
3725         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3726         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
3727         f1=m1.getEdgeRatioField();
3728         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
3729         self.assertEqual("us",f1.getTimeUnit())
3730         self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3731         self.assertEqual(5,f1.getNumberOfTuples());
3732         self.assertEqual(1,f1.getNumberOfComponents());
3733         expected1=[1.,1.4142135623730951, 1.4142135623730951,1.,1.]
3734         for i in xrange(5):
3735             self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),14);
3736             pass
3737         #
3738         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
3739         f1=m1.getEdgeRatioField();
3740         self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3741         self.assertEqual(5,f1.getNumberOfTuples());
3742         self.assertEqual(1,f1.getNumberOfComponents());
3743         expected2=[1.4142135623730951, 1.7320508075688772, 1.7320508075688772, 1.4142135623730951, 1.4142135623730951]
3744         for i in xrange(5):
3745             self.assertAlmostEqual(expected2[i],f1.getIJ(i,0),14);
3746             pass
3747         pass
3748
3749     def testFillFromAnalytic3(self):
3750         m=MEDCouplingDataForTest.build2DTargetMesh_1()
3751         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME)
3752         self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"y+x");
3753         f1.setMesh(m)
3754         f1.setName("myField");
3755         f1.fillFromAnalytic(1,"y+x");
3756         f1.checkCoherency();
3757         self.assertEqual(f1.getName(),"myField");
3758         self.assertEqual(f1.getTypeOfField(),ON_CELLS);
3759         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3760         self.assertEqual(1,f1.getNumberOfComponents());
3761         self.assertEqual(5,f1.getNumberOfTuples());
3762         values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
3763         tmp=f1.getArray().getValues();
3764         self.assertEqual(len(values1),len(tmp))
3765         for i in xrange(len(values1)):
3766             self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
3767             pass
3768         #
3769         f1=MEDCouplingFieldDouble.New(ON_NODES,CONST_ON_TIME_INTERVAL)
3770         f1.setMesh(m)
3771         f1.fillFromAnalytic(1,"y+2*x");
3772         f1.setEndTime(1.2,3,4);
3773         f1.checkCoherency();
3774         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3775         self.assertEqual(f1.getTimeDiscretization(),CONST_ON_TIME_INTERVAL);
3776         self.assertEqual(1,f1.getNumberOfComponents());
3777         self.assertEqual(9,f1.getNumberOfTuples());
3778         values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3779         tmp=f1.getArray().getValues();
3780         self.assertEqual(len(values2),len(tmp))
3781         for i in xrange(len(values2)):
3782             self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
3783             pass
3784         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3785         f1.setMesh(m)
3786         f1.fillFromAnalytic(1,"2.*x+y");
3787         f1.setEndTime(1.2,3,4);
3788         f1.checkCoherency();
3789         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3790         self.assertEqual(f1.getTimeDiscretization(),LINEAR_TIME);
3791         self.assertEqual(1,f1.getNumberOfComponents());
3792         self.assertEqual(9,f1.getNumberOfTuples());
3793         tmp=f1.getArray().getValues();
3794         values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3795         self.assertEqual(len(values2Bis),len(tmp))
3796         for i in xrange(len(values2Bis)):
3797             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3798             pass
3799         tmp=f1.getEndArray().getValues();
3800         self.assertEqual(len(values2Bis),len(tmp))
3801         for i in xrange(len(values2Bis)):
3802             self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3803             pass
3804         #
3805         f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3806         f1.setMesh(m)
3807         f1.fillFromAnalytic(2,"(x+y)*IVec+2*(x+y)*JVec");
3808         f1.checkCoherency();
3809         self.assertEqual(f1.getTypeOfField(),ON_NODES);
3810         self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3811         self.assertEqual(2,f1.getNumberOfComponents());
3812         self.assertEqual(9,f1.getNumberOfTuples());
3813         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]
3814         tmp=f1.getArray().getValues();
3815         self.assertEqual(len(values3),len(tmp))
3816         for i in xrange(len(values3)):
3817             self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
3818             pass
3819         values4=f1.accumulate();
3820         self.assertTrue(abs(3.6-values4[0])<1.e-12);
3821         self.assertTrue(abs(7.2-values4[1])<1.e-12);
3822         values4=f1.integral(True);
3823         self.assertTrue(abs(0.5-values4[0])<1.e-12);
3824         self.assertTrue(abs(1.-values4[1])<1.e-12);
3825         #
3826         f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
3827         f1.setMesh(m);
3828         self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"1./(x-0.2)");
3829         pass
3830
3831     def testFieldDoubleOpEqual1(self):
3832         m=MEDCouplingDataForTest.build2DTargetMesh_1();
3833         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3834         self.assertRaises(InterpKernelException,f1.assign,0.07);
3835         f1.setMesh(m);
3836         f1.assign(0.07);
3837         f1.checkCoherency();
3838         self.assertEqual(1,f1.getNumberOfComponents());
3839         self.assertEqual(5,f1.getNumberOfTuples());
3840         for i in xrange(5):
3841             self.assertAlmostEqual(0.07,f1.getIJ(i,0),16);
3842             pass
3843         f1.assign(0.09);
3844         f1.checkCoherency();
3845         self.assertEqual(1,f1.getNumberOfComponents());
3846         self.assertEqual(5,f1.getNumberOfTuples());
3847         for i in xrange(5):
3848             self.assertAlmostEqual(0.09,f1.getIJ(i,0),16);
3849             pass
3850         #
3851         f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3852         f1.setEndTime(4.5,2,3);
3853         f1.setMesh(m);
3854         f1.assign(0.08);
3855         f1.checkCoherency();
3856         self.assertEqual(1,f1.getNumberOfComponents());
3857         self.assertEqual(9,f1.getNumberOfTuples());
3858         for i in xrange(9):
3859             self.assertAlmostEqual(0.08,f1.getIJ(i,0),16);
3860             pass
3861         self.assertEqual(1,f1.getEndArray().getNumberOfComponents());
3862         self.assertEqual(9,f1.getEndArray().getNumberOfTuples());
3863         for i in xrange(9):
3864             self.assertAlmostEqual(0.08,f1.getEndArray().getIJ(i,0),16);
3865             pass
3866         pass
3867
3868     def testAreaBary3D2(self):
3869         coordsForHexa8=[-75.45749305371, 180.95495078401, 39.515472018008,
3870                         -9.755591679144, 23.394927935279, 5.108794294848,
3871                         14.337630157832, 61.705351002702, 160.42422501908,
3872                         -27.273893776752, 167.567731083961, 192.830034145464,
3873                         99.857193154796,264.499264735586,-8.287335493412,
3874                         144.939882761126,156.38626563134,-31.896173894226,
3875                         161.34096835726,182.4654895809,73.832387065572,
3876                         132.680430393685,255.37973247196,96.15235602819];
3877         volHexa8=3258520.29637466;
3878         baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644]
3879         
3880         coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588,
3881                          8.461744647847,76.653979804423,165.00018874933,
3882                          -27.273893776752,167.567731083961,192.830034145464,
3883                          106.586501038965,262.629609408327,13.124533008813,
3884                          155.465082847275,197.414118382622,78.408350795821,
3885                          132.680430393685,255.37973247196,96.15235602819];
3886         volPenta6=944849.868507338;
3887         baryPenta6=[39.631002313543,182.692711783428,106.98540473964]
3888         
3889         coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819,
3890                         -27.273893776752,167.567731083961,192.830034145464,
3891                         8.461744647847,76.653979804423,165.00018874933,
3892                         155.465082847275,197.414118382622,78.408350795821,
3893                         -68.199829618726,178.938498373416,62.608505919588];
3894         volPyra5=756943.92980254;
3895         baryPyra5=[29.204294116618,172.540129749156,118.01035951483]
3896         mesh=MEDCouplingUMesh.New("Bary3D2",3);
3897         coo=DataArrayDouble.New();
3898         tmp=coordsForHexa8+coordsForPenta6+coordsForPyra5
3899         coo.setValues(tmp,19,3);
3900         mesh.setCoords(coo);
3901         #
3902         tmpConn=[0,1,2,3,4,5,6,7]
3903         mesh.allocateCells(3);
3904         self.assertRaises(InterpKernelException,mesh.insertNextCell,NORM_HEXA8,9,tmpConn[0:8])
3905         mesh.insertNextCell(NORM_HEXA8,tmpConn[0:8])
3906         mesh.insertNextCell(NORM_PENTA6,6,[i+8 for i in tmpConn])
3907         mesh.insertNextCell(NORM_PYRA5,5,[i+14 for i in tmpConn])
3908         mesh.finishInsertingCells();
3909         mesh.checkCoherency();
3910         mesh.mergeNodes(1e-7)
3911         self.assertEqual(12,mesh.getNumberOfNodes());
3912         vols=mesh.getMeasureField(True);
3913         self.assertEqual(3,vols.getNumberOfTuples());
3914         self.assertEqual(1,vols.getNumberOfComponents());
3915         self.assertAlmostEqual(volHexa8,vols.getIJ(0,0),6);
3916         self.assertAlmostEqual(volPenta6,vols.getIJ(1,0),7);
3917         self.assertAlmostEqual(volPyra5,vols.getIJ(2,0),7);
3918         bary=mesh.getBarycenterAndOwner();
3919         self.assertEqual(3,bary.getNumberOfTuples());
3920         self.assertEqual(3,bary.getNumberOfComponents());
3921         self.assertAlmostEqual(baryHexa8[0],bary.getIJ(0,0),11);
3922         self.assertAlmostEqual(baryHexa8[1],bary.getIJ(0,1),11);
3923         self.assertAlmostEqual(baryHexa8[2],bary.getIJ(0,2),11);
3924         self.assertAlmostEqual(baryPenta6[0],bary.getIJ(1,0),11);
3925         self.assertAlmostEqual(baryPenta6[1],bary.getIJ(1,1),11);
3926         self.assertAlmostEqual(baryPenta6[2],bary.getIJ(1,2),11);
3927         self.assertAlmostEqual(baryPyra5[0],bary.getIJ(2,0),11);
3928         self.assertAlmostEqual(baryPyra5[1],bary.getIJ(2,1),11);
3929         self.assertAlmostEqual(baryPyra5[2],bary.getIJ(2,2),11);
3930         pass
3931
3932     def testGetMeasureFieldCMesh1(self):
3933         m=MEDCouplingCMesh.New();
3934         da=DataArrayDouble.New();
3935         discX=[2.3,3.4,5.8,10.2]
3936         discY=[12.3,23.4,45.8]
3937         discZ=[-0.7,1.2,1.25,2.13,2.67]
3938         da.setValues(discX,4,1);
3939         m.setCoordsAt(0,da);
3940         m.checkCoherency();
3941         self.assertEqual(4,m.getNumberOfNodes());
3942         self.assertEqual(3,m.getNumberOfCells());
3943         self.assertEqual(1,m.getSpaceDimension());
3944         f=m.getMeasureField(True);
3945         self.assertEqual(3,f.getNumberOfTuples());
3946         self.assertEqual(1,f.getNumberOfComponents());
3947         expected1=[1.1,2.4,4.4]
3948         for i in xrange(3):
3949             self.assertAlmostEqual(expected1[i],f.getIJ(i,0),12);
3950             pass
3951         coords=m.getCoordinatesAndOwner();
3952         self.assertEqual(4,coords.getNumberOfTuples());
3953         self.assertEqual(1,coords.getNumberOfComponents());
3954         for i in xrange(4):
3955             self.assertAlmostEqual(discX[i],coords.getIJ(i,0),12);
3956             pass
3957         coords=m.getBarycenterAndOwner();
3958         self.assertEqual(3,coords.getNumberOfTuples());
3959         self.assertEqual(1,coords.getNumberOfComponents());
3960         expected1_3=[2.85,4.6,8.]
3961         for i in xrange(3):
3962             self.assertAlmostEqual(expected1_3[i],coords.getIJ(i,0),12);
3963             pass
3964         #
3965         da=DataArrayDouble.New();
3966         da.setValues(discY,3,1);
3967         m.setCoordsAt(1,da);
3968         m.checkCoherency();
3969         self.assertEqual(12,m.getNumberOfNodes());
3970         self.assertEqual(6,m.getNumberOfCells());
3971         self.assertEqual(2,m.getSpaceDimension());
3972         f=m.getMeasureField(True);
3973         self.assertEqual(6,f.getNumberOfTuples());
3974         self.assertEqual(1,f.getNumberOfComponents());
3975         expected2=[12.21,26.64,48.84,24.64,53.76,98.56]
3976         for i in xrange(6):
3977             self.assertAlmostEqual(expected2[i],f.getIJ(i,0),12);
3978             pass
3979         coords=m.getCoordinatesAndOwner();
3980         self.assertEqual(12,coords.getNumberOfTuples());
3981         self.assertEqual(2,coords.getNumberOfComponents());
3982         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]
3983         for i in xrange(24):
3984             self.assertAlmostEqual(expected2_2[i],coords.getIJ(0,i),12);
3985             pass
3986         coords=m.getBarycenterAndOwner();
3987         self.assertEqual(6,coords.getNumberOfTuples());
3988         self.assertEqual(2,coords.getNumberOfComponents());
3989         expected2_3=[2.85,17.85,4.6,17.85,8.,17.85, 2.85,34.6,4.6,34.6,8.,34.6]
3990         for i in xrange(12):
3991             self.assertAlmostEqual(expected2_3[i],coords.getIJ(0,i),12);
3992             pass
3993         #
3994         da=DataArrayDouble.New();
3995         da.setValues(discZ,5,1);
3996         m.setCoordsAt(2,da);
3997         m.checkCoherency();
3998         self.assertEqual(60,m.getNumberOfNodes());
3999         self.assertEqual(24,m.getNumberOfCells());
4000         self.assertEqual(3,m.getSpaceDimension());
4001         f=m.getMeasureField(True);
4002         self.assertEqual(24,f.getNumberOfTuples());
4003         self.assertEqual(1,f.getNumberOfComponents());
4004         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]
4005         for i in xrange(24):
4006             self.assertAlmostEqual(expected3[i],f.getIJ(i,0),12);
4007             pass
4008         coords=m.getCoordinatesAndOwner();
4009         self.assertEqual(60,coords.getNumberOfTuples());
4010         self.assertEqual(3,coords.getNumberOfComponents());
4011         expected3_2=[
4012             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,
4013             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,
4014             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,
4015             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,
4016             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];
4017         for i in xrange(180):
4018             self.assertAlmostEqual(expected3_2[i],coords.getIJ(0,i),12);
4019             pass
4020         coords=m.getBarycenterAndOwner();
4021         self.assertEqual(24,coords.getNumberOfTuples());
4022         self.assertEqual(3,coords.getNumberOfComponents());
4023         expected3_3=[
4024             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,
4025             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,
4026             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,
4027             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];
4028         for i in xrange(72):
4029             self.assertAlmostEqual(expected3_3[i],coords.getIJ(0,i),12);
4030             pass
4031         pass
4032
4033     def testFieldDoubleZipCoords1(self):
4034         m=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
4035         f=m.fillFromAnalytic(ON_NODES,2,"x*2.");
4036         f.getArray().setInfoOnComponent(0,"titi");
4037         f.getArray().setInfoOnComponent(1,"tutu");
4038         f.checkCoherency();
4039         self.assertEqual(18,f.getNumberOfTuples());
4040         self.assertEqual(2,f.getNumberOfComponents());
4041         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]
4042         for i in xrange(36):
4043             self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4044             pass
4045         self.assertTrue(f.zipCoords());
4046         f.checkCoherency();
4047         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]
4048         for i in xrange(30):
4049             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4050             pass
4051         self.assertTrue(not f.zipCoords());
4052         f.checkCoherency();
4053         for i in xrange(30):
4054             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4055             pass
4056         self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4057         self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4058         pass
4059
4060     def testFieldDoubleZipConnectivity1(self):
4061         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4062         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
4063         cells1=[2,3,4]
4064         m3_1=m2.buildPartOfMySelf(cells1,True);
4065         m3=m3_1;
4066         m4=MEDCouplingDataForTest.build2DSourceMesh_1();
4067         m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
4068         m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
4069         #
4070         self.assertEqual(10,m6.getNumberOfCells());
4071         self.assertEqual(22,m6.getNumberOfNodes());
4072         arr,areNodesMerged,newNbOfNodes=m6.mergeNodes(1e-13);
4073         self.assertEqual(9,m6.getNumberOfNodes());
4074         f=m6.fillFromAnalytic(ON_CELLS,2,"x");
4075         f2=m6.fillFromAnalytic(ON_NODES,2,"x");
4076         self.assertEqual(10,f.getNumberOfTuples());
4077         self.assertEqual(2,f.getNumberOfComponents());
4078         expected1=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4079                    -0.05, -0.05, 0.45, 0.45, 0.53333333333333321, 0.53333333333333321, -0.05, -0.05, 0.45, 0.45,
4080                    0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4081         for i in xrange(20):
4082             self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4083             pass
4084         f.getArray().setInfoOnComponent(0,"titi");
4085         f.getArray().setInfoOnComponent(1,"tutu");
4086         f.checkCoherency();
4087         self.assertTrue(f.zipConnectivity(0));
4088         expected2=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4089                    -0.05, -0.05, 0.45, 0.45, 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4090         self.assertEqual(7,f.getNumberOfTuples());
4091         self.assertEqual(2,f.getNumberOfComponents());
4092         for i in xrange(14):
4093             self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4094             pass
4095         self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4096         self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4097         self.assertTrue(not f.zipConnectivity(0));
4098         #
4099         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,
4100                    -0.3, -0.3, 0.2, 0.2, 0.7, 0.7];
4101         self.assertEqual(9,f2.getNumberOfTuples());
4102         self.assertEqual(2,f2.getNumberOfComponents());
4103         for i in xrange(18):
4104             self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4105             pass
4106         self.assertTrue(f2.zipConnectivity(0));
4107         self.assertEqual(9,f2.getNumberOfTuples());
4108         self.assertEqual(2,f2.getNumberOfComponents());
4109         for i in xrange(18):
4110             self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4111             pass
4112         pass
4113
4114     def testDaDoubleRenumber1(self):
4115         a=DataArrayDouble.New();
4116         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]
4117         a.setValues(arr1,7,2);
4118         a.setInfoOnComponent(0,"toto");
4119         a.setInfoOnComponent(1,"tata");
4120         #
4121         arr2=[3,1,0,6,5,4,2]
4122         b=a.renumber(arr2);
4123         self.assertEqual(7,b.getNumberOfTuples());
4124         self.assertEqual(2,b.getNumberOfComponents());
4125         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4126         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4127         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]
4128         for i in xrange(14):
4129             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4130             pass
4131         #
4132         c=DataArrayInt.New();
4133         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4134         c.setValues(arr3,7,2);
4135         c.setInfoOnComponent(0,"toto");
4136         c.setInfoOnComponent(1,"tata");
4137         d=c.renumber(arr2);
4138         self.assertEqual(7,d.getNumberOfTuples());
4139         self.assertEqual(2,d.getNumberOfComponents());
4140         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4141         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4142         expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4143         for i in xrange(14):
4144             self.assertEqual(expected2[i],d.getIJ(0,i));
4145             pass
4146         pass
4147
4148     def testDaDoubleRenumberAndReduce1(self):
4149         a=DataArrayDouble.New();
4150         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]
4151         a.setValues(arr1,7,2);
4152         a.setInfoOnComponent(0,"toto");
4153         a.setInfoOnComponent(1,"tata");
4154         #
4155         arr2=[2,-1,1,-1,0,4,3]
4156         b=a.renumberAndReduce(arr2,5);
4157         self.assertEqual(5,b.getNumberOfTuples());
4158         self.assertEqual(2,b.getNumberOfComponents());
4159         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4160         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4161         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4162         for i in xrange(10):
4163             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4164             pass
4165         #
4166         c=DataArrayInt.New();
4167         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4168         c.setValues(arr3,7,2);
4169         c.setInfoOnComponent(0,"toto");
4170         c.setInfoOnComponent(1,"tata");
4171         d=c.renumberAndReduce(arr2,5);
4172         self.assertEqual(5,d.getNumberOfTuples());
4173         self.assertEqual(2,d.getNumberOfComponents());
4174         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4175         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4176         expected2=[5,15,3,13,1,11,7,17,6,16]
4177         for i in xrange(10):
4178             self.assertEqual(expected2[i],d.getIJ(0,i));
4179             pass
4180         pass
4181
4182     def testDaDoubleRenumberInPlace1(self):
4183         a=DataArrayDouble.New();
4184         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]
4185         a.setValues(arr1,7,2);
4186         #
4187         arr2=[3,1,0,6,5,4,2]
4188         a.renumberInPlace(arr2);
4189         self.assertEqual(7,a.getNumberOfTuples());
4190         self.assertEqual(2,a.getNumberOfComponents());
4191         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]
4192         for i in xrange(14):
4193             self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4194             pass
4195         #
4196         c=DataArrayInt.New();
4197         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4198         c.setValues(arr3,7,2);
4199         c.renumberInPlace(arr2);
4200         self.assertEqual(7,c.getNumberOfTuples());
4201         self.assertEqual(2,c.getNumberOfComponents());
4202         expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4203         for i in xrange(14):
4204             self.assertEqual(expected2[i],c.getIJ(0,i));
4205             pass
4206         pass
4207
4208     def testDaDoubleRenumberR1(self):
4209         a=DataArrayDouble.New();
4210         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]
4211         a.setValues(arr1,7,2);
4212         a.setInfoOnComponent(0,"toto");
4213         a.setInfoOnComponent(1,"tata");
4214         #
4215         arr2=[3,1,0,6,5,4,2]
4216         b=a.renumberR(arr2);
4217         self.assertEqual(7,b.getNumberOfTuples());
4218         self.assertEqual(2,b.getNumberOfComponents());
4219         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4220         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4221         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]
4222         for i in xrange(14):
4223             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4224             pass
4225         #
4226         c=DataArrayInt.New();
4227         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4228         c.setValues(arr3,7,2);
4229         c.setInfoOnComponent(0,"toto");
4230         c.setInfoOnComponent(1,"tata");
4231         d=c.renumberR(arr2);
4232         self.assertEqual(7,d.getNumberOfTuples());
4233         self.assertEqual(2,d.getNumberOfComponents());
4234         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4235         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4236         expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4237         for i in xrange(14):
4238             self.assertEqual(expected2[i],d.getIJ(0,i));
4239             pass
4240         pass
4241
4242     def testDaDoubleRenumberInPlaceR1(self):
4243         a=DataArrayDouble.New();
4244         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]
4245         a.setValues(arr1,7,2);
4246         #
4247         arr2=[3,1,0,6,5,4,2]
4248         a.renumberInPlaceR(arr2);
4249         self.assertEqual(7,a.getNumberOfTuples());
4250         self.assertEqual(2,a.getNumberOfComponents());
4251         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]
4252         for i in xrange(14):
4253             self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4254             pass
4255         #
4256         c=DataArrayInt.New();
4257         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4258         c.setValues(arr3,7,2);
4259         c.renumberInPlaceR(arr2);
4260         self.assertEqual(7,c.getNumberOfTuples());
4261         self.assertEqual(2,c.getNumberOfComponents());
4262         expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4263         for i in xrange(14):
4264             self.assertEqual(expected2[i],c.getIJ(0,i));
4265             pass
4266         pass
4267
4268     def testDaDoubleSelectByTupleId1(self):
4269         a=DataArrayDouble.New();
4270         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]
4271         a.setValues(arr1,7,2);
4272         a.setInfoOnComponent(0,"toto");
4273         a.setInfoOnComponent(1,"tata");
4274         #
4275         arr2=[4,2,0,6,5]
4276         b=a.selectByTupleId(arr2);
4277         self.assertEqual(5,b.getNumberOfTuples());
4278         self.assertEqual(2,b.getNumberOfComponents());
4279         self.assertTrue(b.getInfoOnComponent(0)=="toto");
4280         self.assertTrue(b.getInfoOnComponent(1)=="tata");
4281         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4282         for i in xrange(10):
4283             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4284             pass
4285         #
4286         c=DataArrayInt.New();
4287         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4288         c.setValues(arr3,7,2);
4289         c.setInfoOnComponent(0,"toto");
4290         c.setInfoOnComponent(1,"tata");
4291         d=c.selectByTupleId(arr2);
4292         self.assertEqual(5,d.getNumberOfTuples());
4293         self.assertEqual(2,d.getNumberOfComponents());
4294         self.assertTrue(d.getInfoOnComponent(0)=="toto");
4295         self.assertTrue(d.getInfoOnComponent(1)=="tata");
4296         expected2=[5,15,3,13,1,11,7,17,6,16]
4297         for i in xrange(10):
4298             self.assertEqual(expected2[i],d.getIJ(0,i));
4299             pass
4300         pass
4301
4302     def testDaDoubleGetMinMaxValues1(self):
4303         a=DataArrayDouble.New();
4304         arr1=[2.34,4.56,-6.77,4.55,4.56,2.24,2.34,1.02,4.56]
4305         a.setValues(arr1,9,1);
4306         m,where=a.getMaxValue();
4307         self.assertEqual(1,where);
4308         self.assertAlmostEqual(4.56,m,12);
4309         m,ws=a.getMaxValue2();
4310         self.assertAlmostEqual(4.56,m,12);
4311         self.assertEqual(3,ws.getNumberOfTuples());
4312         self.assertEqual(1,ws.getNumberOfComponents());
4313         expected1=[1,4,8]
4314         for i in xrange(3):
4315             self.assertEqual(expected1[i],ws.getIJ(i,0));
4316             pass
4317         a=DataArrayDouble.New();
4318         arr2=[-2.34,-4.56,6.77,-4.55,-4.56,-2.24,-2.34,-1.02,-4.56]
4319         a.setValues(arr2,9,1);
4320         m,where=a.getMinValue();
4321         self.assertEqual(1,where);
4322         self.assertAlmostEqual(-4.56,m,12);
4323         m,ws=a.getMinValue2();
4324         self.assertAlmostEqual(-4.56,m,12);
4325         self.assertEqual(3,ws.getNumberOfTuples());
4326         self.assertEqual(1,ws.getNumberOfComponents());
4327         for i in xrange(3):
4328             self.assertEqual(expected1[i],ws.getIJ(i,0));
4329             pass
4330         pass
4331
4332     def testFieldDoubleGetMinMaxValues2(self):
4333         m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
4334         self.assertEqual(18,m2.getNumberOfCells());
4335         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]
4336         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4337         a=DataArrayDouble.New();
4338         a.setValues(arr1,18,1);
4339         f.setArray(a);
4340         f.setMesh(m2);
4341         #
4342         f.checkCoherency();
4343         m=f.getMaxValue();
4344         self.assertAlmostEqual(8.71,m,12);
4345         m,ws=f.getMaxValue2();
4346         self.assertAlmostEqual(8.71,m,12);
4347         self.assertEqual(4,ws.getNumberOfTuples());
4348         self.assertEqual(1,ws.getNumberOfComponents());
4349         expected1=[0,3,7,17]
4350         for i in xrange(4):
4351             self.assertEqual(expected1[i],ws.getIJ(i,0));
4352             pass
4353         #
4354         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]
4355         a.setValues(arr2,18,1);
4356         f.checkCoherency();
4357         m=f.getMinValue();
4358         self.assertAlmostEqual(-8.71,m,12);
4359         m,ws=f.getMinValue2();
4360         self.assertAlmostEqual(-8.71,m,12);
4361         self.assertEqual(4,ws.getNumberOfTuples());
4362         self.assertEqual(1,ws.getNumberOfComponents());
4363         for i in xrange(4):
4364             self.assertEqual(expected1[i],ws.getIJ(i,0));
4365             pass
4366         pass
4367
4368     def testBuildUnstructuredCMesh1(self):
4369         m=MEDCouplingCMesh.New();
4370         da=DataArrayDouble.New();
4371         discX=[2.3,3.4,5.8,10.2]
4372         discY=[12.3,23.4,45.8]
4373         discZ=[-0.7,1.2,1.25,2.13,2.67]
4374         da.setValues(discX,4,1);
4375         m.setCoordsAt(0,da);
4376         m.checkCoherency();
4377         self.assertEqual(0,m.getCellContainingPoint([2.4],1e-12));
4378         self.assertEqual(1,m.getCellContainingPoint([3.7],1e-12));
4379         self.assertEqual(2,m.getCellContainingPoint([5.9],1e-12));
4380         self.assertEqual(-1,m.getCellContainingPoint([10.3],1e-12));
4381         self.assertEqual(-1,m.getCellContainingPoint([1.3],1e-12));
4382         #
4383         m2=m.buildUnstructured();
4384         m2.checkCoherency();
4385         f1=m.getMeasureField(False);
4386         f2=m2.getMeasureField(False);
4387         self.assertTrue(isinstance(f1.getMesh(),MEDCouplingCMesh))
4388         self.assertEqual(f1.getNumberOfTuples(),3);
4389         self.assertEqual(f2.getNumberOfTuples(),3);
4390         self.assertEqual(1,m2.getMeshDimension());
4391         self.assertEqual(1,m2.getSpaceDimension());
4392         for i in xrange(3):
4393             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4394             pass
4395         da=DataArrayDouble.New();
4396         da.setValues(discY,3,1);
4397         m.setCoordsAt(1,da);
4398         #
4399         m2=m.buildUnstructured();
4400         m2.checkCoherency();
4401         f1=m.getMeasureField(False);
4402         f2=m2.getMeasureField(False);
4403         self.assertEqual(f1.getNumberOfTuples(),6);
4404         self.assertEqual(f2.getNumberOfTuples(),6);
4405         self.assertEqual(2,m2.getMeshDimension());
4406         self.assertEqual(2,m2.getSpaceDimension());
4407         for i in xrange(6):
4408             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4409             pass
4410         #
4411         da=DataArrayDouble.New();
4412         da.setValues(discZ,5,1);
4413         m.setCoordsAt(2,da);
4414         m2=m.buildUnstructured();
4415         m2.checkCoherency();
4416         f1=m.getMeasureField(False);
4417         f2=m2.getMeasureField(False);
4418         self.assertEqual(f1.getNumberOfTuples(),24);
4419         self.assertEqual(f2.getNumberOfTuples(),24);
4420         self.assertEqual(3,m2.getMeshDimension());
4421         self.assertEqual(3,m2.getSpaceDimension());
4422         for i in xrange(24):
4423             self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4424             pass
4425         #
4426         pos1=[5.,30.,2.]
4427         self.assertEqual(16,m.getCellContainingPoint(pos1,1e-12));
4428         #
4429         elems=m2.getCellsInBoundingBox([3.5,6.,12.2,25.,0.,1.5],1e-7)
4430         self.assertEqual([1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17],elems.getValues())
4431         #
4432         pt=[2.4,12.7,-3.4]
4433         m.scale(pt,3.7);
4434         m3=m.buildUnstructured();
4435         m2.scale(pt,3.7);
4436         self.assertTrue(m3.isEqual(m2,1e-12));
4437         pass
4438
4439     def testDataArrayIntInvertO2NNO21(self):
4440         arr1=[2,0,4,1,5,3]
4441         da=DataArrayInt.New();
4442         da.setValues(arr1,6,1);
4443         da2=da.invertArrayO2N2N2O(6);
4444         self.assertEqual(6,da2.getNumberOfTuples());
4445         self.assertEqual(1,da2.getNumberOfComponents());
4446         expected1=[1,3,0,5,2,4]
4447         for i in xrange(6):
4448             self.assertEqual(expected1[i],da2.getIJ(i,0));
4449             pass
4450         da3=da2.invertArrayN2O2O2N(6);
4451         for i in xrange(6):
4452             self.assertEqual(arr1[i],da3.getIJ(i,0));
4453             pass
4454         #
4455         arr2=[3,-1,5,4,-1,0,-1,1,2,-1]
4456         da=DataArrayInt.New();
4457         da.setValues(arr2,10,1);
4458         da2=da.invertArrayO2N2N2O(6);
4459         self.assertEqual(6,da2.getNumberOfTuples());
4460         self.assertEqual(1,da2.getNumberOfComponents());
4461         expected2=[5,7,8,0,3,2]
4462         for i in xrange(6):
4463             self.assertEqual(expected2[i],da2.getIJ(i,0));
4464             pass
4465         da3=da2.invertArrayN2O2O2N(10);
4466         for i in xrange(10):
4467             self.assertEqual(arr2[i],da3.getIJ(i,0));
4468             pass
4469         pass
4470     
4471     def testKeepSetSelectedComponent1(self):
4472         arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4473         a1=DataArrayDouble.New();
4474         a1.setValues(arr1,5,4);
4475         expp=[21.,22.,23.,24.]
4476         self.assertEqual(4,len(a1.getTuple(2)));
4477         for i in xrange(4):
4478             self.assertAlmostEqual(expp[i],a1.getTuple(2)[i],12)
4479             pass
4480         a1.setInfoOnComponent(0,"aaaa");
4481         a1.setInfoOnComponent(1,"bbbb");
4482         a1.setInfoOnComponent(2,"cccc");
4483         a1.setInfoOnComponent(3,"dddd");
4484         arr2V=[1,2,1,2,0,0]
4485         a2=a1.keepSelectedComponents(arr2V);
4486         self.assertEqual(6,a2.getNumberOfComponents());
4487         self.assertEqual(5,a2.getNumberOfTuples());
4488         self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4489         self.assertTrue(a2.getInfoOnComponent(1)=="cccc");
4490         self.assertTrue(a2.getInfoOnComponent(2)=="bbbb");
4491         self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4492         self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4493         self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4494         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.]
4495         for i in xrange(30):
4496             self.assertAlmostEqual(expected1[i],a2.getIJ(0,i),14);
4497             pass
4498         a3=a1.convertToIntArr();
4499         self.assertEqual([21,22,23,24],a3.getTuple(2))
4500         a4=a3.keepSelectedComponents(arr2V);
4501         self.assertEqual(6,a4.getNumberOfComponents());
4502         self.assertEqual(5,a4.getNumberOfTuples());
4503         self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4504         self.assertTrue(a4.getInfoOnComponent(1)=="cccc");
4505         self.assertTrue(a4.getInfoOnComponent(2)=="bbbb");
4506         self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4507         self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4508         self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4509         for i in xrange(30):
4510             self.assertEqual(int(expected1[i]),a4.getIJ(0,i));
4511             pass
4512         # setSelectedComponents
4513         arr3V=[3,2]
4514         a5=a1.keepSelectedComponents(arr3V);
4515         a5.setInfoOnComponent(0,"eeee");
4516         a5.setInfoOnComponent(1,"ffff");
4517         arr4V=[1,2]
4518         a2.setSelectedComponents(a5,arr4V);
4519         self.assertEqual(6,a2.getNumberOfComponents());
4520         self.assertEqual(5,a2.getNumberOfTuples());
4521         self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4522         self.assertTrue(a2.getInfoOnComponent(1)=="eeee");
4523         self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
4524         self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4525         self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4526         self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4527         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.]
4528         for i in xrange(30):
4529             self.assertAlmostEqual(expected2[i],a2.getIJ(0,i),14);
4530             pass
4531         a6=a5.convertToIntArr();
4532         a6.setInfoOnComponent(0,"eeee");
4533         a6.setInfoOnComponent(1,"ffff");
4534         a4.setSelectedComponents(a6,arr4V);
4535         self.assertEqual(6,a4.getNumberOfComponents());
4536         self.assertEqual(5,a4.getNumberOfTuples());
4537         self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4538         self.assertTrue(a4.getInfoOnComponent(1)=="eeee");
4539         self.assertTrue(a4.getInfoOnComponent(2)=="ffff");
4540         self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4541         self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4542         self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4543         for i in xrange(30):
4544             self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
4545             pass
4546         # test of throw
4547         arr5V=[2,3,6]
4548         arr6V=[2,7,5]
4549         arr7V=[2,1,4,6]
4550         self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr5V);
4551         self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr6V);
4552         self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4553         arr7V=arr7V[0:3]
4554         self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4555         #
4556         pass
4557
4558     def testKeepSetSelectedComponent2(self):
4559         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4560         arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4561         a1=DataArrayDouble.New();
4562         a1.setValues(arr1,5,4);
4563         a1.setInfoOnComponent(0,"aaaa");
4564         a1.setInfoOnComponent(1,"bbbb");
4565         a1.setInfoOnComponent(2,"cccc");
4566         a1.setInfoOnComponent(3,"dddd");
4567         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4568         f1.setTime(2.3,4,5);
4569         f1.setMesh(m1);
4570         f1.setName("f1");
4571         f1.setArray(a1);
4572         f1.checkCoherency();
4573         #
4574         arr2V=[1,2,1,2,0,0]
4575         f2=f1.keepSelectedComponents(arr2V);
4576         self.assertTrue(f2.getTimeDiscretization()==ONE_TIME);
4577         t,dt,it=f2.getTime()
4578         self.assertAlmostEqual(2.3,t,13);
4579         self.assertEqual(4,dt);
4580         self.assertEqual(5,it);
4581         f2.checkCoherency();
4582         self.assertEqual(6,f2.getNumberOfComponents());
4583         self.assertEqual(5,f2.getNumberOfTuples());
4584         self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4585         self.assertTrue(f2.getArray().getInfoOnComponent(1)=="cccc");
4586         self.assertTrue(f2.getArray().getInfoOnComponent(2)=="bbbb");
4587         self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4588         self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4589         self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4590         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.]
4591         for i in xrange(30):
4592             self.assertAlmostEqual(expected1[i],f2.getIJ(0,i),14);
4593             pass
4594         #setSelectedComponents
4595         arr3V=[3,2]
4596         f5=f1.keepSelectedComponents(arr3V);
4597         f5.setTime(6.7,8,9);
4598         f5.getArray().setInfoOnComponent(0,"eeee");
4599         f5.getArray().setInfoOnComponent(1,"ffff");
4600         f5.checkCoherency();
4601         arr4V=[1,2]
4602         f2.setSelectedComponents(f5,arr4V);
4603         self.assertEqual(6,f2.getNumberOfComponents());
4604         self.assertEqual(5,f2.getNumberOfTuples());
4605         f2.checkCoherency();
4606         t,dt,it=f2.getTime()
4607         self.assertAlmostEqual(2.3,t,13);
4608         self.assertEqual(4,dt);
4609         self.assertEqual(5,it);
4610         self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4611         self.assertTrue(f2.getArray().getInfoOnComponent(1)=="eeee");
4612         self.assertTrue(f2.getArray().getInfoOnComponent(2)=="ffff");
4613         self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4614         self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4615         self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4616         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.]
4617         for i in xrange(30):
4618             self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),14);
4619             pass
4620         #
4621         pass
4622     
4623     def testElementaryDAThrowAndSpecialCases(self):
4624         da=DataArrayInt.New();
4625         self.assertRaises(InterpKernelException, da.checkAllocated);
4626         self.assertRaises(InterpKernelException, da.fillWithValue, 1);
4627         self.assertRaises(InterpKernelException, da.iota, 1);
4628         da.alloc(7,1);
4629         da.fillWithValue(11); #11,11,11,11...
4630         da.iota(10); #10,11,12,13...
4631         
4632         db=DataArrayInt.New();
4633         db.alloc(7,2);
4634         
4635         dbl2=DataArrayDouble.New();
4636         dbl2.alloc(7,2);
4637         self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15);
4638         self.assertRaises(InterpKernelException, dbl2.sort);
4639         self.assertRaises(InterpKernelException, dbl2.iota, 10.);
4640         
4641         dbl=DataArrayDouble.New();
4642         #DataArrayDouble not allocated yet
4643         self.assertRaises(InterpKernelException, dbl.iota, 10.);
4644         self.assertRaises(InterpKernelException, dbl.isUniform, 10., 1e-15);
4645         self.assertRaises(InterpKernelException, dbl.sort);
4646         self.assertRaises(InterpKernelException, dbl.fromNoInterlace);
4647         self.assertRaises(InterpKernelException, dbl.toNoInterlace);
4648         
4649         dbl.alloc(7,1);
4650         dbl.iota(10.);
4651         self.assertTrue(not dbl.isUniform(10.,1e-15));
4652         dbl.sort();
4653         self.assertTrue(dbl.isMonotonic(True, .99));
4654         self.assertTrue(dbl.isMonotonic(True, -.99));
4655         self.assertTrue(not dbl.isMonotonic(True, 1.1));
4656         self.assertTrue(not dbl.isMonotonic(True, -1.1));
4657         dbl.reverse();
4658         self.assertTrue(dbl.isMonotonic(False, .99));
4659         self.assertTrue(not dbl.isMonotonic(False, 1.1));
4660         self.assertTrue(not dbl.isMonotonic(False, -1.1));
4661         
4662         dc=DataArrayInt.New();
4663         dc.alloc(14,1);
4664         
4665         dd=DataArrayDouble.New();
4666         self.assertRaises(InterpKernelException, dd.checkAllocated);
4667         self.assertRaises(InterpKernelException, dd.fillWithValue, 1.);
4668         self.assertRaises(InterpKernelException, dd.iota, 1.);
4669         self.assertTrue(not ((dd.repr().find("No data"))==-1));
4670         
4671         dd.alloc(0,1); #Allocated but nbOfElements==0!
4672         self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1));
4673         self.assertTrue(not ((dd.repr().find("Empty Data"))==-1));
4674         dd.fillWithValue(11); #?!...ok
4675         dd.iota(10); #?!...ok
4676         self.assertTrue(dd.isMonotonic(True, 1.));  #nothing is monotonic
4677         self.assertTrue(dd.isMonotonic(False, 1.));
4678         
4679         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4680         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4681         cIds=[2,2]
4682         self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4683         cIds[0]=1;
4684         cIds[0]=-1;
4685         self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4686         
4687         info=["infoOfOneComponent"]*2;
4688         self.assertRaises(InterpKernelException, da.setInfoOnComponents, info);
4689         self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]);
4690         db.setInfoOnComponents(info);
4691         
4692         self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1);
4693         self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2);
4694         self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0));
4695         self.assertRaises(InterpKernelException, db.getVarOnComponent, -1);
4696         self.assertRaises(InterpKernelException, db.getVarOnComponent, 2);
4697         self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1);
4698         self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2);
4699         
4700         self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit ");
4701         self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit[");
4702         self.assertTrue(da.GetVarNameFromInfo("[unit]")=="");
4703         self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname");
4704         
4705         self.assertTrue(da.GetUnitFromInfo("varname unit ")=="");
4706         self.assertTrue(da.GetUnitFromInfo("varname]unit[")=="");
4707         self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit");
4708         self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit");
4709         
4710         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow");
4711         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4712         self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4713         
4714         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow");
4715         da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow");
4716         
4717         self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow");
4718         db.checkNbOfElems(7*2,"theMessageInThrow");
4719         
4720         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow");
4721         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow");
4722         self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow"));
4723         self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow"));
4724         self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow"));
4725         
4726         self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1));
4727         self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1));
4728         self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1));
4729         
4730         self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1));
4731         self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1));
4732         self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1));
4733         
4734         self.assertRaises(InterpKernelException, dbl.selectByTupleId2, 0, 1, -1);
4735         self.assertRaises(InterpKernelException, dbl.substr, -1, 1);
4736         self.assertRaises(InterpKernelException, dbl.substr, 8, 1);
4737         self.assertRaises(InterpKernelException, dbl.substr, 0, 8);
4738         self.assertRaises(InterpKernelException, dbl.meldWith, dd);
4739         
4740         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components
4741         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da);  #da tuple selector DataArrayInt instance not have exactly 2 components
4742         
4743         dbl3=DataArrayDouble.New();
4744         dbl3.alloc(6,2);
4745         dbl3.fillWithValue(11.);
4746         #bad number of components
4747         self.assertRaises(InterpKernelException, dbl3.getMaxValue);
4748         self.assertRaises(InterpKernelException, dd.getMaxValue);
4749         self.assertRaises(InterpKernelException, dbl3.getMinValue);
4750         self.assertRaises(InterpKernelException, dd.getMinValue);
4751         self.assertRaises(InterpKernelException, dbl3.getAverageValue);
4752         self.assertRaises(InterpKernelException, dd.getAverageValue);
4753         self.assertRaises(InterpKernelException, dd.accumulate, 100);
4754         self.assertRaises(InterpKernelException, dbl.fromPolarToCart);
4755         self.assertRaises(InterpKernelException, dbl3.fromCylToCart);
4756         self.assertRaises(InterpKernelException, dbl3.fromSpherToCart);
4757         self.assertRaises(InterpKernelException, dbl3.doublyContractedProduct);
4758         self.assertRaises(InterpKernelException, dbl3.determinant);
4759         self.assertRaises(InterpKernelException, dbl3.eigenValues);
4760         self.assertRaises(InterpKernelException, dbl3.eigenVectors);
4761         self.assertRaises(InterpKernelException, dbl3.inverse);
4762         self.assertRaises(InterpKernelException, dbl3.trace);
4763         self.assertRaises(InterpKernelException, dbl3.deviator);
4764         
4765         dbl3.setIJ(5,1,12.);
4766         self.assertTrue(dbl3.getMaxValueInArray()==12.);
4767         self.assertTrue(dbl3.getMinValueInArray()==11.);
4768         
4769         db.fillWithValue(100); #bad Ids
4770         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4771         db.fillWithValue(-1); #bad Ids
4772         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4773         db.fillWithValue(6); #bad Ids for dbl3
4774         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4775         
4776         dbl3.checkNoNullValues();
4777         dbl3.setIJ(5,0,0.);
4778         self.assertRaises(InterpKernelException, dbl3.checkNoNullValues);
4779         self.assertRaises(InterpKernelException, dbl3.applyInv, 1.);  #div by zero
4780         self.assertRaises(InterpKernelException, dbl2.getIdsInRange, 1., 2.);
4781         a=[]
4782         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4783         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4784         
4785         a=[dbl2,dbl]; #Nb of components mismatch
4786         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4787         
4788         self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl);
4789         
4790         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch
4791         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3
4792         dbl4=DataArrayDouble.New();
4793         dbl4.alloc(6,3);
4794         dbl5=DataArrayDouble.New();
4795         dbl5.alloc(7,3);
4796         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch
4797         
4798         a[0]=dbl4; #Nb of tuple mismatch
4799         a[1]=dbl5; #Nb of tuple mismatch
4800         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4801         self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl4, dbl5);
4802         pass
4803
4804     def testDAIGetIdsEqual1(self):
4805         tab1=[5,-2,-4,-2,3,2,-2];
4806         da=DataArrayInt.New();
4807         da.setValues(tab1,7,1);
4808         da2=da.getIdsEqual(-2);
4809         self.assertEqual(3,da2.getNumberOfTuples());
4810         self.assertEqual(1,da2.getNumberOfComponents());
4811         expected1=[1,3,6];
4812         self.assertEqual(expected1,da2.getValues());
4813         pass
4814
4815     def testDAIGetIdsEqualList1(self):
4816         tab1=[5,-2,-4,-2,3,2,-2];
4817         da=DataArrayInt.New();
4818         da.setValues(tab1,7,1);
4819         da2=da.getIdsEqualList([3,-2,0]);
4820         self.assertEqual(4,da2.getNumberOfTuples());
4821         self.assertEqual(1,da2.getNumberOfComponents());
4822         expected1=[1,3,4,6];
4823         self.assertEqual(expected1,da2.getValues());
4824         pass
4825
4826     def testDAFromNoInterlace1(self):
4827         tab1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4828         da=DataArrayInt.New();
4829         da.setValues(tab1,5,3);
4830         da2=da.fromNoInterlace();
4831         expected1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4832         self.assertEqual(5,da2.getNumberOfTuples());
4833         self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4834         self.assertEqual(expected1,da2.getValues());
4835         da3=da.convertToDblArr();
4836         da4=da3.fromNoInterlace();
4837         self.assertEqual(5,da4.getNumberOfTuples());
4838         self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4839         for i in xrange(15):
4840             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4841             pass
4842         pass
4843     
4844     def testDAToNoInterlace1(self):
4845         tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4846         da=DataArrayInt.New();
4847         da.setValues(tab1,5,3);
4848         da2=da.toNoInterlace();
4849         expected1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4850         self.assertEqual(5,da2.getNumberOfTuples());
4851         self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4852         self.assertEqual(expected1,da2.getValues());
4853         da3=da.convertToDblArr();
4854         da4=da3.toNoInterlace();
4855         self.assertEqual(5,da4.getNumberOfTuples());
4856         self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4857         for i in xrange(15):
4858             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4859             pass
4860         pass
4861     
4862     def testDAIsUniform1(self):
4863         tab1=[1,1,1,1,1]
4864         da=DataArrayInt.New();
4865         da.setValues(tab1,5,1);
4866         self.assertTrue(da.isUniform(1));
4867         da.setIJ(2,0,2);
4868         self.assertTrue(not da.isUniform(1));
4869         da.setIJ(2,0,1);
4870         self.assertTrue(da.isUniform(1));
4871         da2=da.convertToDblArr();
4872         self.assertTrue(da2.isUniform(1.,1.e-12));
4873         da2.setIJ(1,0,1.+1.e-13);
4874         self.assertTrue(da2.isUniform(1.,1.e-12));
4875         da2.setIJ(1,0,1.+1.e-11);
4876         self.assertTrue(not da2.isUniform(1.,1.e-12));
4877         pass
4878     
4879     def testDADFromPolarToCart1(self):
4880         tab1=[2.,0.2,2.5,0.7]
4881         da=DataArrayDouble.New();
4882         da.setValues(tab1,2,2);
4883         da2=da.fromPolarToCart();
4884         expected1=[1.9601331556824833,0.39733866159012243, 1.9121054682112213,1.6105442180942275]
4885         for i in xrange(4):
4886             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4887             pass
4888         pass
4889     
4890     def testDADFromCylToCart1(self):
4891         tab1=[2.,0.2,4.,2.5,0.7,9.]
4892         da=DataArrayDouble.New();
4893         da.setValues(tab1,2,3);
4894         da2=da.fromCylToCart();
4895         expected1=[1.9601331556824833,0.39733866159012243,4., 1.9121054682112213,1.6105442180942275,9.]
4896         for i in xrange(6):
4897             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4898             pass
4899         pass
4900     
4901     def testDADFromSpherToCart1(self):
4902         tab1=[2.,0.2,0.3,2.5,0.7,0.8]
4903         da=DataArrayDouble.New();
4904         da.setValues(tab1,2,3);
4905         da2=da.fromSpherToCart();
4906         expected1=[0.37959212195737485,0.11742160338765303,1.9601331556824833, 1.1220769624465328,1.1553337045129035,1.9121054682112213]
4907         for i in xrange(6):
4908             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4909             pass
4910         pass
4911
4912     def testUnPolyze1(self):
4913         elts=[0,1,2,3,4,5,6,7]
4914         eltsV=elts;
4915         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4916         mesh.convertToPolyTypes(eltsV);
4917         mesh.unPolyze();
4918         mesh2=MEDCouplingDataForTest.build3DTargetMesh_1();
4919         mesh.checkCoherency();
4920         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4921         mesh.convertToPolyTypes(eltsV);
4922         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4923         mesh.getNodalConnectivity().setIJ(0,6,10);
4924         mesh.getNodalConnectivity().setIJ(0,7,9);
4925         mesh.getNodalConnectivity().setIJ(0,8,12);
4926         mesh.getNodalConnectivity().setIJ(0,9,13);
4927         mesh.unPolyze();
4928         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4929         mesh.convertToPolyTypes(eltsV);
4930         mesh.getNodalConnectivity().setIJ(0,6,12);
4931         mesh.getNodalConnectivity().setIJ(0,7,13);
4932         mesh.getNodalConnectivity().setIJ(0,8,10);
4933         mesh.getNodalConnectivity().setIJ(0,9,9);
4934         mesh.unPolyze();
4935         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4936         mesh.convertToPolyTypes(eltsV);
4937         mesh.getNodalConnectivity().setIJ(0,6,12);
4938         mesh.getNodalConnectivity().setIJ(0,7,10);
4939         mesh.getNodalConnectivity().setIJ(0,8,13);
4940         mesh.getNodalConnectivity().setIJ(0,9,9);
4941         mesh.unPolyze();
4942         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4943         # Test for 2D mesh
4944         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4945         mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
4946         eltsV=eltsV[:5];
4947         mesh.convertToPolyTypes(eltsV);
4948         self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4949         mesh.unPolyze();
4950         self.assertTrue(mesh.isEqual(mesh2,1e-12));
4951         pass
4952
4953     def testConvertDegeneratedCells1(self):
4954         mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4955         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]
4956         mesh.allocateCells(4);
4957         mesh.insertNextCell(NORM_HEXA8,8,conn[0:8])
4958         mesh.insertNextCell(NORM_HEXA8,8,conn[8:16])
4959         mesh.insertNextCell(NORM_HEXA8,8,conn[16:24])
4960         mesh.insertNextCell(NORM_HEXA8,8,conn[24:32])
4961         mesh.finishInsertingCells();
4962         mesh.checkCoherency();
4963         self.assertEqual(4,mesh.getNumberOfCells());
4964         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(0));
4965         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(1));
4966         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(2));
4967         self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(3));
4968         f1=mesh.getMeasureField(True);
4969         mesh.convertDegeneratedCells();
4970         mesh.checkCoherency();
4971         f2=mesh.getMeasureField(True);
4972         self.assertEqual(4,mesh.getNumberOfCells());
4973         self.assertEqual(NORM_PENTA6,mesh.getTypeOfCell(0));
4974         self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(1));
4975         self.assertEqual(NORM_TETRA4,mesh.getTypeOfCell(2));
4976         self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(3));
4977         for i in xrange(4):
4978             self.assertAlmostEqual(f1.getArray().getIJ(0,i),f2.getArray().getIJ(0,i),5);
4979             pass
4980         pass
4981
4982     def testGetNodeIdsNearPoints1(self):
4983         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4984         coords=mesh.getCoords();
4985         tmp=DataArrayDouble.New();
4986         vals=[0.2,0.2,0.1,0.2,0.2,0.2]
4987         tmp.setValues(vals,3,2);
4988         tmp2=DataArrayDouble.Aggregate(coords,tmp);
4989         mesh.setCoords(tmp2);
4990         pts=[0.2,0.2,0.1,0.3,-0.3,0.7]
4991         c=mesh.getNodeIdsNearPoint(pts[:2],1e-7);
4992         self.assertEqual([4,9,11],c.getValues());
4993         c,cI=mesh.getNodeIdsNearPoints(pts,3,1e-7);
4994         self.assertEqual([0,3,3,4],cI.getValues());
4995         self.assertEqual([4,9,11,6],c.getValues());
4996         c,cI=mesh.getNodeIdsNearPoints(pts,1e-7);
4997         self.assertEqual([0,3,3,4],cI.getValues());
4998         self.assertEqual([4,9,11,6],c.getValues());
4999         c,cI=mesh.getNodeIdsNearPoints(DataArrayDouble.New(pts,3,2),1e-7);
5000         self.assertEqual([0,3,3,4],cI.getValues());
5001         self.assertEqual([4,9,11,6],c.getValues());
5002         self.assertRaises(InterpKernelException,mesh.getNodeIdsNearPoints,DataArrayDouble.New(pts,2,3),1e-7);
5003         pass
5004
5005     def testFieldCopyTinyAttrFrom1(self):
5006         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5007         f1.setName("f1");
5008         f1.setTimeTolerance(1.e-5);
5009         f1.setDescription("f1Desc");
5010         f1.setTime(1.23,4,5);
5011         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5012         f2.setName("f2");
5013         f2.setDescription("f2Desc");
5014         f2.setTime(6.78,9,10);
5015         f2.setTimeTolerance(4.556e-12);
5016         #
5017         f1.copyTinyAttrFrom(f2);
5018         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5019         t,dt,it=f1.getTime()
5020         self.assertAlmostEqual(6.78,t,12);
5021         self.assertEqual(9,dt);
5022         self.assertEqual(10,it);
5023         self.assertTrue(f1.getName()=="f1");#name unchanged
5024         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5025         #
5026         f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
5027         f1.setName("f1");
5028         f1.setTimeTolerance(1.e-5);
5029         f1.setDescription("f1Desc");
5030         f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
5031         f2.setName("f2");
5032         f2.setDescription("f2Desc");
5033         f2.setTimeTolerance(4.556e-12);
5034         #
5035         f1.copyTinyAttrFrom(f2);
5036         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5037         self.assertTrue(f1.getName()=="f1");#name unchanged
5038         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5039         #
5040         f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
5041         f1.setName("f1");
5042         f1.setTimeTolerance(1.e-5);
5043         f1.setDescription("f1Desc");
5044         f1.setTime(1.23,4,5);
5045         f1.setEndTime(5.43,2,1);
5046         f2=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
5047         f2.setName("f2");
5048         f2.setDescription("f2Desc");
5049         f2.setTimeTolerance(4.556e-12);
5050         f2.setTime(6.78,9,10);
5051         f2.setEndTime(10.98,7,6);
5052         #
5053         f1.copyTinyAttrFrom(f2);
5054         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5055         self.assertTrue(f1.getName()=="f1");#name unchanged
5056         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5057         t,dt,it=f1.getTime()
5058         self.assertAlmostEqual(6.78,t,12);
5059         self.assertEqual(9,dt);
5060         self.assertEqual(10,it);
5061         t,dt,it=f1.getEndTime()
5062         self.assertAlmostEqual(10.98,t,12);
5063         self.assertEqual(7,dt);
5064         self.assertEqual(6,it);
5065         #
5066         f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
5067         f1.setName("f1");
5068         f1.setTimeTolerance(1.e-5);
5069         f1.setDescription("f1Desc");
5070         f1.setTime(1.23,4,5);
5071         f1.setEndTime(5.43,2,1);
5072         f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
5073         f2.setName("f2");
5074         f2.setDescription("f2Desc");
5075         f2.setTimeTolerance(4.556e-12);
5076         f2.setTime(6.78,9,10);
5077         f2.setEndTime(10.98,7,6);
5078         #
5079         f1.copyTinyAttrFrom(f2);
5080         self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5081         self.assertTrue(f1.getName()=="f1");#name unchanged
5082         self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5083         t,dt,it=f1.getTime()
5084         self.assertAlmostEqual(6.78,t,12);
5085         self.assertEqual(9,dt);
5086         self.assertEqual(10,it);
5087         t,dt,it=f1.getEndTime()
5088         self.assertAlmostEqual(10.98,t,12);
5089         self.assertEqual(7,dt);
5090         self.assertEqual(6,it);
5091         pass
5092
5093     def testExtrudedMesh5(self):
5094         coo1=[0.,1.,2.,3.5]
5095         a=DataArrayDouble.New();
5096         a.setValues(coo1,4,1);
5097         b=MEDCouplingCMesh.New();
5098         b.setCoordsAt(0,a);
5099         c=b.buildUnstructured();
5100         self.assertEqual(1,c.getSpaceDimension());
5101         c.changeSpaceDimension(2);
5102         #
5103         d=DataArrayDouble.New();
5104         d.alloc(13,1);
5105         d.iota();
5106         e=MEDCouplingCMesh.New();
5107         e.setCoordsAt(0,d);
5108         f=e.buildUnstructured();
5109         g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5110         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 !
5111         h=g.fromPolarToCart();
5112         f.setCoords(h);
5113         i=c.buildExtrudedMesh(f,1);
5114         self.assertEqual(52,i.getNumberOfNodes());
5115         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5116         self.assertTrue(tmp2);
5117         self.assertEqual(37,tmp3);
5118         i.convertDegeneratedCells();
5119         i.checkCoherency();
5120         self.assertEqual(36,i.getNumberOfCells());
5121         self.assertEqual(37,i.getNumberOfNodes());
5122         self.assertEqual(12,i.getNumberOfCellsWithType(NORM_TRI3));
5123         self.assertEqual(24,i.getNumberOfCellsWithType(NORM_QUAD4));
5124         expected1=[0.25,0.75,2.0625]
5125         j=i.getMeasureField(True);
5126         for ii in xrange(12):
5127             for k in xrange(3):
5128                 self.assertAlmostEqual(expected1[k],j.getIJ(0,ii*3+k),10);
5129                 pass
5130             pass
5131         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]
5132         m=i.getBarycenterAndOwner();
5133         for i in xrange(72):
5134             self.assertAlmostEqual(expected2[i],m.getIJ(0,i),10);
5135             pass
5136         #
5137         pass
5138
5139     def testExtrudedMesh6(self):
5140         coo1=[0.,1.,2.,3.5]
5141         a=DataArrayDouble.New();
5142         a.setValues(coo1,4,1);
5143         b=MEDCouplingCMesh.New();
5144         b.setCoordsAt(0,a);
5145         c=b.buildUnstructured();
5146         self.assertEqual(1,c.getSpaceDimension());
5147         c.changeSpaceDimension(2);
5148         #
5149         d=DataArrayDouble.New();
5150         d.alloc(5);
5151         d.iota();
5152         e=MEDCouplingCMesh.New();
5153         e.setCoordsAt(0,d);
5154         f=e.buildUnstructured();
5155         d2=f.getCoords().applyFunc("x*x/2");
5156         f.setCoords(d2);
5157         f.changeSpaceDimension(2);
5158         #
5159         center=[0.,0.]
5160         f.rotate(center,None,pi/3);
5161         g=c.buildExtrudedMesh(f,0);
5162         g.checkCoherency();
5163         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 ]
5164         f1=g.getMeasureField(True);
5165         for i in xrange(12):
5166             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),12);
5167             pass
5168         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]
5169         f2=g.getBarycenterAndOwner();
5170         for i in xrange(24):
5171             self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),12);
5172             pass
5173         pass
5174
5175     def testExtrudedMesh7(self):
5176         coo1=[0.,1.,2.,3.5]
5177         a=DataArrayDouble.New();
5178         a.setValues(coo1,4,1);
5179         b=MEDCouplingCMesh.New();
5180         b.setCoordsAt(0,a);
5181         c=b.buildUnstructured();
5182         self.assertEqual(1,c.getSpaceDimension());
5183         c.changeSpaceDimension(2);
5184         #
5185         d=DataArrayDouble.New();
5186         d.alloc(13,1);
5187         d.iota();
5188         e=MEDCouplingCMesh.New();
5189         e.setCoordsAt(0,d);
5190         f=e.buildUnstructured();
5191         g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5192         h=g.fromPolarToCart();
5193         f.setCoords(h);
5194         i=c.buildExtrudedMesh(f,1);
5195         self.assertEqual(52,i.getNumberOfNodes());
5196         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5197         self.assertTrue(tmp2);
5198         self.assertEqual(37,tmp3);
5199         i.convertDegeneratedCells();
5200         vec1=[10.,0]
5201         i.translate(vec1);
5202         g2=h.applyFunc(3,"13.5/3.5*x*IVec+0*JVec+13.5/3.5*y*KVec");
5203         f.setCoords(g2);
5204         i.changeSpaceDimension(3);
5205         i3=i.buildExtrudedMesh(f,1);
5206         f2=i3.getMeasureField(True);
5207         tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5208         self.assertTrue(tmp2);
5209         self.assertEqual(444,tmp3);
5210         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]
5211         for ii in xrange(12):
5212             for jj in xrange(36):
5213                 self.assertAlmostEqual(expected1[jj],f2.getIJ(0,ii*36+jj),9);
5214                 pass
5215         #
5216         pass
5217
5218     def testSimplexize1(self):
5219         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5220         m.convertToPolyTypes([3]);
5221         da=m.simplexize(0);
5222         self.assertEqual(7,da.getNumberOfTuples());
5223         self.assertEqual(1,da.getNumberOfComponents());
5224         expected2=[0,0,1,2,3,4,4]
5225         for i in xrange(7):
5226             self.assertEqual(expected2[i],da.getIJ(i,0));
5227             pass
5228         m.checkCoherency();
5229         self.assertEqual(7,m.getNumberOfCells());
5230         self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5231         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5232         self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5233         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5234         self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5235         self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5236         self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5237         expected1=[0.125,0.125,0.125,0.125,0.25,0.125,0.125]
5238         f=m.getMeasureField(False);
5239         for i in xrange(7):
5240             self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5241             pass
5242         types=m.getAllGeoTypes();
5243         self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5244         #
5245         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5246         m.convertToPolyTypes([3]);
5247         da=m.simplexize(1);
5248         self.assertEqual(7,da.getNumberOfTuples());
5249         self.assertEqual(1,da.getNumberOfComponents());
5250         for i in xrange(7):
5251             self.assertEqual(expected2[i],da.getIJ(i,0));
5252             pass
5253         m.checkCoherency();
5254         types=m.getAllGeoTypes();
5255         self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5256         self.assertEqual(7,m.getNumberOfCells());
5257         self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5258         self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5259         self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5260         self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5261         self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5262         self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5263         self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5264         f=m.getMeasureField(False);
5265         for i in xrange(7):
5266             self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5267             pass
5268         pass
5269
5270     def testSimplexize2(self):
5271         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5272         m.convertToPolyTypes([3]);
5273         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5274         f1.setMesh(m);
5275         arr=DataArrayDouble.New();
5276         arr1=[10.,110.,20.,120.,30.,130.,40.,140.,50.,150.]
5277         arr.setValues(arr1,5,2);
5278         f1.setArray(arr);
5279         #
5280         f1.checkCoherency();
5281         self.assertTrue(f1.simplexize(0));
5282         f1.checkCoherency();
5283         expected1=[10.,110.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.,50.,150.]
5284         for i in xrange(14):
5285             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5286             pass
5287         self.assertTrue(not f1.simplexize(0));
5288         for i in xrange(14):
5289             self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5290             pass
5291         #
5292         pass
5293
5294     def testDAMeld1(self):
5295         da1=DataArrayDouble.New();
5296         da1.alloc(7,2);
5297         da2=DataArrayDouble.New();
5298         da2.alloc(7,1);
5299         #
5300         da1.fillWithValue(7.);
5301         da2.iota(0.);
5302         da3=da2.applyFunc(3,"10*x*IVec+100*x*JVec+1000*x*KVec");
5303         #
5304         da1.setInfoOnComponent(0,"c0da1");
5305         da1.setInfoOnComponent(1,"c1da1");
5306         da3.setInfoOnComponent(0,"c0da3");
5307         da3.setInfoOnComponent(1,"c1da3");
5308         da3.setInfoOnComponent(2,"c2da3");
5309         #
5310         da1C=da1.deepCpy();
5311         da1.meldWith(da3);
5312         self.assertEqual(5,da1.getNumberOfComponents());
5313         self.assertEqual(7,da1.getNumberOfTuples());
5314         self.assertTrue(da1.getInfoOnComponent(0)=="c0da1");
5315         self.assertTrue(da1.getInfoOnComponent(1)=="c1da1");
5316         self.assertTrue(da1.getInfoOnComponent(2)=="c0da3");
5317         self.assertTrue(da1.getInfoOnComponent(3)=="c1da3");
5318         self.assertTrue(da1.getInfoOnComponent(4)=="c2da3");
5319         #
5320         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.]
5321         for i in xrange(35):
5322             self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),10);
5323             pass
5324         #
5325         dai1=da1C.convertToIntArr();
5326         dai3=da3.convertToIntArr();
5327         dai1.meldWith(dai3);
5328         self.assertEqual(5,dai1.getNumberOfComponents());
5329         self.assertEqual(7,dai1.getNumberOfTuples());
5330         self.assertTrue(dai1.getInfoOnComponent(0)=="c0da1");
5331         self.assertTrue(dai1.getInfoOnComponent(1)=="c1da1");
5332         self.assertTrue(dai1.getInfoOnComponent(2)=="c0da3");
5333         self.assertTrue(dai1.getInfoOnComponent(3)=="c1da3");
5334         self.assertTrue(dai1.getInfoOnComponent(4)=="c2da3");
5335         for i in xrange(35):
5336             self.assertEqual(int(expected1[i]),dai1.getIJ(0,i));
5337             pass
5338         # test of static method DataArrayDouble::meld
5339         da4=DataArrayDouble.Meld(da1C,da3);
5340         tmp=DataArrayDouble.Meld([da1C,da3]);
5341         self.assertTrue(da4.isEqual(tmp,1e-10))
5342         self.assertEqual(5,da4.getNumberOfComponents());
5343         self.assertEqual(7,da4.getNumberOfTuples());
5344         self.assertTrue(da4.getInfoOnComponent(0)=="c0da1");
5345         self.assertTrue(da4.getInfoOnComponent(1)=="c1da1");
5346         self.assertTrue(da4.getInfoOnComponent(2)=="c0da3");
5347         self.assertTrue(da4.getInfoOnComponent(3)=="c1da3");
5348         self.assertTrue(da4.getInfoOnComponent(4)=="c2da3");
5349         for i in xrange(35):
5350             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),10);
5351             pass
5352         # test of static method DataArrayInt::meld
5353         dai1=da1C.convertToIntArr();
5354         dai4=DataArrayInt.Meld(dai1,dai3);
5355         tmp=DataArrayInt.Meld([dai1,dai3]);
5356         self.assertTrue(dai4.isEqual(tmp))
5357         self.assertEqual(5,dai4.getNumberOfComponents());
5358         self.assertEqual(7,dai4.getNumberOfTuples());
5359         self.assertTrue(dai4.getInfoOnComponent(0)=="c0da1");
5360         self.assertTrue(dai4.getInfoOnComponent(1)=="c1da1");
5361         self.assertTrue(dai4.getInfoOnComponent(2)=="c0da3");
5362         self.assertTrue(dai4.getInfoOnComponent(3)=="c1da3");
5363         self.assertTrue(dai4.getInfoOnComponent(4)=="c2da3");
5364         for i in xrange(35):
5365             self.assertEqual(int(expected1[i]),dai4.getIJ(0,i));
5366             pass
5367         pass
5368
5369     def testFieldMeld1(self):
5370         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5371         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5372         f1.setMesh(m);
5373         da1=DataArrayDouble.New();
5374         arr1=[12.,23.,34.,45.,56.]
5375         da1.setValues(arr1,5,1);
5376         da1.setInfoOnComponent(0,"aaa");
5377         f1.setArray(da1);
5378         f1.setTime(3.4,2,1);
5379         f1.checkCoherency();
5380         #
5381         f2=f1.deepCpy();
5382         f2.setMesh(f1.getMesh());
5383         f2.checkCoherency();
5384         f2.changeNbOfComponents(2,5.);
5385         f2.assign(5.);
5386         f2.getArray().setInfoOnComponent(0,"bbb");
5387         f2.getArray().setInfoOnComponent(1,"ccc");
5388         f2.checkCoherency();
5389         #
5390         f3=MEDCouplingFieldDouble.MeldFields(f2,f1);
5391         f3.checkCoherency();
5392         self.assertEqual(5,f3.getNumberOfTuples());
5393         self.assertEqual(3,f3.getNumberOfComponents());
5394         self.assertTrue(f3.getArray().getInfoOnComponent(0)=="bbb");
5395         self.assertTrue(f3.getArray().getInfoOnComponent(1)=="ccc");
5396         self.assertTrue(f3.getArray().getInfoOnComponent(2)=="aaa");
5397         expected1=[5.,5.,12.,5.,5.,23.,5.,5.,34.,5.,5.,45.,5.,5.,56.]
5398         for i in xrange(15):
5399             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),12);
5400             pass
5401         time,dt,it=f3.getTime();
5402         self.assertAlmostEqual(3.4,time,14);
5403         self.assertEqual(2,dt);
5404         self.assertEqual(1,it);
5405         #
5406         f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
5407         f5=f1.buildNewTimeReprFromThis(NO_TIME,False);
5408         f6=MEDCouplingFieldDouble.MeldFields(f4,f5);
5409         f6.checkCoherency();
5410         self.assertEqual(5,f6.getNumberOfTuples());
5411         self.assertEqual(3,f6.getNumberOfComponents());
5412         self.assertTrue(f6.getArray().getInfoOnComponent(0)=="bbb");
5413         self.assertTrue(f6.getArray().getInfoOnComponent(1)=="ccc");
5414         self.assertTrue(f6.getArray().getInfoOnComponent(2)=="aaa");
5415         for i in xrange(15):
5416             self.assertAlmostEqual(expected1[i],f6.getIJ(0,i),12);
5417             pass
5418         #
5419         pass
5420
5421     def testMergeNodes2(self):
5422         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5423         m2=MEDCouplingDataForTest.build2DTargetMesh_1();
5424         vec=[0.002,0.]
5425         m2.translate(vec);
5426         #
5427         m3=MEDCouplingUMesh.MergeUMeshes([m1,m2]);
5428         da,b,newNbOfNodes=m3.mergeNodes2(0.01);
5429         self.assertEqual(9,m3.getNumberOfNodes());
5430         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]
5431         for i in xrange(18):
5432             self.assertAlmostEqual(expected1[i],m3.getCoords().getIJ(0,i),13);
5433             pass
5434         #
5435         pass
5436
5437     def testMergeField2(self):
5438         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5439         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5440         f1.setMesh(m);
5441         arr=DataArrayDouble.New();
5442         arr.alloc(5,2);
5443         arr.fillWithValue(2.);
5444         f1.setArray(arr);
5445         f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5446         f2.setMesh(m);
5447         arr=DataArrayDouble.New();
5448         arr.alloc(5,2);
5449         arr.fillWithValue(5.);
5450         f2.setArray(arr);
5451         f3=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5452         f3.setMesh(m);
5453         arr=DataArrayDouble.New();
5454         arr.alloc(5,2);
5455         arr.fillWithValue(7.);
5456         f3.setArray(arr);
5457         #
5458         f4=MEDCouplingFieldDouble.MergeFields([f1,f2,f3]);
5459         self.assertEqual(15,f4.getMesh().getNumberOfCells());
5460         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.]
5461         for i in xrange(30):
5462             self.assertAlmostEqual(expected1[i],f4.getIJ(0,i),13);
5463             pass
5464         #
5465         pass
5466
5467     def testDAIBuildComplement1(self):
5468         a=DataArrayInt.New();
5469         tab=[3,1,7,8]
5470         a.setValues(tab,4,1);
5471         b=a.buildComplement(12);
5472         self.assertEqual(8,b.getNumberOfTuples());
5473         self.assertEqual(1,b.getNumberOfComponents());
5474         expected1=[0,2,4,5,6,9,10,11]
5475         for i in xrange(8):
5476             self.assertEqual(expected1[i],b.getIJ(0,i));
5477             pass
5478         pass
5479
5480     def testDAIBuildUnion1(self):
5481         a=DataArrayInt.New();
5482         tab1=[3,1,7,8]
5483         a.setValues(tab1,4,1);
5484         c=DataArrayInt.New();
5485         tab2=[5,3,0,18,8]
5486         c.setValues(tab2,5,1);
5487         b=a.buildUnion(c);
5488         self.assertEqual(7,b.getNumberOfTuples());
5489         self.assertEqual(1,b.getNumberOfComponents());
5490         expected1=[0,1,3,5,7,8,18]
5491         for i in xrange(7):
5492             self.assertEqual(expected1[i],b.getIJ(0,i));
5493             pass
5494         b=DataArrayInt.BuildUnion([a,c]);
5495         self.assertEqual(7,b.getNumberOfTuples());
5496         self.assertEqual(1,b.getNumberOfComponents());
5497         expected1=[0,1,3,5,7,8,18]
5498         for i in xrange(7):
5499             self.assertEqual(expected1[i],b.getIJ(0,i));
5500             pass
5501         pass
5502
5503     def testDAIBuildIntersection1(self):
5504         a=DataArrayInt.New();
5505         tab1=[3,1,7,8]
5506         a.setValues(tab1,4,1);
5507         c=DataArrayInt.New();
5508         tab2=[5,3,0,18,8]
5509         c.setValues(tab2,5,1);
5510         b=a.buildIntersection(c);
5511         self.assertEqual(2,b.getNumberOfTuples());
5512         self.assertEqual(1,b.getNumberOfComponents());
5513         expected1=[3,8]
5514         for i in xrange(2):
5515             self.assertEqual(expected1[i],b.getIJ(0,i));
5516             pass
5517         b=DataArrayInt.BuildIntersection([a,c]);
5518         self.assertEqual(2,b.getNumberOfTuples());
5519         self.assertEqual(1,b.getNumberOfComponents());
5520         expected1=[3,8]
5521         for i in xrange(2):
5522             self.assertEqual(expected1[i],b.getIJ(0,i));
5523             pass
5524         pass
5525
5526     def testDAIDeltaShiftIndex1(self):
5527         a=DataArrayInt.New();
5528         tab=[1,3,6,7,7,9,15]
5529         a.setValues(tab,7,1);
5530         b=a.deltaShiftIndex();
5531         self.assertEqual(6,b.getNumberOfTuples());
5532         self.assertEqual(1,b.getNumberOfComponents());
5533         expected1=[2,3,1,0,2,6]
5534         for i in xrange(6):
5535             self.assertEqual(expected1[i],b.getIJ(0,i));
5536             pass
5537         pass
5538
5539     def testDaDoubleSelectByTupleIdSafe1(self):
5540         a=DataArrayDouble.New();
5541         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]
5542         a.setValues(arr1,7,2);
5543         a.setInfoOnComponent(0,"toto");
5544         a.setInfoOnComponent(1,"tata");
5545         #
5546         arr2=[4,2,0,6,5]
5547         b=a.selectByTupleIdSafe(arr2);
5548         self.assertEqual(5,b.getNumberOfTuples());
5549         self.assertEqual(2,b.getNumberOfComponents());
5550         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5551         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5552         expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
5553         for i in xrange(10):
5554             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5555             pass
5556         arr4=[4,-1,0,6,5]
5557         self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr4);
5558         arr5=[4,2,0,6,7]
5559         self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr5);
5560         #
5561         c=DataArrayInt.New();
5562         arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5563         c.setValues(arr3,7,2);
5564         c.setInfoOnComponent(0,"toto");
5565         c.setInfoOnComponent(1,"tata");
5566         d=c.selectByTupleIdSafe(arr2);
5567         self.assertEqual(5,d.getNumberOfTuples());
5568         self.assertEqual(2,d.getNumberOfComponents());
5569         self.assertTrue(d.getInfoOnComponent(0)=="toto");
5570         self.assertTrue(d.getInfoOnComponent(1)=="tata");
5571         expected2=[5,15,3,13,1,11,7,17,6,16]
5572         for i in xrange(10):
5573             self.assertEqual(expected2[i],d.getIJ(0,i));
5574             pass
5575         self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr4);
5576         self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr5);
5577         pass
5578
5579     def testAreCellsIncludedIn1(self):
5580         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5581         pt=[1,3]
5582         m2=m.buildPartOfMySelf(pt,True);
5583         ret,tmp=m.areCellsIncludedIn(m2,0)
5584         self.assertTrue(ret);
5585         self.assertEqual(2,tmp.getNumberOfTuples());
5586         self.assertEqual(1,tmp.getNumberOfComponents());
5587         self.assertEqual(pt[0],tmp.getIJ(0,0));
5588         self.assertEqual(pt[1],tmp.getIJ(0,1));
5589         ret,tmp=m2.areCellsIncludedIn(m,0)
5590         self.assertTrue(not ret);
5591         m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m,m2)
5592         c,cI=m3.findCommonCells(2,m.getNumberOfCells())
5593         self.assertTrue(c.isEqual(DataArrayInt([1,5,3,6])))
5594         self.assertTrue(cI.isEqual(DataArrayInt([0,2,4])))
5595         pass
5596
5597     def testSwigErrorProtection1(self):
5598         m=MEDCouplingDataForTest.build3DTargetMesh_1();
5599         m.rotate([0.,0.,0.],[0.3,0.6,1.2],0.37)
5600         m.rotate([0.,0.,0.],[0.3,6,1.2],0.37)
5601         self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],(0.3,6,"1.2"),0.37)
5602         self.assertRaises(InterpKernelException,m.rotate,[0.,"0.",0.],[0.3,0.6,1.2],0.37)
5603         self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],[0.3,'0.6',1.2],0.37)
5604         m2=m.buildPartOfMySelf([2,5],True)
5605         m3=m.buildPartOfMySelf((2,5),True)
5606         self.assertTrue(m2.isEqual(m3,1e-12))
5607         self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[2,5.],True)
5608         da1=m.getCoords().keepSelectedComponents([1])
5609         da2=m.getCoords().keepSelectedComponents((1,))
5610         self.assertTrue(da1.isEqual(da2,1e-12))
5611         self.assertRaises(InterpKernelException,m.getCoords().keepSelectedComponents,["1"])
5612         pass
5613
5614     def testDAIBuildSubstraction1(self):
5615         a=DataArrayInt.New()
5616         aa=[2,3,6,8,9]
5617         a.setValues(aa,5,1)
5618         b=DataArrayInt.New()
5619         bb=[1,3,5,9,11]
5620         b.setValues(bb,5,1)
5621         self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
5622         pass
5623
5624     def testBuildOrthogonalField2(self):
5625         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5626         d1=DataArrayInt.New();
5627         d2=DataArrayInt.New();
5628         d3=DataArrayInt.New();
5629         d4=DataArrayInt.New();
5630         m1=m.buildDescendingConnectivity(d1,d2,d3,d4);
5631         #
5632         f1=m1.buildOrthogonalField();
5633         da1=f1.getArray();
5634         self.assertEqual(2,da1.getNumberOfComponents());
5635         self.assertEqual(13,da1.getNumberOfTuples());
5636         #
5637         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.];
5638         for i in xrange(26):
5639             self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),14);
5640             pass
5641         pass
5642
5643     def testSwigErrorProtection2(self):
5644         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5645         coo=m.getCoords()
5646         c=m.getNodalConnectivity()
5647         ci=m.getNodalConnectivityIndex()
5648         del m
5649         self.assertEqual(2,coo.getNumberOfComponents());
5650         self.assertEqual(6,ci.getNumberOfTuples());
5651         self.assertEqual(23,c.getNumberOfTuples());
5652         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5653         f=m.getMeasureField(True)
5654         c=f.getArray()
5655         del f
5656         self.assertEqual(1,c.getNumberOfComponents());
5657         m=MEDCouplingCMesh.New()
5658         x=DataArrayDouble.New()
5659         x.setValues([1.,2.,4.],3,1)
5660         m.setCoordsAt(0,x)
5661         del x
5662         xx=m.getCoordsAt(0)
5663         del m
5664         self.assertEqual(3,xx.getNumberOfTuples());
5665         #
5666         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5667         f=m.getMeasureField(True)
5668         m2=f.getMesh()
5669         del m
5670         del f
5671         self.assertEqual(5,m2.getNumberOfCells());
5672         pass
5673
5674     def testUMInsertNextCell1(self):
5675         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 ]
5676         targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
5677         targetMesh=MEDCouplingUMesh.New();
5678         targetMesh.allocateCells(5);
5679         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_QUAD4,4,targetConn[0:4])
5680         targetMesh.setMeshDimension(2);
5681         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
5682         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_TETRA4,4,targetConn[0:4])
5683         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_SEG2,2,targetConn[0:2])
5684         self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_POINT1,1,targetConn[0:1])
5685         targetMesh.insertNextCell(NORM_TRI3,3,targetConn[4:7])
5686         targetMesh.insertNextCell(NORM_TRI3,3,targetConn[7:10])
5687         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
5688         targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
5689         targetMesh.finishInsertingCells();
5690         myCoords=DataArrayDouble.New();
5691         myCoords.setValues(targetCoords,9,2);
5692         targetMesh.setCoords(myCoords);
5693         targetMesh.checkCoherency();
5694         pass
5695
5696     def testFieldOperatorDivDiffComp1(self):
5697         m=MEDCouplingDataForTest.build2DTargetMesh_1();
5698         m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
5699         #
5700         f1=m1.buildOrthogonalField();
5701         arr1=[2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.]
5702         arr=DataArrayDouble.New();
5703         arr.setValues(arr1,13,1);
5704         f2=MEDCouplingFieldDouble.New(ON_CELLS);
5705         f2.setArray(arr);
5706         f2.setMesh(m1);
5707         f2.checkCoherency();
5708         #
5709         f3=f1/f2;
5710         self.assertRaises(InterpKernelException,f2.__div__,f1)
5711         f3.checkCoherency();
5712         f1/=f2;
5713         #self.assertRaises(InterpKernelException,f2.__idiv__,f1) # mem leaks
5714         self.assertTrue(f1.isEqual(f3,1e-10,1e-10));
5715         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]
5716         for i in xrange(26):
5717             self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),10);
5718             pass
5719         pass
5720
5721     def testDARearrange1(self):
5722         da1=DataArrayInt.New();
5723         da1.alloc(12,1);
5724         da1.iota(0);
5725         #
5726         self.assertEqual(12,da1.getNbOfElems());
5727         self.assertEqual(1,da1.getNumberOfComponents());
5728         self.assertEqual(12,da1.getNumberOfTuples());
5729         da1.rearrange(4);
5730         self.assertEqual(12,da1.getNbOfElems());
5731         self.assertEqual(4,da1.getNumberOfComponents());
5732         self.assertEqual(3,da1.getNumberOfTuples());
5733         for i in xrange(12):
5734             self.assertEqual(i,da1.getIJ(0,i));
5735         #
5736         da1.rearrange(6);
5737         self.assertEqual(12,da1.getNbOfElems());
5738         self.assertEqual(6,da1.getNumberOfComponents());
5739         self.assertEqual(2,da1.getNumberOfTuples());
5740         for i in xrange(12):
5741             self.assertEqual(i,da1.getIJ(0,i));
5742         #
5743         self.assertRaises(InterpKernelException,da1.rearrange,7);
5744         #
5745         da1.rearrange(12);
5746         self.assertEqual(12,da1.getNbOfElems());
5747         self.assertEqual(12,da1.getNumberOfComponents());
5748         self.assertEqual(1,da1.getNumberOfTuples());
5749         for i in xrange(12):
5750             self.assertEqual(i,da1.getIJ(0,i));
5751         #
5752         da1.rearrange(3);
5753         self.assertEqual(12,da1.getNbOfElems());
5754         self.assertEqual(3,da1.getNumberOfComponents());
5755         self.assertEqual(4,da1.getNumberOfTuples());
5756         for i in xrange(12):
5757             self.assertEqual(i,da1.getIJ(0,i));
5758         #double
5759         da2=da1.convertToDblArr();
5760         st=da2.getHiddenCppPointer()
5761         #
5762         self.assertEqual(12,da2.getNbOfElems());
5763         self.assertEqual(3,da2.getNumberOfComponents());
5764         self.assertEqual(4,da2.getNumberOfTuples());
5765         da2.rearrange(4);
5766         self.assertEqual(12,da2.getNbOfElems());
5767         self.assertEqual(4,da2.getNumberOfComponents());
5768         self.assertEqual(3,da2.getNumberOfTuples());
5769         for i in xrange(12):
5770             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5771         #
5772         da2.rearrange(6);
5773         self.assertEqual(12,da2.getNbOfElems());
5774         self.assertEqual(6,da2.getNumberOfComponents());
5775         self.assertEqual(2,da2.getNumberOfTuples());
5776         for i in xrange(12):
5777             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5778         #
5779         self.assertRaises(InterpKernelException,da2.rearrange,7);
5780         #
5781         da2.rearrange(1);
5782         self.assertEqual(st,da2.getHiddenCppPointer())
5783         self.assertEqual(12,da2.getNbOfElems());
5784         self.assertEqual(1,da2.getNumberOfComponents());
5785         self.assertEqual(12,da2.getNumberOfTuples());
5786         for i in xrange(12):
5787             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5788         #
5789         da2.rearrange(3);
5790         self.assertEqual(12,da2.getNbOfElems());
5791         self.assertEqual(3,da2.getNumberOfComponents());
5792         self.assertEqual(4,da2.getNumberOfTuples());
5793         for i in xrange(12):
5794             self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5795         pass
5796
5797     def testDARearrange2(self):
5798         da1=DataArrayInt.New();
5799         arr=[1,2,3,2,2,3,5,1,5,5,2,2]
5800         da1.setValues(arr,4,3);
5801         s=da1.getDifferentValues();
5802         expected1=DataArrayInt([1,2,3,5])
5803         self.assertTrue(expected1.isEqual(s));
5804         pass
5805
5806     def testSwigErrorProtection3(self):
5807         da=DataArrayInt.New()
5808         da.setValues([1,2,3,4,0,0,0,0,0,0,0,0],4,3)
5809         self.assertEqual([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0],da.getValues())
5810         self.assertEqual(3,da.getNumberOfComponents());
5811         self.assertEqual(4,da.getNumberOfTuples());
5812         da=DataArrayInt.New()
5813         da.setValues(((1,2,3),(4,4,3),(0,0,0),(0,0,0)),4,3)
5814         self.assertEqual([1, 2, 3, 4, 4, 3, 0, 0, 0, 0, 0, 0],da.getValues())
5815         self.assertEqual(3,da.getNumberOfComponents());
5816         self.assertEqual(4,da.getNumberOfTuples());
5817         da.setValues((10*[1]+290*[2])[:12],4,3)
5818         self.assertEqual(10*[1]+[2,2],da.getValues())
5819         self.assertEqual(3,da.getNumberOfComponents());
5820         self.assertEqual(4,da.getNumberOfTuples());
5821         #
5822         da=DataArrayDouble.New()
5823         da.setValues([1,2,3.,4,0,0,0,0,0,0,0,0],4,3)
5824         self.assertEqual([1., 2., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0.],da.getValues())
5825         self.assertEqual(3,da.getNumberOfComponents());
5826         self.assertEqual(4,da.getNumberOfTuples());
5827         da=DataArrayDouble.New()
5828         da.setValues(((1,2,3),(4.,4,3),(0,0,0),(0,0,0)),4,3)
5829         self.assertEqual([1., 2., 3., 4., 4., 3., 0., 0., 0., 0., 0., 0.],da.getValues())
5830         self.assertEqual(3,da.getNumberOfComponents());
5831         self.assertEqual(4,da.getNumberOfTuples());
5832         da.setValues((10*[1]+290*[2])[:12],4,3)
5833         self.assertEqual(10*[1.]+[2.,2.],da.getValues())
5834         self.assertEqual(3,da.getNumberOfComponents());
5835         self.assertEqual(4,da.getNumberOfTuples());
5836         pass
5837
5838     def testDAIBuildPermutationArr1(self):
5839         a=DataArrayInt.New()
5840         a.setValues([4,5,6,7,8],5,1)
5841         b=DataArrayInt.New()
5842         b.setValues([5,4,8,6,7],5,1)
5843         c=a.buildPermutationArr(b)
5844         self.assertEqual([1,0,4,2,3],c.getValues())
5845         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5846         b.setIJ(0,0,9)
5847         self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
5848         self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
5849         a.setIJ(3,0,4)
5850         b.setIJ(0,0,5)
5851         b.setIJ(4,0,4)#a==[4,5,6,4,8] and b==[5,4,8,6,4]
5852         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5853         c=a.buildPermutationArr(b)
5854         self.assertEqual([1,3,4,2,3],c.getValues())
5855         d=b.convertToDblArr()
5856         expect3=[4,4,5,6,8]
5857         b.sort()
5858         self.assertEqual(expect3,b.getValues())
5859         d.sort()
5860         self.assertEqual(5,d.getNumberOfTuples());
5861         self.assertEqual(1,d.getNumberOfComponents());
5862         for i in xrange(5):
5863             self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
5864             pass
5865         pass
5866
5867     def testAreCellsIncludedIn2(self):
5868         myName="Vitoo";
5869         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5870         m2=m.buildPartOfMySelf([],True);
5871         self.assertEqual(0,m2.getNumberOfCells());
5872         self.assertEqual(3,m2.getSpaceDimension());
5873         self.assertEqual(2,m2.getMeshDimension());
5874         m2.setName(myName);
5875         test,tmp=m.areCellsIncludedIn(m2,0)
5876         self.assertTrue(test);
5877         self.assertEqual(myName,tmp.getName());
5878         self.assertEqual(0,tmp.getNumberOfTuples())
5879         self.assertEqual(1,tmp.getNumberOfComponents())
5880         pass
5881
5882     def testUMeshGetPartBarycenterAndOwner1(self):
5883         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5884         part1=[1,0,4];
5885         part=DataArrayInt.New();
5886         part.setValues(part1,3,1);
5887         b=m1.getPartBarycenterAndOwner(part);
5888         self.assertEqual(2,b.getNumberOfComponents());
5889         self.assertEqual(3,b.getNumberOfTuples());
5890         expected1=[0.36666666666666665,-0.13333333333333333,-0.05,-0.05,0.45,0.45];
5891         for i in xrange(6):
5892             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5893             pass
5894         pass
5895
5896     def testUMeshGetPartMeasureField1(self):
5897         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5898         part1=[1,0,4];
5899         part=DataArrayInt.New();
5900         part.setValues(part1,3,1);
5901         b=m1.getPartMeasureField(True,part);
5902         self.assertEqual(1,b.getNumberOfComponents());
5903         self.assertEqual(3,b.getNumberOfTuples());
5904         expected1=[0.125,0.25,0.25];
5905         for i in xrange(3):
5906             self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5907             pass
5908         pass
5909
5910     def testUMeshBuildPartOrthogonalField1(self):
5911         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5912         m1.changeSpaceDimension(3);
5913         part1=[1,0,4];
5914         part=DataArrayInt.New();
5915         part.setValues(part1,3,1);
5916         b=m1.buildPartOrthogonalField(part);
5917         self.assertEqual(3,b.getArray().getNumberOfComponents());
5918         self.assertEqual(3,b.getArray().getNumberOfTuples());
5919         expected1=[0.,0.,-1.,0.,0.,-1.,0.,0.,-1.];
5920         for i in xrange(9):
5921             self.assertAlmostEqual(expected1[i],b.getArray().getIJ(0,i),14);
5922             pass
5923         pass
5924
5925     def testUMeshGetTypesOfPart1(self):
5926         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5927         part1=[0,3,4];
5928         p1=DataArrayInt.New()
5929         p1.setValues(part1,3,1)
5930         s=m1.getTypesOfPart(p1);
5931         self.assertEqual([NORM_QUAD4],s);
5932         part2=[2,2,2,1];
5933         p2=DataArrayInt.New()
5934         p2.setValues(part2,4,1)
5935         s=m1.getTypesOfPart(p2);
5936         self.assertEqual([NORM_TRI3],s);
5937         part3=[3,2,1];
5938         p3=DataArrayInt.New()
5939         p3.setValues(part3,3,1)
5940         s=m1.getTypesOfPart(p3);
5941         self.assertEqual(s,[NORM_TRI3,NORM_QUAD4]);
5942         pass
5943
5944     def testUMeshKeepCellIdsByType1(self):
5945         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5946         part1=[0,3,4]
5947         p1=DataArrayInt.New()
5948         p1.setValues(part1,3,1)
5949         p1.setName("p1")
5950         a=m1.keepCellIdsByType(NORM_TRI3,p1);
5951         self.assertEqual("p1",a.getName())
5952         self.assertEqual(1,a.getNumberOfComponents());
5953         self.assertEqual(0,a.getNumberOfTuples());
5954         #
5955         part2=[3,2,0,2,4]
5956         p2=DataArrayInt.New()
5957         p2.setValues(part2,5,1)
5958         p2.setName("p2")
5959         a=m1.keepCellIdsByType(NORM_TRI3,p2);
5960         self.assertEqual("p2",a.getName())
5961         self.assertEqual(1,a.getNumberOfComponents());
5962         self.assertEqual(2,a.getNumberOfTuples());
5963         self.assertEqual(2,a.getIJ(0,0));
5964         self.assertEqual(2,a.getIJ(1,0));
5965         #
5966         a=m1.keepCellIdsByType(NORM_QUAD4,p2);
5967         self.assertEqual("p2",a.getName())
5968         self.assertEqual(1,a.getNumberOfComponents());
5969         self.assertEqual(3,a.getNumberOfTuples());
5970         self.assertEqual(3,a.getIJ(0,0));
5971         self.assertEqual(0,a.getIJ(1,0));
5972         self.assertEqual(4,a.getIJ(2,0));
5973         pass
5974     
5975     def testSwigErrorDaIntSelectByTupleId1(self):
5976         a=DataArrayInt.New();
5977         arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5978         a.setValues(arr1,7,2);
5979         a.setInfoOnComponent(0,"toto");
5980         a.setInfoOnComponent(1,"tata");
5981         #
5982         arr2=[4,2,0,6,5]
5983         b=a.selectByTupleId(arr2);
5984         self.assertEqual(5,b.getNumberOfTuples());
5985         self.assertEqual(2,b.getNumberOfComponents());
5986         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5987         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5988         expected1=[5,15,3,13,1,11,7,17,6,16]
5989         self.assertEqual(expected1,b.getValues())
5990         #
5991         a2=DataArrayInt.New()
5992         a2.setValues(arr2,5,1)
5993         b=a.selectByTupleId(a2);
5994         self.assertEqual(5,b.getNumberOfTuples());
5995         self.assertEqual(2,b.getNumberOfComponents());
5996         self.assertTrue(b.getInfoOnComponent(0)=="toto");
5997         self.assertTrue(b.getInfoOnComponent(1)=="tata");
5998         expected1=[5,15,3,13,1,11,7,17,6,16]
5999         self.assertEqual(expected1,b.getValues())
6000         pass
6001
6002     def testSwigErrorRenum(self):
6003         da=DataArrayDouble.New()
6004         da.setValues([7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.],10,2)
6005         d=DataArrayInt.New()
6006         d.setValues([0,2,3,1,4,5,6,8,7,9],10,1)
6007         da.renumberInPlace(d)
6008         da.renumber(d)
6009         pass
6010
6011     def testSwigGetItem1(self):
6012         da=DataArrayInt.New()
6013         da.alloc(16,3)
6014         da.rearrange(1)
6015         da.iota(7)
6016         da.rearrange(3)
6017         da.setInfoOnComponent(0,"X [m]")
6018         da.setInfoOnComponent(1,"Y [m]")
6019         da.setInfoOnComponent(2,"Z [km]")
6020         da2=da[5:-1]
6021         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())
6022         da2=da[4]
6023         self.assertEqual([19, 20, 21],da2.getValues())
6024         try:
6025             da2=da[4:17]
6026         except InterpKernelException as e:
6027             self.assertTrue(True)
6028         else:
6029             self.assertTrue(False)
6030             pass
6031         da2=da[5:-2,2]
6032         self.assertEqual([24, 27, 30, 33, 36, 39, 42, 45, 48],da2.getValues())
6033         da2=da[5:8,:]
6034         self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30],da2.getValues())
6035         da2=da[:]
6036         self.assertTrue(da2.isEqual(da))
6037         da2=da[:,:]
6038         self.assertTrue(da2.isEqual(da))
6039         try:
6040             da2=da[:,:,:]
6041         except InterpKernelException as e:
6042             self.assertTrue(True)
6043         else:
6044             self.assertTrue(False)
6045             pass
6046         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayInt([23,26,29])))
6047         da2=da[5:8,:-2]
6048         self.assertEqual([22, 25, 28],da2.getValues())
6049         try:
6050             da2=da[5:-18,2]
6051         except InterpKernelException as e:
6052             self.assertTrue(True)
6053         else:
6054             self.assertTrue(False)
6055             pass
6056         da2=da[5:5,2]
6057         self.assertEqual([],da2.getValues())
6058         pass
6059
6060     def testSwigGetItem2(self):
6061         da=DataArrayDouble.New()
6062         da.alloc(16,3)
6063         da.rearrange(1)
6064         da.iota(7)
6065         da.rearrange(3)
6066         da.setInfoOnComponent(0,"X [m]")
6067         da.setInfoOnComponent(1,"Y [m]")
6068         da.setInfoOnComponent(2,"Z [km]")
6069         da2=da[5:-1]
6070         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())
6071         da2=da[4]
6072         self.assertEqual([19., 20., 21],da2.getValues())
6073         try:
6074             da2=da[4:17]
6075         except InterpKernelException as e:
6076             self.assertTrue(True)
6077         else:
6078             self.assertTrue(False)
6079             pass
6080         da2=da[5:-2,2]
6081         self.assertEqual([24., 27., 30., 33., 36., 39., 42., 45., 48.],da2.getValues())
6082         da2=da[5:8,:]
6083         self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30.],da2.getValues())
6084         da2=da[:]
6085         self.assertTrue(da2.isEqual(da,1e-12))
6086         da2=da[:,:]
6087         self.assertTrue(da2.isEqual(da,1e-12))
6088         try:
6089             da2=da[:,:,:]
6090         except InterpKernelException as e:
6091             self.assertTrue(True)
6092         else:
6093             self.assertTrue(False)
6094             pass
6095         self.assertTrue(da[5:8,-2].isEqualWithoutConsideringStr(DataArrayDouble([23.,26.,29.]),1e-12))
6096         da2=da[5:8,:-2]
6097         self.assertEqual([22., 25., 28.],da2.getValues())
6098         try:
6099             da2=da[5:-18,2]
6100         except InterpKernelException as e:
6101             self.assertTrue(True)
6102         else:
6103             self.assertTrue(False)
6104             pass
6105         da2=da[5:5,2]
6106         self.assertEqual([],da2.getValues())
6107         pass
6108
6109     def testSwigSetItem1(self):
6110         da=DataArrayInt.New()
6111         da.alloc(20,1)
6112         da.iota(7)
6113         da.rearrange(5)
6114         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6115         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
6116         da[:,2]=3
6117         self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues())
6118         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6119         da[2]=3
6120         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3, 3, 3, 3, 3, 22, 23, 24, 25, 26],da.getValues())
6121         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6122         da[[0,3]]=-1
6123         self.assertEqual([-1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1],da.getValues())
6124         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6125         da[:,[1,3,4]]=-3
6126         self.assertEqual([7, -3, 9, -3, -3, 12, -3, 14, -3, -3, 17, -3, 19, -3, -3, 22, -3, 24, -3, -3],da.getValues())
6127         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6128         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6129         da[da2]=-7
6130         self.assertEqual([-7, -7, -7, -7, -7, 12, 13, 14, 15, 16, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7],da.getValues())
6131         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6132         da[da2,-2:]=-7
6133         self.assertEqual([7, 8, 9, -7, -7, 12, 13, 14, 15, 16, 17, 18, 19, -7, -7, 22, 23, 24, -7, -7],da.getValues())
6134         # Let's test with DAI right hand side
6135         da1=DataArrayInt.New()
6136         da1.setValues([25,26,27,125,126,127],2,3)
6137         #
6138         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6139         da[-2:,1:4]=da1
6140         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 21, 22, 125, 126, 127, 26],da.getValues())
6141         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6142         da[1:,3]=[225,226,227]
6143         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 225, 16, 17, 18, 19, 226, 21, 22, 23, 24, 227, 26],da.getValues())
6144         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6145         da[1,2:]=[225,226,227]
6146         self.assertEqual([7, 8, 9, 10, 11, 12, 13, 225, 226, 227, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],da.getValues())
6147         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6148         da[da2,-2:]=[88,99,1010,1111,1212,1313]
6149         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6150         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6151         da3=DataArrayInt.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6152         da[da2,-2:]=da3
6153         self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6154         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6155         da[da2,[0,2]]=da3
6156         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6157         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6158         da[da2,0:3:2]=da3
6159         self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6160         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6161         da[da2,0:3:2]=-8
6162         self.assertEqual([-8, 8, -8, 10, 11, 12, 13, 14, 15, 16, -8, 18, -8, 20, 21, -8, 23, -8, 25, 26],da.getValues())
6163         pass
6164
6165     def testSwigSetItem2(self):
6166         da=DataArrayDouble.New()
6167         da.alloc(20,1)
6168         da.iota(7)
6169         da.rearrange(5)
6170         da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6171         da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; 
6172         da[:,2]=3.
6173         self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues())
6174         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6175         da[2]=3.
6176         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 3., 3., 3., 3., 3., 22., 23., 24., 25., 26.],da.getValues())
6177         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6178         da[[0,3]]=-1.
6179         self.assertEqual([-1., -1., -1., -1., -1., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., -1., -1., -1., -1., -1.],da.getValues())
6180         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6181         da[:,[1,3,4]]=-3.
6182         self.assertEqual([7., -3., 9., -3., -3., 12., -3., 14., -3., -3., 17., -3., 19., -3., -3., 22., -3., 24., -3., -3.],da.getValues())
6183         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6184         da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6185         da[da2]=-7.
6186         self.assertEqual([-7., -7., -7., -7., -7., 12., 13., 14., 15., 16., -7., -7., -7., -7., -7., -7., -7., -7., -7., -7.],da.getValues())
6187         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6188         da[da2,-2:]=-7
6189         self.assertEqual([7., 8., 9., -7., -7., 12., 13., 14., 15., 16., 17., 18., 19., -7., -7., 22., 23., 24., -7., -7.],da.getValues())
6190         # Let's test with DAI right hand side
6191         da1=DataArrayDouble.New()
6192         da1.setValues([25,26,27,125,126,127],2,3)
6193         #
6194         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6195         da[-2:,1:4]=da1
6196         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 25., 26., 27., 21., 22., 125., 126., 127., 26.],da.getValues())
6197         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6198         da[1:,3]=[225.,226.,227.]
6199         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 225., 16., 17., 18., 19., 226., 21., 22., 23., 24., 227., 26.],da.getValues())
6200         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6201         da[1,2:]=[225,226,227]
6202         self.assertEqual([7., 8., 9., 10., 11., 12., 13., 225., 226., 227., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26.],da.getValues())
6203         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6204         da[da2,-2:]=[88,99,1010,1111,1212,1313]
6205         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6206         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6207         da3=DataArrayDouble.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6208         da[da2,-2:]=da3
6209         self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6210         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6211         da[da2,[0,2]]=da3
6212         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6213         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6214         da[da2,0:3:2]=da3
6215         self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6216         da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6217         da[da2,0:3:2]=-8.
6218         self.assertEqual([-8., 8., -8., 10., 11., 12., 13., 14., 15., 16., -8., 18., -8., 20., 21., -8., 23., -8., 25., 26.],da.getValues())
6219         pass
6220
6221     def testSwigDADOp(self):
6222         da=DataArrayDouble.New()
6223         da.alloc(12,1)
6224         da.iota(7.)
6225         da1=DataArrayDouble.New()
6226         da1.alloc(12,1)
6227         da1.iota(8.)
6228         da2=da+da1
6229         self.assertEqual([15., 17., 19., 21., 23., 25., 27., 29., 31., 33., 35., 37.],da2.getValues())
6230         da2=da+3
6231         da3=3+da
6232         self.assertTrue(da2.isEqual(da3,1e-12))
6233         da2=da-1.
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=1-da
6236         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())
6237         da2=da*3
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=3.*da
6240         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())
6241         da2=da*da1
6242         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())
6243         da2=da/4.
6244         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())
6245         da3=4./da
6246         da4=da3*da2
6247         self.assertTrue(da4.isUniform(1.,1e-12))
6248         st1=da.getHiddenCppPointer()
6249         da+=1
6250         st2=da.getHiddenCppPointer()
6251         self.assertEqual(st1,st2)
6252         self.assertTrue(da.isEqual(da1,1e-12))
6253         da-=8
6254         st2=da.getHiddenCppPointer()
6255         self.assertEqual(st1,st2)
6256         self.assertEqual(range(12),da.getValues())
6257         da+=da1
6258         st2=da.getHiddenCppPointer()
6259         self.assertEqual(st1,st2)
6260         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())
6261         da*=0.5
6262         st2=da.getHiddenCppPointer()
6263         self.assertEqual(st1,st2)
6264         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())
6265         da*=da1
6266         st2=da.getHiddenCppPointer()
6267         self.assertEqual(st1,st2)
6268         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())
6269         da/=da1
6270         self.assertEqual(st1,st2)
6271         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())
6272         da/=2
6273         st2=da.getHiddenCppPointer()
6274         self.assertEqual(st1,st2)
6275         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())
6276         da.rearrange(3)
6277         da5=DataArrayDouble.New()
6278         da5.setValues([5.,4.,3.,2.],4,1)
6279         da*=da5 # it works with unmathing number of compo
6280         st2=da.getHiddenCppPointer()
6281         self.assertEqual(st1,st2)
6282         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())
6283         #
6284         da.alloc(30,1)
6285         da.iota(7.)
6286         da.rearrange(3)
6287         ids=DataArrayInt.New()
6288         ids.setValues([3,4,7],3,1)
6289         da[ids,:]=[5.,8.,9.]
6290         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())
6291         #
6292         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6293         da[ids,[1,2]]=[5,8]
6294         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())
6295         pass
6296
6297     def testSwigDAIOp(self):
6298         da=DataArrayInt.New()
6299         da.alloc(12,1)
6300         da.iota(7)
6301         da1=DataArrayInt.New()
6302         da1.alloc(12,1)
6303         da1.iota(8)
6304         da2=da+da1
6305         self.assertEqual([15,17,19,21,23,25,27,29,31,33,35,37],da2.getValues())
6306         da2=da+3
6307         da3=3+da
6308         self.assertTrue(da2.isEqual(da3))
6309         da2=da-1
6310         self.assertEqual([6,7,8,9,10,11,12,13,14,15,16,17],da2.getValues())
6311         da2=1-da
6312         self.assertEqual([-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17],da2.getValues())
6313         da2=da*3
6314         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6315         da2=3*da
6316         self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6317         da2=da*da1
6318         self.assertEqual([56,72,90,110,132,156,182,210,240,272,306,342.0],da2.getValues())
6319         da2=da/4
6320         self.assertEqual([1,2,2,2,2,3,3,3,3,4,4,4],da2.getValues())
6321         da3=4/da
6322         da4=da3*da2
6323         self.assertTrue(da4.isUniform(0))
6324         st1=da.getHiddenCppPointer()
6325         da+=1
6326         st2=da.getHiddenCppPointer()
6327         self.assertEqual(st1,st2)
6328         self.assertTrue(da.isEqual(da1))
6329         da-=8
6330         st2=da.getHiddenCppPointer()
6331         self.assertEqual(st1,st2)
6332         self.assertEqual(range(12),da.getValues())
6333         da+=da1
6334         st2=da.getHiddenCppPointer()
6335         self.assertEqual(st1,st2)
6336         self.assertEqual([8,10,12,14,16,18,20,22,24,26,28,30],da.getValues())
6337         da/=2
6338         st2=da.getHiddenCppPointer()
6339         self.assertEqual(st1,st2)
6340         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6341         da*=da1
6342         st2=da.getHiddenCppPointer()
6343         self.assertEqual(st1,st2)
6344         self.assertEqual([32,45,60,77,96,117,140,165,192,221,252,285],da.getValues())
6345         da/=da1
6346         self.assertEqual(st1,st2)
6347         self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6348         da/=2
6349         st2=da.getHiddenCppPointer()
6350         self.assertEqual(st1,st2)
6351         self.assertEqual([2,2, 3,3, 4,4, 5,5, 6,6, 7,7],da.getValues())
6352         da.rearrange(3)
6353         da5=DataArrayInt.New()
6354         da5.setValues([5,4,3,2],4,1)
6355         da*=da5 # it works with unmathing number of compo
6356         st2=da.getHiddenCppPointer()
6357         self.assertEqual(st1,st2)
6358         self.assertEqual([10,10, 15,12,16,16,15,15, 18,12,14,14],da.getValues())
6359         da%=6
6360         st2=da.getHiddenCppPointer()
6361         self.assertEqual(st1,st2)
6362         self.assertEqual([4,4,3,0,4,4,3,3,0,0,2,2],da.getValues())
6363         #
6364         da.alloc(30,1)
6365         da.iota(7)
6366         da.rearrange(3)
6367         ids=DataArrayInt.New()
6368         ids.setValues([3,4,7],3,1)
6369         da[ids,:]=[5,8,9]
6370         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())
6371         #
6372         da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6373         da[ids,[1,2]]=[5,8]
6374         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())
6375         pass
6376
6377     def testSwigDAIOp2(self):
6378         da=DataArrayInt.New()
6379         st=da.getHiddenCppPointer()
6380         da.alloc(10,3)
6381         da.rearrange(1)
6382         da.iota(0)
6383         da.rearrange(3)
6384         da[:,1]+=4
6385         da[-2:,2]+=10
6386         da[-2:,2]+=10
6387         da[:,2]+=da[:,0]
6388         da[da[0],:]=7
6389         self.assertEqual(st,da.getHiddenCppPointer())
6390         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])
6391         pass
6392
6393     def testSwigDAIOp3(self):
6394         da=DataArrayInt.New()
6395         self.assertRaises(InterpKernelException,da.__len__)
6396         self.assertRaises(InterpKernelException,da.__int__)
6397         for elt in da:
6398             self.assertTrue(False)
6399             pass
6400         da.alloc(12,3)
6401         da.rearrange(1) ; da.fillWithZero()
6402         l1=list(da)
6403         self.assertEqual(36,len(da));
6404         da.rearrange(3)
6405         tmp=da[0]
6406         self.assertRaises(InterpKernelException,tmp.__int__)
6407         self.assertEqual(12,len(da));
6408         l=list(da)
6409         for elt in enumerate(l):
6410             elt[1][2]=elt[0]
6411             pass
6412         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]
6413         self.assertEqual(ref,da.getValues());
6414         da.rearrange(1)
6415         l=[int(elt) for elt in l1]
6416         self.assertEqual(ref,da.getValues());
6417         self.assertEqual(11,int(da[-1:]))
6418         pass
6419
6420     def testSwigDADOp3(self):
6421         da=DataArrayDouble.New()
6422         self.assertRaises(InterpKernelException,da.__len__)
6423         self.assertRaises(InterpKernelException,da.__float__)
6424         for elt in da:
6425             self.assertTrue(False)
6426             pass
6427         da.alloc(12,3)
6428         da.rearrange(1) ; da.fillWithZero()
6429         l1=list(da)
6430         self.assertEqual(36,len(da));
6431         da.rearrange(3)
6432         tmp=da[0]
6433         self.assertRaises(InterpKernelException,tmp.__float__)
6434         self.assertEqual(12,len(da));
6435         l=list(da)
6436         for elt in enumerate(l):
6437             elt[1][2]=elt[0]
6438             pass
6439         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.]
6440         self.assertEqual(ref,da.getValues());
6441         da.rearrange(1)
6442         l=[float(elt) for elt in l1]
6443         self.assertEqual(ref,da.getValues());
6444         self.assertEqual(11.,float(da[-1:]))
6445         pass
6446
6447     def testSwigDataArrayIntIterator1(self):
6448         da=DataArrayInt.New()
6449         da.alloc(12,1)
6450         da.iota(2)
6451         da.rearrange(3)
6452         # __getitem__ testing
6453         li=[]
6454         for it in da:
6455             li+=it[1:]
6456             pass
6457         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6458         li=[]
6459         for it in da:
6460             li+=[it[-1]]
6461             pass
6462         self.assertEqual([4, 7, 10, 13],li)
6463         li=[]
6464         for it in da:
6465             li+=it[[2,1,0]]
6466             pass
6467         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6468         # __setitem__ testing
6469         da3=da.deepCpy()
6470         da2=DataArrayInt.New()
6471         da2.alloc(12,1)
6472         da2.iota(2002)
6473         da2.rearrange(3)
6474         it2=da2.__iter__()
6475         i=0
6476         for it in da:
6477             pt=it2.next()
6478             it[:]=pt
6479             pass
6480         self.assertTrue(da.isEqual(da2))
6481         da=da3
6482         da3=da.deepCpy()
6483         #
6484         for it in da:
6485             it[:]=5
6486             pass
6487         da.rearrange(1)
6488         self.assertTrue(da.isUniform(5))
6489         da=da3
6490         da3=da.deepCpy()
6491         #
6492         for it in da:
6493             it[:]=[8,9,12]
6494             pass
6495         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6496         da=da3
6497         da3=da.deepCpy()
6498         #
6499         for it in da:
6500             it[2]=[7]
6501             pass
6502         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6503         pass
6504
6505     def testSwigDataArrayDoubleIterator1(self):
6506         da=DataArrayDouble.New()
6507         da.alloc(12,1)
6508         da.iota(2)
6509         da.rearrange(3)
6510         # __getitem__ testing
6511         li=[]
6512         for it in da:
6513             li+=it[1:]
6514             pass
6515         self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6516         li=[]
6517         for it in da:
6518             li+=[it[-1]]
6519             pass
6520         self.assertEqual([4, 7, 10, 13],li)
6521         li=[]
6522         for it in da:
6523             li+=it[[2,1,0]]
6524             pass
6525         self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6526         # __setitem__ testing
6527         da3=da.deepCpy()
6528         da2=DataArrayDouble.New()
6529         da2.alloc(12,1)
6530         da2.iota(2002)
6531         da2.rearrange(3)
6532         it2=da2.__iter__()
6533         i=0
6534         for it in da:
6535             pt=it2.next()
6536             it[:]=pt
6537             pass
6538         self.assertTrue(da.isEqual(da2,1e-12))
6539         da=da3
6540         da3=da.deepCpy()
6541         #
6542         for it in da:
6543             it[:]=5
6544             pass
6545         da.rearrange(1)
6546         self.assertTrue(da.isUniform(5,1e-12))
6547         da=da3
6548         da3=da.deepCpy()
6549         #
6550         for it in da:
6551             it[:]=[8,9,12]
6552             pass
6553         self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6554         da=da3
6555         da3=da.deepCpy()
6556         #
6557         for it in da:
6558             it[2]=[7]
6559             pass
6560         self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6561         pass
6562
6563     def testSwigUMeshIterator1(self):
6564         m=MEDCouplingDataForTest.build2DTargetMesh_1()
6565         li1=[]
6566         li2=[]
6567         for cell in m:
6568             li1+=cell.getAllConn()[1:]
6569             li2+=[cell.getType()]
6570             pass
6571         self.assertEqual(li1,[0, 3, 4, 1, 1, 4, 2, 4, 5, 2, 6, 7, 4, 3, 7, 8, 5, 4])
6572         self.assertEqual(li2,[4, 3, 3, 4, 4])
6573         pass
6574
6575     def testSwigUMeshIterator2(self):
6576         m=MEDCouplingDataForTest.build2DTargetMesh_1()
6577         self.assertRaises(InterpKernelException,m.cellsByType);
6578         m.rearrange2ConsecutiveCellTypes()
6579         li1=[]
6580         li2=[]
6581         li3=[]
6582         for cellsByType in m.cellsByType():
6583             li1.append(cellsByType.getType())
6584             li2.append(cellsByType.getNumberOfElems())
6585             temp=[]
6586             for cell in cellsByType:
6587                 t=[None,None]
6588                 t[0]=cell.getType()
6589                 t[1]=cell.getAllConn()[1:]
6590                 temp.append(t)
6591                 pass
6592             li3.append(temp)
6593             pass
6594         self.assertEqual(li1,[4, 3])
6595         self.assertEqual(li2,[3, 2])
6596         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)]]])
6597         pass
6598
6599     def testDAIAggregateMulti1(self):
6600         a=DataArrayInt.New()
6601         a.setValues(range(4),2,2)
6602         a.setName("aa")
6603         b=DataArrayInt.New()
6604         b.setValues(range(6),3,2)
6605         c=DataArrayInt.Aggregate([a,b])
6606         self.assertEqual(range(4)+range(6),c.getValues())
6607         self.assertEqual("aa",c.getName())
6608         self.assertEqual(5,c.getNumberOfTuples())
6609         self.assertEqual(2,c.getNumberOfComponents())
6610         pass
6611
6612     def testMergeUMeshes2(self):
6613         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6614         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6615         m3=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6616         #
6617         vec1=[0,2,3]
6618         m2_2=m2.buildPartOfMySelf(vec1,False);
6619         vec2=[1,1]
6620         m3_2=m3.buildPartOfMySelf(vec2,False);
6621         #
6622         ms=[m1,m2_2,m3_2];
6623         #
6624         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[None]);
6625         self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[3.4])
6626         m4=MEDCouplingUMesh.MergeUMeshes(ms);
6627         m4.checkCoherency();
6628         self.assertEqual(10,m4.getNumberOfCells());
6629         self.assertEqual(20,m4.getNumberOfNodes());
6630         self.assertEqual(45,m4.getMeshLength());
6631         m4bis=MEDCouplingMesh.MergeMeshes(ms);
6632         self.assertTrue(m4.isEqual(m4bis,1e-12))
6633         del m4bis
6634         #
6635         vec3=[0,1,2,3,4]
6636         m4_1=m4.buildPartOfMySelf(vec3,False);
6637         m4_1.setName(m1.getName());
6638         self.assertTrue(m4_1.isEqual(m1,1e-12));
6639         #
6640         vec4=[5,6,7]
6641         m4_2=m4.buildPartOfMySelf(vec4,False);
6642         cellCor,nodeCor=m4_2.checkGeoEquivalWith(m2_2,10,1e-12);
6643         #
6644         vec5=[8,9]
6645         m4_3=m4.buildPartOfMySelf(vec5,False);
6646         self.assertEqual(2,m4_3.getNumberOfCells());
6647         self.assertEqual(3,m4_3.getNumberOfNodes());
6648         m3_2.zipCoords();
6649         m4_3.setName(m3_2.getName());
6650         self.assertTrue(m4_3.isEqual(m3_2,1e-12));
6651         #
6652         pass
6653
6654     def testBuild0DMeshFromCoords1(self):
6655         sourceCoords=[-0.3,-0.3,0., 0.7,-0.3,0., -0.3,0.7,0., 0.7,0.7,0.]
6656         coo=DataArrayDouble.New();
6657         coo.setValues(sourceCoords,4,3);
6658         coo.setName("My0D");
6659         m=MEDCouplingUMesh.Build0DMeshFromCoords(coo);
6660         m.checkCoherency();
6661         self.assertEqual(4,m.getNumberOfNodes());
6662         self.assertEqual(4,m.getNumberOfCells());
6663         self.assertEqual(3,m.getSpaceDimension());
6664         self.assertEqual(0,m.getMeshDimension());
6665         types1=m.getAllGeoTypes();
6666         self.assertEqual([NORM_POINT1],types1);
6667         for i in xrange(4):
6668             conn=m.getNodeIdsOfCell(i);
6669             self.assertEqual([i],conn);
6670             self.assertTrue(NORM_POINT1==m.getTypeOfCell(i));
6671             pass
6672         self.assertEqual(m.getName(),"My0D");
6673         pass
6674
6675     def testDescriptionInMeshTimeUnit1(self):
6676         text1="totoTTEDD";
6677         m=MEDCouplingDataForTest.build2DTargetMesh_1();
6678         m.setDescription(text1);
6679         self.assertEqual(m.getDescription(),text1);
6680         m2=m.deepCpy();
6681         self.assertTrue(m.isEqual(m2,1e-12));
6682         self.assertEqual(m2.getDescription(),text1);
6683         m2.setDescription("ggg");
6684         self.assertTrue(not m.isEqual(m2,1e-12));
6685         #
6686         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6687         f.setTimeUnit(text1);
6688         self.assertEqual(f.getTimeUnit(),text1);
6689         f2=f.deepCpy();
6690         self.assertEqual(f2.getTimeUnit(),text1);
6691         #
6692         pass
6693
6694     def testMultiFields1(self):
6695         mfs=MEDCouplingDataForTest.buildMultiFields_1();
6696         ms=mfs.getMeshes();
6697         dms,refs=mfs.getDifferentMeshes()
6698         das=mfs.getArrays();
6699         das2,refs2=mfs.getDifferentArrays()
6700         self.assertEqual(5,len(mfs.getFields()))
6701         self.assertEqual(1,len(mfs.getFields()[0].getArrays()));
6702         self.assertEqual(2,len(mfs.getFields()[1].getArrays()));
6703         self.assertEqual(1,len(mfs.getFields()[2].getArrays()));
6704         self.assertEqual(1,len(mfs.getFields()[3].getArrays()));
6705         self.assertEqual(1,len(mfs.getFields()[4].getArrays()));
6706         self.assertEqual(5,len(ms));
6707         self.assertEqual(2,len(dms));
6708         self.assertEqual(6,len(das));
6709         self.assertEqual(5,len(das2));
6710         mfs2=mfs.deepCpy();
6711         self.assertTrue(mfs.isEqual(mfs2,1e-12,1e-12))
6712         pass
6713
6714     def testFieldOverTime1(self):
6715         fs=MEDCouplingDataForTest.buildMultiFields_2();
6716         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6717         f4bis=fs[4].buildNewTimeReprFromThis(ONE_TIME,False);
6718         fs[4]=f4bis;
6719         self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6720         f4bis.setTime(2.7,20,21);
6721         fot=MEDCouplingFieldOverTime.New(fs);
6722         dt=fot.getDefinitionTimeZone();
6723         hs=dt.getHotSpotsTime();
6724         self.assertEqual(6,len(hs));
6725         expected1=[0.2,0.7,1.2,1.35,1.7,2.7]
6726         for i in xrange(6):
6727             self.assertAlmostEqual(expected1[i],hs[i],12);
6728             pass
6729         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.2);
6730         self.assertEqual(0,meshId);
6731         self.assertEqual(0,arrId);
6732         self.assertEqual(0,arrIdInField);
6733         self.assertEqual(0,fieldId);
6734         #
6735         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.7);
6736         self.assertEqual(0,meshId);
6737         self.assertEqual(1,arrId);
6738         self.assertEqual(0,arrIdInField);
6739         self.assertEqual(1,fieldId);
6740         #
6741         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeLeft(1.2);#**** WARNING left here
6742         self.assertEqual(0,meshId);
6743         self.assertEqual(2,arrId);
6744         self.assertEqual(1,arrIdInField);
6745         self.assertEqual(1,fieldId);
6746         #
6747         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.2);#**** WARNING right again here
6748         self.assertEqual(1,meshId);
6749         self.assertEqual(3,arrId);
6750         self.assertEqual(0,arrIdInField);
6751         self.assertEqual(2,fieldId);
6752         #
6753         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.35);
6754         self.assertEqual(1,meshId);
6755         self.assertEqual(3,arrId);
6756         self.assertEqual(0,arrIdInField);
6757         self.assertEqual(2,fieldId);
6758         #
6759         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.7);
6760         self.assertEqual(0,meshId);
6761         self.assertEqual(3,arrId);
6762         self.assertEqual(0,arrIdInField);
6763         self.assertEqual(3,fieldId);
6764         #
6765         meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(2.7);
6766         self.assertEqual(1,meshId);
6767         self.assertEqual(4,arrId);
6768         self.assertEqual(0,arrIdInField);
6769         self.assertEqual(4,fieldId);
6770         #
6771         dt2=MEDCouplingDefinitionTime();
6772         self.assertTrue(not dt2.isEqual(dt));
6773         dt2.assign(dt);
6774         dt2.assign(dt);#to check memory management
6775         self.assertTrue(dt2.isEqual(dt));
6776         #
6777         dt3=MEDCouplingDefinitionTime();
6778         #
6779         pass
6780
6781     def testDAICheckAndPreparePermutation1(self):
6782         vals1=[9,10,0,6,4,11,3,7];
6783         expect1=[5,6,0,3,2,7,1,4];
6784         vals2=[9,10,0,6,10,11,3,7];
6785         da=DataArrayInt.New();
6786         da.setValues(vals1,8,1);
6787         da2=da.checkAndPreparePermutation();
6788         self.assertEqual(8,da2.getNumberOfTuples());
6789         self.assertEqual(1,da2.getNumberOfComponents());
6790         for i in xrange(8):
6791             self.assertEqual(expect1[i],da2.getIJ(i,0));
6792             pass
6793         #
6794         da=DataArrayInt.New();
6795         da.alloc(8,1);
6796         da.iota(0);
6797         da2=da.checkAndPreparePermutation();
6798         self.assertEqual(8,da2.getNumberOfTuples());
6799         self.assertEqual(1,da2.getNumberOfComponents());
6800         self.assertTrue(da2.isIdentity());
6801         #
6802         da=DataArrayInt.New();
6803         da.alloc(8,1);
6804         da.setValues(vals2,8,1);
6805         self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
6806         pass
6807
6808     def testDAIChangeSurjectiveFormat1(self):
6809         vals1=[0,3,2,3,2,2,1,2]
6810         expected1=[0,1,2,6,8]
6811         expected2=[0,  6,  2,4,5,7,  1,3]
6812         da=DataArrayInt.New();
6813         da.setValues(vals1,8,1);
6814         #
6815         da2,da2I=da.changeSurjectiveFormat(4);
6816         self.assertEqual(5,da2I.getNumberOfTuples());
6817         self.assertEqual(8,da2.getNumberOfTuples());
6818         self.assertEqual(expected1,da2I.getValues());
6819         self.assertEqual(expected2,da2.getValues());
6820         #
6821         self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
6822         #
6823         pass
6824
6825     def testUMeshGetCellIdsLyingOnNodes1(self):
6826         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6827         nodeIds1=[1,2,3,4,6]
6828         nodeIds2=[6,7]
6829         da=m.getCellIdsLyingOnNodes(nodeIds1,True);
6830         self.assertEqual(1,da.getNumberOfTuples());
6831         self.assertEqual(1,da.getNumberOfComponents());
6832         self.assertEqual(1,da.getIJ(0,0));
6833         da2=DataArrayInt.New()
6834         da2.setValues(nodeIds2,2,1)
6835         da=m.getCellIdsLyingOnNodes(da2,False);
6836         self.assertEqual(2,da.getNumberOfTuples());
6837         self.assertEqual(1,da.getNumberOfComponents());
6838         self.assertEqual(3,da.getIJ(0,0));
6839         self.assertEqual(4,da.getIJ(1,0));
6840         pass
6841
6842     def testUMeshFindCellIdsOnBoundary1(self):
6843         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6844         da5=m.findCellIdsOnBoundary();
6845         self.assertEqual(5,da5.getNumberOfTuples());
6846         self.assertTrue(da5.isIdentity());
6847         pass
6848
6849     def testMeshSetTime1(self):
6850         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6851         m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6852         #
6853         self.assertTrue(m1.isEqual(m2,1e-12));
6854         m1.setTime(3.14,6,7);
6855         tmp3,tmp1,tmp2=m1.getTime();
6856         self.assertEqual(6,tmp1);
6857         self.assertEqual(7,tmp2);
6858         self.assertAlmostEqual(3.14,tmp3,12);
6859         self.assertTrue(not m1.isEqual(m2,1e-12));
6860         m2.setTime(3.14,6,7);
6861         self.assertTrue(m1.isEqual(m2,1e-12));
6862         m1.setTimeUnit("ms");
6863         self.assertTrue(m1.getTimeUnit()=="ms");
6864         m1.setTimeUnit("us");
6865         self.assertTrue(m1.getTimeUnit()=="us");
6866         self.assertTrue(not m1.isEqual(m2,1e-12));
6867         m2.setTimeUnit("us");
6868         self.assertTrue(m1.isEqual(m2,1e-12));
6869         m2.setTime(3.14,6,8);
6870         self.assertTrue(not m1.isEqual(m2,1e-12));
6871         m2.setTime(3.14,7,7);
6872         self.assertTrue(not m1.isEqual(m2,1e-12));
6873         m2.setTime(3.15,6,7);
6874         self.assertTrue(not m1.isEqual(m2,1e-12));
6875         #
6876         m1.setTime(10.34,55,12);
6877         m3=m1.deepCpy();
6878         self.assertTrue(m1.isEqual(m3,1e-12));
6879         tmp3,tmp1,tmp2=m3.getTime();
6880         self.assertEqual(55,tmp1);
6881         self.assertEqual(12,tmp2);
6882         self.assertAlmostEqual(10.34,tmp3,12);
6883         #
6884         # testing CMesh
6885         coo1=[0.,1.,2.,3.5]
6886         a=DataArrayDouble.New();
6887         a.setValues(coo1,4,1);
6888         b=MEDCouplingCMesh.New();
6889         b.setCoordsAt(0,a);
6890         #
6891         b.setTime(5.67,8,100);
6892         tmp3,tmp1,tmp2=b.getTime();
6893         self.assertEqual(8,tmp1);
6894         self.assertEqual(100,tmp2);
6895         self.assertAlmostEqual(5.67,tmp3,12);
6896         c=b.deepCpy();
6897         self.assertTrue(c.isEqual(b,1e-12));
6898         tmp3,tmp1,tmp2=c.getTime();
6899         self.assertEqual(8,tmp1);
6900         self.assertEqual(100,tmp2);
6901         self.assertAlmostEqual(5.67,tmp3,12);
6902         pass
6903
6904     def testApplyFuncTwo1(self):
6905         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6906         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6907         f1.setMesh(m1);
6908         #
6909         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6910         da=DataArrayDouble.New();
6911         da.setValues(vals,5,3);
6912         f1.setArray(da);
6913         #
6914         self.assertRaises(InterpKernelException,da.applyFunc2,1,"y+z");
6915         da.setInfoOnComponent(0,"x [m]");
6916         da.setInfoOnComponent(1,"y [mm]");
6917         da.setInfoOnComponent(2,"z [km]");
6918         
6919         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x+y+zz+zzz");
6920         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "toto(x+y)");
6921         self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x/0");
6922         
6923         da2=da.applyFunc2(1,"y+z");
6924         self.assertEqual(1,da2.getNumberOfComponents());
6925         self.assertEqual(5,da2.getNumberOfTuples());
6926         expected1=[32.,34.,36.,38.,40.]
6927         for i in xrange(5):
6928             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6929             pass
6930         da2=da.applyFunc(1,"y+z");
6931         expected2=[12.,14.,16.,18.,20.]
6932         for i in xrange(5):
6933             self.assertAlmostEqual(expected2[i],da2.getIJ(0,i),12);
6934             pass
6935         #
6936         self.assertEqual(3,f1.getNumberOfComponents());
6937         self.assertEqual(5,f1.getNumberOfTuples());
6938         f1.applyFunc2(1,"y+z");
6939         self.assertEqual(1,f1.getNumberOfComponents());
6940         self.assertEqual(5,f1.getNumberOfTuples());
6941         for i in xrange(5):
6942             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6943             pass
6944         #
6945         pass
6946
6947     def testApplyFuncThree1(self):
6948         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6949         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6950         f1.setMesh(m1);
6951         #
6952         vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6953         da=DataArrayDouble.New();
6954         da.setValues(vals,5,3);
6955         f1.setArray(da);
6956         #
6957         vs=3*[None];
6958         vs[0]="x"; vs[1]="Y"; vs[2]="z";
6959         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "y+z");
6960         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x+Y+z+zz+zzz");
6961         self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x/0");
6962         vs[1]="y";
6963         da2=da.applyFunc3(1,vs,"y+z");
6964         expected1=[32.,34.,36.,38.,40.]
6965         for i in xrange(5):
6966             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6967             pass
6968         self.assertRaises(InterpKernelException, da.applyFunc3, 1, ["x","y","z","a"],"x+a")
6969         f1.setArray(da);
6970         self.assertEqual(3,f1.getNumberOfComponents());
6971         self.assertEqual(5,f1.getNumberOfTuples());
6972         f1.applyFunc3(1,vs,"y+z");
6973         self.assertEqual(1,f1.getNumberOfComponents());
6974         self.assertEqual(5,f1.getNumberOfTuples());
6975         for i in xrange(5):
6976             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6977             pass
6978         pass
6979
6980     def testFillFromAnalyticTwo1(self):
6981         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6982         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
6983         self.assertRaises(InterpKernelException,m1.fillFromAnalytic2,ON_NODES,1,"y+z");
6984         m1.getCoords().setInfoOnComponent(0,"x [m]");
6985         m1.getCoords().setInfoOnComponent(1,"y");
6986         m1.getCoords().setInfoOnComponent(2,"z");
6987         f1=m1.fillFromAnalytic2(ON_NODES,1,"y+z");
6988         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
6989         self.assertEqual("us",f1.getTimeUnit())
6990         self.assertEqual(1,f1.getNumberOfComponents());
6991         self.assertEqual(9,f1.getNumberOfTuples());
6992         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6993         for i in xrange(9):
6994             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6995             pass
6996         pass
6997
6998     def testFillFromAnalyticThree1(self):
6999         m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
7000         m1.setTime(3.4,5,6); m1.setTimeUnit("us");
7001         vs=3*[None];
7002         vs[0]="x"; vs[1]="Y"; vs[2]="z";
7003         self.assertRaises(InterpKernelException,m1.fillFromAnalytic3,ON_NODES,1,vs,"y+z");
7004         vs[1]="y";
7005         f1=m1.fillFromAnalytic3(ON_NODES,1,vs,"y+z");
7006         self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
7007         self.assertEqual("us",f1.getTimeUnit())
7008         self.assertEqual(1,f1.getNumberOfComponents());
7009         self.assertEqual(9,f1.getNumberOfTuples());
7010         expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
7011         for i in xrange(9):
7012             self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
7013             pass
7014         pass
7015
7016     def testDAUnitVar1(self):
7017         da=DataArrayDouble.New();
7018         da.alloc(1,3);
7019         da.setInfoOnComponent(0,"XPS [m]");
7020         st1=da.getVarOnComponent(0);
7021         self.assertTrue(st1=="XPS");
7022         st2=da.getUnitOnComponent(0);
7023         self.assertTrue(st2=="m");
7024         #
7025         da.setInfoOnComponent(0,"XPS         [m]");
7026         st1=da.getVarOnComponent(0);
7027         self.assertTrue(st1=="XPS");
7028         st2=da.getUnitOnComponent(0);
7029         self.assertTrue(st2=="m");
7030         #
7031         da.setInfoOnComponent(0,"XPP         [m]");
7032         st1=da.getVarOnComponent(0);
7033         self.assertTrue(st1=="XPP");
7034         st2=da.getUnitOnComponent(0);
7035         self.assertTrue(st2=="m");
7036         #
7037         da.setInfoOnComponent(0,"XPP kdep  kefer   [ m  ]");
7038         st1=da.getVarOnComponent(0);
7039         self.assertTrue(st1=="XPP kdep  kefer");
7040         st2=da.getUnitOnComponent(0);
7041         self.assertTrue(st2==" m  ");
7042         #
7043         da.setInfoOnComponent(0,"     XPP k[  dep  k]efer   [ m^ 2/s^3*kJ  ]");
7044         st1=da.getVarOnComponent(0);
7045         self.assertTrue(st1=="     XPP k[  dep  k]efer");
7046         st2=da.getUnitOnComponent(0);
7047         self.assertTrue(st2==" m^ 2/s^3*kJ  ");
7048         #
7049         da.setInfoOnComponent(0,"     XPP kefer   ");
7050         st1=da.getVarOnComponent(0);
7051         self.assertTrue(st1=="     XPP kefer   ");
7052         st2=da.getUnitOnComponent(0);
7053         self.assertTrue(st2=="");
7054         #
7055         da.setInfoOnComponent(0,"temperature( bof)");
7056         st1=da.getVarOnComponent(0);
7057         self.assertTrue(st1=="temperature( bof)");
7058         st2=da.getUnitOnComponent(0);
7059         self.assertTrue(st2=="");
7060         #
7061         da.setInfoOnComponent(0,"kkk [m]");
7062         da.setInfoOnComponent(1,"ppp   [m^2/kJ]");
7063         da.setInfoOnComponent(2,"abcde   [MW/s]");
7064         #
7065         vs=da.getVarsOnComponent();
7066         self.assertEqual(3,len(vs));
7067         self.assertTrue(vs[0]=="kkk");
7068         self.assertTrue(vs[1]=="ppp");
7069         self.assertTrue(vs[2]=="abcde");
7070         vs=da.getUnitsOnComponent();
7071         self.assertEqual(3,len(vs));
7072         self.assertTrue(vs[0]=="m");
7073         self.assertTrue(vs[1]=="m^2/kJ");
7074         self.assertTrue(vs[2]=="MW/s");
7075         pass
7076
7077     def testGaussCoordinates1(self):
7078         #Testing 1D cell types
7079         m1=MEDCouplingDataForTest.build1DMultiTypes_1();
7080         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7081         f.setMesh(m1);
7082         wg1=[0.3];
7083         gsCoo1=[0.2];
7084         refCoo1=[-1.0,1.0];
7085         f.setGaussLocalizationOnType(NORM_SEG2,refCoo1,gsCoo1,wg1);
7086         wg2=wg1;
7087         gsCoo2=[0.2];
7088         refCoo2=[-1.0,1.0,0.0];
7089         f.setGaussLocalizationOnType(NORM_SEG3,refCoo2,gsCoo2,wg2);
7090         #
7091         resToTest=f.getLocalizationOfDiscr();
7092         self.assertEqual(3,resToTest.getNumberOfComponents());
7093         self.assertEqual(2,resToTest.getNumberOfTuples());
7094         expected1=[0.6,0.6,0.6, 0.6,0.6,0.6]
7095         for i in xrange(6):
7096             self.assertAlmostEqual(expected1[i],resToTest.getIJ(0,i),14);
7097             pass
7098         #
7099         #Testing 2D cell types
7100         m2=MEDCouplingDataForTest.build2DMultiTypes_1();
7101         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7102         f.setMesh(m2);
7103         wg3=[0.3,0.3];
7104         tria3CooGauss=[ 0.1, 0.8, 0.2, 0.7 ]
7105         gsCoo3=tria3CooGauss
7106         tria3CooRef=[ 0.0, 0.0, 1.0 , 0.0, 0.0, 1.0 ]
7107         refCoo3=tria3CooRef;
7108         f.setGaussLocalizationOnType(NORM_TRI3,refCoo3,gsCoo3,wg3);
7109         wg4=[0.3,0.3,0.3];
7110         tria6CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4 ]
7111         gsCoo4=tria6CooGauss;
7112         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]
7113         refCoo4=tria6CooRef;
7114         f.setGaussLocalizationOnType(NORM_TRI6,refCoo4,gsCoo4,wg4);
7115         wg5=[0.3,0.3,0.3,0.3];
7116         quad4CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4, 0.15, 0.27 ]
7117         gsCoo5=quad4CooGauss;
7118         quad4CooRef=[-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0]
7119         refCoo5=quad4CooRef;
7120         f.setGaussLocalizationOnType(NORM_QUAD4,refCoo5,gsCoo5,wg5);
7121         wg6=[0.3,0.3,0.3,0.3];
7122         quad8CooGauss=[ 0.34, 0.16, 0.21, 0.3, 0.23, 0.4, 0.14, 0.37 ]
7123         gsCoo6=quad8CooGauss;
7124         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]
7125         refCoo6=quad8CooRef;
7126         f.setGaussLocalizationOnType(NORM_QUAD8,refCoo6,gsCoo6,wg6);
7127         #
7128         resToTest=f.getLocalizationOfDiscr();
7129         self.assertEqual(3,resToTest.getNumberOfComponents());
7130         self.assertEqual(13,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7131         expected2=[5.1,1.55,0.0, 4.7,1.65,0.0,
7132                    2.32,1.52,0.0, 1.6,1.32,0.0, 3.52,1.26,0.0,#TRI6
7133                    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
7134                    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
7135         for i in xrange(39):
7136             self.assertAlmostEqual(expected2[i],resToTest.getIJ(0,i),14);
7137             pass
7138         #
7139         #Testing 3D cell types
7140         m3=MEDCouplingDataForTest.build3DMultiTypes_1();
7141         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7142         f.setMesh(m3);
7143         #
7144         wg7=[0.3];
7145         tetra4CooGauss=[0.34, 0.16, 0.21]
7146         gsCoo7=tetra4CooGauss;
7147         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]
7148         refCoo7=tetra4CooRef;
7149         f.setGaussLocalizationOnType(NORM_TETRA4,refCoo7,gsCoo7,wg7);
7150         wg8=[0.3];
7151         tetra10CooGauss=[0.2, 0.3, 0.1]
7152         gsCoo8=tetra10CooGauss;
7153         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]
7154         refCoo8=tetra10CooRef;
7155         f.setGaussLocalizationOnType(NORM_TETRA10,refCoo8,gsCoo8,wg8);
7156         wg9=[0.3];
7157         pyra5CooGauss=[0.2, 0.3, 0.1]
7158         gsCoo9=pyra5CooGauss;
7159         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]
7160         refCoo9=pyra5CooRef;
7161         f.setGaussLocalizationOnType(NORM_PYRA5,refCoo9,gsCoo9,wg9);
7162         wg10=[0.3];
7163         pyra13CooGauss=[0.1, 0.2, 0.7]
7164         gsCoo10=pyra13CooGauss;
7165         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]
7166         refCoo10=pyra13CooRef;
7167         f.setGaussLocalizationOnType(NORM_PYRA13,refCoo10,gsCoo10,wg10);
7168         wg11=[0.3];
7169         penta6CooGauss=[0.2, 0.3, 0.1]
7170         gsCoo11=penta6CooGauss;
7171         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]
7172         refCoo11=penta6CooRef;
7173         f.setGaussLocalizationOnType(NORM_PENTA6,refCoo11,gsCoo11,wg11);
7174         wg12=[0.3];
7175         penta15CooGauss=[0.2, 0.3,0.15]
7176         gsCoo12=penta15CooGauss;
7177         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]
7178         refCoo12=penta15CooRef;
7179         f.setGaussLocalizationOnType(NORM_PENTA15,refCoo12,gsCoo12,wg12);
7180         wg13=[0.3];
7181         hexa8CooGauss=[0.2,0.3,0.15]
7182         gsCoo13=hexa8CooGauss;
7183         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]
7184         refCoo13=hexa8CooRef;
7185         f.setGaussLocalizationOnType(NORM_HEXA8,refCoo13,gsCoo13,wg13);
7186         wg14=[0.3];
7187         hexa20CooGauss=[0.11,0.3,0.55]
7188         gsCoo14=hexa20CooGauss;
7189         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]
7190         refCoo14=hexa20CooRef;
7191         f.setGaussLocalizationOnType(NORM_HEXA20,refCoo14,gsCoo14,wg14);
7192         #
7193         resToTest=f.getLocalizationOfDiscr();
7194         self.assertEqual(3,resToTest.getNumberOfComponents());
7195         self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7196         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]
7197         for i in xrange(24):
7198             self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14);
7199             pass
7200         #
7201         pass
7202
7203     def testP2Localization1(self):
7204         m=MEDCouplingUMesh.New("testP2",2);
7205         coords=[0.,2.,3.5,0.,4.5,1.5,1.2,0.32,3.4,1.,2.1,2.4]
7206         conn=[0,1,2,3,4,5]
7207         coo=DataArrayDouble.New();
7208         coo.setValues(coords,6,2);
7209         m.setCoords(coo);
7210         m.allocateCells(1);
7211         m.insertNextCell(NORM_TRI6,6,conn[0:6])
7212         m.finishInsertingCells();
7213         #
7214         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7215         f.setMesh(m);
7216         da=DataArrayDouble.New();
7217         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]
7218         da.setValues(vals1,6,3);
7219         f.setArray(da);
7220         #
7221         loc=[2.27,1.3]
7222         locs=f.getValueOnMulti(loc);
7223         expected1=[6.0921164547752236, 7.1921164547752232, 8.2921164547752255]
7224         for i in xrange(3):
7225             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7226             pass
7227         pass
7228
7229     def testP2Localization2(self):
7230         m=MEDCouplingUMesh.New("testP2_2",3);
7231         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]
7232         conn=[0,1,2,3,4,5,6,7,8,9]
7233         coo=DataArrayDouble.New();
7234         coo.setValues(coords,10,3);
7235         m.setCoords(coo);
7236         m.allocateCells(1);
7237         m.insertNextCell(NORM_TETRA10,10,conn[0:10])
7238         m.finishInsertingCells();
7239         #
7240         f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7241         f.setMesh(m);
7242         da=DataArrayDouble.New();
7243         vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2]
7244         da.setValues(vals1,10,1);
7245         f.setArray(da);
7246         #
7247         loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748]
7248         locs=f.getValueOnMulti(loc);
7249         expected1=[10.0844021968047]
7250         for i in xrange(1):
7251             self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7252             pass
7253         pass
7254
7255     def testGetValueOn2(self):
7256         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7257         f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
7258         f.setMesh(m);
7259         arr=DataArrayDouble.New();
7260         nbOfCells=m.getNumberOfCells();
7261         f.setArray(arr);
7262         values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
7263         arr.setValues(values1,nbOfCells,3);
7264         loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
7265         f.checkCoherency();
7266         locs=f.getValueOnMulti(loc);
7267         self.assertEqual(5,locs.getNumberOfTuples());
7268         self.assertEqual(3,locs.getNumberOfComponents());
7269         for j in xrange(15):
7270             self.assertAlmostEqual(values1[j],locs.getIJ(0,j),12);
7271             pass
7272         # Testing ON_NODES
7273         f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
7274         f.setMesh(m);
7275         arr=DataArrayDouble.New();
7276         nbOfNodes=m.getNumberOfNodes();
7277         f.setArray(arr);
7278         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.]
7279         arr.setValues(values2,nbOfNodes,3);
7280         loc2=[0.5432,-0.2432, 0.5478,0.1528, 0.5432,-0.2432, 0.5432,-0.2432]
7281         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]
7282         f.checkCoherency();
7283         loc3=DataArrayDouble.New()
7284         loc3.setValues(loc2,4,2);
7285         locs=f.getValueOnMulti(loc3);
7286         self.assertEqual(4,locs.getNumberOfTuples());
7287         self.assertEqual(3,locs.getNumberOfComponents());
7288         for i in xrange(12):
7289             self.assertAlmostEqual(expected2[i],locs.getIJ(0,i),12);
7290             pass
7291         #
7292         pass
7293
7294     def testDAIGetIdsNotEqual1(self):
7295         d=DataArrayInt.New();
7296         vals1=[2,3,5,6,8,5,5,6,1,-5]
7297         d.setValues(vals1,10,1);
7298         d2=d.getIdsNotEqual(5);
7299         self.assertEqual(7,d2.getNumberOfTuples());
7300         self.assertEqual(1,d2.getNumberOfComponents());
7301         expected1=[0,1,3,4,7,8,9]
7302         for i in xrange(7):
7303             self.assertEqual(expected1[i],d2.getIJ(0,i));
7304             pass
7305         d.rearrange(2);
7306         self.assertRaises(InterpKernelException,d.getIdsNotEqual,5);
7307         vals2=[-4,5,6]
7308         vals3=vals2;
7309         d.rearrange(1);
7310         d3=d.getIdsNotEqualList(vals3);
7311         self.assertEqual(5,d3.getNumberOfTuples());
7312         self.assertEqual(1,d3.getNumberOfComponents());
7313         expected2=[0,1,4,8,9]
7314         for i in xrange(5):
7315             self.assertEqual(expected2[i],d3.getIJ(0,i));
7316             pass
7317         pass
7318
7319     def testDAIComputeOffsets1(self):
7320         d=DataArrayInt.New();
7321         vals1=[3,5,1,2,0,8]
7322         expected1=[0,3,8,9,11,11]
7323         d.setValues(vals1,6,1);
7324         d.computeOffsets();
7325         self.assertEqual(6,d.getNumberOfTuples());
7326         self.assertEqual(1,d.getNumberOfComponents());
7327         for i in xrange(6):
7328             self.assertEqual(expected1[i],d.getIJ(0,i));
7329             pass
7330         pass
7331
7332     def testUMeshHexagonPrism1(self):
7333         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,
7334                 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];
7335         conn=[1,2,3,4,5,0,7,8,9,10,11,6]
7336         mesh=MEDCouplingUMesh.New("MyFirstHexagonalPrism",3);
7337         coo=DataArrayDouble.New();
7338         coo.setValues(coords,12,3);
7339         mesh.setCoords(coo);
7340         mesh.allocateCells(1);
7341         mesh.insertNextCell(NORM_HEXGP12,12,conn[0:12])
7342         mesh.finishInsertingCells();
7343         #
7344         mesh.checkCoherency();
7345         vols=mesh.getMeasureField(False);
7346         self.assertEqual(1,vols.getNumberOfTuples());
7347         self.assertEqual(1,vols.getNumberOfComponents());
7348         self.assertAlmostEqual(-5.196152422706632,vols.getIJ(0,0),12);
7349         bary=mesh.getBarycenterAndOwner();
7350         self.assertEqual(1,bary.getNumberOfTuples());
7351         self.assertEqual(3,bary.getNumberOfComponents());
7352         expected1=[0.,0.,1.]
7353         for i in xrange(3):
7354             self.assertAlmostEqual(expected1[i],bary.getIJ(0,i),12);
7355             pass
7356         d1=DataArrayInt.New();
7357         d2=DataArrayInt.New();
7358         d3=DataArrayInt.New();
7359         d4=DataArrayInt.New();
7360         m2=mesh.buildDescendingConnectivity(d1,d2,d3,d4);
7361         self.assertEqual(8,m2.getNumberOfCells());
7362         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]];
7363         expected2=[NORM_POLYGON, NORM_POLYGON, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4];
7364         expected3=[6,6,4,4,4,4,4,4]
7365         for i in xrange(8):
7366             self.assertTrue(m2.getTypeOfCell(i)==expected2[i]);
7367             v=m2.getNodeIdsOfCell(i);
7368             self.assertTrue(len(v)==expected3[i]);
7369             self.assertEqual(expected4[i],v);
7370         #
7371         mesh.convertAllToPoly();
7372         self.assertTrue(NORM_POLYHED==mesh.getTypeOfCell(0));
7373         mesh.unPolyze();
7374         self.assertTrue(NORM_HEXGP12==mesh.getTypeOfCell(0));
7375         self.assertEqual(13,mesh.getMeshLength());
7376         #
7377         pass
7378
7379     def testDADCheckIsMonotonic(self):
7380         da=DataArrayDouble.New();
7381         da.setValues([-1.,1.01,2.03,6.],2,2);
7382         self.assertRaises(InterpKernelException,da.isMonotonic,True,1e-12);
7383         da.rearrange(1);
7384         self.assertTrue(da.isMonotonic(True,1e-12));
7385         da.checkMonotonic(True,1e-12);
7386         da.setIJ(2,0,6.1);
7387         self.assertTrue(not da.isMonotonic(True,1e-12));
7388         self.assertRaises(InterpKernelException,da.checkMonotonic,True,1e-12);
7389         da.setIJ(2,0,5.99);
7390         self.assertTrue(da.isMonotonic(True,1e-12));
7391         self.assertTrue(not da.isMonotonic(True,1e-1));
7392         pass
7393
7394     def testCheckCoherencyDeeper1(self):
7395         m=MEDCouplingDataForTest.build3DSourceMesh_1();
7396         m.checkCoherency();
7397         m.checkCoherency1();
7398         m.getNodalConnectivity().setIJ(8,0,-1);
7399         m.checkCoherency();
7400         self.assertRaises(InterpKernelException,m.checkCoherency1);
7401         m.getNodalConnectivity().setIJ(8,0,-6);
7402         m.checkCoherency();
7403         self.assertRaises(InterpKernelException,m.checkCoherency1);
7404         m.getNodalConnectivity().setIJ(8,0,9);#9>=NbOfNodes
7405         m.checkCoherency();
7406         self.assertRaises(InterpKernelException,m.checkCoherency1);
7407         m.getNodalConnectivity().setIJ(8,0,8);#OK
7408         m.checkCoherency();
7409         m.checkCoherency1();
7410         elts=[1,5]
7411         m.convertToPolyTypes(elts);
7412         m.checkCoherency();
7413         m.checkCoherency1();
7414         m.getNodalConnectivity().setIJ(2,0,9);#9>=NbOfNodes
7415         m.checkCoherency();
7416         self.assertRaises(InterpKernelException,m.checkCoherency1);
7417         m.getNodalConnectivity().setIJ(2,0,-3);
7418         m.checkCoherency();
7419         self.assertRaises(InterpKernelException,m.checkCoherency1);
7420         m.getNodalConnectivity().setIJ(2,0,-1);
7421         m.checkCoherency();
7422         self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw because cell#0 is not a polyhedron
7423         m.getNodalConnectivity().setIJ(2,0,4);
7424         m.checkCoherency();
7425         m.checkCoherency1();
7426         m.getNodalConnectivity().setIJ(7,0,-1);
7427         m.checkCoherency();
7428         m.checkCoherency1();#OK because we are in polyhedron connec
7429         m.getNodalConnectivity().setIJ(36,0,14);
7430         m.checkCoherency();
7431         self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
7432         pass
7433
7434     def testUnPolyze2(self):
7435         m=MEDCouplingUMesh.New("jjj",3);
7436         coo=DataArrayDouble.New();
7437         coo.alloc(4,3);
7438         coo.rearrange(1);
7439         coo.iota(0);
7440         coo.rearrange(3);
7441         m.setCoords(coo);
7442         m.allocateCells(2);
7443         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7444         m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7445         m.finishInsertingCells();
7446         m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(4*[m]);
7447         m2.convertToPolyTypes([2]);
7448         m2.unPolyze();
7449         self.assertEqual(NORM_TETRA4,m2.getTypeOfCell(2));
7450         self.assertEqual(40,m2.getMeshLength());
7451         temp2=m2.getNodeIdsOfCell(2);
7452         self.assertEqual(temp2,[0,1,2,3]);
7453         m2.checkCoherency1();
7454         m3=m2.deepCpy();
7455         m2.unPolyze();
7456         self.assertTrue(m3.isEqual(m2,1e-12));
7457         pass
7458
7459     def testDACpyFrom1(self):
7460         d=DataArrayDouble.New();
7461         d.alloc(12,1);
7462         d.iota(14.);
7463         d.rearrange(3);
7464         d.setName("Toto");
7465         d.setInfoOnComponent(0,"X [m]");
7466         d.setInfoOnComponent(1,"Y [m]");
7467         d.setInfoOnComponent(2,"Z [m]");
7468         #
7469         d1=DataArrayDouble.New();
7470         self.assertTrue(not d.isEqual(d1,1e-12));
7471         d1.cpyFrom(d);
7472         self.assertTrue(d.isEqual(d1,1e-12));
7473         d1.cpyFrom(d);
7474         self.assertTrue(d.isEqual(d1,1e-12));
7475         d1.rearrange(2);
7476         self.assertTrue(not d.isEqual(d1,1e-12));
7477         d1.cpyFrom(d);
7478         self.assertTrue(d.isEqual(d1,1e-12));
7479         #
7480         d2=d.convertToIntArr();
7481         d4=DataArrayInt.New();
7482         self.assertTrue(not d2.isEqual(d4));
7483         d4.cpyFrom(d2);
7484         self.assertTrue(d2.isEqual(d4));
7485         d4.cpyFrom(d2);
7486         self.assertTrue(d2.isEqual(d4));
7487         d4.rearrange(2);
7488         self.assertTrue(not d2.isEqual(d4));
7489         d4.cpyFrom(d2);
7490         self.assertTrue(d2.isEqual(d4));
7491         pass
7492
7493     def testDAITransformWithIndArr1(self):
7494         tab1=[17,18,22,19]
7495         tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
7496         expected=[17,18,18,19,19,17,18,19,22,22,19,17]
7497         d=DataArrayInt.New();
7498         d.setValues(tab1,4,1);
7499         d1=DataArrayInt.New();
7500         d1.setValues(tab2,12,1);
7501         d2=d1[:]
7502         #
7503         d1.transformWithIndArr(d);
7504         self.assertEqual(12,d1.getNumberOfTuples());
7505         self.assertEqual(1,d1.getNumberOfComponents());
7506         for i in xrange(12):
7507             self.assertEqual(expected[i],d1.getIJ(i,0));
7508             pass
7509         #
7510         d1=d2
7511         d1.transformWithIndArr(tab1)
7512         self.assertEqual(12,d1.getNumberOfTuples());
7513         self.assertEqual(1,d1.getNumberOfComponents());
7514         for i in xrange(12):
7515             self.assertEqual(expected[i],d1.getIJ(i,0));
7516             pass
7517         pass
7518
7519     def testDAIBuildPermArrPerLevel1(self):
7520         arr=[2,0,1,1,0,1,2,0,1,1,0,0]
7521         expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
7522         da=DataArrayInt.New();
7523         da.setValues(arr,12,1);
7524         da2=da.buildPermArrPerLevel();
7525         self.assertEqual(12,da2.getNumberOfTuples());
7526         self.assertEqual(1,da2.getNumberOfComponents());
7527         for i in xrange(12):
7528             self.assertEqual(expected1[i],da2.getIJ(i,0));
7529             pass
7530         pass
7531
7532     def testDAIOperations1(self):
7533         arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
7534         da=DataArrayInt.New();
7535         da.setValues(arr1,4,3);
7536         da1=DataArrayInt.New();
7537         da1.alloc(12,1);
7538         da1.iota(2);
7539         self.assertRaises(InterpKernelException,DataArrayInt.Add,da,da1);#not same number of tuples/Components
7540         da1.rearrange(3);
7541         da2=DataArrayInt.Add(da,da1);
7542         self.assertEqual(4,da2.getNumberOfTuples());
7543         self.assertEqual(3,da2.getNumberOfComponents());
7544         expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
7545         for i in xrange(12):
7546             self.assertEqual(expected1[i],da2.getIJ(0,i));
7547             pass
7548         da1.substractEqual(da);
7549         expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
7550         for i in xrange(12):
7551             self.assertEqual(expected2[i],da1.getIJ(0,i));
7552             pass
7553         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7554         da1.addEqual(da);
7555         for i in xrange(12):
7556             self.assertEqual(expected1[i],da1.getIJ(0,i));
7557             pass
7558         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7559         da2=DataArrayInt.Multiply(da,da1);
7560         self.assertEqual(4,da2.getNumberOfTuples());
7561         self.assertEqual(3,da2.getNumberOfComponents());
7562         expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
7563         for i in xrange(12):
7564             self.assertEqual(expected3[i],da2.getIJ(0,i));
7565             pass
7566         da.divideEqual(da1);
7567         self.assertEqual(4,da.getNumberOfTuples());
7568         self.assertEqual(3,da.getNumberOfComponents());
7569         expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
7570         for i in xrange(12):
7571             self.assertEqual(expected4[i],da.getIJ(0,i));
7572             pass
7573         da.setValues(arr1,4,3);
7574         da1.multiplyEqual(da);
7575         self.assertEqual(4,da1.getNumberOfTuples());
7576         self.assertEqual(3,da1.getNumberOfComponents());
7577         for i in xrange(12):
7578             self.assertEqual(expected3[i],da1.getIJ(0,i));
7579             pass
7580         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7581         da2=DataArrayInt.Divide(da,da1);
7582         self.assertEqual(4,da2.getNumberOfTuples());
7583         self.assertEqual(3,da2.getNumberOfComponents());
7584         for i in xrange(12):
7585             self.assertEqual(expected4[i],da2.getIJ(0,i));
7586             pass
7587         da1.applyInv(321);
7588         self.assertEqual(4,da1.getNumberOfTuples());
7589         self.assertEqual(3,da1.getNumberOfComponents());
7590         expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
7591         for i in xrange(12):
7592             self.assertEqual(expected5[i],da1.getIJ(0,i));
7593             pass
7594         da1.applyDivideBy(2);
7595         self.assertEqual(4,da1.getNumberOfTuples());
7596         self.assertEqual(3,da1.getNumberOfComponents());
7597         expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
7598         for i in xrange(12):
7599             self.assertEqual(expected6[i],da1.getIJ(0,i));
7600             pass
7601         expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
7602         da1.applyModulus(7);
7603         for i in xrange(12):
7604             self.assertEqual(expected7[i],da1.getIJ(0,i));
7605             pass
7606         da1.applyLin(1,1);
7607         expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
7608         da1.applyRModulus(3);
7609         for i in xrange(12):
7610             self.assertEqual(expected8[i],da1.getIJ(0,i));
7611             pass
7612         pass
7613
7614     def testEmulateMEDMEMBDC1(self):
7615         m,m1=MEDCouplingDataForTest.buildPointe_1();
7616         m2,da1,da2,da3,da4,da5,da0=m.emulateMEDMEMBDC(m1)
7617         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]
7618         expected1=[1,32,29,23,41,36]
7619         self.assertEqual(47,da0.getNumberOfTuples());
7620         self.assertEqual(1,da0.getNumberOfComponents());
7621         for i in xrange(47):
7622             self.assertEqual(expected0[i],da0.getIJ(0,i));
7623             pass
7624         self.assertEqual(6,da5.getNumberOfTuples());
7625         self.assertEqual(1,da5.getNumberOfComponents());
7626         for i in xrange(6):
7627             self.assertEqual(expected1[i],da5.getIJ(0,i));
7628             pass
7629         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]
7630         self.assertEqual(70,da1.getNumberOfTuples());
7631         self.assertEqual(1,da1.getNumberOfComponents());
7632         for i in xrange(70):
7633             self.assertEqual(expected2[i],da1.getIJ(0,i));
7634             pass
7635         expected3=[0,4,8,12,16,20,24,28,32,36,40,44,48,53,58,64,70]
7636         self.assertEqual(17,da2.getNumberOfTuples());
7637         self.assertEqual(1,da2.getNumberOfComponents());
7638         for i in xrange(17):
7639             self.assertEqual(expected3[i],da2.getIJ(0,i));
7640             pass
7641         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]
7642         #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];
7643         self.assertEqual(48,da4.getNumberOfTuples());
7644         self.assertEqual(1,da4.getNumberOfComponents());
7645         for i in xrange(48):
7646             self.assertEqual(expected4[i],da4.getIJ(0,i));
7647             pass
7648         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]
7649         self.assertEqual(70,da3.getNumberOfTuples());
7650         self.assertEqual(1,da3.getNumberOfComponents());
7651         for i in xrange(70):
7652             self.assertEqual(expected5[i],da3.getIJ(0,i));
7653             pass
7654         pass
7655
7656     def testGetLevArrPerCellTypes1(self):
7657         m,m1=MEDCouplingDataForTest.buildPointe_1();
7658         m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
7659         order=[NORM_TRI3,NORM_QUAD4];
7660         da0,da1=m1.getLevArrPerCellTypes(order);
7661         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]
7662         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]
7663         self.assertEqual(47,da0.getNumberOfTuples());
7664         self.assertEqual(1,da0.getNumberOfComponents());
7665         for i in xrange(47):
7666             self.assertEqual(expected0[i],da0.getIJ(0,i));
7667             pass
7668         self.assertEqual(2,da1.getNumberOfTuples());
7669         self.assertEqual(1,da1.getNumberOfComponents());
7670         self.assertEqual(36,da1.getIJ(0,0));#36 TRI3
7671         self.assertEqual(11,da1.getIJ(1,0));#11 QUAD4
7672         #
7673         da2=da0.buildPermArrPerLevel();
7674         #
7675         self.assertEqual(47,da2.getNumberOfTuples());
7676         self.assertEqual(1,da2.getNumberOfComponents());
7677         for i in xrange(47):
7678             self.assertEqual(expected1[i],da2.getIJ(0,i));
7679             pass
7680         pass
7681
7682     def testSortCellsInMEDFileFrmt1(self):
7683         m,m1=MEDCouplingDataForTest.buildPointe_1();
7684         m2=m.deepCpy()
7685         da=DataArrayInt.New()
7686         da.setValues([0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13],16,1)
7687         daa=da.invertArrayN2O2O2N(16)
7688         m.renumberCells(daa,False)
7689         da2=m.sortCellsInMEDFileFrmt()
7690         self.assertEqual(da2.getValues(),[0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13])
7691         self.assertTrue(m.isEqual(m2,1e-12))
7692         self.assertTrue(da.isEqual(da2))
7693         pass
7694
7695     def testBuildPartAndReduceNodes1(self):
7696         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7697         arr=[1,0]
7698         m2,da=m.buildPartAndReduceNodes(arr);
7699         self.assertEqual(5,m2.getNumberOfNodes());
7700         self.assertEqual(2,m2.getNumberOfCells());
7701         f=m2.getMeasureField(True);
7702         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7703         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7704         #
7705         arr2=DataArrayInt.New()
7706         arr2.setValues(arr,2,1)
7707         m2,da=m.buildPartAndReduceNodes(arr2);
7708         self.assertEqual(5,m2.getNumberOfNodes());
7709         self.assertEqual(2,m2.getNumberOfCells());
7710         f=m2.getMeasureField(True);
7711         self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7712         self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7713         pass
7714
7715     def testDAITransformWithIndArrR1(self):
7716         tab1=[2,4,5,3,6,7]
7717         tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
7718         expected=[0,3,1,2,4,5]
7719         d=DataArrayInt.New();
7720         d.setValues(tab1,6,1);
7721         d1=DataArrayInt.New();
7722         d1.setValues(tab2,12,1);
7723         d2=d1[:]
7724         #
7725         d3=d.transformWithIndArrR(d1);
7726         self.assertEqual(6,d3.getNumberOfTuples());
7727         self.assertEqual(1,d3.getNumberOfComponents());
7728         for i in xrange(6):
7729             self.assertEqual(expected[i],d3.getIJ(i,0));
7730             pass
7731         #
7732         d1=d2
7733         d3=d.transformWithIndArrR(tab2)
7734         self.assertEqual(6,d3.getNumberOfTuples());
7735         self.assertEqual(1,d3.getNumberOfComponents());
7736         for i in xrange(6):
7737             self.assertEqual(expected[i],d3.getIJ(i,0));
7738             pass
7739         pass
7740
7741     def testDAISplitByValueRange1(self):
7742         val1=[6,5,0,3,2,7,8,1,4]
7743         val2=[0,4,9]
7744         d=DataArrayInt.New();
7745         d.setValues(val1,9,1);
7746         e,f,g=d.splitByValueRange(val2);
7747         self.assertEqual(9,e.getNumberOfTuples());
7748         self.assertEqual(1,e.getNumberOfComponents());
7749         self.assertEqual(9,f.getNumberOfTuples());
7750         self.assertEqual(1,f.getNumberOfComponents());
7751         self.assertEqual(2,g.getNumberOfTuples());
7752         self.assertEqual(1,g.getNumberOfComponents());
7753         #
7754         expected1=[1,1,0,0,0,1,1,0,1]
7755         expected2=[2,1,0,3,2,3,4,1,0]
7756         for i in xrange(9):
7757             self.assertEqual(expected1[i],e.getIJ(i,0));
7758             self.assertEqual(expected2[i],f.getIJ(i,0));
7759             pass
7760         self.assertEqual(0,g.getIJ(0,0));
7761         self.assertEqual(1,g.getIJ(1,0));
7762         #
7763         d.setIJ(6,0,9);
7764         self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
7765         pass
7766
7767     def testUMeshSplitProfilePerType1(self):
7768         val0=[2,0,1,3,4]
7769         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7770         m.renumberCells(val0,False);
7771         #
7772         val1=[0,2,3]
7773         d=DataArrayInt.New();
7774         d.setValues(val1,3,1);
7775         d.setName("sup")
7776         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7777         self.assertEqual(2,len(code));
7778         self.assertEqual(2,len(idsInPflPerType));
7779         expected1=[[3,1,0], [4,2,1]]
7780         self.assertEqual(expected1,code)
7781         self.assertEqual(2,len(idsInPflPerType));
7782         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7783         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7784         self.assertEqual(2,idsInPflPerType[1].getNumberOfTuples());
7785         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7786         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7787         #
7788         self.assertEqual(2,len(pfls));
7789         self.assertEqual("sup",pfls[0].getName())
7790         self.assertEqual(1,pfls[0].getNumberOfTuples());
7791         self.assertEqual(0,pfls[0].getIJ(0,0));
7792         self.assertEqual("sup",pfls[1].getName())
7793         self.assertEqual(2,pfls[1].getNumberOfTuples());
7794         self.assertEqual(0,pfls[1].getIJ(0,0));
7795         self.assertEqual(1,pfls[1].getIJ(1,0));
7796         #
7797         val2=[0,2,3,4]
7798         d=DataArrayInt.New();
7799         d.setValues(val2,4,1);
7800         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7801         self.assertEqual(2,len(code));
7802         self.assertEqual(2,len(idsInPflPerType));
7803         expected2=[[3,1,0], [4,3,-1]]
7804         self.assertEqual(expected2,code);
7805         self.assertEqual(2,len(idsInPflPerType));
7806         self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7807         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7808         self.assertEqual(3,idsInPflPerType[1].getNumberOfTuples());
7809         self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7810         self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7811         self.assertEqual(3,idsInPflPerType[1].getIJ(2,0));
7812         #
7813         self.assertEqual(1,len(pfls));
7814         self.assertEqual(1,pfls[0].getNumberOfTuples());
7815         self.assertEqual(0,pfls[0].getIJ(0,0));
7816         #
7817         val3=[1,0,2]
7818         d=DataArrayInt.New();
7819         d.setValues(val3,3,1);
7820         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7821         self.assertEqual(2,len(code));
7822         self.assertEqual(2,len(idsInPflPerType));
7823         expected3=[[3,2,0], [4,1,1]]
7824         self.assertEqual(expected3,code);
7825         self.assertEqual(2,len(idsInPflPerType));
7826         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7827         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7828         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7829         self.assertEqual(1,idsInPflPerType[1].getNumberOfTuples());
7830         self.assertEqual(2,idsInPflPerType[1].getIJ(0,0));
7831         #
7832         self.assertEqual(2,len(pfls));
7833         self.assertEqual(2,pfls[0].getNumberOfTuples());
7834         self.assertEqual(1,pfls[0].getIJ(0,0));
7835         self.assertEqual(0,pfls[0].getIJ(1,0));
7836         self.assertEqual(0,pfls[1].getIJ(0,0));
7837         #
7838         val4=[3,4]
7839         d=DataArrayInt.New();
7840         d.setValues(val4,2,1);
7841         code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7842         self.assertEqual(1,len(code));
7843         self.assertEqual(1,len(idsInPflPerType));
7844         expected4=[[4,2,0]]
7845         self.assertEqual(expected4,code);
7846         self.assertEqual(1,len(idsInPflPerType));
7847         self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7848         self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7849         self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7850         #
7851         self.assertEqual(1,len(pfls));
7852         self.assertEqual(2,pfls[0].getNumberOfTuples());
7853         self.assertEqual(1,pfls[0].getIJ(0,0));
7854         self.assertEqual(2,pfls[0].getIJ(1,0));
7855         pass
7856
7857     def testDAIBuildExplicitArrByRanges1(self):
7858         d=DataArrayInt.New();
7859         vals1=[0,2,3]
7860         d.setValues(vals1,3,1);
7861         e=DataArrayInt.New();
7862         vals2=[0,3,6,10,14,20]
7863         e.setValues(vals2,6,1);
7864         #
7865         f=d.buildExplicitArrByRanges(e);
7866         self.assertEqual(11,f.getNumberOfTuples());
7867         self.assertEqual(1,f.getNumberOfComponents());
7868         expected1=[0,1,2,6,7,8,9,10,11,12,13]
7869         for i in xrange(11):
7870             self.assertEqual(expected1[i],f.getIJ(i,0));
7871             pass
7872         pass
7873
7874     def testDAIComputeOffsets2(self):
7875         d=DataArrayInt.New();
7876         vals1=[3,5,1,2,0,8]
7877         expected1=[0,3,8,9,11,11,19]
7878         d.setValues(vals1,6,1);
7879         d.computeOffsets2();
7880         self.assertEqual(7,d.getNumberOfTuples());
7881         self.assertEqual(1,d.getNumberOfComponents());
7882         for i in xrange(7):
7883             self.assertEqual(expected1[i],d.getIJ(0,i));
7884             pass
7885         pass
7886
7887     def testMergeField3(self):
7888         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7889         m.getCoords().setInfoOnComponent(0,"x [m]");
7890         m.getCoords().setInfoOnComponent(1,"z [km]");
7891         m.setName("m");
7892         m.setDescription("desc");
7893         f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7894         f1.setName("f1");
7895         f1.setMesh(m);
7896         arr=DataArrayDouble.New();
7897         arr.alloc(5,2);
7898         arr.setInfoOnComponent(0,"X [m]");
7899         arr.setInfoOnComponent(1,"YY [mm]");
7900         arr.fillWithValue(2.);
7901         f1.setArray(arr);
7902         #
7903         f2=MEDCouplingFieldDouble.MergeFields([f1]);
7904         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
7905         #
7906         pass
7907     
7908     def testGetDistributionOfTypes1(self):
7909         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7910         tab1=[2,0,1,3,4]
7911         self.assertRaises(InterpKernelException,m.getDistributionOfTypes);
7912         m.renumberCells(tab1,False);
7913         code=m.getDistributionOfTypes();
7914         self.assertEqual(2,len(code));
7915         self.assertEqual(3,code[0][0]);
7916         self.assertEqual(2,code[0][1]);
7917         self.assertEqual(-1,code[0][2]);
7918         self.assertEqual(4,code[1][0]);
7919         self.assertEqual(3,code[1][1]);
7920         self.assertEqual(-1,code[1][2]);
7921         pass
7922
7923     def testNorm2_1(self):
7924         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7925         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7926         f.setMesh(m);
7927         #
7928         d=DataArrayDouble.New();
7929         tab=[1.2,1.3,2.2,2.3,3.2,3.3,4.2,4.3,5.2,5.3]
7930         d.setValues(tab,5,2);
7931         f.setArray(d);
7932         f.checkCoherency();
7933         #
7934         self.assertAlmostEqual(11.209371079592289,f.norm2(),14);
7935         #
7936         pass
7937
7938     def testNormMax1(self):
7939         m=MEDCouplingDataForTest.build2DTargetMesh_1();
7940         f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7941         f.setMesh(m);
7942         #
7943         d=DataArrayDouble.New();
7944         tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
7945         d.setValues(tab,5,2);
7946         f.setArray(d);
7947         f.checkCoherency();
7948         #
7949         self.assertAlmostEqual(7.8,f.normMax(),14);
7950         #
7951         pass
7952
7953     def testFindAndCorrectBadOriented3DExtrudedCells1(self):
7954         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];
7955         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]
7956         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]
7957         invalidCells=[2,3,6,7]
7958         m=MEDCouplingUMesh.New("Example",3);
7959         coo=DataArrayDouble.New();
7960         coo.setValues(coords,38,3);
7961         m.setCoords(coo);
7962         m.allocateCells(8);
7963         m.insertNextCell(NORM_PENTA6,6,conn[0:6])
7964         m.insertNextCell(NORM_PENTA6,6,conn[6:12])
7965         m.insertNextCell(NORM_PENTA6,6,conn[12:18])
7966         m.insertNextCell(NORM_PENTA6,6,conn[18:24])
7967         m.insertNextCell(NORM_HEXA8,8,conn[24:32])
7968         m.insertNextCell(NORM_HEXA8,8,conn[32:40])
7969         m.insertNextCell(NORM_HEXA8,8,conn[40:48])
7970         m.insertNextCell(NORM_HEXA8,8,conn[48:56])
7971         m.finishInsertingCells();
7972         #
7973         v=m.findAndCorrectBadOriented3DExtrudedCells();
7974         self.assertEqual(4,len(v));
7975         self.assertEqual(v.getValues(),invalidCells);
7976         self.assertEqual(connExp,m.getNodalConnectivity().getValues());
7977         self.assertTrue(m.findAndCorrectBadOriented3DExtrudedCells().empty())
7978         #
7979         pass
7980
7981     def testConvertExtrudedPolyhedra1(self):
7982         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]
7983         m=MEDCouplingUMesh.New("Example",3);
7984         coo=DataArrayDouble.New();
7985         coo.alloc(73,3);
7986         coo.rearrange(1); coo.iota(0); coo.rearrange(3);
7987         m.setCoords(coo);
7988         m.allocateCells(9);
7989         m.insertNextCell(NORM_TETRA4,4,conn[0:4])
7990         m.insertNextCell(NORM_HEXA8,8,conn[4:12])
7991         m.insertNextCell(NORM_TETRA4,4,conn[12:16])
7992         m.insertNextCell(NORM_POLYHED,6,conn[16:22])
7993         m.insertNextCell(NORM_PENTA6,6,conn[22:28])
7994         m.insertNextCell(NORM_POLYHED,10,conn[28:38])
7995         m.insertNextCell(NORM_HEXA8,8,conn[38:46])
7996         m.insertNextCell(NORM_HEXGP12,12,conn[46:58])
7997         m.insertNextCell(NORM_POLYHED,14,conn[58:72])
7998         m.finishInsertingCells();
7999         #
8000         m.convertExtrudedPolyhedra();
8001         da=m.getNodalConnectivity();
8002         dai=m.getNodalConnectivityIndex();
8003         self.assertEqual(10,dai.getNbOfElems());
8004         self.assertEqual(159,da.getNbOfElems());
8005         #
8006         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];
8007         expected2=[0,5,14,19,42,49,86,95,108,159]
8008         self.assertEqual(expected1,da.getValues());
8009         self.assertEqual(expected2,dai.getValues());
8010         m.checkCoherency2()
8011         pass
8012
8013     def testNonRegressionCopyTinyStrings(self):
8014         m=MEDCouplingDataForTest.build2DTargetMesh_1()
8015         f1=m.getMeasureField(True)
8016         f1.getArray().setInfoOnComponent(0,"P [N/m^2]")
8017         bary=m.getBarycenterAndOwner()
8018         f2=f1.buildNewTimeReprFromThis(NO_TIME,False)
8019         f2.setArray(bary)
8020         self.assertRaises(InterpKernelException,f1.copyTinyAttrFrom,f2)
8021         pass
8022
8023     def testDaDSetPartOfValuesAdv1(self):
8024         tab1=[3.,4.,5., 13.,14.,15., 23.,24.,25., 33.,34.,35., 43.,44.,45., 53.,54.,55.]
8025         tab2=[6.,7.,8., 16.,17.,18., 26.,27.,28.]
8026         tab3=[4,1, 2,2, 3,0]
8027         a=DataArrayDouble.New();
8028         a.setValues(tab1,6,3);
8029         b=DataArrayDouble.New();
8030         b.setValues(tab2,3,3);
8031         c=DataArrayInt.New();
8032         c.setValues(tab3,3,2);
8033         #
8034         a.setPartOfValuesAdv(b,c);
8035         expected1=[3.,4.,5., 13.,14.,15., 26.,27.,28., 6.,7.,8., 16.,17.,18., 53.,54.,55.]
8036         self.assertEqual(expected1,a.getValues());
8037         pass
8038
8039     def testUMeshBuildSetInstanceFromThis1(self):
8040         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
8041         m2=m.buildSetInstanceFromThis(3);
8042         self.assertTrue(m.isEqual(m2,1e-12));
8043         #
8044         m=MEDCouplingUMesh.New("toto",2);
8045         m2=m.buildSetInstanceFromThis(3);
8046         self.assertEqual(0,m2.getNumberOfNodes());
8047         self.assertEqual(0,m2.getNumberOfCells());
8048         pass
8049
8050     def testUMeshMergeMeshesCVW1(self):
8051         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
8052         m2=MEDCouplingUMesh.New("toto",2);
8053         m3=MEDCouplingUMesh.MergeUMeshes([m,m2]);
8054         m3.setName(m.getName());
8055         self.assertTrue(m.isEqual(m3,1e-12));
8056         pass
8057     
8058     def testChangeUnderlyingMeshWithCMesh1(self):
8059         mesh=MEDCouplingCMesh.New();
8060         coordsX=DataArrayDouble.New();
8061         arrX=[ -1., 1., 2., 4. ]
8062         coordsX.setValues(arrX,4,1);
8063         coordsY=DataArrayDouble.New();
8064         arrY=[ -2., 2., 4., 8. ]
8065         coordsY.setValues(arrY,4,1);
8066         coordsZ=DataArrayDouble.New();
8067         arrZ=[ -3., 3., 6., 12. ]
8068         coordsZ.setValues(arrZ,4,1);
8069         mesh.setCoords(coordsX,coordsY,coordsZ);
8070         f=mesh.getMeasureField(True)
8071         mesh2=mesh.deepCpy()
8072         for myId in [0,1,2,10,11,12,20,21,22]:
8073             f=mesh.getMeasureField(True)
8074             f.changeUnderlyingMesh(mesh2,myId,1e-12);
8075             pass
8076         mesh2.setName("uuuu")
8077         for myId in [1,2,10,11,12,20,21,22]:
8078             f=mesh.getMeasureField(True)
8079             f.changeUnderlyingMesh(mesh2,myId,1e-12);
8080             pass
8081         pass
8082
8083     def testDADFindCommonTuples1(self):
8084         da=DataArrayDouble.New();
8085         # nbOftuples=1
8086         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8087         da.setValues(array1,6,1)
8088         c,cI=da.findCommonTuples(1e-2);
8089         expected1=[0,3,4]
8090         expected2=[0,3]
8091         self.assertEqual(3,c.getNbOfElems());
8092         self.assertEqual(2,cI.getNbOfElems());
8093         self.assertEqual(expected1,c.getValues())
8094         self.assertEqual(expected2,cI.getValues())
8095         c,cI=da.findCommonTuples(2e-1)
8096         expected3=[0,3,4,1,2]
8097         expected4=[0,3,5]
8098         self.assertEqual(5,c.getNbOfElems());
8099         self.assertEqual(3,cI.getNbOfElems());
8100         self.assertEqual(expected3,c.getValues())
8101         self.assertEqual(expected4,cI.getValues())
8102         # nbOftuples=2
8103         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]
8104         da.setValues(array2,6,2)
8105         c,cI=da.findCommonTuples(1e-2);
8106         self.assertEqual(3,c.getNbOfElems());
8107         self.assertEqual(2,cI.getNbOfElems());
8108         self.assertEqual(expected1,c.getValues())
8109         self.assertEqual(expected2,cI.getValues())
8110         c,cI=da.findCommonTuples(2e-1)
8111         self.assertEqual(5,c.getNbOfElems());
8112         self.assertEqual(3,cI.getNbOfElems());
8113         self.assertEqual(expected3,c.getValues())
8114         self.assertEqual(expected4,cI.getValues())
8115         # nbOftuples=3
8116         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]
8117         da.setValues(array3,6,3)
8118         c,cI=da.findCommonTuples(1e-2);
8119         self.assertEqual(3,c.getNbOfElems());
8120         self.assertEqual(2,cI.getNbOfElems());
8121         self.assertEqual(expected1,c.getValues())
8122         self.assertEqual(expected2,cI.getValues())
8123         c,cI=da.findCommonTuples(2e-1)
8124         self.assertEqual(5,c.getNbOfElems());
8125         self.assertEqual(3,cI.getNbOfElems());
8126         self.assertEqual(expected3,c.getValues())
8127         self.assertEqual(expected4,cI.getValues())
8128         # nbOftuples=1, no common groups
8129         array11=[2.3,1.2,1.3,2.4,2.5,0.8]
8130         da.setValues(array11,6,1)
8131         c,cI=da.findCommonTuples(1e-2);
8132         self.assertEqual(0,c.getNbOfElems());
8133         self.assertEqual(1,cI.getNbOfElems());
8134         self.assertEqual([0],cI.getValues())
8135         
8136         array12=[0.]*(6*5)
8137         da.setValues(array12,6,5) #bad NumberOfComponents
8138         self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2);
8139         pass
8140
8141     def testDABack1(self):
8142         da=DataArrayDouble.New();
8143         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8144         da.setValues(array1,6,1);
8145         self.assertAlmostEqual(0.8,da.back(),14);
8146         da.rearrange(2);
8147         self.assertRaises(InterpKernelException,da.back);
8148         da.alloc(0,1);
8149         self.assertRaises(InterpKernelException,da.back);
8150         #
8151         da=DataArrayInt.New();
8152         array2=[4,7,8,2]
8153         da.setValues(array2,4,1);
8154         self.assertEqual(2,da.back());
8155         da.rearrange(2);
8156         self.assertRaises(InterpKernelException,da.back);
8157         da.alloc(0,1);
8158         self.assertRaises(InterpKernelException,da.back);
8159         pass
8160
8161     def testDADGetDifferentValues1(self):
8162         da=DataArrayDouble.New();
8163         array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8164         da.setValues(array1,6,1)
8165         #
8166         expected1=[2.301,1.2,1.3,0.8]
8167         dv=da.getDifferentValues(1e-2);
8168         self.assertEqual(4,dv.getNbOfElems());
8169         for i in xrange(4):
8170             self.assertAlmostEqual(expected1[i],dv.getIJ(i,0),14);
8171             pass
8172         #
8173         dv=da.getDifferentValues(2e-1);
8174         expected2=[2.301,1.3,0.8]
8175         self.assertEqual(3,dv.getNbOfElems());
8176         for i in xrange(3):
8177             self.assertAlmostEqual(expected2[i],dv.getIJ(i,0),14);
8178             pass
8179         pass
8180
8181     def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
8182         arr=[0,3, 5,7,9]
8183         arrI=[0,2,5]
8184         a=DataArrayInt.New();
8185         a.setValues(arr,5,1);
8186         b=DataArrayInt.New();
8187         b.setValues(arrI,3,1);
8188         ret,newNbTuple=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(10,a,b);
8189         expected=[0,1,2,0,3,4,5,4,6,4]
8190         self.assertEqual(10,ret.getNbOfElems());
8191         self.assertEqual(7,newNbTuple);
8192         self.assertEqual(1,ret.getNumberOfComponents());
8193         self.assertEqual(expected,ret.getValues());
8194         self.assertRaises(InterpKernelException,DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2,9,a,b);
8195         pass
8196
8197     def testDADIReverse1(self):
8198         arr=[0,3,5,7,9,2]
8199         a=DataArrayInt.New();
8200         a.setValues(arr,6,1);
8201         self.assertEqual(2,a.back());
8202         a.reverse();
8203         for i in xrange(6):
8204             self.assertEqual(arr[5-i],a.getIJ(i,0));
8205             pass
8206         a.setValues(arr[:-1],5,1);
8207         a.reverse();
8208         for i in xrange(5):
8209             self.assertEqual(arr[4-i],a.getIJ(i,0));
8210             pass
8211         #
8212         arr2=[0.,3.,5.,7.,9.,2.]
8213         b=DataArrayDouble.New();
8214         b.setValues(arr2,6,1);
8215         b.reverse();
8216         for i in xrange(6):
8217             self.assertAlmostEqual(arr2[5-i],b.getIJ(i,0),14);
8218             pass
8219         b.setValues(arr2[:5],5,1);
8220         self.assertAlmostEqual(9.,b.back(),14)
8221         b.reverse();
8222         for i in xrange(5):
8223             self.assertAlmostEqual(arr2[4-i],b.getIJ(i,0),14);
8224             pass
8225         pass
8226
8227     def testGetNodeIdsInUse1(self):
8228         m0=MEDCouplingDataForTest.build2DTargetMesh_1();
8229         CellIds=[1,2]
8230         m1=m0.buildPartOfMySelf(CellIds,True);
8231         arr,newNbOfNodes=m1.getNodeIdsInUse();
8232         expected=[-1,0,1,-1,2,3,-1,-1,-1]
8233         self.assertEqual(4,newNbOfNodes);
8234         self.assertEqual(9,arr.getNbOfElems());
8235         self.assertEqual(expected,arr.getValues());
8236         arr2=arr.invertArrayO2N2N2O(newNbOfNodes);
8237         self.assertEqual(4,arr2.getNbOfElems());
8238         expected2=[1,2,4,5]
8239         self.assertEqual(expected2,arr2.getValues());
8240         pass
8241
8242     def testBuildDescendingConnec2(self):
8243         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8244         #
8245         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8246         mesh2.checkCoherency();
8247         self.assertEqual(1,mesh2.getMeshDimension());
8248         self.assertEqual(13,mesh2.getNumberOfCells());
8249         self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
8250         self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
8251         self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
8252         self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
8253         expected1=[1,2,3,4,-3,5,6, 7,8,-5,9,10,-2,11, 12,13,-7,-10]
8254         self.assertEqual(expected1,desc.getValues());
8255         expected2=[0,4,7,10,14,18]
8256         self.assertEqual(expected2,descIndx.getValues());
8257         expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18]
8258         self.assertEqual(expected3,revDescIndx.getValues());
8259         expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4]
8260         self.assertEqual(expected4,revDesc.getValues());
8261         conn=mesh2.getNodalConnectivity();
8262         connIndex=mesh2.getNodalConnectivityIndex();
8263         expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39]
8264         self.assertEqual(expected5,connIndex.getValues());
8265         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]
8266         self.assertEqual(expected6,conn.getValues());
8267         pass
8268
8269     def testIntersect2DMeshesTmp1(self):
8270         m1c=MEDCouplingCMesh.New();
8271         coordsX=DataArrayDouble.New();
8272         arrX=[ -1., 1., 2., 4. ]
8273         coordsX.setValues(arrX,4,1);
8274         m1c.setCoordsAt(0,coordsX);
8275         coordsY=DataArrayDouble.New();
8276         arrY=[ -2., 2., 4., 8. ]
8277         coordsY.setValues(arrY,4,1);
8278         m1c.setCoordsAt(1,coordsY);
8279         m1=m1c.buildUnstructured()
8280         m1bis=m1.buildPartOfMySelf([3,4,5],False)
8281         m2=m1.deepCpy()
8282         m2=m2.buildPartOfMySelf([0,1,2],False)
8283         m2.translate([0.5,0.5])
8284         #
8285         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1bis,m2,1e-10)
8286         expected1=[0,0,1,1,1,2,2,2]
8287         expected2=[0,-1,0,1,-1,1,2,-1]
8288         self.assertEqual(8,d1.getNumberOfTuples());
8289         self.assertEqual(8,d2.getNumberOfTuples());
8290         self.assertEqual(8,m3.getNumberOfCells());
8291         self.assertEqual(22,m3.getNumberOfNodes());
8292         self.assertEqual(2,m3.getSpaceDimension());
8293         self.assertEqual(expected1,d1.getValues());
8294         self.assertEqual(expected2,d2.getValues());
8295         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]
8296         expected4=[0,5,12,17,22,28,33,38,44]
8297         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]
8298         self.assertEqual(44,m3.getNodalConnectivity().getNumberOfTuples());
8299         self.assertEqual(9,m3.getNodalConnectivityIndex().getNumberOfTuples());
8300         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8301         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8302         for i in xrange(44):
8303             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8304             pass
8305         pass
8306
8307     def testFindNodesOnLine1(self):
8308         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8309         pt=[-0.3,-0.3]
8310         pt2=[0.,0.,0.]
8311         pt3=[-0.3,0.,0.]
8312         vec=[0.,1.]
8313         vec2=[1.,0.,0.]
8314         vec3=[0.,1.,1.]
8315         expected1=[0,3,6]
8316         res=mesh.findNodesOnLine(pt,vec,1e-12);
8317         self.assertEqual(3,len(res));
8318         self.assertEqual(expected1,res.getValues());
8319         #
8320         mesh.changeSpaceDimension(3);
8321         mesh.rotate(pt2,vec2,pi/4.);
8322         res=mesh.findNodesOnLine(pt3,vec3,1e-12);
8323         self.assertEqual(3,len(res));
8324         self.assertEqual(expected1,res.getValues());
8325         pass
8326
8327     def testIntersect2DMeshesTmp2(self):
8328         m1c=MEDCouplingCMesh.New();
8329         coordsX1=DataArrayDouble.New();
8330         arrX1=[ 0., 1., 1.5, 2. ]
8331         coordsX1.setValues(arrX1,4,1);
8332         m1c.setCoordsAt(0,coordsX1);
8333         coordsY1=DataArrayDouble.New();
8334         arrY1=[ 0., 1.5, 3.]
8335         coordsY1.setValues(arrY1,3,1);
8336         m1c.setCoordsAt(1,coordsY1);
8337         m1=m1c.buildUnstructured();
8338         m2c=MEDCouplingCMesh.New();
8339         coordsX2=DataArrayDouble.New();
8340         arrX2=[ 0., 1., 2. ]
8341         coordsX2.setValues(arrX2,3,1);
8342         m2c.setCoordsAt(0,coordsX2);
8343         coordsY2=DataArrayDouble.New();
8344         arrY2=[ 0., 1., 3.]
8345         coordsY2.setValues(arrY2,3,1);
8346         m2c.setCoordsAt(1,coordsY2);
8347         m2=m2c.buildUnstructured();
8348         #
8349         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8350         #
8351         expected1=[0,0,1,1,2,2,3,4,5]
8352         expected2=[0,2,1,3,1,3,2,3,3]
8353         self.assertEqual(9,d1.getNumberOfTuples());
8354         self.assertEqual(9,d2.getNumberOfTuples());
8355         self.assertEqual(9,m3.getNumberOfCells());
8356         self.assertEqual(22,m3.getNumberOfNodes());
8357         self.assertEqual(2,m3.getSpaceDimension());
8358         self.assertEqual(expected1,d1.getValues());
8359         self.assertEqual(expected2,d2.getValues());
8360         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]
8361         expected4=[0,5,10,15,20,25,30,35,40,45]
8362         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]
8363         self.assertEqual(45,m3.getNodalConnectivity().getNumberOfTuples());
8364         self.assertEqual(10,m3.getNodalConnectivityIndex().getNumberOfTuples());
8365         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8366         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8367         for i in xrange(44):
8368             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8369             pass
8370         pass
8371     
8372     def testBuildPartOfMySelfSafe1(self):
8373         mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
8374         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True)
8375         self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,4,5,4],True)
8376         pass
8377
8378     def testIntersect2DMeshesTmp3(self):
8379         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];
8380         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];
8381         m1=MEDCouplingUMesh.New();
8382         m1.setMeshDimension(2);
8383         m1.allocateCells(8);
8384         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8385         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8386         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8387         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8388         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8389         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8390         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8391         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8392         m1.finishInsertingCells();
8393         myCoords1=DataArrayDouble.New();
8394         myCoords1.setValues(m1Coords,25,2);
8395         m1.setCoords(myCoords1);
8396         #
8397         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.]
8398         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]
8399         m2=MEDCouplingUMesh.New();
8400         m2.setMeshDimension(2);
8401         m2.allocateCells(8);
8402         for i in xrange(8):
8403             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8404             pass
8405         m2.finishInsertingCells();
8406         myCoords2=DataArrayDouble.New();
8407         myCoords2.setValues(m2Coords,15,2);
8408         m2.setCoords(myCoords2);
8409         #
8410         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8411         m3.unPolyze()
8412         #
8413         expected1=[0,1,1,1,2,3,3,3,4,5,5,5,6,7,7,7]
8414         expected2=[0,0,1,-1,2,2,3,-1,4,4,5,-1,6,6,7,-1]
8415         self.assertEqual(16,d1.getNumberOfTuples());
8416         self.assertEqual(16,d2.getNumberOfTuples());
8417         self.assertEqual(16,m3.getNumberOfCells());
8418         self.assertEqual(104,m3.getNumberOfNodes());
8419         self.assertEqual(2,m3.getSpaceDimension());
8420         self.assertEqual(expected1,d1.getValues());
8421         self.assertEqual(expected2,d2.getValues());
8422         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]
8423         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8424         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]
8425         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8426         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8427         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8428         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8429         for i in xrange(208):
8430             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8431             pass
8432         pass
8433
8434     def testUMeshTessellate2D1(self):
8435         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];
8436         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];
8437         m1=MEDCouplingUMesh.New();
8438         m1.setMeshDimension(2);
8439         m1.allocateCells(8);
8440         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8441         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8442         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8443         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8444         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8445         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8446         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8447         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8448         m1.finishInsertingCells();
8449         myCoords1=DataArrayDouble.New();
8450         myCoords1.setValues(m1Coords,25,2);
8451         m1.setCoords(myCoords1);
8452         #
8453         m11=m1.deepCpy();
8454         m11.tessellate2D(1.);
8455         self.assertTrue(m11.getCoords().isEqual(m11.getCoords(),1e-12));
8456         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]
8457         expected2=[0,5,12,17,24,29,36,41,48]
8458         self.assertEqual(48,m11.getNodalConnectivity().getNumberOfTuples());
8459         self.assertEqual(9,m11.getNodalConnectivityIndex().getNumberOfTuples());
8460         self.assertEqual(expected1,m11.getNodalConnectivity().getValues());
8461         self.assertEqual(expected2,m11.getNodalConnectivityIndex().getValues());
8462         #
8463         m12=m1.deepCpy();
8464         m12.tessellate2D(0.5);
8465         self.assertEqual(41,m12.getNumberOfNodes());
8466         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]
8467         expected4=[0,6,15,21,30,36,45,51,60]
8468         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]
8469         for i in xrange(82):
8470             self.assertAlmostEqual(expected5[i],m12.getCoords().getIJ(0,i),12);
8471             pass
8472         self.assertEqual(60,m12.getNodalConnectivity().getNumberOfTuples());
8473         self.assertEqual(9,m12.getNodalConnectivityIndex().getNumberOfTuples());
8474         self.assertEqual(expected3,m12.getNodalConnectivity().getValues());
8475         self.assertEqual(expected4,m12.getNodalConnectivityIndex().getValues());
8476         pass
8477
8478     def testUMeshTessellate2DCurve1(self):
8479         # A quarter of circle:
8480         mcoords = [0.4,0.0,   0.0,-0.4,   0.283,-0.283]
8481         mconnec = [0,1,2]
8482
8483         m1 = MEDCouplingUMesh.New()
8484         m1.setMeshDimension(1)
8485         m1.allocateCells(1)
8486         m1.insertNextCell(NORM_SEG3, mconnec)
8487
8488         myCoords = DataArrayDouble.New(mcoords, 3, 2)
8489         m1.setCoords(myCoords)
8490         
8491         m2 = m1.deepCpy()
8492         m2.tessellate2DCurve(0.1)
8493         # If the following raises, the test will fail automatically:
8494         m2.checkCoherency1(0.0) # eps param not used
8495
8496     def testIntersect2DMeshesTmp4(self):
8497         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];
8498         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];
8499         m1=MEDCouplingUMesh.New();
8500         m1.setMeshDimension(2);
8501         m1.allocateCells(8);
8502         m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8503         m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8504         m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8505         m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8506         m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8507         m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8508         m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8509         m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8510         m1.finishInsertingCells();
8511         myCoords1=DataArrayDouble.New();
8512         myCoords1.setValues(m1Coords,25,2);
8513         m1.setCoords(myCoords1);
8514         #
8515         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.]
8516         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]
8517         m2=MEDCouplingUMesh.New();
8518         m2.setMeshDimension(2);
8519         m2.allocateCells(8);
8520         for i in xrange(8):
8521             m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8522             pass
8523         m2.finishInsertingCells();
8524         myCoords2=DataArrayDouble.New();
8525         myCoords2.setValues(m2Coords,15,2);
8526         m2.setCoords(myCoords2);
8527         #
8528         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10)
8529         m3.unPolyze()
8530         #
8531         expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
8532         expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1]
8533         self.assertEqual(16,d1.getNumberOfTuples());
8534         self.assertEqual(16,d2.getNumberOfTuples());
8535         self.assertEqual(16,m3.getNumberOfCells());
8536         self.assertEqual(104,m3.getNumberOfNodes());
8537         self.assertEqual(2,m3.getSpaceDimension());
8538         self.assertEqual(expected1,d1.getValues());
8539         self.assertEqual(expected2,d2.getValues());
8540         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]
8541         expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8542         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]
8543         self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8544         self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8545         self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8546         self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8547         for i in xrange(208):
8548             self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8549             pass
8550         pass
8551
8552     def testGetCellIdsCrossingPlane1(self):
8553         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8554         vec=[-0.07,1.,0.07]
8555         origin=[1.524,1.4552,1.74768]
8556         ids1=mesh3D.getCellIdsCrossingPlane(origin,vec,1e-10)
8557         self.assertEqual([1,3,4,7,9,10,13,15,16],ids1.getValues())
8558         vec2=[0.,0.,1.]
8559         ids2=mesh3D.getCellIdsCrossingPlane(origin,vec2,1e-10)
8560         self.assertEqual([6,7,8,9,10,11],ids2.getValues())
8561         pass
8562
8563     def testBuildSlice3D1(self):
8564         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8565         vec1=[-0.07,1.,0.07]
8566         origin1=[1.524,1.4552,1.74768]
8567         slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
8568         expected1=[1,3,4,7,9,10,13,15,16]
8569         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]
8570         expected3=[0,6,11,17,22,27,32,37,42,47]
8571         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.]
8572         self.assertEqual(2,slice1.getMeshDimension());
8573         self.assertEqual(3,slice1.getSpaceDimension());
8574         self.assertEqual(57,slice1.getNumberOfNodes());
8575         self.assertEqual(9,slice1.getNumberOfCells());
8576         self.assertEqual(9,ids.getNumberOfTuples());
8577         self.assertEqual(47,slice1.getNodalConnectivity().getNumberOfTuples());
8578         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8579         self.assertEqual(expected1,ids.getValues());
8580         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8581         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8582         for i in xrange(171):
8583             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8584             pass
8585         # 2nd slice based on already existing nodes of mesh3D.
8586         vec2=[0.,3.,1.]
8587         origin2=[2.5,1.,3.]
8588         slice1,ids=mesh3D.buildSlice3D(origin2,vec2,1e-10);
8589         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]
8590         expected6=[0,5,10,15,21,26,32,38,43,49]
8591         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]
8592         self.assertEqual(2,slice1.getMeshDimension());
8593         self.assertEqual(3,slice1.getSpaceDimension());
8594         self.assertEqual(60,slice1.getNumberOfNodes());
8595         self.assertEqual(9,slice1.getNumberOfCells());
8596         self.assertEqual(9,ids.getNumberOfTuples());
8597         self.assertEqual(49,slice1.getNodalConnectivity().getNumberOfTuples());
8598         self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8599         self.assertEqual(expected1,ids.getValues());
8600         self.assertEqual(expected5,slice1.getNodalConnectivity().getValues());
8601         self.assertEqual(expected6,slice1.getNodalConnectivityIndex().getValues());
8602         for i in xrange(180):
8603             self.assertAlmostEqual(expected7[i],slice1.getCoords().getIJ(0,i),12);
8604             pass
8605         # 3rd slice based on shared face of mesh3D.
8606         vec3=[0.,0.,1.]
8607         origin3=[2.5,1.,2.]
8608         slice1,ids=mesh3D.buildSlice3D(origin3,vec3,1e-10);
8609         expected8=[6,7,8,9,10,11,12,13,14,15,16,17]
8610         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]
8611         expected10=[0,5,12,17,22,29,34,39,46,51,56,63,68]
8612         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.]
8613         self.assertEqual(2,slice1.getMeshDimension());
8614         self.assertEqual(3,slice1.getSpaceDimension());
8615         self.assertEqual(45,slice1.getNumberOfNodes());
8616         self.assertEqual(12,slice1.getNumberOfCells());
8617         self.assertEqual(12,ids.getNumberOfTuples());
8618         self.assertEqual(68,slice1.getNodalConnectivity().getNumberOfTuples());
8619         self.assertEqual(13,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8620         self.assertEqual(expected8,ids.getValues());
8621         self.assertEqual(expected9,slice1.getNodalConnectivity().getValues());
8622         self.assertEqual(expected10,slice1.getNodalConnectivityIndex().getValues());
8623         for i in xrange(135):
8624             self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12);
8625             pass
8626         pass
8627
8628     def testBuildSlice3DSurf1(self):
8629         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8630         mesh2D=mesh3D.buildDescendingConnectivity()[0];
8631         vec1=[-0.07,1.,0.07]
8632         origin1=[1.524,1.4552,1.74768]
8633         slice1,ids=mesh2D.buildSlice3DSurf(origin1,vec1,1e-10);
8634         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]
8635         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]
8636         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];
8637         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.]
8638         self.assertEqual(1,slice1.getMeshDimension());
8639         self.assertEqual(3,slice1.getSpaceDimension());
8640         self.assertEqual(57,slice1.getNumberOfNodes());
8641         self.assertEqual(25,slice1.getNumberOfCells());
8642         self.assertEqual(25,ids.getNumberOfTuples());
8643         self.assertEqual(75,slice1.getNodalConnectivity().getNumberOfTuples());
8644         self.assertEqual(26,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8645         self.assertEqual(expected1,ids.getValues());
8646         self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8647         self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8648         for i in xrange(171):
8649             self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8650             pass
8651         #
8652         vec2=[0.,0.,1.]
8653         origin2=[2.5,1.,2.]
8654         slice1,ids=mesh2D.buildSlice3DSurf(origin2,vec2,1e-10);
8655         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]
8656         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]
8657         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];
8658         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.]
8659         self.assertEqual(1,slice1.getMeshDimension());
8660         self.assertEqual(3,slice1.getSpaceDimension());
8661         self.assertEqual(45,slice1.getNumberOfNodes());
8662         self.assertEqual(68,slice1.getNumberOfCells());
8663         self.assertEqual(68,ids.getNumberOfTuples());
8664         self.assertEqual(204,slice1.getNodalConnectivity().getNumberOfTuples());
8665         self.assertEqual(69,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8666         self.assertEqual(expected5,ids.getValues());
8667         self.assertEqual(expected6,slice1.getNodalConnectivity().getValues());
8668         self.assertEqual(expected7,slice1.getNodalConnectivityIndex().getValues());
8669         for i in xrange(135):
8670             self.assertAlmostEqual(expected8[i],slice1.getCoords().getIJ(0,i),12);
8671             pass
8672         pass
8673
8674     def testDataArrayDoubleAdvSetting1(self):
8675         data1=[1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.]
8676         data2=[8.,38.,9.,39.,0.,30.,11.,41.,12.,42.]
8677         compsCpp=["comp1","comp2"]
8678         da=DataArrayDouble.New();
8679         da.setInfoAndChangeNbOfCompo(compsCpp);
8680         da.setName("da");
8681         da.alloc(7,2);
8682         compsCpp=compsCpp[:-1]
8683         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8684         da.setValues(data1,7,2)
8685         #
8686         p=[(0,3),(3,5),(5,7)]
8687         tmp=da.selectByTupleRanges(p);
8688         self.assertTrue(tmp.isEqual(da,1e-14));
8689         p=[(0,2),(3,4),(5,7)]
8690         tmp=da.selectByTupleRanges(p);
8691         expected1=[1.,11.,2.,12.,4.,14.,6.,16.,7.,17.]
8692         self.assertEqual(5,tmp.getNumberOfTuples());
8693         self.assertEqual(2,tmp.getNumberOfComponents());
8694         for i in xrange(10):
8695             self.assertAlmostEqual(expected1[i],tmp.getIJ(0,i),14);
8696             pass
8697         p=[(0,2),(0,2),(5,6)]
8698         tmp=da.selectByTupleRanges(p);
8699         expected2=[1.,11.,2.,12.,1.,11.,2.,12.,6.,16.]
8700         self.assertEqual(5,tmp.getNumberOfTuples());
8701         self.assertEqual(2,tmp.getNumberOfComponents());
8702         for i in xrange(10):
8703             self.assertAlmostEqual(expected2[i],tmp.getIJ(0,i),14);
8704             pass
8705         p=[(0,2),(-1,2),(5,6)]
8706         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8707         p=[(0,2),(0,2),(5,8)]
8708         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8709         #
8710         da2=DataArrayDouble.New();
8711         da2.setValues(data2,5,2);
8712         #
8713         dac=da.deepCpy();
8714         dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8715         expected3=[1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.]
8716         for i in xrange(14):
8717             self.assertAlmostEqual(expected3[i],dac.getIJ(0,i),14);
8718             pass
8719         #
8720         dac=da.deepCpy();
8721         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8722         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8723         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8724         dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8725         expected4=[1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.]
8726         for i in xrange(14):
8727             self.assertAlmostEqual(expected4[i],dac.getIJ(0,i),14);
8728             pass
8729         #
8730         ids=DataArrayInt.New();
8731         ids.alloc(3,1);
8732         dac=da.deepCpy();
8733         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8734         dac.setContigPartOfSelectedValues(2,da2,ids);
8735         expected5=[1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.]
8736         for i in xrange(14):
8737             self.assertAlmostEqual(expected5[i],dac.getIJ(0,i),14);
8738             pass
8739         #
8740         dac=da.deepCpy();
8741         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
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,1,da2,ids);
8745         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8746         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8747         #
8748         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8749         dac=da.deepCpy();
8750         dac.setContigPartOfSelectedValues(4,da2,ids);
8751         expected6=[1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.]
8752         for i in xrange(14):
8753             self.assertAlmostEqual(expected6[i],dac.getIJ(0,i),14);
8754             pass
8755         pass
8756
8757     def testDataArrayIntAdvSetting1(self):
8758         data1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
8759         data2=[8,38,9,39,0,30,11,41,12,42]
8760         compsCpp=["comp1","comp2"]
8761         da=DataArrayInt.New();
8762         da.setInfoAndChangeNbOfCompo(compsCpp);
8763         da.setName("da");
8764         da.alloc(7,2);
8765         compsCpp=compsCpp[:-1]
8766         self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8767         da.setValues(data1,7,2)
8768         #
8769         p=[(0,3),(3,5),(5,7)]
8770         tmp=da.selectByTupleRanges(p);
8771         self.assertTrue(tmp.isEqual(da));
8772         p=[(0,2),(3,4),(5,7)]
8773         tmp=da.selectByTupleRanges(p);
8774         expected1=[1,11,2,12,4,14,6,16,7,17]
8775         self.assertEqual(5,tmp.getNumberOfTuples());
8776         self.assertEqual(2,tmp.getNumberOfComponents());
8777         for i in xrange(10):
8778             self.assertEqual(expected1[i],tmp.getIJ(0,i));
8779             pass
8780         p=[(0,2),(0,2),(5,6)]
8781         tmp=da.selectByTupleRanges(p);
8782         expected2=[1,11,2,12,1,11,2,12,6,16]
8783         self.assertEqual(5,tmp.getNumberOfTuples());
8784         self.assertEqual(2,tmp.getNumberOfComponents());
8785         for i in xrange(10):
8786             self.assertEqual(expected2[i],tmp.getIJ(0,i));
8787             pass
8788         p=[(0,2),(-1,2),(5,6)]
8789         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8790         p=[(0,2),(0,2),(5,8)]
8791         self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8792         #
8793         da2=DataArrayInt.New();
8794         da2.setValues(data2,5,2);
8795         #
8796         dac=da.deepCpy();
8797         dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8798         expected3=[1,11,0,30,11,41,4,14,5,15,6,16,7,17]
8799         for i in xrange(14):
8800             self.assertEqual(expected3[i],dac.getIJ(0,i));
8801             pass
8802         #
8803         dac=da.deepCpy();
8804         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8805         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8806         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8807         dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8808         expected4=[1,11,2,12,3,13,9,39,0,30,11,41,12,42]
8809         for i in xrange(14):
8810             self.assertEqual(expected4[i],dac.getIJ(0,i));
8811             pass
8812         #
8813         ids=DataArrayInt.New();
8814         ids.alloc(3,1);
8815         dac=da.deepCpy();
8816         ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8817         dac.setContigPartOfSelectedValues(2,da2,ids);
8818         expected5=[1,11,2,12,0,30,8,38,12,42,6,16,7,17]
8819         for i in xrange(14):
8820             self.assertEqual(expected5[i],dac.getIJ(0,i));
8821             pass
8822         #
8823         dac=da.deepCpy();
8824         ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
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,1,da2,ids);
8828         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8829         self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8830         #
8831         ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8832         dac=da.deepCpy();
8833         dac.setContigPartOfSelectedValues(4,da2,ids);
8834         expected6=[1,11,2,12,3,13,4,14,0,30,0,30,9,39]
8835         for i in xrange(14):
8836             self.assertEqual(expected6[i],dac.getIJ(0,i));
8837             pass
8838         pass
8839
8840     def testBuildDescendingConnec2Of3DMesh1(self):
8841         mesh=MEDCouplingDataForTest.build3DSourceMesh_1();
8842         #
8843         mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8844         mesh2.checkCoherency();
8845         self.assertEqual(2,mesh2.getMeshDimension());
8846         self.assertEqual(30,mesh2.getNumberOfCells());
8847         self.assertEqual(31,revDescIndx.getNbOfElems()); self.assertEqual(31,revDescIndx.getNumberOfTuples());
8848         self.assertEqual(13,descIndx.getNbOfElems()); self.assertEqual(13,descIndx.getNumberOfTuples());
8849         self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
8850         self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
8851         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]
8852         self.assertEqual(expected1,desc.getValues());
8853         expected2=[0,4,8,12,16,20,24,28,32,36,40,44,48]
8854         self.assertEqual(expected2,descIndx.getValues());
8855         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]
8856         self.assertEqual(expected3,revDescIndx.getValues());
8857         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]
8858         self.assertEqual(expected4,revDesc.getValues());
8859         conn=mesh2.getNodalConnectivity();
8860         connIndex=mesh2.getNodalConnectivityIndex();
8861         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]
8862         self.assertEqual(expected5,connIndex.getValues());
8863         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]
8864         self.assertEqual(expected6,conn.getValues());
8865         pass
8866
8867     def testAre2DCellsNotCorrectlyOriented1(self):
8868         m1Coords=[1.,1.,-1.,-1.,-1.,-1.,1.,-1.]
8869         m1Conn=[0,3,1,2]
8870         m1=MEDCouplingUMesh.New();
8871         m1.setMeshDimension(2);
8872         m1.allocateCells(1);
8873         m1.insertNextCell(NORM_QUAD4,4,m1Conn[0:4])
8874         m1.finishInsertingCells();
8875         myCoords1=DataArrayDouble.New();
8876         myCoords1.setValues(m1Coords,4,2);
8877         m1.setCoords(myCoords1);
8878         #
8879         vec1=[0.,0.,1.]
8880         for i in xrange(18):
8881             vec2=[3.*cos(pi/9.*i),3.*sin(pi/9.*i)];
8882             m1Cpy=m1.deepCpy();
8883             m1Cpy.translate(vec2);
8884             self.assertRaises(InterpKernelException,m1Cpy.are2DCellsNotCorrectlyOriented,vec1,False);
8885             m1Cpy.changeSpaceDimension(3);
8886             res=m1Cpy.are2DCellsNotCorrectlyOriented(vec1,False)
8887             self.assertEqual([0],res.getValues());
8888             pass
8889         pass
8890
8891     def testDataArrayAbs1(self):
8892         d1=DataArrayDouble.New();
8893         val1=[2.,-3.,-5.,6.,-7.,-8.,9.,10.,-11.,-12.,-13.,-15.]
8894         expected1=[2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.]
8895         d1.setValues(val1,6,2);
8896         d2=d1.convertToIntArr();
8897         #
8898         d1.abs();
8899         for i in xrange(12):
8900             self.assertAlmostEqual(expected1[i],d1.getIJ(0,i),14);
8901             pass
8902         #
8903         expected2=[2,3,5,6,7,8,9,10,11,12,13,15]
8904         d2.abs();
8905         for i in xrange(12):
8906             self.assertEqual(expected2[i],d2.getIJ(0,i));
8907             pass
8908         #
8909         pass
8910
8911     # test on 1D
8912     def testGetValueOn3(self):
8913         v=[0.,1.,1.5,2.]
8914         v2=[0.7,1.25,0.,2.,1.5]
8915         disp=[5.,50.,500.,6.,60.,600.,7.,70.,700.,8.,80.,800.]
8916         m=MEDCouplingUMesh.New("myMesh",1)
8917         nbNodes=len(v)
8918         nbCells=nbNodes-1
8919         m.allocateCells(nbCells)
8920         coords=DataArrayDouble.New() ; coords.setValues(v,nbNodes,1)
8921         m.setCoords(coords)
8922         m.insertNextCell(NORM_SEG2,2,[0,1])
8923         m.insertNextCell(NORM_SEG2,2,[2,1])
8924         m.insertNextCell(NORM_SEG2,2,[2,3])
8925         m.finishInsertingCells()
8926         f=MEDCouplingFieldDouble.New(ON_NODES)
8927         f.setMesh(m)
8928         array=DataArrayDouble.New(); array.setValues(disp,m.getNumberOfNodes(),3)
8929         f.setArray(array)
8930         arr1=f.getValueOnMulti(v2)
8931         self.assertEqual(5,arr1.getNumberOfTuples());
8932         self.assertEqual(3,arr1.getNumberOfComponents());
8933         expected1=[5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.]
8934         for i in xrange(15):
8935             self.assertAlmostEqual(expected1[i],arr1.getIJ(0,i),14);
8936             pass
8937         pass
8938
8939     def testGetNodeIdsOfCell2(self):
8940         m1c=MEDCouplingCMesh.New();
8941         coordsX=DataArrayDouble.New();
8942         arrX=[ -1., 1., 2., 4., 4.5 ]
8943         coordsX.setValues(arrX,5,1);
8944         coordsY=DataArrayDouble.New();
8945         arrY=[ -2., 2., 4., 8.]
8946         coordsY.setValues(arrY,4,1);
8947         coordsZ=DataArrayDouble.New();
8948         arrZ=[ -2., 2., 4.]
8949         coordsZ.setValues(arrZ,3,1);
8950         # test in 1D
8951         m1c.setCoordsAt(0,coordsX);
8952         expected1=[[0,1],[1,2],[2,3],[3,4]]
8953         self.assertEqual(4,m1c.getNumberOfCells())
8954         for i in xrange(m1c.getNumberOfCells()):
8955             self.assertEqual(expected1[i],m1c.getNodeIdsOfCell(i))
8956             pass
8957         # test in 2D
8958         m1c.setCoordsAt(1,coordsY);
8959         self.assertEqual(12,m1c.getNumberOfCells())
8960         self.assertEqual(20,m1c.getNumberOfNodes())
8961         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]]
8962         for i in xrange(m1c.getNumberOfCells()):
8963             self.assertEqual(expected2[i],m1c.getNodeIdsOfCell(i))
8964             pass
8965         # test in 3D
8966         m1c.setCoordsAt(2,coordsZ);
8967         self.assertEqual(24,m1c.getNumberOfCells())
8968         self.assertEqual(60,m1c.getNumberOfNodes())
8969         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]]
8970         self.assertEqual(24,m1c.getNumberOfCells())
8971         for i in xrange(m1c.getNumberOfCells()):
8972             self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i))
8973             pass
8974         pass
8975     
8976     def testSwigDADOp4(self):
8977         da=DataArrayDouble.New(range(6,30),12,2)
8978         self.assertEqual(12,da.getNumberOfTuples());
8979         self.assertEqual(2,da.getNumberOfComponents());
8980         for i in xrange(24):
8981             self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8982             pass
8983         # operator transpose
8984         da.transpose()
8985         self.assertEqual(2,da.getNumberOfTuples());
8986         self.assertEqual(12,da.getNumberOfComponents());
8987         for i in xrange(24):
8988             self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8989             pass
8990         da.transpose()
8991         # operator __neg__
8992         da2=DataArrayDouble.New(12,1)
8993         da2.iota(0.)
8994         dabis=-da
8995         for i in xrange(24):
8996             self.assertAlmostEqual(dabis.getIJ(0,i),-float(i+6),13)
8997             pass
8998         # operator+=
8999         da+=da2
9000         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.]
9001         for i in xrange(24):
9002             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9003             pass
9004         da=-dabis
9005         da+=[100.,101.]
9006         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.]
9007         self.assertEqual(12,da.getNumberOfTuples());
9008         self.assertEqual(2,da.getNumberOfComponents());
9009         for i in xrange(24):
9010             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9011             pass
9012         for pos,elt in enumerate(dabis):
9013             da[pos]+=elt
9014             pass
9015         self.assertEqual(12,da.getNumberOfTuples());
9016         self.assertEqual(2,da.getNumberOfComponents());
9017         for elt in da:
9018             li=elt[:]
9019             self.assertAlmostEqual(li[0],100.,13) ; self.assertAlmostEqual(li[1],101.,13)
9020             pass
9021         # operator-=
9022         da=DataArrayDouble.New(range(6,30),12,2)
9023         da2=DataArrayDouble.New(range(12),12,1)
9024         dabis=-da
9025         da-=da2
9026         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.]
9027         for i in xrange(24):
9028             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9029             pass
9030         da=-dabis
9031         da-=[100.,101.]
9032         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.]
9033         self.assertEqual(12,da.getNumberOfTuples());
9034         self.assertEqual(2,da.getNumberOfComponents());
9035         for i in xrange(24):
9036             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9037             pass
9038         for pos,elt in enumerate(dabis):
9039             da[pos]-=elt
9040             pass
9041         self.assertEqual(12,da.getNumberOfTuples());
9042         self.assertEqual(2,da.getNumberOfComponents());
9043         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.]
9044         for i in xrange(24):
9045             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9046             pass
9047         # operator*=
9048         da=DataArrayDouble.New(range(6,30),12,2)
9049         da2=DataArrayDouble.New(range(12),12,1)
9050         dabis=-da
9051         da*=da2
9052         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.]
9053         for i in xrange(24):
9054             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9055             pass
9056         da=-dabis
9057         da*=[100.,101.]
9058         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.]
9059         self.assertEqual(12,da.getNumberOfTuples());
9060         self.assertEqual(2,da.getNumberOfComponents());
9061         for i in xrange(24):
9062             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9063             pass
9064         for pos,elt in enumerate(dabis):
9065             da[pos]*=elt
9066             pass
9067         self.assertEqual(12,da.getNumberOfTuples());
9068         self.assertEqual(2,da.getNumberOfComponents());
9069         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]
9070         for i in xrange(24):
9071             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9072             pass
9073         # operator/=
9074         da=DataArrayDouble.New(range(6,30),12,2)
9075         da2=DataArrayDouble.New(range(1,13),12,1)
9076         dabis=-da
9077         da/=da2
9078         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]
9079         for i in xrange(24):
9080             self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9081             pass
9082         da=-dabis
9083         da/=[100.,101.]
9084         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]
9085         self.assertEqual(12,da.getNumberOfTuples());
9086         self.assertEqual(2,da.getNumberOfComponents());
9087         for i in xrange(24):
9088             self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9089             pass
9090         for pos,elt in enumerate(dabis):
9091             da[pos]/=elt
9092             pass
9093         self.assertEqual(12,da.getNumberOfTuples());
9094         self.assertEqual(2,da.getNumberOfComponents());
9095         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]
9096         for i in xrange(24):
9097             self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9098             pass
9099         pass
9100
9101     def testSwigDAIOp4(self):
9102         da=DataArrayInt.New(range(6,30),12,2)
9103         self.assertEqual(12,da.getNumberOfTuples());
9104         self.assertEqual(2,da.getNumberOfComponents());
9105         for i in xrange(24):
9106             self.assertEqual(da.getIJ(0,i),i+6)
9107             pass
9108         # operator transpose
9109         da.transpose()
9110         self.assertEqual(2,da.getNumberOfTuples());
9111         self.assertEqual(12,da.getNumberOfComponents());
9112         for i in xrange(24):
9113             self.assertEqual(da.getIJ(0,i),i+6)
9114             pass
9115         da.transpose()
9116         # operator __neg__
9117         da2=DataArrayInt.New(12,1)
9118         da2.iota(0)
9119         dabis=-da
9120         for i in xrange(24):
9121             self.assertEqual(dabis.getIJ(0,i),-(i+6))
9122             pass
9123         # operator+=
9124         da+=da2
9125         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]
9126         for i in xrange(24):
9127             self.assertEqual(da.getIJ(0,i),expected1[i])
9128             pass
9129         da=-dabis
9130         da+=[100,101]
9131         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]
9132         self.assertEqual(12,da.getNumberOfTuples());
9133         self.assertEqual(2,da.getNumberOfComponents());
9134         for i in xrange(24):
9135             self.assertEqual(da.getIJ(0,i),expected2[i])
9136             pass
9137         for pos,elt in enumerate(dabis):
9138             da[pos]+=elt
9139             pass
9140         self.assertEqual(12,da.getNumberOfTuples());
9141         self.assertEqual(2,da.getNumberOfComponents());
9142         for elt in da:
9143             li=elt[:]
9144             self.assertEqual(li[0],100) ; self.assertEqual(li[1],101)
9145             pass
9146         # operator-=
9147         da=DataArrayInt.New(range(6,30),12,2)
9148         da2=DataArrayInt.New(range(12),12,1)
9149         dabis=-da
9150         da-=da2
9151         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]
9152         for i in xrange(24):
9153             self.assertEqual(da.getIJ(0,i),expected1[i])
9154             pass
9155         da=-dabis
9156         da-=[100,101]
9157         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]
9158         self.assertEqual(12,da.getNumberOfTuples());
9159         self.assertEqual(2,da.getNumberOfComponents());
9160         for i in xrange(24):
9161             self.assertEqual(da.getIJ(0,i),expected2[i])
9162             pass
9163         for pos,elt in enumerate(dabis):
9164             da[pos]-=elt
9165             pass
9166         self.assertEqual(12,da.getNumberOfTuples());
9167         self.assertEqual(2,da.getNumberOfComponents());
9168         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]
9169         for i in xrange(24):
9170             self.assertEqual(da.getIJ(0,i),expected3[i])
9171             pass
9172         # operator*=
9173         da=DataArrayInt.New(range(6,30),12,2)
9174         da2=DataArrayInt.New(range(12),12,1)
9175         dabis=-da
9176         da*=da2
9177         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]
9178         for i in xrange(24):
9179             self.assertEqual(da.getIJ(0,i),expected1[i])
9180             pass
9181         da=-dabis
9182         da*=[100,101]
9183         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]
9184         self.assertEqual(12,da.getNumberOfTuples());
9185         self.assertEqual(2,da.getNumberOfComponents());
9186         for i in xrange(24):
9187             self.assertEqual(da.getIJ(0,i),expected2[i])
9188             pass
9189         for pos,elt in enumerate(dabis):
9190             da[pos]*=elt
9191             pass
9192         self.assertEqual(12,da.getNumberOfTuples());
9193         self.assertEqual(2,da.getNumberOfComponents());
9194         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]
9195         for i in xrange(24):
9196             self.assertEqual(da.getIJ(0,i),expected3[i])
9197             pass
9198         # operator/=
9199         da=DataArrayInt.New(range(6,30),12,2)
9200         da2=DataArrayInt.New(range(1,13),12,1)
9201         dabis=-da
9202         da/=da2
9203         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]
9204         for i in xrange(24):
9205             self.assertEqual(da.getIJ(0,i),expected1[i])
9206             pass
9207         da=-dabis
9208         da/=DataArrayInt.New([2,3],1,2)
9209         self.assertEqual(12,da.getNumberOfTuples());
9210         self.assertEqual(2,da.getNumberOfComponents());
9211         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]
9212         for i in xrange(24):
9213             self.assertEqual(da.getIJ(0,i),expected2[i])
9214             pass
9215         pass
9216
9217     def testSwigDADOp5(self):
9218         da=DataArrayDouble.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9219         da.rearrange(3)
9220         da2=DataArrayDouble.New([5.,8.,10.,12])
9221         self.assertEqual(4,da2.getNumberOfTuples());
9222         self.assertEqual(1,da2.getNumberOfComponents());
9223         da3=da+da2
9224         self.assertEqual(4,da3.getNumberOfTuples());
9225         self.assertEqual(3,da3.getNumberOfComponents());
9226         expected1=[10.,11.,12.,16.,17.,14.,17.,8.,13.,21.,20.,22.]
9227         for i in xrange(12):
9228             self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9229             pass
9230         da3=da2+da
9231         self.assertEqual(4,da3.getNumberOfTuples());
9232         self.assertEqual(3,da3.getNumberOfComponents());
9233         for i in xrange(12):
9234             self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9235             pass
9236         # Test new API of classmethod DataArrayDouble.New
9237         vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9238         da=DataArrayDouble.New(vals)
9239         self.assertEqual(12,da.getNumberOfTuples());
9240         self.assertEqual(1,da.getNumberOfComponents());
9241         for i in xrange(12):
9242             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9243             pass
9244         da=DataArrayDouble.New(vals,12)
9245         self.assertEqual(12,da.getNumberOfTuples());
9246         self.assertEqual(1,da.getNumberOfComponents());
9247         for i in xrange(12):
9248             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9249             pass
9250         da=DataArrayDouble.New(vals,1,12)
9251         self.assertEqual(1,da.getNumberOfTuples());
9252         self.assertEqual(12,da.getNumberOfComponents());
9253         for i in xrange(12):
9254             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9255             pass
9256         da=DataArrayDouble.New(vals,6,2)
9257         self.assertEqual(6,da.getNumberOfTuples());
9258         self.assertEqual(2,da.getNumberOfComponents());
9259         for i in xrange(12):
9260             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9261             pass
9262         da=DataArrayDouble.New(vals,4,3)
9263         self.assertEqual(4,da.getNumberOfTuples());
9264         self.assertEqual(3,da.getNumberOfComponents());
9265         for i in xrange(12):
9266             self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9267             pass
9268         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9269         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9270         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9271         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9272         pass
9273
9274     def testSwigDADOp6(self):
9275         da=DataArrayInt.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9276         da.rearrange(3)
9277         da2=DataArrayInt.New([5,8,10,12])
9278         self.assertEqual(4,da2.getNumberOfTuples());
9279         self.assertEqual(1,da2.getNumberOfComponents());
9280         da3=da+da2
9281         self.assertEqual(4,da3.getNumberOfTuples());
9282         self.assertEqual(3,da3.getNumberOfComponents());
9283         expected1=[10,11,12,16,17,14,17,8,13,21,20,22]
9284         for i in xrange(12):
9285             self.assertEqual(da3.getIJ(0,i),expected1[i])
9286             pass
9287         da3=da2+da
9288         self.assertEqual(4,da3.getNumberOfTuples());
9289         self.assertEqual(3,da3.getNumberOfComponents());
9290         for i in xrange(12):
9291             self.assertEqual(da3.getIJ(0,i),expected1[i])
9292             pass
9293         da3=da+DataArrayInt.New(da2.getValues())
9294         # Test new API of classmethod DataArrayInt.New
9295         vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9296         da=DataArrayDouble.New(vals)
9297         self.assertEqual(12,da.getNumberOfTuples());
9298         self.assertEqual(1,da.getNumberOfComponents());
9299         for i in xrange(12):
9300             self.assertEqual(da.getIJ(0,i),vals[i])
9301             pass
9302         da=DataArrayDouble.New(vals,12)
9303         self.assertEqual(12,da.getNumberOfTuples());
9304         self.assertEqual(1,da.getNumberOfComponents());
9305         for i in xrange(12):
9306             self.assertEqual(da.getIJ(0,i),vals[i])
9307             pass
9308         da=DataArrayDouble.New(vals,1,12)
9309         self.assertEqual(1,da.getNumberOfTuples());
9310         self.assertEqual(12,da.getNumberOfComponents());
9311         for i in xrange(12):
9312             self.assertEqual(da.getIJ(0,i),vals[i])
9313             pass
9314         da=DataArrayDouble.New(vals,6,2)
9315         self.assertEqual(6,da.getNumberOfTuples());
9316         self.assertEqual(2,da.getNumberOfComponents());
9317         for i in xrange(12):
9318             self.assertEqual(da.getIJ(0,i),vals[i])
9319             pass
9320         da=DataArrayDouble.New(vals,4,3)
9321         self.assertEqual(4,da.getNumberOfTuples());
9322         self.assertEqual(3,da.getNumberOfComponents());
9323         for i in xrange(12):
9324             self.assertEqual(da.getIJ(0,i),vals[i])
9325             pass
9326         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9327         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9328         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9329         self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9330         pass
9331
9332     def testSwigDADOp9(self):
9333         l1=[(1.,2.,3),(4.,5.,6.),(7.,8.,9.),[10.,11.,12.]]
9334         da1=DataArrayDouble(l1,4,3)
9335         self.assertEqual(4,da1.getNumberOfTuples());
9336         self.assertEqual(3,da1.getNumberOfComponents());
9337         da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9338         self.assertTrue(da2.isEqual(da1,1e-12))
9339         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9340         da3=DataArrayDouble(l1,4)
9341         self.assertTrue(da3.isEqual(da1,1e-12))
9342         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9343         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9344         l1=[(1.,2.,3),(4.,(5.),((6.))),(7.,8.,9.),[10.,11.,12.]]
9345         da1=DataArrayDouble(l1,4,3)
9346         self.assertEqual(4,da1.getNumberOfTuples());
9347         self.assertEqual(3,da1.getNumberOfComponents());
9348         da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9349         self.assertTrue(da2.isEqual(da1,1e-12))
9350         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9351         da3=DataArrayDouble(l1,4)
9352         self.assertTrue(da3.isEqual(da1,1e-12))
9353         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9354         self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9355         #
9356         l1=[(1,2,3),(4,5,6),(7,8,9),[10,11,12]]
9357         da1=DataArrayInt(l1,4,3)
9358         self.assertEqual(4,da1.getNumberOfTuples());
9359         self.assertEqual(3,da1.getNumberOfComponents());
9360         da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9361         self.assertTrue(da2.isEqual(da1))
9362         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9363         da3=DataArrayInt(l1,4)
9364         self.assertTrue(da3.isEqual(da1))
9365         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9366         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9367         l1=[(1,[2],3),(4,[(5)],6),((([7])),8,9),[10,11,12]]
9368         da1=DataArrayInt(l1,4,3)
9369         self.assertEqual(4,da1.getNumberOfTuples());
9370         self.assertEqual(3,da1.getNumberOfComponents());
9371         da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9372         self.assertTrue(da2.isEqual(da1))
9373         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9374         da3=DataArrayInt(l1,4)
9375         self.assertTrue(da3.isEqual(da1))
9376         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9377         self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9378         pass
9379
9380     def testRenumberNodesInConn1(self):
9381         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. ]
9382         mesh2DConn=[1,4,2, 4,5,2, 0,3,4,1, 6,7,4,3, 7,8,5,4]
9383         mesh2D=MEDCouplingUMesh.New("mesh",2);
9384         mesh2D.allocateCells(5);
9385         mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[0:3])
9386         mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[3:6])
9387         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[6:10])
9388         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[10:14])
9389         mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[14:18])
9390         mesh2D.finishInsertingCells();
9391         myCoords=DataArrayDouble.New(mesh2DCoords,9,3);
9392         mesh2D.setCoords(myCoords);
9393         mesh2D.checkCoherency();
9394         #
9395         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. ]
9396         mesh3DConn=[0,1,2,3,4,5,6,7]
9397         mesh3D=MEDCouplingUMesh.New("mesh",3);
9398         mesh3D.allocateCells(1);
9399         mesh3D.insertNextCell(NORM_HEXA8,8,mesh3DConn[:])
9400         mesh3D.finishInsertingCells();
9401         myCoords3D=DataArrayDouble.New(mesh3DCoords,8,3);
9402         mesh3D.setCoords(myCoords3D);
9403         mesh3D.checkCoherency();
9404         #
9405         mesh3D_2=mesh3D.deepCpy();
9406         mesh2D_2=mesh2D.deepCpy();
9407         mesh3D_4=mesh3D.deepCpy();
9408         mesh2D_4=mesh2D.deepCpy();
9409         oldNbOf3DNodes=mesh3D.getNumberOfNodes();
9410         renumNodes=DataArrayInt.New();
9411         renumNodes.alloc(mesh2D.getNumberOfNodes(),1);
9412         renumNodes.iota(oldNbOf3DNodes);
9413         coo=DataArrayDouble.Aggregate(mesh3D.getCoords(),mesh2D.getCoords());
9414         mesh3D.setCoords(coo);
9415         mesh2D.setCoords(coo);
9416         mesh2DCpy=mesh2D.deepCpy()
9417         mesh2D_3=mesh2D.deepCpy();
9418         mesh2D_3.shiftNodeNumbersInConn(oldNbOf3DNodes);
9419         mesh2D.renumberNodesInConn(renumNodes);
9420         mesh2DCpy.renumberNodesInConn(renumNodes.getValues());
9421         self.assertTrue(mesh2D.isEqual(mesh2DCpy,1e-12))
9422         self.assertTrue(mesh2D.isEqual(mesh2D_3,1e-12))
9423         #
9424         da1,da2=mesh3D.checkGeoEquivalWith(mesh3D_2,10,1e-12);
9425         self.assertTrue(da1==None);
9426         self.assertEqual(8,da2.getNumberOfTuples());
9427         self.assertEqual(1,da2.getNumberOfComponents());
9428         expected1=[8,11,12,9,4,5,6,7]
9429         for i in xrange(8):
9430             self.assertEqual(expected1[i],da2.getIJ(i,0));
9431             pass
9432         #
9433         da1,da2=mesh2D.checkGeoEquivalWith(mesh2D_2,10,1e-12);
9434         self.assertTrue(da1==None);
9435         self.assertEqual(9,da2.getNumberOfTuples());
9436         self.assertEqual(1,da2.getNumberOfComponents());
9437         for i in xrange(9):
9438             self.assertEqual(8+i,da2.getIJ(i,0));
9439             pass
9440         #
9441         mesh2D_5=mesh2D_4.deepCpy();
9442         mesh2D_5.translate([1.,0.,0.]);
9443         meshes=[mesh3D_4,mesh2D_4,mesh2D_5];
9444         MEDCouplingUMesh.PutUMeshesOnSameAggregatedCoords(meshes);
9445         self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9446         self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9447         mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9448         self.assertEqual(26,mesh3D_4.getNumberOfNodes());
9449         self.assertEqual(3,mesh3D_4.getSpaceDimension());
9450         self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9451         self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9452         self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9453         expected2=[18,0,1,2,3,4,5,6,7]
9454         expected3=[3,9,12,10, 3,12,13,10, 4,8,11,12,9, 4,14,15,12,11, 4,15,16,13,12]
9455         expected4=[3,18,21,19, 3,21,22,19, 4,17,20,21,18, 4,23,24,21,20, 4,24,25,22,21]
9456         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]
9457         self.assertEqual(expected2,mesh3D_4.getNodalConnectivity().getValues());
9458         self.assertEqual(expected3,mesh2D_4.getNodalConnectivity().getValues());
9459         self.assertEqual(expected4,mesh2D_5.getNodalConnectivity().getValues());
9460         for i in xrange(78):
9461             self.assertAlmostEqual(expected5[i],mesh3D_4.getCoords().getIJ(0,i),12);
9462             pass
9463         #
9464         MEDCouplingUMesh.MergeNodesOnUMeshesSharingSameCoords(meshes,1e-12);
9465         mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9466         self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9467         self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9468         self.assertEqual(19,mesh3D_4.getNumberOfNodes());
9469         self.assertEqual(3,mesh3D_4.getSpaceDimension());
9470         self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9471         self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9472         self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9473         expected6=[18,0,1,2,3,4,5,6,7]
9474         expected7=[3,3,2,8, 3,2,9,8, 4,0,1,2,3, 4,10,11,2,1, 4,11,12,9,2]
9475         expected8=[3,13,15,14, 3,15,16,14, 4,8,9,15,13, 4,12,17,15,9, 4,17,18,16,15]
9476         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.,
9477                     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.,
9478                     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.]
9479         self.assertEqual(expected6,mesh3D_4.getNodalConnectivity().getValues());
9480         self.assertEqual(expected7,mesh2D_4.getNodalConnectivity().getValues());
9481         self.assertEqual(expected8,mesh2D_5.getNodalConnectivity().getValues());
9482         for i in xrange(57):
9483             self.assertAlmostEqual(expected9[i],mesh3D_4.getCoords().getIJ(0,i),12);
9484             pass
9485         #
9486         pass
9487     
9488     def testComputeNeighborsOfCells1(self):
9489         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9490         d1,d2=m.computeNeighborsOfCells();
9491         self.assertEqual(6,d2.getNumberOfTuples());
9492         self.assertEqual(10,d1.getNumberOfTuples());
9493         expected1=[0,2,4,6,8,10]
9494         expected2=[3,1,0,2,4,1,4,0,2,3]
9495         self.assertEqual(expected1,d2.getValues());
9496         self.assertEqual(expected2,d1.getValues());
9497         pass
9498
9499     def testCheckButterflyCellsBug1(self):
9500         mesh2DCoords=[323.85,120.983748908684,317.5,131.982271536747,336.55,120.983748908686,330.2,131.982271536751,323.85,142.98079416481]
9501         mesh2DConn=[4,1,0,2,3]
9502         mesh2D=MEDCouplingUMesh.New("mesh",2);
9503         mesh2D.allocateCells(1);
9504         mesh2D.insertNextCell(NORM_POLYGON,5,mesh2DConn[0:5])
9505         mesh2D.finishInsertingCells();
9506         myCoords=DataArrayDouble.New(mesh2DCoords,5,2);
9507         mesh2D.setCoords(myCoords);
9508         mesh2D.checkCoherency();
9509         #
9510         v=mesh2D.checkButterflyCells();
9511         self.assertTrue(v.empty());
9512         pass
9513
9514     def testDataArrayIntRange1(self):
9515         d=DataArrayInt.Range(2,17,7);
9516         expected1=[2,9,16]
9517         self.assertEqual(3,d.getNumberOfTuples());
9518         self.assertEqual(1,d.getNumberOfComponents());
9519         self.assertEqual(expected1,d.getValues());
9520         #
9521         d=DataArrayInt.Range(2,23,7);
9522         self.assertEqual(3,d.getNumberOfTuples());
9523         self.assertEqual(1,d.getNumberOfComponents());
9524         self.assertEqual(expected1,d.getValues());
9525         #
9526         d=DataArrayInt.Range(2,24,7);
9527         expected2=[2,9,16,23]
9528         self.assertEqual(4,d.getNumberOfTuples());
9529         self.assertEqual(1,d.getNumberOfComponents());
9530         self.assertEqual(expected2,d.getValues());
9531         #
9532         d=DataArrayInt.Range(24,2,-7);
9533         expected3=[24,17,10,3]
9534         self.assertEqual(4,d.getNumberOfTuples());
9535         self.assertEqual(1,d.getNumberOfComponents());
9536         self.assertEqual(expected3,d.getValues());
9537         #
9538         d=DataArrayInt.Range(23,2,-7);
9539         expected4=[23,16,9]
9540         self.assertEqual(3,d.getNumberOfTuples());
9541         self.assertEqual(1,d.getNumberOfComponents());
9542         self.assertEqual(expected4,d.getValues());
9543         #
9544         d=DataArrayInt.Range(23,22,-7);
9545         self.assertEqual(1,d.getNumberOfTuples());
9546         self.assertEqual(1,d.getNumberOfComponents());
9547         self.assertEqual(23,d.getIJ(0,0));
9548         #
9549         d=DataArrayInt.Range(22,23,7);
9550         self.assertEqual(1,d.getNumberOfTuples());
9551         self.assertEqual(1,d.getNumberOfComponents());
9552         self.assertEqual(22,d.getIJ(0,0));
9553         #
9554         d=DataArrayInt.Range(22,22,7);
9555         self.assertEqual(0,d.getNumberOfTuples());
9556         self.assertEqual(1,d.getNumberOfComponents());
9557         #
9558         d=DataArrayInt.Range(22,22,-7);
9559         self.assertEqual(0,d.getNumberOfTuples());
9560         self.assertEqual(1,d.getNumberOfComponents());
9561         #
9562         self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,-7);
9563         self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,7);
9564         self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,0);
9565         self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,0);
9566         pass
9567
9568     def testSwigUMeshGetItem1(self):
9569         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9570         subMesh=m.buildPartOfMySelf([1,3],True);
9571         self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
9572         m1=m[[1,3]]
9573         self.assertTrue(isinstance(m1,MEDCouplingUMesh))
9574         m2=m[(1,3)]
9575         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9576         m3=m[1::2]
9577         self.assertTrue(isinstance(m3,MEDCouplingUMesh))
9578         m4=m[DataArrayInt.New([1,3])]
9579         m5_1=m[1]
9580         self.assertTrue(isinstance(m5_1,MEDCouplingUMesh))
9581         m5_2=m[3]
9582         self.assertTrue(isinstance(m5_2,MEDCouplingUMesh))
9583         m5=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m5_1,m5_2]);
9584         m5.setName(subMesh.getName())
9585         self.assertTrue(isinstance(m4,MEDCouplingUMesh))
9586         self.assertTrue(subMesh.isEqual(m1,1e-12))
9587         self.assertTrue(subMesh.isEqual(m2,1e-12))
9588         self.assertTrue(subMesh.isEqual(m3,1e-12))
9589         self.assertTrue(subMesh.isEqual(m4,1e-12))
9590         self.assertTrue(subMesh.isEqual(m5,1e-12))
9591         self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[1,5],True);
9592         pass
9593     
9594     def testSwigGetItem3(self):
9595         da=DataArrayInt.New([4,5,6])
9596         self.assertEqual(5,da[1])
9597         self.assertEqual(6,da[-1])
9598         self.assertRaises(InterpKernelException,da.__getitem__,3)
9599         da=DataArrayInt.New([4,5,6,7,8,9],2,3)
9600         self.assertEqual(9,da[1,2])
9601         da=DataArrayDouble.New([4.1,5.2,6.3])
9602         self.assertAlmostEqual(5.2,da[1],12)
9603         self.assertAlmostEqual(6.3,da[-1],12)
9604         self.assertRaises(InterpKernelException,da.__getitem__,3)
9605         da=DataArrayDouble.New([4.12,5.12,6.12,7.12,8.12,9.12],2,3)
9606         self.assertAlmostEqual(9.12,da[1,2],12)
9607         pass
9608
9609     def testSwigDADISub1(self):
9610         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
9611         bary=mesh3D.getBarycenterAndOwner()
9612         bary=bary[:,:2]
9613         pts=bary.getDifferentValues(1e-12)
9614         expected=[[0,6,12],[1,7,13],[2,8,14],[3,9,15],[4,10,16],[5,11,17]]
9615         for pos,pt in enumerate(pts):
9616             bary2=bary[:,:2]
9617             bary2[:]-=pt
9618             norm=bary2.magnitude()
9619             self.assertEqual(expected[pos],norm.getIdsInRange(-1.,1e-5).getValues())
9620             pass
9621         expected2=[[3.,54.],[-141.,180.],[21.,54.],[39.,72.],[-15.,90.],[21.,90.]]
9622         for pos,pt in enumerate(pts):
9623             bary2=bary[:,:2]
9624             bary2[:]+=pt
9625             self.assertAlmostEqual(expected2[pos][0],bary2.accumulate()[0],12);
9626             self.assertAlmostEqual(expected2[pos][1],bary2.accumulate()[1],12);
9627             pass
9628         expected3=[[-3.,22.5],[45.,337.5],[-9., 22.5],[-15.,67.5],[3.,112.5],[-9.,112.5]]
9629         for pos,pt in enumerate(pts):
9630             bary2=bary[:,:2]
9631             bary2[:]*=pt
9632             self.assertAlmostEqual(expected3[pos][0],bary2.accumulate()[0],12);
9633             self.assertAlmostEqual(expected3[pos][1],bary2.accumulate()[1],12);
9634             pass
9635         expected4=[[-12.,90.],[0.8,6.],[-4,90.],[-2.4,30.],[12.,18],[-4,18.]]
9636         for pos,pt in enumerate(pts):
9637             bary2=bary[:,:2]
9638             bary2[:]/=pt
9639             self.assertAlmostEqual(expected4[pos][0],bary2.accumulate()[0],12);
9640             self.assertAlmostEqual(expected4[pos][1],bary2.accumulate()[1],12);
9641             pass
9642         #
9643         d=DataArrayInt.New([1,2,0,1,0,2],3,2)
9644         e=DataArrayInt.New([1,11,101,2,12,102,3,13,103,4,14,104],4,3)
9645         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]]
9646         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]]
9647         for pos,tup in enumerate(d):
9648             f=e[:]
9649             self.assertTrue(isinstance(f,DataArrayInt))
9650             f[tup]=77
9651             self.assertEqual(expected5[pos],f.getValues())
9652             self.assertEqual(6*[77],f[tup].getValues())
9653             f=e[:]
9654             f[:,tup]=77
9655             self.assertEqual(expected6[pos],f.getValues())
9656             self.assertEqual(8*[77],f[:,tup].getValues())
9657             pass
9658         #
9659         e=e.convertToDblArr()
9660         for pos,tup in enumerate(d):
9661             f=e[:]
9662             self.assertTrue(isinstance(f,DataArrayDouble))
9663             f[tup]=77.
9664             self.assertEqual(expected5[pos],f.convertToIntArr().getValues())
9665             self.assertEqual(6*[77],f[tup].convertToIntArr().getValues())
9666             f=e[:]
9667             f[:,tup]=77.
9668             self.assertEqual(expected6[pos],f.convertToIntArr().getValues())
9669             self.assertEqual(8*[77],f[:,tup].convertToIntArr().getValues())
9670             pass
9671         pass
9672
9673     def testDataArrayDoubleGetMinMaxPerComponent1(self):
9674         values1=[1.,2.,3.,-0.9,2.1,3.,1.3,1.7,3.,1.,1.8,3.]
9675         d1=DataArrayDouble.New();
9676         self.assertRaises(InterpKernelException,d1.getMinMaxPerComponent)
9677         d1=DataArrayDouble.New(values1,4,3);
9678         res=d1.getMinMaxPerComponent();
9679         self.assertTrue(isinstance(res,list))
9680         self.assertEqual(3,len(res))
9681         for i in xrange(3):
9682             self.assertTrue(isinstance(res[i],tuple))
9683             self.assertEqual(2,len(res[i]))
9684             pass
9685         expected1=[-0.9,1.3,1.7,2.1,3.,3.]
9686         for i in xrange(6):
9687             self.assertAlmostEqual(expected1[i],res[i/2][i%2],14)
9688             pass
9689         #
9690         d1.rearrange(2);
9691         res=d1.getMinMaxPerComponent();
9692         self.assertTrue(isinstance(res,list))
9693         self.assertEqual(2,len(res))
9694         for i in xrange(2):
9695             self.assertTrue(isinstance(res[i],tuple))
9696             self.assertEqual(2,len(res[i]))
9697             pass
9698         expected2=[1.,3.,-0.9,3.]
9699         for i in xrange(4):
9700             self.assertAlmostEqual(expected2[i],res[i/2][i%2],14)
9701             pass
9702         #
9703         d1.rearrange(1);
9704         res=d1.getMinMaxPerComponent();
9705         self.assertTrue(isinstance(res,list))
9706         self.assertEqual(1,len(res))
9707         for i in xrange(1):
9708             self.assertTrue(isinstance(res[i],tuple))
9709             self.assertEqual(2,len(res[i]))
9710             pass
9711         expected3=[-0.9,3.]
9712         for i in xrange(2):
9713             self.assertAlmostEqual(expected3[i],res[i/2][i%2],14)
9714             pass
9715         pass
9716
9717     def testDataArrayIntGetHashCode1(self):
9718         d1=DataArrayInt.New(range(3545))
9719         d2=DataArrayInt.New(range(3545))
9720         self.assertEqual(d2.getHashCode(),d1.getHashCode())
9721         self.assertEqual(232341068,d1.getHashCode())
9722         d1[886]=6
9723         self.assertEqual(232340188,d1.getHashCode())
9724         pass
9725
9726     def testZipConnectivityPol1(self):
9727         m1=MEDCouplingDataForTest.build2DTargetMesh_1();
9728         cells1=[2,3,4]
9729         m2_1=m1.buildPartOfMySelf(cells1,True);
9730         m2=m2_1
9731         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9732         # no permutation policy 0
9733         isOk,arr=m1.areCellsIncludedIn(m2,0)
9734         self.assertTrue(isOk);
9735         self.assertEqual(3,arr.getNumberOfTuples());
9736         self.assertEqual(1,arr.getNumberOfComponents());
9737         self.assertEqual(cells1,arr.getValues())
9738         # no permutation policy 1
9739         isOk,arr=m1.areCellsIncludedIn(m2,1)
9740         self.assertTrue(isOk);
9741         self.assertEqual(3,arr.getNumberOfTuples());
9742         self.assertEqual(1,arr.getNumberOfComponents());
9743         self.assertEqual(cells1,arr.getValues())
9744         # no permutation policy 2
9745         isOk,arr=m1.areCellsIncludedIn(m2,2)
9746         self.assertTrue(isOk);
9747         self.assertEqual(3,arr.getNumberOfTuples());
9748         self.assertEqual(1,arr.getNumberOfComponents());
9749         self.assertEqual(cells1,arr.getValues())
9750         # some modification into m2
9751         modif1=[2,4,5]
9752         m2.getNodalConnectivity()[1:4]=modif1
9753         #policy 0 fails because cell0 in m2 has same orientation be not same connectivity
9754         expected1=[5,3,4]
9755         isOk,arr=m1.areCellsIncludedIn(m2,0)
9756         self.assertTrue(not isOk);
9757         self.assertEqual(3,arr.getNumberOfTuples());
9758         self.assertEqual(1,arr.getNumberOfComponents());
9759         self.assertEqual(expected1,arr.getValues())
9760         #policy 1 succeeds because cell0 in m2 has not exactly the same conn
9761         isOk,arr=m1.areCellsIncludedIn(m2,1)
9762         self.assertTrue(isOk);
9763         self.assertEqual(3,arr.getNumberOfTuples());
9764         self.assertEqual(1,arr.getNumberOfComponents());
9765         self.assertEqual(cells1,arr.getValues())
9766         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9767         isOk,arr=m1.areCellsIncludedIn(m2,2)
9768         self.assertTrue(isOk);
9769         self.assertEqual(3,arr.getNumberOfTuples());
9770         self.assertEqual(1,arr.getNumberOfComponents());
9771         self.assertEqual(cells1,arr.getValues())
9772         #some new modification into m2
9773         modif2=[2,5,4]
9774         m2.getNodalConnectivity()[1:4]=modif2
9775         #policy 0 fails because cell0 in m2 has not exactly the same conn
9776         isOk,arr=m1.areCellsIncludedIn(m2,0)
9777         self.assertTrue(not isOk);
9778         self.assertEqual(3,arr.getNumberOfTuples());
9779         self.assertEqual(1,arr.getNumberOfComponents());
9780         self.assertEqual(expected1,arr.getValues())
9781         #policy 1 fails too because cell0 in m2 has not same orientation
9782         isOk,arr=m1.areCellsIncludedIn(m2,1)
9783         self.assertTrue(not isOk);
9784         self.assertEqual(3,arr.getNumberOfTuples());
9785         self.assertEqual(1,arr.getNumberOfComponents());
9786         self.assertEqual(expected1,arr.getValues())
9787         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9788         isOk,arr=m1.areCellsIncludedIn(m2,2)
9789         self.assertTrue(isOk);
9790         self.assertEqual(3,arr.getNumberOfTuples());
9791         self.assertEqual(1,arr.getNumberOfComponents());
9792         self.assertEqual(cells1,arr.getValues())
9793         # Now 1D
9794         cells2=[3,2]
9795         m1=MEDCouplingDataForTest.build1DSourceMesh_2();
9796         m2_1=m1.buildPartOfMySelf(cells2,True);
9797         m2=m2_1
9798         self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9799         # no permutation policy 0
9800         isOk,arr=m1.areCellsIncludedIn(m2,0)
9801         self.assertTrue(isOk);
9802         self.assertEqual(2,arr.getNumberOfTuples());
9803         self.assertEqual(1,arr.getNumberOfComponents());
9804         self.assertEqual(cells2,arr.getValues())
9805         # no permutation policy 1
9806         isOk,arr=m1.areCellsIncludedIn(m2,1)
9807         self.assertTrue(isOk);
9808         self.assertEqual(2,arr.getNumberOfTuples());
9809         self.assertEqual(1,arr.getNumberOfComponents());
9810         self.assertEqual(cells2,arr.getValues())
9811         # no permutation policy 2
9812         isOk,arr=m1.areCellsIncludedIn(m2,2)
9813         self.assertTrue(isOk);
9814         self.assertEqual(2,arr.getNumberOfTuples());
9815         self.assertEqual(1,arr.getNumberOfComponents());
9816         self.assertEqual(cells2,arr.getValues())
9817         # some modification into m2
9818         modif3=[4,3]
9819         m2.getNodalConnectivity()[1:3]=modif3
9820         #policy 0 fails because cell0 in m2 has not exactly the same conn
9821         expected2=[4,2]
9822         isOk,arr=m1.areCellsIncludedIn(m2,0)
9823         self.assertTrue(not isOk);
9824         self.assertEqual(2,arr.getNumberOfTuples());
9825         self.assertEqual(1,arr.getNumberOfComponents());
9826         self.assertEqual(expected2,arr.getValues())
9827         #policy 1 fails too because cell0 in m2 has not same orientation
9828         isOk,arr=m1.areCellsIncludedIn(m2,1)
9829         self.assertTrue(not isOk);
9830         self.assertEqual(2,arr.getNumberOfTuples());
9831         self.assertEqual(1,arr.getNumberOfComponents());
9832         self.assertEqual(expected2,arr.getValues())
9833         #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9834         isOk,arr=m1.areCellsIncludedIn(m2,2)
9835         self.assertTrue(isOk);
9836         self.assertEqual(2,arr.getNumberOfTuples());
9837         self.assertEqual(1,arr.getNumberOfComponents());
9838         self.assertEqual(cells2,arr.getValues())
9839         pass
9840
9841     def toSeeIfDaIIopsAreOK(self,d):
9842         d+=5
9843         d*=6
9844         d/=3
9845         d-=2
9846         d%=7
9847         pass
9848         
9849     def testSwigDAIOp5(self):
9850         d=DataArrayInt.New([4,5,6,10,3,-1],2,3)
9851         self.toSeeIfDaIIopsAreOK(d)
9852         dExp=DataArrayInt.New([2,4,6,0,0,6],2,3)
9853         self.assertTrue(d.isEqual(dExp));
9854         pass
9855     
9856     def toSeeIfDaDIopsAreOK(self,d):
9857         d+=5
9858         d*=6
9859         d/=3
9860         d-=2
9861         pass
9862
9863     def testSwigDADOp7(self):
9864         d=DataArrayDouble.New([4.,5.,6.,10.,3.,-1.],2,3)
9865         self.toSeeIfDaDIopsAreOK(d)
9866         dExp=DataArrayDouble.New([16.,18.,20.,28.,14.,6.],2,3)
9867         self.assertTrue(d.isEqual(dExp,1e-14));
9868         pass
9869
9870     def testConvexEnvelop2D1(self):
9871         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]
9872         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]
9873         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]
9874         #
9875         m=MEDCouplingUMesh.New("convexhull",2);
9876         m.allocateCells(331);
9877         for i in xrange(331):
9878             m.insertNextCell(NORM_POLYGON,conn[connI[i]:connI[i+1]]);
9879             pass
9880         m.finishInsertingCells();
9881         coordsDa=DataArrayDouble.New(coords,331,2);
9882         m.setCoords(coordsDa);
9883         m.checkCoherency();
9884         #
9885         da=m.convexEnvelop2D();
9886         m.checkCoherency()
9887         self.assertEqual(coordsDa.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
9888         daC=da.buildComplement(m.getNumberOfCells());
9889         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]);
9890         self.assertTrue(expected2.isEqual(daC));
9891         #
9892         vals=m.getMeasureField(ON_CELLS).getArray()
9893         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]
9894         vals-=DataArrayDouble.New(ref)
9895         vals.abs()
9896         theTest=vals.getIdsInRange(-1.,1e-7)
9897         self.assertTrue(theTest.isIdentity())
9898         self.assertEqual(331,len(theTest))
9899         pass
9900
9901     def testSwigDAIOp8(self):
9902         da=DataArrayInt.New([7,5,6,7,8,9,9,10,12,13,47,15])
9903         self.assertTrue(7 in da)
9904         self.assertTrue(47 in da)
9905         self.assertTrue(15 in da)
9906         self.assertEqual(0,da.index(7))
9907         self.assertEqual(10,da.index(47))
9908         self.assertTrue(14 not in da)
9909         self.assertEqual(5,da.search([9,9]))
9910         self.assertEqual(-1,da.search([5,8]))
9911         da.rearrange(2)
9912         self.assertTrue([47,16] not in da)
9913         self.assertTrue([5,6] not in da)
9914         self.assertTrue([6,7] in da)
9915         self.assertEqual(4,da.index([12,13]))
9916         pass
9917
9918     def testDataArraySort1(self):
9919         arr=DataArrayInt.New();
9920         self.assertRaises(InterpKernelException,arr.sort,True)
9921         self.assertRaises(InterpKernelException,arr.sort,False)
9922         values=[2,1,6,5,4,7]
9923         arr.alloc(3,2);
9924         self.assertRaises(InterpKernelException,arr.sort,True)
9925         self.assertRaises(InterpKernelException,arr.sort,False)
9926         arr.rearrange(1);
9927         arr.setValues(values,6,1)
9928         arr1=arr.deepCpy();
9929         arr2=arr.deepCpy();
9930         arr1.sort(True);
9931         expected1=[1,2,4,5,6,7]
9932         self.assertEqual(6,arr1.getNumberOfTuples());
9933         self.assertEqual(1,arr1.getNumberOfComponents());
9934         self.assertEqual(expected1,arr1.getValues());
9935         arr2.sort(False);
9936         expected2=[7,6,5,4,2,1]
9937         self.assertEqual(6,arr2.getNumberOfTuples());
9938         self.assertEqual(1,arr2.getNumberOfComponents());
9939         self.assertTrue(expected2,arr2.getValues());
9940         #
9941         ard=DataArrayDouble.New();
9942         self.assertRaises(InterpKernelException,ard.sort,True)
9943         self.assertRaises(InterpKernelException,ard.sort,False)
9944         valuesD=[2.,1.,6.,5.,4.,7.]
9945         ard.alloc(3,2);
9946         self.assertRaises(InterpKernelException,ard.sort,True)
9947         self.assertRaises(InterpKernelException,ard.sort,False)
9948         ard.rearrange(1);
9949         ard.setValues(valuesD,6,1)
9950         ard1=ard.deepCpy();
9951         ard2=ard.deepCpy();
9952         ard1.sort(True);
9953         expected3=[1.,2.,4.,5.,6.,7.]
9954         self.assertEqual(6,ard1.getNumberOfTuples());
9955         self.assertEqual(1,ard1.getNumberOfComponents());
9956         for i in xrange(6):
9957             self.assertAlmostEqual(expected3[i],ard1.getIJ(i,0),12)
9958             pass
9959         ard2.sort(False);
9960         expected4=[7.,6.,5.,4.,2.,1.]
9961         self.assertEqual(6,ard2.getNumberOfTuples());
9962         self.assertEqual(1,ard2.getNumberOfComponents());
9963         for i in xrange(6):
9964             self.assertAlmostEqual(expected4[i],ard2.getIJ(i,0),12)
9965             pass
9966         pass
9967     
9968     def testPartitionBySpreadZone1(self):
9969         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9970         m4=MEDCouplingUMesh.MergeUMeshes([m,m[-3:],m[0:2]]);
9971         m4.renumberCells([5,2,9,6,4,7,0,1,3,8]);
9972         #
9973         v2=m4.partitionBySpreadZone();
9974         self.assertTrue(3,len(v2));
9975         self.assertTrue(v2[0].isEqual(DataArrayInt.New([0,1,7])))
9976         self.assertTrue(v2[1].isEqual(DataArrayInt.New([2,4,5,6,9])))
9977         self.assertTrue(v2[2].isEqual(DataArrayInt.New([3,8])))
9978         #
9979         m5=m4.buildSpreadZonesWithPoly();
9980         self.assertEqual(3,m5.getNumberOfCells());
9981         self.assertTrue(m5.getCoords().getHiddenCppPointer()==m4.getCoords().getHiddenCppPointer());
9982         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())
9983         self.assertEqual([0,8,17,23],m5.getNodalConnectivityIndex().getValues())
9984         #
9985         pass
9986
9987     def testGiveCellsWithType1(self):
9988         expected0=[1,2]
9989         expected1=[0,3,4]
9990         m=MEDCouplingDataForTest.build2DTargetMesh_1();
9991         da=m.giveCellsWithType(NORM_TRI3);
9992         self.assertEqual(2,da.getNumberOfTuples());
9993         self.assertEqual(1,da.getNumberOfComponents());
9994         self.assertEqual(expected0,da.getValues())
9995         #
9996         da=m.giveCellsWithType(NORM_QUAD4);
9997         self.assertEqual(3,da.getNumberOfTuples());
9998         self.assertEqual(1,da.getNumberOfComponents());
9999         self.assertEqual(expected1,da.getValues())
10000         #
10001         da=m.giveCellsWithType(NORM_TRI6);
10002         self.assertEqual(0,da.getNumberOfTuples());
10003         self.assertEqual(1,da.getNumberOfComponents());
10004         #
10005         self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_SEG2)
10006         self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_HEXA8)
10007         pass
10008
10009     def testSwigDAOp1(self):
10010         d=DataArrayDouble.New(5,2)
10011         d.rearrange(1) ; d.iota(2.) ; d.rearrange(2)
10012         d.setInfoOnComponents(["X [m]","Y [m]"])
10013         d.setName("AName")
10014         #
10015         d1=d+[8,9]
10016         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))
10017         d1bis=DataArrayDouble.New([8,9],1,2)+d
10018         self.assertTrue(d1bis.isEqual(d1,1e-12))
10019         d1ter=[8,9]+d
10020         self.assertTrue(d1ter.isEqual(d1,1e-12))
10021         #
10022         d2=d1-[8,9]
10023         self.assertTrue(d2.isEqual(d,1e-12))
10024         self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])#[8,9]-d1
10025         #
10026         d3=d*[8,9]
10027         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))
10028         d3bis=DataArrayDouble.New([8,9],1,2)*d
10029         self.assertTrue(d3bis.isEqual(d3,1e-12))
10030         d3ter=[8,9]*d
10031         self.assertTrue(d3ter.isEqual(d3,1e-12))
10032         #
10033         d4=d3/[8,9]
10034         self.assertTrue(d4.isEqual(d,1e-12))
10035         #
10036         d=DataArrayInt.New(5,2)
10037         d.rearrange(1) ; d.iota(2) ; d.rearrange(2)
10038         d.setInfoOnComponents(["X [m]","Y [m]"])
10039         d.setName("AName")
10040         #
10041         d1=d+[8,9]
10042         self.assertEqual(d1.getValues(),[10,12,12,14,14,16,16,18,18,20])
10043         d1bis=DataArrayInt.New([8,9],1,2)+d
10044         self.assertTrue(d1bis.isEqual(d1))
10045         d1ter=[8,9]+d
10046         self.assertTrue(d1ter.isEqual(d1))
10047         #
10048         d2=d1-[8,9]
10049         self.assertTrue(d2.isEqual(d))
10050         self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])
10051         #
10052         d3=d*[8,9]
10053         self.assertEqual(d3.getValues(),[16,27,32,45,48,63,64,81,80,99])
10054         d3bis=DataArrayInt.New([8,9],1,2)*d
10055         self.assertTrue(d3bis.isEqual(d3))
10056         d3ter=[8,9]*d
10057         self.assertTrue(d3ter.isEqual(d3))
10058         #
10059         d4=d3/[8,9]
10060         self.assertTrue(d4.isEqual(d))
10061         #
10062         d5=d%[4,5]
10063         self.assertEqual(d5.getValues(),[2,3,0,0,2,2,0,4,2,1])
10064         pass
10065
10066     def testSwigSelectTupleId2DAIBug1(self):
10067         da=DataArrayInt.New([0,1,2,3,12,13,4,5,6,7,14,15,8,9,10,11,16,17])
10068         self.assertEqual([2,6,10],da[2::6].getValues())
10069         self.assertEqual([0,4,8],da[::6].getValues())
10070         self.assertEqual([5,9],da[7::6].getValues())
10071         self.assertEqual([5],da[7:-5:6].getValues())
10072         pass
10073
10074     def testSwigCpp5Safe1(self):
10075         m=MEDCouplingUMesh.New("toto",2)
10076         coords=DataArrayDouble.New([0.,0.,1.,0.,1.,1.,0.,1.],4,2)
10077         m.setCoords(coords)
10078         vecs=DataArrayDouble.New([2.,3.,4.,5.,6.,7.],3,2)
10079         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]]
10080         for pos,vec in enumerate(vecs):
10081             m2=m.deepCpy()
10082             m2.translate(vec)
10083             self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10084             pass
10085         for pos,vec in enumerate(vecs):
10086             m2=m.deepCpy()
10087             m2.translate(vec.buildDADouble())
10088             self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10089             pass
10090         pass
10091     
10092     def testSwigBugNonRegressionZipDA(self):
10093         angles=map(lambda x:pi/3*x,xrange(6))
10094         radius=3
10095         #
10096         dad=DataArrayDouble.New(6, 2)
10097         dad[:,0]=radius
10098         dad[:,1]=angles
10099         #
10100         dad2=dad.fromPolarToCart()
10101         dads=[dad2.deepCpy() for elt in 7*[None]]
10102         #
10103         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.)]]
10104         for d,t in zip(dads,translationToPerform):
10105             d+=t
10106             pass
10107         for elt in dads:
10108             self.assertTrue(not dad2.isEqual(elt,1e-12))
10109             pass
10110         for d,t in zip(dads,translationToPerform):
10111             d-=t
10112             pass
10113         for elt in dads:
10114             self.assertTrue(dad2.isEqual(elt,1e-12))
10115             pass
10116         pass
10117
10118     def testBuildSlice3D2(self):
10119         mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
10120         vec1=[-0.07,1.,0.07]
10121         origin1=[1.524,1.4552,1.74768]
10122         slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
10123         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
10124         f.setTime(4.5,6,7) ; f.setMesh(mesh3D)
10125         arr=DataArrayDouble(mesh3D.getNumberOfCells(),2)
10126         arr.rearrange(1) ; arr.iota(2.) ; arr.rearrange(2)
10127         f.setArray(arr)
10128         f.checkCoherency()
10129         expected1=DataArrayInt([1,3,4,7,9,10,13,15,16])
10130         self.assertTrue(expected1.isEqual(ids))
10131         arr2=arr[expected1]
10132         #
10133         f2=f.extractSlice3D(origin1,vec1,1e-10)
10134         self.assertTrue(f2.getArray().isEqual(arr2,1e-12));
10135         self.assertTrue(slice1.isEqual(f2.getMesh(),1e-12))
10136         self.assertEqual(6,f2.getTime()[1]) ; self.assertEqual(7,f2.getTime()[2])
10137         self.assertAlmostEqual(4.5,f2.getTime()[0],12);
10138         pass
10139
10140     def testComputeTupleIdsToSelectFromCellIds1(self):
10141         m=MEDCouplingDataForTest.build2DTargetMesh_3()
10142         f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
10143         f.setMesh(m);
10144         arr=DataArrayDouble(52,2) ; arr.rearrange(1) ; arr.iota(7.) ; arr.rearrange(2)
10145         f.setArray(arr)
10146         #
10147         f2=f.buildSubPart([1,5,9])
10148         f2.checkCoherency()
10149         cI=m.computeNbOfNodesPerCell()
10150         cI.computeOffsets2()
10151         sel=DataArrayInt([1,5,9])
10152         res=sel.buildExplicitArrByRanges(cI)
10153         arr2=arr[res]
10154         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))
10155         self.assertTrue(arr2.isEqual(f2.getArray(),1e-12))
10156         pass
10157
10158     def testComputeSkin1(self):
10159         arrX=DataArrayDouble([2.,3.4,5.6,7.7,8.0]) ; arrY=DataArrayDouble([2.,3.4,5.6,7.7,9.0,14.2])
10160         cmesh=MEDCouplingCMesh() ; cmesh.setCoordsAt(0,arrX) ; cmesh.setCoordsAt(1,arrY)
10161         umesh=cmesh.buildUnstructured()
10162         #
10163         skin=umesh.computeSkin()
10164         self.assertEqual(18,skin.getNumberOfCells())
10165         self.assertEqual(1,skin.getMeshDimension())
10166         self.assertTrue(skin.getCoords().getHiddenCppPointer()==umesh.getCoords().getHiddenCppPointer())
10167         self.assertEqual([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54],skin.getNodalConnectivityIndex().getValues())
10168         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())
10169         ids=skin.computeFetchedNodeIds()
10170         self.assertEqual([0,1,2,3,4,5,9,10,14,15,19,20,24,25,26,27,28,29],ids.getValues())
10171         part=umesh.buildFacePartOfMySelfNode(ids,True)
10172         part.setName(skin.getName());
10173         self.assertTrue(part.isEqual(skin,1e-12))
10174         part2=part[1::2]
10175         part[::2]=part2
10176         self.assertTrue(not part.isEqual(skin,1e-12))
10177         trad=part.zipConnectivityTraducer(0)
10178         self.assertEqual(9,part.getNumberOfCells())
10179         self.assertEqual([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8],trad.getValues())
10180         pass
10181
10182     def testUMeshSetPartOfMySelf2(self):
10183         # resize with explicit ids list
10184         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10185         self.assertEqual([3,4],m.getAllGeoTypes())
10186         part=m[[0,3,4]]
10187         part.simplexize(0)
10188         part2=part[[1,2,5]]
10189         m[[0,3,4]]=part2
10190         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())
10191         self.assertEqual([0,4,8,12,16,20],m.getNodalConnectivityIndex().getValues())
10192         self.assertEqual([3],m.getAllGeoTypes())
10193         # no resize with explicit ids list
10194         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10195         part=m[[0,3]]
10196         part.convertAllToPoly()
10197         m[[3,4]]=part
10198         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())
10199         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10200         self.assertEqual([3,4,5],m.getAllGeoTypes())
10201         # resize with range ids
10202         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10203         part=m[3:]
10204         m[1:3]=part
10205         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())
10206         self.assertEqual([0,5,10,15,20,25],m.getNodalConnectivityIndex().getValues())
10207         self.assertEqual([4],m.getAllGeoTypes())
10208         # no resize with range ids
10209         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10210         part=m[0::3]
10211         part.convertAllToPoly()
10212         m[3:]=part
10213         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())
10214         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10215         self.assertEqual([3,4,5],m.getAllGeoTypes())
10216         # no resize with range ids negative direction
10217         m=MEDCouplingDataForTest.build2DTargetMesh_1()
10218         part=m[3::-3]
10219         part.convertAllToPoly()
10220         m[:-3:-1]=part
10221         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())
10222         self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10223         self.assertEqual([3,4,5],m.getAllGeoTypes())
10224         pass
10225
10226     def testUnPolyze3(self):
10227         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]
10228         conn=[1,2,5,4,-1,4,3,0,1,-1,2,0,3,5,-1,0,2,1,-1,4,5,3]
10229         m=MEDCouplingUMesh.New("a mesh",3);
10230         m.allocateCells(1);
10231         m.insertNextCell(NORM_POLYHED,22,conn[0:22])
10232         m.finishInsertingCells();
10233         coords=DataArrayDouble(coord,6,3);
10234         m.setCoords(coords);
10235         m.checkCoherency();
10236         #
10237         vol=m.getMeasureField(ON_CELLS);
10238         self.assertEqual(1,vol.getArray().getNumberOfTuples());
10239         self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10240         #
10241         m.unPolyze();
10242         #
10243         self.assertEqual([NORM_PENTA6],m.getAllGeoTypes())
10244         self.assertTrue(DataArrayInt([0,7]).isEqual(m.getNodalConnectivityIndex()))
10245         self.assertTrue(DataArrayInt([16,0,2,1,3,5,4]).isEqual(m.getNodalConnectivity()))
10246         #
10247         vol=m.getMeasureField(ON_CELLS);
10248         self.assertEqual(1,vol.getArray().getNumberOfTuples());
10249         self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10250         pass
10251
10252     def testKrSpatialDiscretization1(self):
10253         srcPointCoordsX=[0.8401877171547095, 0.7830992237586059, 0.9116473579367843, 0.335222755714889, 0.2777747108031878, 0.4773970518621602, 0.3647844727918433, 0.9522297251747128, 0.6357117279599009, 0.1416025553558034]
10254         srcFieldValsOnPoints=[2.129892434968836, 2.295320474540621, 1.931948594981134, 2.728013590937196, 2.715603240418478, 2.661778472822935, 2.695696990104364, 1.893710234970982, 2.529628016549284, 2.728432341300668]
10255         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]
10256         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]
10257         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])
10258         #
10259         nbOfInputPoints=10;
10260         f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
10261         srcArrX=DataArrayDouble.New(srcPointCoordsX,nbOfInputPoints,1);
10262         cmesh=MEDCouplingCMesh.New("aMesh");
10263         cmesh.setCoordsAt(0,srcArrX);
10264         umesh=cmesh.buildUnstructured();
10265         f.setMesh(umesh);
10266         srcVals=DataArrayDouble.New(srcFieldValsOnPoints,nbOfInputPoints,1);
10267         f.setArray(srcVals);
10268         f.checkCoherency();
10269         #
10270         res0=f.getValueOn(targetPointCoordsX[:1]);
10271         self.assertAlmostEqual(targetFieldValsExpected[0],res0[0],10)
10272         #
10273         valuesToTest=f.getValueOnMulti(targetPointCoordsX);
10274         self.assertEqual(40,valuesToTest.getNumberOfTuples());
10275         self.assertEqual(1,valuesToTest.getNumberOfComponents());
10276         for i in xrange(40):
10277             self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
10278             pass
10279         fd=f.getDiscretization()
10280         del f
10281         self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
10282         coeffs,isDrift=fd.computeVectorOfCoefficients(umesh,srcVals)
10283         self.assertEqual(2,isDrift)
10284         self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
10285         #
10286         pass
10287
10288     def testDuplicateEachTupleNTimes1(self):
10289         d=DataArrayDouble.New([9.,8.,7.,6.],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10290         d2=d.duplicateEachTupleNTimes(3)
10291         self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayDouble.New([9.,9.,9.,8.,8.,8.,7.,7.,7.,6.,6.,6.],4*3,1),1e-14))
10292         self.assertEqual("aname",d2.getName())
10293         self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10294         #
10295         d=DataArrayInt.New([9,8,7,6],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10296         d2=d.duplicateEachTupleNTimes(3)
10297         self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayInt.New([9,9,9,8,8,8,7,7,7,6,6,6],4*3,1)))
10298         self.assertEqual("aname",d2.getName())
10299         self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10300         pass
10301
10302     def testSwigComputeTupleIdsNearTuples1(self):
10303         da=DataArrayDouble([5.,6.,-5.,-6.,5.,-6.,-5.,6.,5.,6.],5,2)
10304         arr,arrI=da.computeTupleIdsNearTuples(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2),1e-10)
10305         self.assertEqual([2,0,4,1],arr.getValues())
10306         self.assertEqual([0,1,3,4],arrI.getValues())
10307         arr,arrI=da.computeTupleIdsNearTuples([5.,-6.,5.,6.,-5.,-6.],1e-10)
10308         self.assertEqual([2,0,4,1],arr.getValues())
10309         self.assertEqual([0,1,3,4],arrI.getValues())
10310         expected0=[[2],[0,4],[1]]
10311         expected1=[[0,1],[0,2],[0,1]]
10312         for pos,it in enumerate(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2)):
10313             arr,arrI=da.computeTupleIdsNearTuples(it,1e-10)
10314             self.assertEqual(expected0[pos],arr.getValues())
10315             self.assertEqual(expected1[pos],arrI.getValues())
10316             pass
10317         pass
10318
10319     def testSwigDataTupleIOp1(self):
10320         d=DataArrayDouble(10,1)
10321         d.iota(7.)
10322         for elt in d:
10323             elt+=2.
10324             pass
10325         toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
10326         self.assertTrue(toTest.isEqual(d,1e-12))
10327         for elt in d:
10328             elt-=2.
10329             pass
10330         toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10331         self.assertTrue(toTest.isEqual(d,1e-12))
10332         for elt in d:
10333             elt*=2.
10334             pass
10335         toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
10336         self.assertTrue(toTest.isEqual(d,1e-12))
10337         for elt in d:
10338             elt/=2.
10339             pass
10340         toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10341         self.assertTrue(toTest.isEqual(d,1e-12))
10342         #
10343         d=DataArrayInt(10,1)
10344         d.iota(7)
10345         for elt in d:
10346             elt+=2
10347             pass
10348         self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
10349         for elt in d:
10350             elt-=2
10351             pass
10352         self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10353         for elt in d:
10354             elt*=2
10355             pass
10356         self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
10357         for elt in d:
10358             elt/=2
10359             pass
10360         self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10361         for elt in d:
10362             elt%=3
10363             pass
10364         self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
10365         pass
10366
10367     def testIntersect2DMeshesTmp5(self):
10368         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)
10369         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)
10370         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)
10371         #
10372         m1=MEDCouplingUMesh.New("Fix",2);
10373         m1.setCoords(coords);
10374         m1.setConnectivity(conn,connI,True);
10375         #
10376         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)
10377         # connectivity
10378         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);
10379         conn.setName("");
10380         connI=DataArrayInt([0,9,18,27,36,45,54,63,72],9)
10381         m2=MEDCouplingUMesh.New("Mobile",2);
10382         m2.setCoords(coords);
10383         m2.setConnectivity(conn,connI,True);
10384         #
10385         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10386         self.assertEqual(105,m3.getNumberOfCells());
10387         self.assertEqual(105,d1.getNumberOfTuples());
10388         self.assertEqual(105,d2.getNumberOfTuples());
10389         self.assertEqual(704,m3.getNumberOfNodes());
10390         #
10391         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]
10392         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]
10393         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]
10394         f3=m3.getMeasureField(ON_CELLS).getArray().getValues();
10395         for i in xrange(105):
10396             self.assertAlmostEqual(areaExpected[i],f3[i],10)
10397             pass
10398         self.assertEqual(expected1,d1.getValues())
10399         self.assertEqual(expected2,d2.getValues())
10400         pass
10401
10402     def testSwig2Intersect2DMeshesQuadra1(self):
10403         import cmath
10404         def createDiagCircle(lX, lY, R, cells=[0,1]):  
10405             """ A circle in a square box, cut along the diagonal. 
10406             """    
10407             c = []
10408             for i in range(8):
10409               c.append(cmath.rect(R, i*pi/4))
10410         
10411             coords = [0.0,0.0,          c[3].real,c[3].imag,       -lX/2.0, lY/2.0,
10412                       0.0, lY/2.0,      lX/2.0,lY/2.0,             lX/2.0,0.0,
10413                       #   6                  7                              8
10414                       lX/2.0,-lY/2.0,   c[7].real,c[7].imag,       c[1].real,c[1].imag,
10415                       #   9                  10                            11  
10416                       c[5].real,c[5].imag,   -lX/2.0,-lY/2.0,      0.0, -lY/2.0,
10417                       #   12                  13                            14
10418                       -lX/2.0,0.0,         0.0,0.0,                  0.0, 0.0]
10419             # Points 13 (reps. 14) are average of points (6,7) (resp (1,2))
10420             coords[13*2]   = 0.5*(coords[6*2]+coords[7*2])
10421             coords[13*2+1] = 0.5*(coords[6*2+1]+coords[7*2+1])
10422             coords[14*2]   = 0.5*(coords[1*2]+coords[2*2])
10423             coords[14*2+1] = 0.5*(coords[1*2+1]+coords[2*2+1])
10424             connec  = [1,7,8,0]      # half circle up right
10425             connec3 = [6,7,1,2,4,13,8,14,3,5]
10426             
10427             baseMesh = MEDCouplingUMesh.New("box_circle", 2)  
10428             baseMesh.allocateCells(2)
10429             meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
10430             meshCoords.setInfoOnComponents(["X [au]", "Y [au]"])
10431             baseMesh.setCoords(meshCoords)
10432             
10433             if 0 in cells:
10434               baseMesh.insertNextCell(NORM_QPOLYG, connec)  
10435             if 1 in cells: 
10436               baseMesh.insertNextCell(NORM_QPOLYG, connec3) 
10437             baseMesh.finishInsertingCells()  
10438             baseMesh.checkCoherency() 
10439             return baseMesh 
10440         
10441         eps = 1.0e-7
10442         m1 = createDiagCircle(1.0, 1.0, 0.5*0.90, cells=[0,1])  
10443         m2 = createDiagCircle(1.0, 1.0, 0.5*0.95, cells=[0])
10444         m3, _, _= MEDCouplingUMesh.Intersect2DMeshes(m1, m2, eps)
10445         m3.mergeNodes(eps)
10446         m3.convertDegeneratedCells()
10447         m3.zipCoords()        
10448         m4 = m3.deepCpy()
10449         m5, _, _ = MEDCouplingUMesh.Intersect2DMeshes(m3, m4, eps)
10450         m5.mergeNodes(eps)
10451         # Check coordinates:
10452         self.assertTrue(m3.getCoords().isEqual(m5.getCoords(), eps))
10453
10454     def testIntersect2DMeshesTmp7(self):
10455         eps = 1.0e-8
10456         coords = [-0.5,-0.5,   -0.5, 0.5, 0.5, 0.5,    0.5,-0.5]
10457         connec = range(4)
10458         m1 = MEDCouplingUMesh.New("box", 2)  
10459         m1.allocateCells(1)
10460         meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
10461         m1.setCoords(meshCoords)
10462         m1.insertNextCell(NORM_POLYGON, connec)
10463         m1.finishInsertingCells()  
10464      
10465         m2 = MEDCouplingDataForTest.buildCircle(0.25, 0.2, 0.4)
10466         # Was looping indefinitly:
10467         m_intersec, resToM1, resToM2 = MEDCouplingUMesh.Intersect2DMeshes(m1, m2, eps)
10468         m_intersec.zipCoords()
10469         coo_tgt = DataArrayDouble([-0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.03284271247461901, 0.4828427124746191, 
10470           -0.014575131106459124, 0.5000000000000001, 0.5, -0.11224989991991996, 0.24271243444677046, 0.5, 0.5, 0.19387505004004, 
10471           -0.04799910280454185, -0.06682678787499614, -0.023843325638122054, 0.4915644577163915, 0.5, -0.30612494995996, 0.0, -0.5, 
10472           -0.5, 0.0, -0.25728756555322957, 0.5, -0.023843325638122026, 0.49156445771639157, -0.04799910280454181, -0.06682678787499613], 17 ,2)
10473         conn_tgt = [32, 5, 2, 6, 4, 7, 8, 9, 10, 32, 6, 3, 0, 1, 5, 4, 11, 12, 13, 14, 15, 16]
10474         connI_tgt = [0, 9, 22]
10475         res1_tgt  = [0, 0]
10476         res2_tgt = [0, -1]
10477         self.assert_(coo_tgt.isEqualWithoutConsideringStr(m_intersec.getCoords(), 1e-12))
10478         self.assertEqual(conn_tgt, m_intersec.getNodalConnectivity().getValues())
10479         self.assertEqual(connI_tgt, m_intersec.getNodalConnectivityIndex().getValues())
10480         self.assertEqual(res1_tgt, resToM1.getValues())
10481         self.assertEqual(res2_tgt, resToM2.getValues())
10482         
10483     def testDAIBuildUnique1(self):
10484         d=DataArrayInt([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
10485         e=d.buildUnique()
10486         self.assertTrue(e.isEqual(DataArrayInt([1,2,3,4,5,7,19])))
10487         pass
10488
10489     def testDAIPartitionByDifferentValues1(self):
10490         d=DataArrayInt([1,0,1,2,0,2,2,-3,2])
10491         expected=[[-3,[7]],[0,[1,4]],[1,[0,2]],[2,[3,5,6,8]]]
10492         for i,elt in enumerate(zip(*d.partitionByDifferentValues())):
10493             self.assertEqual(expected[i][0],elt[1])
10494             self.assertEqual(expected[i][1],elt[0].getValues())
10495             pass
10496         pass
10497
10498     def testFieldGaussMultiDiscPerType1(self):
10499         coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
10500         mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
10501         mQ8.allocateCells(1)
10502         mQ8.insertNextCell(NORM_QUAD8,range(8))
10503         mQ8.finishInsertingCells()
10504         mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
10505         mQ4.allocateCells(1)
10506         mQ4.insertNextCell(NORM_QUAD4,range(4))
10507         mQ4.finishInsertingCells()
10508         mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
10509         mT3.allocateCells(1)
10510         mT3.insertNextCell(NORM_TRI3,range(3))
10511         mT3.finishInsertingCells()
10512         
10513         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.]]
10514         ms=2*[mQ4]+7*[mQ8]+11*[mT3]
10515         ms[:]=(elt.deepCpy() for elt in ms)
10516         for m,t in zip(ms,tr):
10517             d=m.getCoords() ; d+= t
10518             pass
10519         m=MEDCouplingUMesh.MergeUMeshes(ms)
10520         f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME)
10521         f.setMesh(m)
10522         # throw because cell 0,1 are QUAD4 and cell 3 is QUAD8
10523         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])
10524         f.setGaussLocalizationOnCells([0,1],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10525         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])
10526         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])
10527         f.setGaussLocalizationOnCells([9,10,11,12,13],[0.,0.,1.,0.,1.,1.],[0.4,0.4],[1.])
10528         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])
10529         self.assertEqual(46,f.getNumberOfTuplesExpected())
10530         vals=DataArrayDouble.New(46*3,1) ; vals.iota(7.7) ; vals.rearrange(3)
10531         f.setArray(vals)
10532         f.checkCoherency()
10533         #f.getLocalizationOfDiscr()
10534         self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneType,NORM_QUAD8) #throw because several loc
10535         self.assertEqual([1,2],f.getGaussLocalizationIdsOfOneType(NORM_QUAD8))
10536         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())
10537         fc=f[[1,2,3,8]]
10538         fc.checkCoherency()
10539         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))
10540         fc.renumberCells([3,2,0,1])
10541         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))
10542         fc.getArray()
10543         pass
10544
10545     def testSwigRotate(self):
10546         d=DataArrayDouble([1.,2.,3.,4.,6.,5.],2,3)
10547         MEDCouplingPointSet.Rotate3DAlg([0.,0.,0.],[0.,1.,0.],1.5707963267948966,d)
10548         self.assertTrue(d.isEqual(DataArrayDouble([3.,2.,-1.,5.,6.,-4.],2,3),1e-12))
10549         d=DataArrayDouble([1.,2.,3.,4.,6.,5.],3,2)
10550         MEDCouplingPointSet.Rotate2DAlg([0.,0.],1.5707963267948966,d)
10551         self.assertTrue(d.isEqual(DataArrayDouble([-2.,1.,-4.,3.,-5.,6.],3,2),1e-12))
10552         pass
10553
10554     def testSwigCMeshProtection(self):
10555         cm=MEDCouplingCMesh()
10556         self.assertRaises(InterpKernelException,cm.setCoordsAt,0,DataArrayDouble([4.,4.5,6.,7.],2,2))
10557         self.assertRaises(InterpKernelException,cm.setCoords,DataArrayDouble([4.,4.5,6.,7.],2,2))
10558         pass
10559
10560     def testSwigCellsInBoundingBox1(self):
10561         m3D=MEDCouplingDataForTest.build3DExtrudedUMesh_1()[0]
10562         self.assertTrue(m3D.getCellsInBoundingBox([(0,3),(0,3),(0,1)],-1e-12).isEqual(DataArrayInt([0,1,2,3,4,5])))
10563         self.assertRaises(InterpKernelException,m3D.getCellsInBoundingBox,[(0,3,0),(3,0,1)],-1e-12)
10564         pass
10565
10566     def testDAICheckMonotonic1(self):
10567         data1=[-1,0,2,2,4,5]
10568         data2=[6,2,0,-8,-9,-56]
10569         data3=[-1,0,3,2,4,6]
10570         data4=[7,5,2,3,0,-6]
10571         d=DataArrayInt.New(data1);
10572         self.assertTrue(d.isMonotonic(True));
10573         self.assertTrue(not d.isMonotonic(False));
10574         d.checkMonotonic(True);
10575         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10576         d=DataArrayInt.New(data2);
10577         self.assertTrue(d.isMonotonic(False));
10578         self.assertTrue(not d.isMonotonic(True));
10579         d.checkMonotonic(False);
10580         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10581         d=DataArrayInt.New(data3);
10582         self.assertTrue(not d.isMonotonic(False));
10583         self.assertTrue(not d.isMonotonic(True));
10584         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10585         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10586         d=DataArrayInt.New(data4);
10587         self.assertTrue(not d.isMonotonic(False));
10588         self.assertTrue(not d.isMonotonic(True));
10589         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10590         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10591         d=DataArrayInt.New(0,1)
10592         self.assertTrue(d.isMonotonic(True));
10593         self.assertTrue(d.isMonotonic(False));
10594         d.checkMonotonic(True);
10595         d.checkMonotonic(False);
10596         d=DataArrayInt.New(data4,3,2);#throw because nbComp!=1
10597         self.assertRaises(InterpKernelException,d.isMonotonic,True)
10598         self.assertRaises(InterpKernelException,d.isMonotonic,False)
10599         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10600         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10601         pass
10602
10603     def testSwigDASetItemOnEmpty1(self):
10604         d=DataArrayInt(0,1)
10605         isThrow=False
10606         try:
10607             d[0:1000:2]=4
10608         except InterpKernelException as e:
10609             isThrow=True
10610             pass
10611         self.assertTrue(isThrow)
10612         d[:]=4
10613         d[::2]=5
10614         #
10615         d=DataArrayDouble(0,1)
10616         isThrow=False
10617         try:
10618             d[0:1000:2]=4
10619         except InterpKernelException as e:
10620             isThrow=True
10621             pass
10622         self.assertTrue(isThrow)
10623         d[:]=4
10624         d[::2]=5
10625         d=DataArrayInt([],0,1)
10626         d2=DataArrayInt(0)
10627         self.assertTrue(d2.isEqual(d))
10628         d=DataArrayDouble([],0,1)
10629         d2=DataArrayDouble(0)
10630         self.assertTrue(d2.isEqual(d,1e-12))
10631         pass
10632
10633     def testSwigDAITransformWithIndArr1(self):
10634         arr=DataArrayInt([0,4,5,1])
10635         d=DataArrayInt([7,8,9,10])
10636         self.assertRaises(InterpKernelException,arr.transformWithIndArr,d)
10637         pass
10638
10639     def testIntersect2DMeshesTmp6(self):
10640         # coordinates
10641         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);
10642         # connectivity
10643         conn=DataArrayInt.New([8,0,3,5,1,4,6,7,2])
10644         connI=DataArrayInt.New([0,9]);
10645         m1=MEDCouplingUMesh.New("Fixe",2);
10646         m1.setCoords(coords);
10647         m1.setConnectivity(conn,connI,True);
10648         #
10649         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);
10650         # connectivity
10651         conn=DataArrayInt.New([8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12]);
10652         connI=DataArrayInt.New([0,9,18]);
10653         #
10654         m2=MEDCouplingUMesh.New("Mobile",2);
10655         m2.setCoords(coords);
10656         m2.setConnectivity(conn,connI,True);
10657         #
10658         m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10659         self.assertTrue(d1.isEqual(DataArrayInt([0,0,0,0])));
10660         self.assertTrue(d2.isEqual(DataArrayInt([0,1,-1,-1])));
10661         self.assertEqual(4,m3.getNumberOfCells());
10662         self.assertEqual(4,d1.getNumberOfTuples());
10663         self.assertEqual(4,d2.getNumberOfTuples());
10664         self.assertEqual(43,m3.getNumberOfNodes());
10665         dI,areMerged,newNbOfNodes=m3.mergeNodes(1e-12)
10666         self.assertEqual(35,m3.getNumberOfNodes());
10667         m3.zipCoords();
10668         self.assertEqual(23,m3.getNumberOfNodes());
10669         #
10670         f=m3.getMeasureField(True);
10671         valuesExpected=DataArrayDouble([1.6603638692585716,5.747555728471923,129.68907101754394,7.4162714498559694])
10672         self.assertTrue(f.getArray().isEqual(valuesExpected,1e-12))
10673         pass
10674
10675     def testDAPushBack(self):
10676         d=DataArrayDouble(0,1)
10677         for i in xrange(8):
10678             d.pushBackSilent(i)
10679             pass
10680         self.assertEqual(d.getNumberOfTuples(),8)
10681         self.assertEqual(d.getNbOfElemAllocated(),8)
10682         d.pushBackSilent(4.44)
10683         self.assertEqual(d.getNumberOfTuples(),9)
10684         self.assertEqual(d.getNbOfElemAllocated(),16)
10685         self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10686         e=d.deepCpy()
10687         self.assertEqual(e.getNumberOfTuples(),9)
10688         self.assertEqual(e.getNbOfElemAllocated(),9)
10689         self.assertTrue(e.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10690         self.assertAlmostEqual(d.popBackSilent(),4.44,12)
10691         self.assertEqual(d.getNumberOfTuples(),8)
10692         self.assertEqual(d.getNbOfElemAllocated(),16)
10693         self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.]),1e-12))
10694         f=DataArrayDouble()
10695         f.reserve(1000)
10696         f.pushBackSilent(4.)
10697         self.assertTrue(f.isEqual(DataArrayDouble([4.]),1e-12))
10698         self.assertEqual(f.getNumberOfTuples(),1)
10699         self.assertEqual(f.getNbOfElemAllocated(),1000)
10700         ff=f[:]
10701         self.assertTrue(ff.isEqual(DataArrayDouble([4.]),1e-12))
10702         self.assertEqual(ff.getNumberOfTuples(),1)
10703         self.assertEqual(ff.getNbOfElemAllocated(),1)
10704         d=DataArrayDouble()
10705         d.pushBackSilent(4.44)
10706         d.pushBackSilent(5.55)
10707         d.pushBackSilent(6.66)
10708         self.assertTrue(d.isEqual(DataArrayDouble([4.44,5.55,6.66]),1e-12))
10709         #
10710         d=DataArrayInt(0,1)
10711         for i in xrange(8):
10712             d.pushBackSilent(i)
10713             pass
10714         self.assertEqual(d.getNumberOfTuples(),8)
10715         self.assertEqual(d.getNbOfElemAllocated(),8)
10716         d.pushBackSilent(444)
10717         self.assertEqual(d.getNumberOfTuples(),9)
10718         self.assertEqual(d.getNbOfElemAllocated(),16)
10719         self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10720         e=d.deepCpy()
10721         self.assertEqual(e.getNumberOfTuples(),9)
10722         self.assertEqual(e.getNbOfElemAllocated(),9)
10723         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10724         self.assertEqual(d.popBackSilent(),444)
10725         self.assertEqual(d.getNumberOfTuples(),8)
10726         self.assertEqual(d.getNbOfElemAllocated(),16)
10727         self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
10728         f=DataArrayInt()
10729         f.reserve(1000)
10730         f.pushBackSilent(4)
10731         self.assertTrue(f.isEqual(DataArrayInt([4])))
10732         self.assertEqual(f.getNumberOfTuples(),1)
10733         self.assertEqual(f.getNbOfElemAllocated(),1000)
10734         ff=f[:]
10735         self.assertTrue(ff.isEqual(DataArrayInt([4])))
10736         self.assertEqual(ff.getNumberOfTuples(),1)
10737         self.assertEqual(ff.getNbOfElemAllocated(),1)
10738         d=DataArrayInt()
10739         d.pushBackSilent(444)
10740         d.pushBackSilent(555)
10741         d.pushBackSilent(666)
10742         self.assertTrue(d.isEqual(DataArrayInt([444,555,666])))
10743         #
10744         d=DataArrayInt()
10745         d.alloc(10,1)
10746         d.setInfoOnComponent(0,"ABC")
10747         d.setName("dEf")
10748         d.iota(7)
10749         e=DataArrayInt([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10750         self.assertEqual(10,d.getNbOfElemAllocated())
10751         d.pushBackSilent(55)
10752         e=DataArrayInt([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10753         self.assertEqual(20,d.getNbOfElemAllocated())
10754         d.reserve(4)
10755         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10756         self.assertEqual(4,d.getNbOfElemAllocated())
10757         d.pushBackSilent(5)
10758         e=DataArrayInt([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10759         self.assertEqual(8,d.getNbOfElemAllocated())
10760         self.assertEqual(5,d.popBackSilent())
10761         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10762         self.assertEqual(8,d.getNbOfElemAllocated())
10763         self.assertRaises(OverflowError,d.reserve,-1)
10764         e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10765         self.assertEqual(8,d.getNbOfElemAllocated())
10766         d.reserve(0)
10767         e=DataArrayInt([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e))
10768         self.assertEqual(0,d.getNbOfElemAllocated())
10769         #
10770         d=DataArrayDouble()
10771         d.alloc(10,1)
10772         d.setInfoOnComponent(0,"ABC")
10773         d.setName("dEf")
10774         d.iota(7)
10775         e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10776         self.assertEqual(10,d.getNbOfElemAllocated())
10777         d.pushBackSilent(55)
10778         e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10779         self.assertEqual(20,d.getNbOfElemAllocated())
10780         d.reserve(4)
10781         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10782         self.assertEqual(4,d.getNbOfElemAllocated())
10783         d.pushBackSilent(5)
10784         e=DataArrayDouble([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10785         self.assertEqual(8,d.getNbOfElemAllocated())
10786         self.assertEqual(5.,d.popBackSilent())
10787         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10788         self.assertEqual(8,d.getNbOfElemAllocated())
10789         self.assertRaises(OverflowError,d.reserve,-1)
10790         e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10791         self.assertEqual(8,d.getNbOfElemAllocated())
10792         d.reserve(0)
10793         e=DataArrayDouble([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e,1e-14))
10794         self.assertEqual(0,d.getNbOfElemAllocated())
10795         pass
10796
10797     def testDAIBuildSubstractionOptimized1(self):
10798         da1=DataArrayInt.New([1,3,5,6,7,9,13])
10799         da2=DataArrayInt.New([3,5,9])
10800         da3=DataArrayInt.New([1,3,5])
10801         da4=DataArrayInt.New([1,3,5,6,7,9,13])
10802         #
10803         a=da1.buildSubstractionOptimized(da2);
10804         self.assertTrue(a.isEqual(DataArrayInt([1,6,7,13])));
10805         #
10806         a=da1.buildSubstractionOptimized(da3);
10807         self.assertTrue(a.isEqual(DataArrayInt([6,7,9,13])));
10808         #
10809         a=da1.buildSubstractionOptimized(da4);
10810         self.assertTrue(a.isEqual(DataArrayInt([])));
10811         pass
10812
10813     def testDAIIsStrictlyMonotonic1(self):
10814         da1=DataArrayInt.New([1,3,5,6,7,9,13])
10815         self.assertTrue(da1.isStrictlyMonotonic(True));
10816         da1.checkStrictlyMonotonic(True);
10817         self.assertTrue(da1.isMonotonic(True));
10818         da1.checkMonotonic(True);
10819         self.assertTrue(not da1.isStrictlyMonotonic(False));
10820         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10821         self.assertTrue(not da1.isMonotonic(False));
10822         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10823         #
10824         da1=DataArrayInt.New([1,3,5,6,6,9,13])
10825         self.assertTrue(not da1.isStrictlyMonotonic(True));
10826         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10827         self.assertTrue(da1.isMonotonic(True));
10828         da1.checkMonotonic(True);
10829         self.assertTrue(not da1.isStrictlyMonotonic(False));
10830         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10831         self.assertTrue(not da1.isMonotonic(False));
10832         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10833         #
10834         da1=DataArrayInt.New([1,3,5,6,5,9,13])
10835         self.assertTrue(not da1.isStrictlyMonotonic(True));
10836         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10837         self.assertTrue(not da1.isMonotonic(True));
10838         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10839         self.assertTrue(not da1.isStrictlyMonotonic(False));
10840         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10841         self.assertTrue(not da1.isMonotonic(False));
10842         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10843         #
10844         da1=DataArrayInt.New([13,9,7,6,5,3,1])
10845         self.assertTrue(not da1.isStrictlyMonotonic(True));
10846         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10847         self.assertTrue(not da1.isMonotonic(True));
10848         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10849         self.assertTrue(da1.isStrictlyMonotonic(False));
10850         da1.checkStrictlyMonotonic(False);
10851         self.assertTrue(da1.isMonotonic(False));
10852         da1.checkMonotonic(False);
10853         #
10854         da1=DataArrayInt.New([13,9,6,6,5,3,1])
10855         self.assertTrue(not da1.isStrictlyMonotonic(True));
10856         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10857         self.assertTrue(not da1.isMonotonic(True));
10858         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10859         self.assertTrue(not da1.isStrictlyMonotonic(False));
10860         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10861         self.assertTrue(da1.isMonotonic(False));
10862         da1.checkMonotonic(False);
10863         #
10864         da1=DataArrayInt.New([13,9,5,6,5,3,1])
10865         self.assertTrue(not da1.isStrictlyMonotonic(True));
10866         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10867         self.assertTrue(not da1.isMonotonic(True));
10868         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10869         self.assertTrue(not da1.isStrictlyMonotonic(False));
10870         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10871         self.assertTrue(not da1.isMonotonic(False));
10872         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10873         #
10874         da1=DataArrayInt.New([])
10875         self.assertTrue(da1.isStrictlyMonotonic(True));
10876         da1.checkStrictlyMonotonic(True);
10877         self.assertTrue(da1.isMonotonic(True));
10878         da1.checkMonotonic(True);
10879         self.assertTrue(da1.isStrictlyMonotonic(False));
10880         da1.checkStrictlyMonotonic(False);
10881         self.assertTrue(da1.isMonotonic(False));
10882         da1.checkMonotonic(False);
10883         #
10884         da1=DataArrayInt.New([13])
10885         self.assertTrue(da1.isStrictlyMonotonic(True));
10886         da1.checkStrictlyMonotonic(True);
10887         self.assertTrue(da1.isMonotonic(True));
10888         da1.checkMonotonic(True);
10889         self.assertTrue(da1.isStrictlyMonotonic(False));
10890         da1.checkStrictlyMonotonic(False);
10891         self.assertTrue(da1.isMonotonic(False));
10892         da1.checkMonotonic(False);
10893         pass
10894
10895     def testFindAndCorrectBadOriented3DCells1(self):
10896         nbOfDisc=20
10897         vects=([0,0,-1],[0.3,0.7,0.2],[-0.3,0.7,0.2],[-0.3,-0.7,0.2])
10898         #
10899         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10900         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
10901         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
10902         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10903         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0)
10904         self.assertRaises(InterpKernelException,m4.insertNextCell,NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11,12]);
10905         m4.insertNextCell(NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11]); #Well oriented
10906         c0=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3) ; m0.setCoords(c0)
10907         c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.,0.,1.],5,3) ; m1.setCoords(c1)
10908         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)
10909         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)
10910         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)
10911         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10912         expected1=DataArrayDouble([0.16666666666666666,0.3333333333333333,0.5,1.,1.])
10913         for v in vects:
10914             for i in xrange(nbOfDisc):
10915                 mm=m.deepCpy()
10916                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10917                 mm2=mm.deepCpy()
10918                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10919                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().empty())
10920                 self.assertTrue(mm.isEqual(mm2,1e-14))
10921                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10922                 mm.convertAllToPoly()
10923                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10924                 pass
10925             pass
10926         #
10927         mOK=m.deepCpy()
10928         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,2,1,3]); #Not well oriented
10929         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented 
10930         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
10931         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,3,2,1,4,7,6,5]); #Not well oriented
10932         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
10933         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10934         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10935         expected2=DataArrayDouble([-0.16666666666666666,0.3333333333333333,0.5,-1.,-1.])
10936         for v in vects:
10937             for i in xrange(nbOfDisc):
10938                 mm=m.deepCpy()
10939                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10940                 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10941                 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10942                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10943                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([0,3,4])))
10944                 mOK.setCoords(mm.getCoords())
10945                 self.assertTrue(mm.isEqual(mOK,1e-14))
10946                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10947                 mmm=mm.deepCpy()
10948                 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10949                 mm.convertAllToPoly()
10950                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10951                 pass
10952             pass
10953         #
10954         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10955         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,3,2,1,4]); #Not well oriented 
10956         m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,2,1,3,5,4]); #Not well oriented 
10957         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10958         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,range(12)); #Well oriented
10959         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10960         m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10961         expected3=DataArrayDouble([0.16666666666666666,-0.3333333333333333,-0.5,1.,1.])
10962         for v in vects:
10963             for i in xrange(nbOfDisc):
10964                 mm=m.deepCpy()
10965                 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10966                 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10967                 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10968                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10969                 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([1,2])))
10970                 mOK.setCoords(mm.getCoords())
10971                 self.assertTrue(mm.isEqual(mOK,1e-14))
10972                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10973                 mmm=mm.deepCpy()
10974                 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10975                 mm.convertAllToPoly()
10976                 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10977                 pass
10978             pass
10979         pass
10980
10981     def testSwig2CellOrientation1(self):
10982         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)
10983         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]]
10984         for i in xrange(256):
10985             mesh=MEDCouplingUMesh("FluidMesh_1",3);
10986             mesh.allocateCells(0)
10987             conn2=[elt[:] for elt in conn]
10988             code=bin(i)[2:] ; code='0'*(8-len(code))+code
10989             for face,rev in zip(conn2,code):
10990                 if bool(int(rev)):
10991                     face.reverse()
10992                     pass
10993                 pass
10994             conn3=[elt+[-1] for elt in conn2]
10995             conn3=sum(conn3,[])[:-1]
10996             mesh.insertNextCell(NORM_POLYHED,conn3)
10997             mesh.setCoords(coords)
10998             mesh.orientCorrectlyPolyhedrons()
10999             self.assertTrue(mesh.getBarycenterAndOwner().isEqual(DataArrayDouble([-0.10803,0.,0.3385],1,3),1e-12))
11000             pass
11001         pass
11002
11003     def testSwig2CheckConsecutiveCellTypesForMEDFileFrmt1(self):
11004         m1=MEDCouplingUMesh("",2) ; m1.allocateCells(0)
11005         m1.insertNextCell(NORM_QUAD4,[0,1,2,3])
11006         m1.insertNextCell(NORM_TRI3,[0,1,2])
11007         d=DataArrayDouble(4,3) ; d[:]=0.
11008         m1.setCoords(d)
11009         self.assertTrue(m1.checkConsecutiveCellTypes())
11010         self.assertTrue(not m1.checkConsecutiveCellTypesForMEDFileFrmt())
11011         m1.renumberCells([1,0])
11012         self.assertTrue(m1.checkConsecutiveCellTypes())
11013         self.assertTrue(m1.checkConsecutiveCellTypesForMEDFileFrmt())
11014         pass
11015
11016     def testSwig2DAAccumulate1(self):
11017         d=DataArrayInt(10) ; d.iota(0)
11018         self.assertEqual([45],d.accumulate())
11019         self.assertEqual(45,d.accumulate(0))
11020         d=DataArrayInt(30) ; d.iota(0) ; d.rearrange(3)
11021         self.assertEqual([135,145,155],d.accumulate())
11022         self.assertEqual(135,d.accumulate(0))
11023         self.assertEqual(145,d.accumulate(1))
11024         self.assertEqual(155,d.accumulate(2))
11025         d=DataArrayDouble(10) ; d.iota(0.)
11026         self.assertEqual([45.],d.accumulate())
11027         self.assertEqual(45.,d.accumulate(0))
11028         d=DataArrayDouble(30) ; d.iota(0) ; d.rearrange(3)
11029         self.assertEqual([135.,145.,155.],d.accumulate())
11030         self.assertEqual(135.,d.accumulate(0))
11031         self.assertEqual(145.,d.accumulate(1))
11032         self.assertEqual(155.,d.accumulate(2))
11033         pass
11034
11035     def testSwig2UMeshDistanceToMesh1(self):
11036         m=MEDCouplingUMesh("toto",2)
11037         coords=DataArrayDouble([2.3,3.4,5.6,6.5,-4.3,3.2,-9.8,7.6,-5.4],3,3)
11038         m.setCoords(coords)
11039         m.allocateCells(0)
11040         m.insertNextCell(NORM_TRI3,[0,1,2])
11041         a,b=m.distanceToPoint([-0.335,2.27,1.21])
11042         self.assertEqual(0,b)
11043         self.assertAlmostEqual(0.022360988100374124,a,14);
11044         a,b=m.distanceToPoint(DataArrayDouble([-0.335,2.27,1.21],1,3))
11045         self.assertEqual(0,b)
11046         self.assertAlmostEqual(0.022360988100374124,a,14);
11047         a,b=coords.distanceToTuple([-0.335,2.27,1.21])
11048         self.assertAlmostEqual(5.243302871282566,a,14)
11049         self.assertEqual(0,b)
11050         #
11051         m=MEDCouplingUMesh("toto",2)
11052         coords=DataArrayDouble([0.,0.,0., 8.,0.,0., 8.,8.,0., 0.,8.,0.],4,3)
11053         m.setCoords(coords)
11054         m.allocateCells(0)
11055         m.insertNextCell(NORM_QUAD4,[0,1,2,3])
11056         m.checkCoherency2()
11057         self.assertEqual([4,0,1,2,3],m.getNodalConnectivity().getValues())
11058         a,b=m.distanceToPoint([5.,2.,0.1])
11059         self.assertAlmostEqual(0.1,a,14) ; self.assertEqual(0,b)
11060         a,b=m.distanceToPoint([5.,-2.,4.])
11061         self.assertAlmostEqual(sqrt(2*2+4*4),a,14) ; self.assertEqual(0,b)
11062         m.allocateCells(0)
11063         m.insertNextCell(NORM_POLYGON,[0,1,2,3])
11064         m.checkCoherency2()
11065         self.assertEqual([5,0,1,2,3],m.getNodalConnectivity().getValues())
11066         a,b=m.distanceToPoint([11.,3.,4.])
11067         self.assertAlmostEqual(sqrt(3*3+4*4),a,14) ; self.assertEqual(0,b)
11068         a,b=m.distanceToPoint([4.,12.,5.])
11069         self.assertAlmostEqual(sqrt(4*4+5*5),a,14) ; self.assertEqual(0,b)
11070         d=DataArrayDouble([-1.2,3.,2.],1,3)
11071         for elt in d:
11072             a,b=m.distanceToPoint(d)
11073             self.assertAlmostEqual(sqrt(1.2*1.2+2*2),a,14) ; self.assertEqual(0,b)
11074             pass
11075         #
11076         m=MEDCouplingUMesh("toto",1)
11077         coords=DataArrayDouble([0.,0.,4.,0.,0.,4.],3,2) ; m.setCoords(coords)
11078         m.allocateCells(0) ; m.insertNextCell(NORM_SEG2,[0,1]) ; m.insertNextCell(NORM_SEG2,[1,2])
11079         a,b=m.distanceToPoint([-0.1,4.1])
11080         self.assertAlmostEqual(0.14142135623730925,a,14)  # b==1 self.assertEqual(2,c)
11081         a,b=m.distanceToPoint([0.,3.9])
11082         self.assertAlmostEqual(0.07071067811865482,a,14) ; self.assertEqual(1,b) # self.assertEqual(2,c)
11083         pass
11084
11085     def testSwig2NonRegressionPartitionBySpreadZone1(self):
11086         m=MEDCouplingCMesh()
11087         arr=DataArrayDouble(6) ; arr.iota(0.)
11088         m.setCoords(arr,arr,arr)
11089         m=m.buildUnstructured()
11090         mPart=m[50,80,85,87,92,122]
11091         zones=mPart.partitionBySpreadZone()
11092         self.assertEqual(4,len(zones))
11093         self.assertTrue(zones[0].isEqual(DataArrayInt([0])))
11094         self.assertTrue(zones[1].isEqual(DataArrayInt([1,2])))
11095         self.assertTrue(zones[2].isEqual(DataArrayInt([3,4])))
11096         self.assertTrue(zones[3].isEqual(DataArrayInt([5])))
11097         #
11098         n,ni=m.computeNeighborsOfCells()
11099         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(0,n,ni)
11100         self.assertEqual(13,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11101         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed([1],n,ni)
11102         self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11103         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed((2,),n,ni)
11104         self.assertEqual(11,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11105         a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(DataArrayInt([3]),n,ni)
11106         self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
11107         pass
11108
11109     def testSwigUMeshInsertNextCell1(self):
11110         m=MEDCouplingUMesh("toto",2)
11111         #
11112         coords=DataArrayDouble([0.,0.,1.,1.,1.,0.]) ; m.setCoords(coords)
11113         da=DataArrayInt([0,1,2])
11114         m.allocateCells(0)
11115         for i in xrange(5):
11116             m.insertNextCell(NORM_TRI3,da)
11117             pass
11118         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])))
11119         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11120         #
11121         da=DataArrayInt([0,1,2,3])
11122         m.allocateCells(0)
11123         for i in xrange(5):
11124             m.insertNextCell(NORM_TRI3,3,da)
11125             pass
11126         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])))
11127         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11128         #
11129         da=DataArrayInt([0,1])
11130         m.allocateCells(0)
11131         self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,3,da)
11132         #
11133         da=DataArrayInt([0,1,2,0,1,3,0,1,4,0,1,5,0,1,6],5,3)
11134         m.allocateCells(0)
11135         for t in da:
11136             m.insertNextCell(NORM_TRI3,t)
11137             pass
11138         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])))
11139         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
11140         self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,None)
11141         pass
11142
11143     def testSwigCurveLinearMesh1(self):
11144         m=MEDCouplingCurveLinearMesh("toto")
11145         m.setNodeGridStructure([2,3])
11146         coords=DataArrayDouble([0.,0., 2.,0., 0.,1., 1.9,1.1, 0.3,1.9, 2.2,2.1],6,2)
11147         m.setCoords(coords)
11148         m.checkCoherency()
11149         m0=m.deepCpy()
11150         self.assertTrue(m0.isEqual(m,1e-12))
11151         m.getCoords().setInfoOnComponents(["X [m]","Y [m]"])
11152         self.assertTrue(not m0.isEqual(m,1e-12))
11153         m0=m.deepCpy()
11154         self.assertTrue(m0.isEqual(m,1e-12))
11155         self.assertEqual(m.getNodeGridStructure(),(2,3))
11156         pass
11157
11158     def testSimplexize3(self):
11159         m=MEDCouplingUMesh("toto",3)
11160         m.allocateCells(0)
11161         m.insertNextCell(NORM_TETRA4,[0,1,2,3])
11162         self.assertEqual([NORM_TETRA4],m.getAllGeoTypesSorted())
11163         m.insertNextCell(NORM_HEXA8,[4,5,6,7,8,9,10,11])
11164         self.assertEqual([NORM_TETRA4,NORM_HEXA8],m.getAllGeoTypesSorted())
11165         m.insertNextCell(NORM_HEXA8,[12,13,14,15,16,17,18,19])
11166         self.assertEqual([NORM_TETRA4,NORM_HEXA8],m.getAllGeoTypesSorted())
11167         m.insertNextCell(NORM_TETRA4,[20,21,22,23])
11168         self.assertEqual([NORM_TETRA4,NORM_HEXA8,NORM_TETRA4],m.getAllGeoTypesSorted())
11169         c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3)
11170         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.]
11171         c3=c2+[2.,0.,0.]
11172         c4=c1+[6.,0.,0.]
11173         c=DataArrayDouble.Aggregate([c1,c2,c3,c4])
11174         m.setCoords(c)
11175         m.checkCoherency2()
11176         #
11177         m1=m.deepCpy()
11178         d1=m1.simplexize(PLANAR_FACE_5)
11179         m1.checkCoherency2()
11180         vol1=m1.getMeasureField(ON_CELLS).getArray()
11181         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))
11182         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])
11183         self.assertEqual(m1.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60])
11184         self.assertTrue(d1.isEqual(DataArrayInt([0,1,1,1,1,1,2,2,2,2,2,3])))
11185         #
11186         m2=m.deepCpy()
11187         d2=m2.simplexize(PLANAR_FACE_6)
11188         m2.checkCoherency2()
11189         vol2=m2.getMeasureField(ON_CELLS).getArray()
11190         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))
11191         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])
11192         self.assertEqual(m2.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70])
11193         self.assertTrue(d2.isEqual(DataArrayInt([0,1,1,1,1,1,1,2,2,2,2,2,2,3])))
11194         pass
11195
11196     def testSwig2CurveLinearMesh2(self):
11197         c=MEDCouplingCMesh()
11198         #2D
11199         arr1=DataArrayDouble([0,1,3,7])
11200         arr2=DataArrayDouble([0,1,1.5])
11201         c.setCoords(arr1,arr2)
11202         u=c.buildUnstructured()
11203         coo=u.getCoords()
11204         cl=MEDCouplingCurveLinearMesh()
11205         cl.setCoords(coo)
11206         cl.setNodeGridStructure([4,3])
11207         cl.checkCoherency2()
11208         li1=[1.,2.,4.,0.5,1.,2.]
11209         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11210         self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11211         li1_1=[0.5,0.5,2.,0.5,5.,0.5,0.5,1.25,2.,1.25,5.,1.25]
11212         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11213         self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11214         #3D
11215         c.setCoords(arr1,arr2,arr2)
11216         u=c.buildUnstructured()
11217         coo=u.getCoords()
11218         cl=MEDCouplingCurveLinearMesh()
11219         cl.setCoords(coo)
11220         cl.setNodeGridStructure([4,3,3])
11221         cl.checkCoherency2()
11222         li2=[1.,2.,4.,0.5, 1.,2.,0.5,1.,2.,0.25,0.5,1.]
11223         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]
11224         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11225         self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11226         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11227         self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11228         #1D spaceDim 1
11229         coo=DataArrayDouble(5) ; coo.iota(0.)
11230         coo=coo*coo
11231         cl.setCoords(coo)
11232         cl.setNodeGridStructure([5])
11233         cl.checkCoherency2()
11234         li3=[1.,3.,5.,7.]
11235         li3_1=[0.5,2.5,6.5,12.5]
11236         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11237         self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11238         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11239         self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11240         #1D spaceDim 2
11241         coo=DataArrayDouble.Meld(coo,coo)
11242         cl.setCoords(coo)
11243         cl.checkCoherency2()
11244         li4=[sqrt(2.)*elt for elt in [1.,3.,5.,7.]]
11245         li4_1=[0.5,0.5,2.5,2.5,6.5,6.5,12.5,12.5]
11246         self.assertEqual(2,cl.getSpaceDimension())
11247         self.assertEqual(1,cl.getMeshDimension())
11248         self.assertEqual(4,cl.getNumberOfCells())
11249         self.assertEqual(5,cl.getNumberOfNodes())
11250         self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11251         self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11252         self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11253         self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11254         pass
11255
11256     def testSwig2CurveLinearMeshNonRegression1(self):
11257         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)
11258         m=MEDCouplingCurveLinearMesh("toto")
11259         m.setCoords(coords)
11260         m.setNodeGridStructure([3,3,3])
11261         #
11262         vol=m.getMeasureField(False).getArray()
11263         self.assertTrue(vol.isEqual(DataArrayDouble([0.11450000709295281, 0.10583334351579375,0.11149999939029423,0.08866666863113633, 0.1404166805123294,0.1250000135352219,0.1270833433481557,0.13258334288001067]),1e-12))
11264         self.assertTrue(vol.isEqual(m.buildUnstructured().getMeasureField(False).getArray(),1e-12))
11265         #
11266         self.assertTrue(m.getBarycenterAndOwner().isEqual(m.buildUnstructured().getBarycenterAndOwner(),1e-12))
11267         pass
11268
11269     def testSwig2NonRegressionDASetSelectedComponents1(self):
11270         da=DataArrayDouble.New([1.,2.,3.,4.,5.,6.],3,2)
11271         dv=DataArrayDouble.New();
11272         dv.alloc(4,4)
11273         dv.fillWithZero()
11274         # da has less tuples than dv
11275         dv.setSelectedComponents(da,[1,0])
11276         #
11277         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))
11278         #
11279         da=DataArrayInt.New([1,2,3,4,5,6],3,2)
11280         dv=DataArrayInt.New();
11281         dv.alloc(4,4)
11282         dv.fillWithZero()
11283         # da has less tuples than dv
11284         dv.setSelectedComponents(da,[1,0])
11285         #
11286         self.assertTrue(dv.isEqual(DataArrayInt([2,1,0,0,4,3,0,0,6,5,0,0,0,0,0,0],4,4)))
11287         pass
11288
11289     def testSwigSetItem3(self):
11290         # 1-2 
11291         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11292         d[3]=[1,2]
11293         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,1,2,0,0,0,0],6,2),1e-14))
11294         # 2-2 false
11295         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11296         d[[5,3,2]]=[1,2]
11297         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,1,2,1,2,0,0,1,2],6,2),1e-14))
11298         # 3-2 false
11299         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11300         d[:]=[1,2]
11301         self.assertTrue(d.isEqual(DataArrayDouble([1,2,1,2,1,2,1,2,1,2,1,2],6,2),1e-14))
11302         # 4-2 false
11303         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11304         d[DataArrayInt([0,3,4])]=[1,2]
11305         self.assertTrue(d.isEqual(DataArrayDouble([1,2,0,0,0,0,1,2,1,2,0,0],6,2),1e-14))
11306         # 5-2
11307         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11308         d[5,1]=[7]
11309         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,7],6,2),1e-14))
11310         # 6-2 false
11311         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11312         d[[3,5],1]=[7]
11313         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,0,7,0,0,0,7],6,2),1e-14))
11314         # 7-2 false
11315         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11316         d[:-1:2,1]=[7]
11317         self.assertTrue(d.isEqual(DataArrayDouble([0,7,0,0,0,7,0,0,0,7,0,0],6,2),1e-14))
11318         # 8-2 false
11319         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11320         d[DataArrayInt([0,3,4]),1]=[7]
11321         self.assertTrue(d.isEqual(DataArrayDouble([0,7,0,0,0,0,0,7,0,7,0,0],6,2),1e-14))
11322         # 9-2
11323         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11324         d[3,[1,0]]=[7,8]
11325         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,8,7,0,0,0,0],6,2),1e-14))
11326         # 10-2 false
11327         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11328         d[[1,3,4],[1,0]]=[7,8]
11329         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,8,7,8,7,0,0],6,2),1e-14))
11330         # 11-2 false
11331         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11332         d[1::2,[1,0]]=[7,8]
11333         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,8,7,0,0,8,7],6,2),1e-14))
11334         # 12-2 false
11335         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11336         d[DataArrayInt([1,4]),[1,0]]=[7,8]
11337         self.assertTrue(d.isEqual(DataArrayDouble([0,0,8,7,0,0,0,0,8,7,0,0],6,2),1e-14))
11338         # 13-2
11339         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11340         d[1,:-1]=[9]
11341         self.assertTrue(d.isEqual(DataArrayDouble([0,0,9,0,0,0,0,0,0,0,0,0],6,2),1e-14))
11342         # 14-2 false
11343         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11344         d[[1,4,5],:]=[7,8]
11345         self.assertTrue(d.isEqual(DataArrayDouble([0,0,7,8,0,0,0,0,7,8,7,8],6,2),1e-14))
11346         # 15-2 false
11347         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11348         d[1::2,:]=[3,9]
11349         self.assertTrue(d.isEqual(DataArrayDouble([0,0,3,9,0,0,3,9,0,0,3,9],6,2),1e-14))
11350         # 1-2 
11351         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11352         d[3]=[1,2]
11353         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,1,2,0,0,0,0],6,2)))
11354         # 2-2 false
11355         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11356         d[[5,3,2]]=[1,2]
11357         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,1,2,1,2,0,0,1,2],6,2)))
11358         # 3-2 false
11359         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11360         d[:]=[1,2]
11361         self.assertTrue(d.isEqual(DataArrayInt([1,2,1,2,1,2,1,2,1,2,1,2],6,2)))
11362         # 4-2 false
11363         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11364         d[DataArrayInt([0,3,4])]=[1,2]
11365         self.assertTrue(d.isEqual(DataArrayInt([1,2,0,0,0,0,1,2,1,2,0,0],6,2)))
11366         # 5-2
11367         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11368         d[5,1]=[7]
11369         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,7],6,2)))
11370         # 6-2 false
11371         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11372         d[[3,5],1]=[7]
11373         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,0,7,0,0,0,7],6,2)))
11374         # 7-2 false
11375         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11376         d[:-1:2,1]=[7]
11377         self.assertTrue(d.isEqual(DataArrayInt([0,7,0,0,0,7,0,0,0,7,0,0],6,2)))
11378         # 8-2 false
11379         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11380         d[DataArrayInt([0,3,4]),1]=[7]
11381         self.assertTrue(d.isEqual(DataArrayInt([0,7,0,0,0,0,0,7,0,7,0,0],6,2)))
11382         # 9-2
11383         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11384         d[3,[1,0]]=[7,8]
11385         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,8,7,0,0,0,0],6,2)))
11386         # 10-2 false
11387         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11388         d[[1,3,4],[1,0]]=[7,8]
11389         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,8,7,8,7,0,0],6,2)))
11390         # 11-2 false
11391         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11392         d[1::2,[1,0]]=[7,8]
11393         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,8,7,0,0,8,7],6,2)))
11394         # 12-2 false
11395         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11396         d[DataArrayInt([1,4]),[1,0]]=[7,8]
11397         self.assertTrue(d.isEqual(DataArrayInt([0,0,8,7,0,0,0,0,8,7,0,0],6,2)))
11398         # 13-2
11399         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11400         d[1,:-1]=[9]
11401         self.assertTrue(d.isEqual(DataArrayInt([0,0,9,0,0,0,0,0,0,0,0,0],6,2)))
11402         # 14-2 false
11403         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11404         d[[1,4,5],:]=[7,8]
11405         self.assertTrue(d.isEqual(DataArrayInt([0,0,7,8,0,0,0,0,7,8,7,8],6,2)))
11406         # 15-2 false
11407         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
11408         d[1::2,:]=[3,9]
11409         self.assertTrue(d.isEqual(DataArrayInt([0,0,3,9,0,0,3,9,0,0,3,9],6,2)))
11410         pass
11411
11412     def testSwig2ConvertLinearCellsToQuadratic1(self):
11413         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)
11414         # 2D
11415         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11416         m2D.convertLinearCellsToQuadratic(0)
11417         m2D.checkCoherency1()
11418         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])
11419         self.assertEqual(m2D.getNodalConnectivityIndex().getValues(),[0,9,16,23,32,41])
11420         self.assertTrue(m2D.getCoords().isEqual(coordsExp,1e-14))
11421         # 1D
11422         m1D=MEDCouplingDataForTest.build2DTargetMesh_1().buildDescendingConnectivity()[0]
11423         m1D.convertLinearCellsToQuadratic(0)
11424         m1D.checkCoherency1()
11425         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])
11426         self.assertEqual(m1D.getNodalConnectivityIndex().getValues(),[0,4,8,12,16,20,24,28,32,36,40,44,48,52])
11427         self.assertTrue(m1D.getCoords().isEqual(coordsExp,1e-14))
11428         # 3D
11429         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11430         m2D.changeSpaceDimension(3)
11431         arr=DataArrayDouble(4);  arr.iota(0) ; z=MEDCouplingCMesh() ; z.setCoords(arr)
11432         m1D=z.buildUnstructured() ; m1D.setCoords(arr.changeNbOfComponents(3,0.))
11433         m1D.getCoords()[:]=m1D.getCoords()[:,[1,2,0]]
11434         cooTmp=m2D.getCoords()[:]
11435         m3D=m2D.buildExtrudedMesh(m1D,0)
11436         m3D.convertLinearCellsToQuadratic(0)
11437         m3D.checkCoherency1()
11438         # check of new m3D content
11439         coordsExp2=[coordsExp.changeNbOfComponents(3,i) for i in xrange(4)]
11440         coordsExp3=[DataArrayDouble.Meld(cooTmp[:,[0,1]],cooTmp[:,2]+(0.5+float(i))) for i in xrange(3)]
11441         coordsExp4=DataArrayDouble.Aggregate([coordsExp2[0],coordsExp3[0],coordsExp2[1],coordsExp3[1],coordsExp2[2],coordsExp3[2],coordsExp2[3]])
11442         c=DataArrayDouble.Aggregate(m3D.getCoords(),coordsExp4)
11443         self.assertEqual(len(coordsExp4),115)
11444         self.assertEqual(len(m3D.getCoords()),115)
11445         a,b=c.findCommonTuples(1e-14)
11446         self.assertEqual(len(b),len(coordsExp4)+1)
11447         e,f=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(2*115,a,b)
11448         self.assertEqual(f,115)
11449         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])))
11450         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()))
11451         self.assertTrue(DataArrayInt([0,21,37,53,74,95,116,132,148,169,190,211,227,243,264,285]).isEqual(m3D.getNodalConnectivityIndex()))
11452         # testing explode3DMeshTo1D
11453         m3DSlice0=m3D[:5]
11454         m3DSlice0.zipCoords()
11455         a,b,c,d,e=m3DSlice0.explode3DMeshTo1D()
11456         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])))
11457         self.assertTrue(c.isEqual(DataArrayInt([0,12,21,30,42,54])))
11458         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])))
11459         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])))
11460         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])))
11461         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])))
11462         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))
11463         pass
11464
11465     def testSwig2DataArrayPushBackValsSilent1(self):
11466         d=DataArrayDouble()
11467         d.pushBackValsSilent([4,5,6])
11468         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.]),1e-14))
11469         e=DataArrayDouble([1,2,3],1,3)
11470         for t in e: d.pushBackValsSilent(t)
11471         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.]),1e-14))
11472         d.pushBackValsSilent(DataArrayDouble([9,10.]))
11473         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.]),1e-14))
11474         d.pushBackValsSilent(DataArrayDouble(0,1))
11475         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.]),1e-14))
11476         e=DataArrayDouble([1,2,3],3,1)
11477         for t in e: d.pushBackValsSilent(t)
11478         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.,1.,2.,3.]),1e-14))
11479         d.pushBackValsSilent(77)
11480         self.assertTrue(d.isEqual(DataArrayDouble([4.,5.,6.,1.,2.,3.,9.,10.,1.,2.,3.,77.]),1e-14))
11481         #
11482         d=DataArrayInt()
11483         d.pushBackValsSilent([4,5,6])
11484         self.assertTrue(d.isEqual(DataArrayInt([4,5,6])))
11485         e=DataArrayInt([1,2,3],1,3)
11486         for t in e: d.pushBackValsSilent(t)
11487         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3])))
11488         d.pushBackValsSilent(DataArrayInt([9,10]))
11489         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10])))
11490         d.pushBackValsSilent(DataArrayInt(0,1))
11491         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10])))
11492         e=DataArrayInt([1,2,3],3,1)
11493         for t in e: d.pushBackValsSilent(t)
11494         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10,1,2,3])))
11495         d.pushBackValsSilent(77)
11496         self.assertTrue(d.isEqual(DataArrayInt([4,5,6,1,2,3,9,10,1,2,3,77])))
11497         pass
11498
11499     def testSwig2ConvertLinearCellsToQuadratic2(self):
11500         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11501         ret=m2D.convertLinearCellsToQuadratic(1)
11502         self.assertTrue(ret.isIdentity())
11503         self.assertEqual(5,len(ret))
11504         m2D.checkCoherency1()
11505         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)
11506         self.assertTrue(m2D.getCoords().isEqual(coordsExp,1e-14))
11507         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])))
11508         self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,10,18,26,36,46])))
11509         #
11510         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()[(0,3)] ; m2D.zipCoords()
11511         m2D.changeSpaceDimension(3)
11512         arr=DataArrayDouble(3);  arr.iota(0) ; z=MEDCouplingCMesh() ; z.setCoords(arr)
11513         m1D=z.buildUnstructured() ; m1D.setCoords(arr.changeNbOfComponents(3,0.))
11514         m1D.getCoords()[:]=m1D.getCoords()[:,[1,2,0]]
11515         cooTmp=m2D.getCoords()[:]
11516         m3D=m2D.buildExtrudedMesh(m1D,0)
11517         ret=m3D.convertLinearCellsToQuadratic(1)
11518         self.assertTrue(ret.isIdentity())
11519         self.assertEqual(4,len(ret))
11520         m3D.checkCoherency1()
11521         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)
11522         self.assertTrue(m3D.getCoords().isEqual(coordsExp2,1e-14))
11523         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])))
11524         self.assertTrue(m3D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,28,56,84,112])))
11525         pass
11526
11527     def testSwig2GaussNEIntegral1(self):
11528         m2D=MEDCouplingDataForTest.build2DTargetMesh_1()
11529         m0=m2D[0] ; m0.zipCoords()
11530         m1=m2D[[1,2]] ; m1.zipCoords()
11531         m2=m2D[[3,4]] ; m2.zipCoords()
11532         m0.convertLinearCellsToQuadratic(1)
11533         m1.convertLinearCellsToQuadratic(0)
11534         m2.convertLinearCellsToQuadratic(1)
11535         m=MEDCouplingUMesh.MergeUMeshes([m0,m1,m2])
11536         m.mergeNodes(1e-12)
11537         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11538         f.setMesh(m)
11539         arr=DataArrayDouble([1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,
11540                              11.1,12.2,13.3,14.4,15.5,16.6,
11541                              21.1,22.2,23.3,24.4,25.5,26.6,
11542                              31.1,32.2,33.3,34.4,35.5,36.6,37.7,38.8,39.9,
11543                              41.1,42.2,43.3,44.4,45.5,46.6,47.7,48.8,49.9])
11544         arr2=DataArrayDouble(len(arr),2)
11545         arr2[:,0]=arr ; arr2[:,1]=arr+100
11546         f.setArray(arr2)
11547         f.checkCoherency()
11548         res=f.integral(False)
11549         # a=25./81 ; b=40./81 ; c=64./81
11550         # p1=0.11169079483905 ; p2=0.0549758718227661
11551         # 1st compo
11552         # 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
11553         # c1=(p2*(11.1+12.2+13.3)+p1*(14.4+15.5+16.6))*0.125/0.4999999999854482 ; c1=1.8014347172346943
11554         # c2=(p2*(21.1+22.2+23.3)+p1*(24.4+25.5+26.6))*0.125/0.4999999999854482 ; c2=3.0514347172346943
11555         # 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
11556         # 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
11557         # c0+c1+c2+c3+c4=27.104258323358287
11558         integExp0=27.104258323358287
11559         self.assertAlmostEqual(res[0],integExp0,13)
11560         # 2nd compo
11561         # 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
11562         # c1=(p2*(111.1+112.2+113.3)+p1*(114.4+115.5+116.6))*0.125/0.4999999999854482 ; c1=14.301434717234699
11563         # c2=(p2*(121.1+122.2+123.3)+p1*(124.4+125.5+126.6))*0.125/0.4999999999854482 ; c2=15.5514347172347
11564         # 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
11565         # 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
11566         # c0+c1+c2+c3+c4=127.10425832335835
11567         integExp1=127.10425832335835
11568         self.assertAlmostEqual(res[1],integExp1,12)
11569         meas=f.getDiscretization().getMeasureField(f.getMesh(),False)
11570         intPerTuple=meas*f
11571         res2=intPerTuple.accumulate()
11572         self.assertAlmostEqual(res2[0],integExp0,13)
11573         self.assertAlmostEqual(res2[1],integExp1,12)
11574         #
11575         meas2=f.buildMeasureField(False)
11576         intPerTuple=meas2*f
11577         res3=intPerTuple.accumulate()
11578         self.assertAlmostEqual(res3[0],integExp0,13)
11579         self.assertAlmostEqual(res3[1],integExp1,12)
11580         #
11581         res4=f.getWeightedAverageValue(False) # res4==res2 because sum of area of mesh is equal to 1
11582         self.assertAlmostEqual(res4[0],integExp0,13)
11583         self.assertAlmostEqual(res4[1],integExp1,12)
11584         #
11585         m.scale([0,0],2.)
11586         #
11587         res5=f.getWeightedAverageValue() # res4==res4 because weighted average is not sensitive to the scaling
11588         self.assertAlmostEqual(res5[0],integExp0,13)
11589         self.assertAlmostEqual(res5[1],integExp1,12)
11590         meas3=f.buildMeasureField(False)
11591         delta=4*meas2.getArray()-meas3.getArray()
11592         delta.abs()
11593         self.assertTrue(delta.isUniform(0.,1e-16))
11594         res6=f.integral(False)
11595         self.assertAlmostEqual(res6[0],4.*integExp0,12)
11596         self.assertAlmostEqual(res6[1],4.*integExp1,11)
11597         pass
11598
11599     def testSwig2SlowDADFindClosestTupleId(self):
11600         nbPts=[10,]
11601         for nbPt in nbPts:
11602             d=DataArrayDouble(nbPt) ; d.iota() ; d*=1./(nbPt-1)
11603             c=MEDCouplingCMesh() ; c.setCoords(d,d) ; m=c.buildUnstructured() ; pts=m.getCoords() ; del m
11604             #
11605             d0=DataArrayDouble((nbPt-1)*(nbPt-1)) ; d0.iota() ; d0*=(3./((nbPt-1)*(nbPt-1))) ; d0=d0.applyFunc("exp(x)-1")
11606             d1=DataArrayDouble((nbPt-1)*(nbPt-1)) ; d1.iota()
11607             d2=DataArrayDouble.Meld(d0,d1) ; d2=d2.fromPolarToCart() ; d2+=[0.32,0.73]
11608             ids=pts.findClosestTupleId(d2)
11609             #print "Start of costly computation"
11610             idsExpected=DataArrayInt(len(d2))
11611             tmp=1e300
11612             for i,elt in enumerate(d2):
11613                 l,m=(pts-elt).magnitude().getMinValue()
11614                 idsExpected.setIJSilent(i,0,m)
11615                 if l<tmp:
11616                     tmp=l ; tmp1=m ; tmp2=i
11617                     pass
11618                 pass
11619             #print "End of costly computation"
11620             self.assertTrue(idsExpected.isEqual(ids))
11621             a,b,c=pts.minimalDistanceTo(d2)
11622             self.assertEqual(tmp,a)
11623             self.assertEqual(tmp1,b)
11624             self.assertEqual(tmp2,c)
11625             #
11626             l=[d2[:,i] for i in [0,1]]
11627             for elt in l: elt.reverse()
11628             d2i=DataArrayDouble.Meld(l)
11629             ids1=pts.findClosestTupleId(d2i)
11630             idsExpectedI=idsExpected.deepCpy() ; idsExpectedI.reverse()
11631             self.assertTrue(idsExpectedI.isEqual(ids1))
11632             #
11633             l=[pts[:,i] for i in [0,1]]
11634             for elt in l: elt.reverse()
11635             ptsi=DataArrayDouble.Meld(l)
11636             ids2=ptsi.findClosestTupleId(d2)
11637             idsExpected2=nbPt*nbPt-1-ids
11638             self.assertTrue(idsExpected2.isEqual(ids2))
11639             #
11640             ids3=ptsi.findClosestTupleId(d2i)
11641             idsExpected3=idsExpected2.deepCpy() ; idsExpected3.reverse()
11642             self.assertTrue(idsExpected3.isEqual(ids3))
11643             pass
11644
11645     def testSwig2DataArrayAsciiChar1(self):
11646         alpha=DataArrayInt(26) ; alpha.iota(ord("A"))
11647         d=DataArrayAsciiChar(alpha.getValues(),2,13)
11648         d.setInfoOnComponents(["c%i"%(v) for v in xrange(13)])
11649         self.assertEqual('ABCDEFGHIJKLM',d.getTuple(0))
11650         self.assertEqual('NOPQRSTUVWXYZ',d.getTuple(1))
11651         self.assertEqual(2,d.getNumberOfTuples())
11652         self.assertEqual(26,d.getNbOfElems())
11653         self.assertEqual(13,d.getNumberOfComponents())
11654         dd=d.deepCpy()
11655         self.assertTrue(d.isEqual(dd))
11656         dd.setIJ(0,3,'d')
11657         self.assertTrue(not d.isEqual(dd))
11658         d.setIJ(0,3,ord('d'))
11659         self.assertTrue(d.isEqual(dd))
11660         d.rearrange(1)
11661         d.reserve(20)
11662         self.assertEqual(20,d.getNumberOfTuples())
11663         self.assertEqual(20,d.getNbOfElems())
11664         self.assertEqual(1,d.getNumberOfComponents())
11665         #
11666         d0=DataArrayAsciiChar([ord('a')],1,1)
11667         self.assertEqual('a',d0.asciiCharValue())
11668         self.assertTrue(not d0.empty())
11669         d0=DataArrayAsciiChar(0,3)
11670         self.assertTrue(d0.empty())
11671         d.pushBackSilent("U") ; d.pushBackSilent("V") ; d.pushBackSilent("W")
11672         self.assertEqual("W",d.popBackSilent())
11673         d.rearrange(2)
11674         self.assertEqual(['AB','Cd','EF','GH','IJ','KL','MN','OP','QR','ST','UV'],d.toStrList())
11675         d.fillWithZero()
11676         self.assertEqual(11*[''],d.toStrList())
11677         d.fillWithValue('T')
11678         self.assertEqual(11*["TT"],d.toStrList())
11679         d.rearrange(1)
11680         self.assertTrue(d.isUniform("T"))
11681         d.rearrange(2)
11682         #
11683         dd.rearrange(2)
11684         dd2=dd.deepCpy()
11685         dd.renumberInPlace([3,1,2,4,0,11,10,9,8,7,5,12,6])
11686         self.assertEqual(dd.toStrList(),['IJ','Cd','EF','AB','GH','UV','YZ','ST','QR','OP','MN','KL','WX'])
11687         dd.renumberInPlaceR([3,1,2,4,0,11,10,9,8,7,5,12,6])
11688         self.assertEqual(['AB','Cd','EF','GH','IJ','KL','MN','OP','QR','ST','UV','WX','YZ'],dd.toStrList())
11689         e=dd.renumber([3,1,2,4,0,11,10,9,8,7,5,12,6])
11690         self.assertEqual(e.toStrList(),['IJ','Cd','EF','AB','GH','UV','YZ','ST','QR','OP','MN','KL','WX'])
11691         e=dd.renumberR([3,1,2,4,0,11,10,9,8,7,5,12,6])
11692         self.assertEqual(e.toStrList(),['GH','Cd','EF','IJ','AB','WX','UV','ST','QR','OP','KL','YZ','MN'])
11693         e=dd.renumberAndReduce([1,1,1,1,1,1,1,2,0,0,0,0,0],3)
11694         self.assertEqual(['YZ','MN','OP'],e.toStrList())
11695         self.assertEqual(['GH','IJ'],dd.selectByTupleIdSafe([3,4]).toStrList())
11696         self.assertEqual(['AB','GH','MN','ST','YZ'],dd.selectByTupleId2(0,13,3).toStrList())
11697         dd3=dd.changeNbOfComponents(3,"G")
11698         self.assertEqual(['ABG','CdG','EFG','GHG','IJG','KLG','MNG','OPG','QRG','STG','UVG','WXG','YZG'],dd3.toStrList())
11699         dd3.rearrange(1) ; self.assertEqual("G",dd3.back()) ; dd3.rearrange(3)
11700         self.assertTrue(dd3.changeNbOfComponents(2,"\0").isEqual(dd))
11701         self.assertEqual(len(dd),13)
11702         d=DataArrayAsciiChar(13,2) ; d.fillWithValue('Y')
11703         dd3.meldWith(d)
11704         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','KLGYY','MNGYY','OPGYY','QRGYY','STGYY','UVGYY','WXGYY','YZGYY'],dd3.toStrList())
11705         self.assertEqual("d",dd3.getIJ(0,6))
11706         self.assertRaises(InterpKernelException,dd3.getIJSafe,0,6)
11707         self.assertEqual("d",dd3.getIJSafe(1,1))
11708         dd3.rearrange(1)
11709         e=dd3.getIdsEqual("Y")
11710         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])))
11711         e=dd3.getIdsNotEqual("Y")
11712         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])))
11713         self.assertEqual(("d",6),dd3.getMaxValue())
11714         self.assertEqual(("A",0),dd3.getMinValue())
11715         self.assertEqual(26,dd3.search("LGYYM"))
11716         self.assertEqual(-1,dd3.search("LGYYN"))
11717         dd3.rearrange(5)
11718         self.assertEqual(7,dd3.locateTuple("OPGYY"))
11719         self.assertTrue("OPGYY" in dd3)
11720         self.assertEqual(7,dd3.index("OPGYY"))
11721         self.assertEqual(-1,dd3.locateTuple("OPGYP"))
11722         dd3.rearrange(1)
11723         self.assertEqual(2,dd3.locateValue("OPGYY"))
11724         self.assertTrue(dd3.presenceOfValue("OPGYY"))
11725         self.assertTrue("O" in dd3)
11726         self.assertTrue(not dd3.presenceOfValue("z"))
11727         self.assertTrue("z" not in dd3)
11728         dd3.rearrange(5)
11729         l=list(dd3)
11730         self.assertEqual([e.buildDAAsciiChar().toStrList()[0] for e in list(dd3)],dd3.toStrList())
11731         dd3.reAlloc(5)
11732         dd4=DataArrayChar.Aggregate(dd3,dd3)
11733         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','IJGYY','ABGYY','CdGYY','EFGYY','GHGYY','IJGYY'],dd4.toStrList())
11734         dd5=DataArrayChar.Aggregate([dd4,dd3,dd4])
11735         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())
11736         # getitem,__iter__,__setitem__
11737         a=list(dd3)
11738         self.assertEqual("ABGYY",str(a[0]))
11739         dd4=dd3[::2]
11740         self.assertEqual(['ABGYY','EFGYY','IJGYY'],dd4.toStrList())
11741         dd4=dd3[(3,2,1)]
11742         self.assertEqual(['GHGYY','EFGYY','CdGYY'],dd4.toStrList())
11743         dd4=dd3[:]
11744         dd4[::2]=["12","345","67890"]
11745         self.assertEqual(['12   ','CdGYY','345  ','GHGYY','67890'],dd4.toStrList())
11746         dd4=dd3[:]
11747         dd4[[1,2]]=" "
11748         self.assertEqual(['ABGYY','     ','     ','GHGYY','IJGYY'],dd4.toStrList())
11749         dd4=dd3[:]
11750         dd4[4]='12345'
11751         self.assertEqual(['ABGYY','CdGYY','EFGYY','GHGYY','12345'],dd4.toStrList())
11752         dd4[0]=dd4[1]
11753         self.assertEqual(['CdGYY','CdGYY','EFGYY','GHGYY','12345'],dd4.toStrList())
11754         dd4=DataArrayAsciiChar(["abc","de","fghi"])
11755         self.assertEqual(['abc ','de  ','fghi'],dd4.toStrList())
11756         dd4=DataArrayAsciiChar(["abc","de","fghi"],"t")
11757         self.assertEqual(['abct','dett','fghi'],dd4.toStrList())
11758         pass
11759
11760     def testSwig2GaussNELocalizationOfDiscValues(self):
11761         m=MEDCouplingDataForTest.build2DTargetMesh_3()[[0,1,3,4,5,6,8,9]] # suppression of polygons
11762         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11763         f.setMesh(m)
11764         loc=f.getLocalizationOfDiscr()
11765         self.assertEqual(42,len(loc))
11766         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))
11767         m.changeSpaceDimension(3)
11768         m.getCoords()[:,2]=7.
11769         loc=f.getLocalizationOfDiscr()
11770         self.assertEqual(42,len(loc))
11771         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))
11772         pass
11773
11774     def testSwig2GaussMeasureAndIntegral(self):
11775         ft=MEDCouplingDataForTest.buildFieldOnGauss_1()
11776         mea=ft.buildMeasureField(False)
11777         mea.checkCoherency()
11778         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))
11779         f=MEDCouplingFieldDouble(ft)
11780         arr=DataArrayDouble(126,2)
11781         arr[:,0]=range(126)
11782         arr[:,1]=range(126)
11783         arr[:,1]+=1000
11784         f.setArray(arr)
11785         f.checkCoherency()
11786         self.assertTrue(DataArrayDouble(f.integral(False)).isEqual(DataArrayDouble([-211.66121638700983,-4863.9563007698835]),1e-11))
11787         self.assertTrue(DataArrayDouble(f.getWeightedAverageValue()).isEqual(DataArrayDouble([45.496085813113595,1045.496085813114]),1e-11))
11788         self.assertTrue(DataArrayDouble(f.normL1()).isEqual(DataArrayDouble([45.49608581311362,1045.496085813114]),1e-11))
11789         self.assertTrue(DataArrayDouble(f.normL2()).isEqual(DataArrayDouble([58.16846378340898,1046.1241521947334]),1e-11))
11790         pass
11791
11792     def testSwig2FieldDiscretizationComputeMeshRestrictionFromTupleIds1(self):
11793         m=MEDCouplingDataForTest.build3DSurfTargetMesh_1()
11794         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
11795         f.setMesh(m)
11796         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[3,4,5,6,8,9,10,14,15,16,17])
11797         self.assertTrue(a.isEqual(DataArrayInt([1,4])))
11798         self.assertTrue(b.isEqual(DataArrayInt([4,5,6,14,15,16,17])))
11799         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),DataArrayInt([0,1,2,3,5,7,8,9,10,11,12,18]))
11800         self.assertTrue(a.isEqual(DataArrayInt([0,2])))
11801         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,7,8,9])))
11802         #
11803         f=MEDCouplingFieldDouble(ON_CELLS)
11804         f.setMesh(m)
11805         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[3,4])
11806         self.assertTrue(a.isEqual(DataArrayInt([3,4])))
11807         self.assertTrue(b.isEqual(DataArrayInt([3,4])))
11808         #
11809         f=MEDCouplingFieldDouble(ON_NODES)
11810         f.setMesh(m)
11811         a,b=f.getDiscretization().computeMeshRestrictionFromTupleIds(f.getMesh(),[1,2,3,4])
11812         self.assertTrue(a.isEqual(DataArrayInt([1])))
11813         self.assertTrue(b.isEqual(DataArrayInt([1,2,4])))
11814         #
11815         f=MEDCouplingDataForTest.buildFieldOnGauss_1()
11816         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])
11817         self.assertTrue(a.isEqual(DataArrayInt([0,11,12,18,35])))
11818         self.assertTrue(b.isEqual(DataArrayInt([0,11,12,13,14,15,36,37,38,117,118,119,120,121,122,123,124,125])))
11819         #
11820         d=DataArrayInt([0,3,7,9,15,18])
11821         e=DataArrayInt([0,1,2,3,7,8,15,16,17])
11822         a,b=d.searchRangesInListOfIds(e)
11823         self.assertTrue(a.isEqual(DataArrayInt([0,2,4])))
11824         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,7,8,15,16,17])))
11825         pass
11826     
11827     def testSwig2BigMem(self):
11828         if MEDCouplingSizeOfVoidStar()==64:
11829             d=DataArrayAsciiChar(223456789,16)
11830             self.assertTrue(d.getNumberOfTuples(),223456789)
11831             self.assertTrue(d.getNumberOfComponents(),16)
11832             d.setIJ(223456788,5,"r")
11833             self.assertTrue(d.getIJ(223456788,5),'r')
11834             d[223456787]="1234567890123456"
11835             self.assertTrue(d[223456787],'1234567890123456')
11836             self.assertRaises(InterpKernelException,d.rearrange,1)# fails because it would lead to nb of tuples > 2147483647
11837             pass
11838         pass
11839
11840     def testSwig2DAReverseMultiCompo1(self):
11841         d=DataArrayDouble(6,2)
11842         d[:,0]=range(6)
11843         d[:,1]=range(10,16)
11844         d.reverse()
11845         self.assertTrue(d.isEqual(DataArrayDouble([5.,15.,4.,14.,3.,13.,2.,12.,1.,11.,0.,10.],6,2),1e-14))
11846         d=DataArrayDouble(7,2)
11847         d[:,0]=range(7)
11848         d[:,1]=range(10,17)
11849         d.reverse()
11850         self.assertTrue(d.isEqual(DataArrayDouble([6.,16.,5.,15.,4.,14.,3.,13.,2.,12.,1.,11.,0.,10.],7,2),1e-14))
11851         #
11852         d=DataArrayInt(6,2)
11853         d[:,0]=range(6)
11854         d[:,1]=range(10,16)
11855         d.reverse()
11856         self.assertTrue(d.isEqual(DataArrayInt([5,15,4,14,3,13,2,12,1,11,0,10],6,2)))
11857         d=DataArrayInt(7,2)
11858         d[:,0]=range(7)
11859         d[:,1]=range(10,17)
11860         d.reverse()
11861         self.assertTrue(d.isEqual(DataArrayInt([6,16,5,15,4,14,3,13,2,12,1,11,0,10],7,2)))
11862         pass
11863
11864     def testSwigDAPow1(self):
11865         d=DataArrayInt(10)
11866         d.iota(0)
11867         d1=d.deepCpy()
11868         d.setIJ(2,0,-2)
11869         self.assertTrue((d**2).isEqual(DataArrayInt([0,1,4,9,16,25,36,49,64,81])))
11870         self.assertTrue((d**3).isEqual(DataArrayInt([0,1,-8,27,64,125,216,343,512,729])))
11871         for elt in [d]:
11872             elt**=2
11873             pass
11874         self.assertTrue(d.isEqual(DataArrayInt([0,1,4,9,16,25,36,49,64,81])))
11875         self.assertTrue((d1[:4]**d1[:4]).isEqual(DataArrayInt([1,1,4,27])))
11876         self.assertTrue((3**d1[:4]).isEqual(DataArrayInt([1,3,9,27])))
11877         d2=d1[:4]
11878         d2**=d2
11879         self.assertTrue(d2.isEqual(DataArrayInt([1,1,4,27])))
11880         self.assertRaises(InterpKernelException,d2.__pow__,-1)#non supporting negative pow in DataArrayInt.__pow__
11881         self.assertRaises(InterpKernelException,d2.__ipow__,-1)#non supporting negative pow in DataArrayInt.__pow__
11882         #
11883         d=DataArrayDouble(10)
11884         d.iota(0)
11885         d1=d.deepCpy()
11886         d.setIJ(2,0,-2.)
11887         self.assertTrue((d**2).isEqual(DataArrayDouble([0,1,4,9,16,25,36,49,64,81]),1e-12))
11888         self.assertTrue((d**3).isEqual(DataArrayDouble([0,1,-8,27,64,125,216,343,512,729]),1e-12))
11889         self.assertRaises(InterpKernelException,d.__pow__,3.1)#3.1 is double not integer -> not supporting negative values in d
11890         for elt in [d]:
11891             elt**=2
11892             pass
11893         self.assertTrue(d.isEqual(DataArrayDouble([0,1,4,9,16,25,36,49,64,81]),1e-12))
11894         self.assertTrue((d1[:4]**d1[:4]).isEqual(DataArrayDouble([1,1,4,27]),1e-12))
11895         self.assertTrue((3**d1[:4]).isEqual(DataArrayDouble([1,3,9,27]),1e-12))
11896         d2=d1[:4]
11897         d2**=d2
11898         self.assertTrue(d2.isEqual(DataArrayDouble([1,1,4,27]),1e-12))
11899         d2**=-0.5
11900         self.assertTrue(d2.isEqual(DataArrayDouble([1,1,1./2,1./sqrt(27.)]),1e-14))
11901         d3=-1./d1[1:5]
11902         self.assertTrue((3**d3).isEqual(DataArrayDouble([0.3333333333333333,0.5773502691896257,0.6933612743506348,0.7598356856515925]),1e-14))
11903         d4=d3.deepCpy() ; d4.abs()
11904         self.assertTrue((d4**d3).isEqual(DataArrayDouble([1.,sqrt(2.),1.4422495703074083,sqrt(2.)]),1e-14))
11905         d4**=d3
11906         self.assertTrue(d4.isEqual(DataArrayDouble([1.,sqrt(2.),1.4422495703074083,sqrt(2.)]),1e-14))
11907         pass
11908     
11909     def testSwig2Baryenter3DForCellsWithVolumeZero1(self):
11910         coo=DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.],3,3)
11911         m2=MEDCouplingUMesh("mesh",2)
11912         m2.allocateCells(0)
11913         m2.insertNextCell(NORM_POLYGON,[0,1,2])
11914         m2.setCoords(coo)
11915         m2.checkCoherency1()
11916         #
11917         coo2=DataArrayDouble([0.,0.,0.,0.,0.,0.,0.,0.,2.],3,3)
11918         m1=MEDCouplingUMesh("mesh",1)
11919         m1.allocateCells(0)
11920         m1.insertNextCell(NORM_SEG2,[0,1])
11921         m1.insertNextCell(NORM_SEG2,[1,2])
11922         m1.setCoords(coo2)
11923         m1.checkCoherency1()
11924         #
11925         m3=m2.buildExtrudedMesh(m1,0)
11926         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
11927         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))
11928         m4,a,b,c,d=m3.buildDescendingConnectivity()
11929         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))
11930         pass
11931
11932     def testSwigRepr1(self):
11933         d=DataArrayDouble()
11934         self.assertTrue(len(d.__repr__())<120)
11935         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11936         for i in xrange(100):
11937             d.alloc(i,1) ; d.iota(1.1234567890123456) ; d*=1e123
11938             self.assertTrue(len(d.__repr__())<500)
11939             pass
11940         for i in xrange(50):
11941             d.alloc(i,2) ; d.rearrange(1) ; d.iota(1.1234567890123456) ; d.rearrange(2) ; d*=1e123
11942             self.assertTrue(len(d.__repr__())<500)
11943             pass
11944         d.alloc(4000,1) ; d.iota() ; self.assertTrue(len(d.__repr__())<500)
11945         for i in xrange(2,4):
11946             d.alloc(362880,1) ; d.iota() ; d.rearrange(i) ; self.assertTrue(len(d.__repr__())<500)
11947             pass
11948         d.alloc(0,9)
11949         self.assertTrue(len(d.__repr__())<120)
11950         #
11951         d=DataArrayInt()
11952         self.assertTrue(len(d.__repr__())<100)
11953         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11954         for i in xrange(100):
11955             d.alloc(i,1) ; d.iota(123456789)
11956             self.assertTrue(len(d.__repr__())<500)
11957             pass
11958         for i in xrange(50):
11959             d.alloc(i,2) ; d.rearrange(1) ; d.iota(123456789) ; d.rearrange(2)
11960             self.assertTrue(len(d.__repr__())<500)
11961             pass
11962         d.alloc(4000,1) ; d.iota() ; self.assertTrue(len(d.__repr__())<500)
11963         for i in xrange(2,10):
11964             d.alloc(362880,1) ; d.iota() ; d.rearrange(i) ; self.assertTrue(len(d.__repr__())<500)
11965             pass
11966         d.alloc(0,9)
11967         self.assertTrue(len(d.__repr__())<100)
11968         #
11969         d=DataArrayAsciiChar()
11970         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11971         d.alloc(2,16) ; d[:]='1234567890ABCDEF'
11972         self.assertTrue(len(d.__repr__())<500)
11973         d.alloc(2000,16) ; d[:]='1234567890ABCDEF'
11974         self.assertTrue(len(d.__repr__())<500)
11975         d.alloc(0,16) ; d[:]='1234567890ABCDEF'
11976         self.assertTrue(len(d.__repr__())<120)
11977         #
11978         d=DataArrayByte()
11979         self.assertTrue(len(d.__repr__())<100)
11980         d.alloc(1000,0) ; self.assertTrue(len(d.__repr__())<100)
11981         d.alloc(0,16) ; self.assertTrue(len(d.__repr__())<100)
11982         d.alloc(5,1) ; d.fillWithValue(127)
11983         self.assertTrue(len(d.__repr__())<200)
11984         d.alloc(1000,1) ; d.fillWithValue(127)
11985         self.assertTrue(len(d.__repr__())<500)
11986         d.alloc(1000,3) ; d.fillWithValue(127)
11987         self.assertTrue(len(d.__repr__())<500)
11988         pass
11989     
11990     def testSwig2MeshComputeIsoBarycenterOfNodesPerCell1(self):
11991         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)
11992         m=MEDCouplingUMesh.New("toto",3)
11993         m.allocateCells(0)
11994         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])
11995         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])
11996         m.setCoords(coo)
11997         m.checkCoherency1()
11998         #
11999         dReference=DataArrayDouble([(34.900130952189848,0.,200),(17.450065476094931,30.2244,200.)])
12000         self.assertTrue(m.computeIsoBarycenterOfNodesPerCell().isEqual(dReference,1e-12))
12001         m.getNodalConnectivity().setIJ(87,0,24)
12002         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12003         m.getNodalConnectivity().setIJ(87,0,-2)
12004         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12005         m.getNodalConnectivity().setIJ(87,0,21)# put again 21 as at the beginning
12006         #
12007         self.assertTrue(m.unPolyze())
12008         self.assertEqual([NORM_HEXGP12],m.getAllGeoTypes())
12009         self.assertTrue(m.computeIsoBarycenterOfNodesPerCell().isEqual(dReference,1e-12))
12010         m.getNodalConnectivity().setIJ(25,0,24)
12011         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12012         m.getNodalConnectivity().setIJ(25,0,-1)
12013         self.assertRaises(InterpKernelException,m.computeIsoBarycenterOfNodesPerCell)
12014         pass
12015
12016     def testSwig2NonRegressionBugDescHexa20(self):
12017         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)
12018         m=MEDCouplingUMesh('mesh',3)
12019         m.allocateCells(0)
12020         m.insertNextCell(NORM_HEXA20,[0,3,5,1,12,18,16,14,7,4,6,2,19,17,15,13,8,11,10,9])
12021         m.setCoords(coo)
12022         m.checkCoherency1()
12023         #
12024         a,b,c,d,e=m.buildDescendingConnectivity()
12025         m2=MEDCouplingUMesh('mesh',2)
12026         m2.allocateCells(0)
12027         m2.setCoords(coo)
12028         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]]
12029         for i in xrange(6):
12030             m2.insertNextCell(NORM_QUAD8,conn2[i])
12031             pass
12032         self.assertTrue(m2.isEqual(a,1e-12))
12033         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5])))
12034         self.assertTrue(c.isEqual(DataArrayInt([0,6])))
12035         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0])))
12036         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
12037         #
12038         m.convertQuadraticCellsToLinear() ; m.zipCoords()
12039         m.convertLinearCellsToQuadratic(1)
12040         #
12041         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)
12042         m3=MEDCouplingUMesh("mesh",3)
12043         m3.allocateCells(1)
12044         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])
12045         m3.setCoords(coo2)
12046         self.assertTrue(m3.isEqual(m,1e-12))
12047         #
12048         a,b,c,d,e=m.buildDescendingConnectivity()
12049         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]]
12050         m4=MEDCouplingUMesh("mesh",2)
12051         m4.allocateCells(0)
12052         for i in xrange(6):
12053             m4.insertNextCell(NORM_QUAD9,conn4[i])
12054             pass
12055         m4.setCoords(coo2)
12056         self.assertTrue(m4.isEqual(a,1e-12))
12057         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5])))
12058         self.assertTrue(c.isEqual(DataArrayInt([0,6])))
12059         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0])))
12060         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
12061         pass
12062     
12063     def testSwigAdvGauss(self):
12064         f=MEDCouplingFieldTemplate(ON_GAUSS_PT)
12065         f.setDiscretization(None)
12066         f.__repr__() ; f.__str__()
12067         #
12068         f=MEDCouplingFieldTemplate(ON_GAUSS_PT)
12069         d=f.getDiscretization()
12070         i=DataArrayInt() ; i.alloc(10,1) ; i.iota(1)
12071         d.setArrayOfDiscIds(i)
12072         f.__repr__() ; f.__str__()
12073         i2=d.getArrayOfDiscIds()
12074         self.assertEqual(i.__repr__(),i2.__repr__())
12075         #
12076         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12077         f.setDiscretization(None)
12078         f.__repr__() ; f.__str__()
12079         #
12080         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12081         d=f.getDiscretization()
12082         i=DataArrayInt() ; i.alloc(10,1) ; i.iota(1)
12083         d.setArrayOfDiscIds(i)
12084         f.__repr__() ; f.__str__()
12085         #
12086         gl=MEDCouplingGaussLocalization(NORM_SEG2,[0,1],[0.5],[1.])
12087         gl.setWeights([3.])
12088         gl.__repr__() ; gl.__str__()
12089         gl=MEDCouplingGaussLocalization(NORM_ERROR)
12090         gl.setWeights([3.])
12091         gl.__repr__() ; gl.__str__()
12092         pass
12093
12094     def testSwig2NonRegressionBugSubstractInPlaceDM(self):
12095         m0=MEDCouplingCMesh()
12096         arr=DataArrayDouble(5,1) ; arr.iota(0.)
12097         m0.setCoords(arr,arr)
12098         m0=m0.buildUnstructured()
12099         m00=m0[::2] ; m00.simplexize(0) ; m01=m0[1::2]
12100         m0=MEDCouplingUMesh.MergeUMeshes([m00,m01])
12101         m0.getCoords()[:]*=1/4.
12102         m0.setName("mesh")
12103         #
12104         NodeField=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; NodeField.setTime(5.6,5,6) ; NodeField.setMesh(m0)
12105         NodeField.setName("NodeField")
12106         NodeField.fillFromAnalytic(1,"exp(-((x-1)*(x-1)+(y-1)*(y-1)))") ; NodeField.getArray().setInfoOnComponent(0,"powernode [W]")
12107         proc0=m0.getCellsInBoundingBox([(0.,0.4),(0.,0.4)],1e-10)
12108         proc1=proc0.buildComplement(m0.getNumberOfCells())
12109         #
12110         NodeField0=NodeField[proc0] ; NodeField0.getMesh().setName(m0.getName())
12111         NodeField1=NodeField[proc1] ; NodeField1.getMesh().setName(m0.getName())
12112         #
12113         NodeField_read=MEDCouplingFieldDouble.MergeFields([NodeField0,NodeField1])
12114         NodeField_read.mergeNodes(1e-10)
12115         NodeFieldCpy=NodeField.deepCpy()
12116         NodeFieldCpy.mergeNodes(1e-10)
12117         NodeField.checkCoherency()
12118         self.assertTrue(not NodeField.getArray().isUniform(0.,1e-12))
12119         NodeField.substractInPlaceDM(NodeField_read,10,1e-12)
12120         self.assertTrue(NodeField.getArray().isUniform(0.,1e-12))
12121         pass
12122
12123     def testSwigFieldOperationOpen1(self):
12124         ## MEDCouplingFieldDouble.__add__
12125         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12126         f=MEDCouplingFieldDouble(ON_CELLS)
12127         f.setMesh(m)
12128         arr=DataArrayDouble(5,2)
12129         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12130         f2=f.clone(True)
12131         self.assertRaises(InterpKernelException,f.__add__,2)
12132         self.assertRaises(InterpKernelException,f.__add__,range(5))
12133         self.assertRaises(InterpKernelException,f.__add__,arr)
12134         self.assertRaises(InterpKernelException,f.__add__,f2)
12135         f.setArray(DataArrayDouble())
12136         self.assertRaises(InterpKernelException,f.__add__,2)
12137         self.assertRaises(InterpKernelException,f.__add__,range(5))
12138         self.assertRaises(InterpKernelException,f.__add__,arr)
12139         self.assertRaises(InterpKernelException,f.__add__,f2)
12140         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12141         f.getArray().alloc(5,2)
12142         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12143         ff=f+2
12144         ff.checkCoherency()
12145         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12146         ff=f+arr
12147         ff.checkCoherency()
12148         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12149         self.assertRaises(InterpKernelException,f.__add__,f2)
12150         f2.setArray(arr)
12151         ff=f+f2
12152         ff.checkCoherency()
12153         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12154         ff=f+[5,8]
12155         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(5,15),(6,16),(7,17),(8,18),(9,19)]),1e-12))
12156         ### MEDCouplingFieldDouble.__sub__
12157         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12158         f=MEDCouplingFieldDouble(ON_CELLS)
12159         f.setMesh(m)
12160         arr=DataArrayDouble(5,2)
12161         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12162         f2=f.clone(True)
12163         self.assertRaises(InterpKernelException,f.__sub__,2)
12164         self.assertRaises(InterpKernelException,f.__sub__,range(5))
12165         self.assertRaises(InterpKernelException,f.__sub__,arr)
12166         self.assertRaises(InterpKernelException,f.__sub__,f2)
12167         f.setArray(DataArrayDouble())
12168         self.assertRaises(InterpKernelException,f.__sub__,2)
12169         self.assertRaises(InterpKernelException,f.__sub__,range(5))
12170         self.assertRaises(InterpKernelException,f.__sub__,arr)
12171         self.assertRaises(InterpKernelException,f.__sub__,f2)
12172         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12173         f.getArray().alloc(5,2)
12174         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12175         ff=f-2
12176         ff.checkCoherency()
12177         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(-2,5),(-1,6),(0,7),(1,8),(2,9)]),1e-12))
12178         ff=f-arr
12179         ff.checkCoherency()
12180         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(0,6),(0,5),(0,4),(0,3)]),1e-12))
12181         self.assertRaises(InterpKernelException,f.__sub__,f2)
12182         f2.setArray(arr)
12183         ff=f-f2
12184         ff.checkCoherency()
12185         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(0,6),(0,5),(0,4),(0,3)]),1e-12))
12186         ff=f-[5,8]
12187         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(-5,-1),(-4,0),(-3,1),(-2,2),(-1,3)]),1e-12))
12188         ### MEDCouplingFieldDouble.__mul__
12189         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12190         f=MEDCouplingFieldDouble(ON_CELLS)
12191         f.setMesh(m)
12192         arr=DataArrayDouble(5,2)
12193         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12194         f2=f.clone(True)
12195         self.assertRaises(InterpKernelException,f.__mul__,2)
12196         self.assertRaises(InterpKernelException,f.__mul__,range(5))
12197         self.assertRaises(InterpKernelException,f.__mul__,arr)
12198         self.assertRaises(InterpKernelException,f.__mul__,f2)
12199         f.setArray(DataArrayDouble())
12200         self.assertRaises(InterpKernelException,f.__mul__,2)
12201         self.assertRaises(InterpKernelException,f.__mul__,range(5))
12202         self.assertRaises(InterpKernelException,f.__mul__,arr)
12203         self.assertRaises(InterpKernelException,f.__mul__,f2)
12204         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12205         f.getArray().alloc(5,2)
12206         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12207         ff=f*2
12208         ff.checkCoherency()
12209         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12210         ff=f*arr
12211         ff.checkCoherency()
12212         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12213         self.assertRaises(InterpKernelException,f.__mul__,f2)
12214         f2.setArray(arr)
12215         ff=f*f2
12216         ff.checkCoherency()
12217         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12218         ff=f*[5,8]
12219         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,56),(5,64),(10,72),(15,80),(20,88)]),1e-12))
12220         ### MEDCouplingFieldDouble.__div__
12221         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12222         f=MEDCouplingFieldDouble(ON_CELLS)
12223         f.setMesh(m)
12224         arr=DataArrayDouble(5,2)
12225         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12226         f2=f.clone(True)
12227         self.assertRaises(InterpKernelException,f.__div__,2)
12228         self.assertRaises(InterpKernelException,f.__div__,range(5))
12229         self.assertRaises(InterpKernelException,f.__div__,arr)
12230         self.assertRaises(InterpKernelException,f.__div__,f2)
12231         f.setArray(DataArrayDouble())
12232         self.assertRaises(InterpKernelException,f.__div__,2)
12233         self.assertRaises(InterpKernelException,f.__div__,range(5))
12234         self.assertRaises(InterpKernelException,f.__div__,arr)
12235         self.assertRaises(InterpKernelException,f.__div__,f2)
12236         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12237         f.getArray().alloc(5,2)
12238         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12239         self.assertRaises(InterpKernelException,f.__div__,0)
12240         ff=f/2
12241         ff.checkCoherency()
12242         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,4),(1,4.5),(1.5,5),(2,5.5)]),1e-12))
12243         ff=f/arr
12244         ff.checkCoherency()
12245         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))
12246         self.assertRaises(InterpKernelException,f.__div__,f2)
12247         f2.setArray(arr)
12248         ff=f/f2
12249         ff.checkCoherency()
12250         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))
12251         ff=f/[5,8]
12252         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))
12253         ### MEDCouplingFieldDouble.__pow__
12254         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12255         f=MEDCouplingFieldDouble(ON_CELLS)
12256         f.setMesh(m)
12257         arr=DataArrayDouble(5)
12258         arr[:]=[1,1,3,2,0]
12259         f2=f.clone(True)
12260         self.assertRaises(InterpKernelException,f.__div__,2)
12261         self.assertRaises(InterpKernelException,f.__div__,range(5))
12262         self.assertRaises(InterpKernelException,f.__div__,arr)
12263         self.assertRaises(InterpKernelException,f.__div__,f2)
12264         f.setArray(DataArrayDouble())
12265         self.assertRaises(InterpKernelException,f.__div__,2)
12266         self.assertRaises(InterpKernelException,f.__div__,range(5))
12267         self.assertRaises(InterpKernelException,f.__div__,arr)
12268         self.assertRaises(InterpKernelException,f.__div__,f2)
12269         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12270         f.getArray().alloc(5,1)
12271         f.getArray()[:]=range(2,7)
12272         ff=f**2
12273         ff.checkCoherency()
12274         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([4,9,16,25,36]),1e-12))
12275         ff=f**arr
12276         ff.checkCoherency()
12277         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([2,3,64,25,1]),1e-12))
12278         f2.setArray(arr)
12279         ff=f**f2
12280         ff.checkCoherency()
12281         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([2,3,64,25,1]),1e-12))
12282         ## MEDCouplingFieldDouble.__iadd__
12283         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12284         f=MEDCouplingFieldDouble(ON_CELLS)
12285         f.setMesh(m)
12286         arr=DataArrayDouble(5,2)
12287         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12288         f2=f.clone(True)
12289         self.assertRaises(InterpKernelException,f.__iadd__,2)
12290         self.assertRaises(InterpKernelException,f.__iadd__,range(5))
12291         self.assertRaises(InterpKernelException,f.__iadd__,arr)
12292         self.assertRaises(InterpKernelException,f.__iadd__,f2)
12293         f.setArray(DataArrayDouble())
12294         self.assertRaises(InterpKernelException,f.__iadd__,2)
12295         self.assertRaises(InterpKernelException,f.__iadd__,range(5))
12296         self.assertRaises(InterpKernelException,f.__iadd__,arr)
12297         self.assertRaises(InterpKernelException,f.__iadd__,f2)
12298         f.getArray().alloc(5,2)
12299         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12300         f.checkCoherency()
12301         f+=2
12302         f.checkCoherency()
12303         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12304         f+=arr
12305         f.checkCoherency()
12306         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(4,12),(6,15),(8,18),(10,21)]),1e-12))
12307         f2.setArray(arr)
12308         f+=f2
12309         f.checkCoherency()
12310         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(2,9),(5,14),(8,19),(11,24),(14,29)]),1e-12))
12311         f+=[0.1,0.2]
12312         f.checkCoherency()
12313         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))
12314         ## MEDCouplingFieldDouble.__isub__
12315         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12316         f=MEDCouplingFieldDouble(ON_CELLS)
12317         f.setMesh(m)
12318         arr=DataArrayDouble(5,2)
12319         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12320         f2=f.clone(True)
12321         self.assertRaises(InterpKernelException,f.__isub__,2)
12322         self.assertRaises(InterpKernelException,f.__isub__,range(5))
12323         self.assertRaises(InterpKernelException,f.__isub__,arr)
12324         self.assertRaises(InterpKernelException,f.__isub__,f2)
12325         f.setArray(DataArrayDouble())
12326         self.assertRaises(InterpKernelException,f.__isub__,2)
12327         self.assertRaises(InterpKernelException,f.__isub__,range(5))
12328         self.assertRaises(InterpKernelException,f.__isub__,arr)
12329         self.assertRaises(InterpKernelException,f.__isub__,f2)
12330         f.getArray().alloc(5,2)
12331         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12332         f.checkCoherency()
12333         f-=2
12334         f.checkCoherency()
12335         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-1,6),(0,7),(1,8),(2,9)]),1e-12))
12336         f-=arr
12337         f.checkCoherency()
12338         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-2,4),(-2,3),(-2,2),(-2,1)]),1e-12))
12339         f2.setArray(arr)
12340         f-=f2
12341         f.checkCoherency()
12342         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(-2,5),(-3,2),(-4,-1),(-5,-4),(-6,-7)]),1e-12))
12343         f-=[0.1,0.2]
12344         f.checkCoherency()
12345         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))
12346         ## MEDCouplingFieldDouble.__imul__
12347         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12348         f=MEDCouplingFieldDouble(ON_CELLS)
12349         f.setMesh(m)
12350         arr=DataArrayDouble(5,2)
12351         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12352         f2=f.clone(True)
12353         self.assertRaises(InterpKernelException,f.__imul__,2)
12354         self.assertRaises(InterpKernelException,f.__imul__,range(5))
12355         self.assertRaises(InterpKernelException,f.__imul__,arr)
12356         self.assertRaises(InterpKernelException,f.__imul__,f2)
12357         f.setArray(DataArrayDouble())
12358         self.assertRaises(InterpKernelException,f.__imul__,2)
12359         self.assertRaises(InterpKernelException,f.__imul__,range(5))
12360         self.assertRaises(InterpKernelException,f.__imul__,arr)
12361         self.assertRaises(InterpKernelException,f.__imul__,f2)
12362         f.getArray().alloc(5,2)
12363         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12364         f.checkCoherency()
12365         f*=2
12366         f.checkCoherency()
12367         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12368         f*=arr
12369         f.checkCoherency()
12370         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0),(2,32),(8,72),(18,120),(32,176)]),1e-12))
12371         f2.setArray(arr)
12372         f*=f2
12373         f.checkCoherency()
12374         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,0),(2,64),(16,288),(54,720),(128,1408)]),1e-12))
12375         f*=[0.1,0.2]
12376         f.checkCoherency()
12377         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))
12378         ## MEDCouplingFieldDouble.__idiv__
12379         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12380         f=MEDCouplingFieldDouble(ON_CELLS)
12381         f.setMesh(m)
12382         arr=DataArrayDouble(5,2)
12383         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12384         f2=f.clone(True)
12385         self.assertRaises(InterpKernelException,f.__idiv__,2)
12386         self.assertRaises(InterpKernelException,f.__idiv__,range(5))
12387         self.assertRaises(InterpKernelException,f.__idiv__,arr)
12388         self.assertRaises(InterpKernelException,f.__idiv__,f2)
12389         f.setArray(DataArrayDouble())
12390         self.assertRaises(InterpKernelException,f.__idiv__,2)
12391         self.assertRaises(InterpKernelException,f.__idiv__,range(5))
12392         self.assertRaises(InterpKernelException,f.__idiv__,arr)
12393         self.assertRaises(InterpKernelException,f.__idiv__,f2)
12394         f.getArray().alloc(5,2)
12395         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12396         f.checkCoherency()
12397         f/=2
12398         f.checkCoherency()
12399         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,3.5),(0.5,4),(1,4.5),(1.5,5),(2,5.5)]),1e-12))
12400         f/=arr
12401         f.checkCoherency()
12402         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))
12403         f2.setArray(arr)
12404         f/=f2
12405         f.checkCoherency()
12406         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))
12407         f/=[0.1,0.2]
12408         f.checkCoherency()
12409         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))
12410         ## MEDCouplingFieldDouble.__ipow__
12411         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12412         f=MEDCouplingFieldDouble(ON_CELLS)
12413         f.setMesh(m)
12414         arr=DataArrayDouble(5,2)
12415         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12416         f2=f.clone(True)
12417         self.assertRaises(InterpKernelException,f.__ipow__,2)
12418         self.assertRaises(InterpKernelException,f.__ipow__,range(5))
12419         self.assertRaises(InterpKernelException,f.__ipow__,arr)
12420         self.assertRaises(InterpKernelException,f.__ipow__,f2)
12421         f.setArray(DataArrayDouble())
12422         self.assertRaises(InterpKernelException,f.__ipow__,2)
12423         self.assertRaises(InterpKernelException,f.__ipow__,range(5))
12424         self.assertRaises(InterpKernelException,f.__ipow__,arr)
12425         self.assertRaises(InterpKernelException,f.__ipow__,f2)
12426         f.getArray().alloc(5,2)
12427         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12428         f.checkCoherency()
12429         f**=2
12430         f.checkCoherency()
12431         self.assertTrue(f.getArray().isEqual(DataArrayDouble([(0,49),(1,64),(4,81),(9,100),(16,121)]),1e-12))
12432          ## MEDCouplingFieldDouble.__radd__
12433         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12434         f=MEDCouplingFieldDouble(ON_CELLS)
12435         f.setMesh(m)
12436         arr=DataArrayDouble(5,2)
12437         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12438         f2=f.clone(True)
12439         self.assertRaises(InterpKernelException,f.__radd__,2)
12440         self.assertRaises(InterpKernelException,f.__radd__,range(5))
12441         self.assertRaises(InterpKernelException,f.__radd__,arr)
12442         self.assertRaises(InterpKernelException,f.__radd__,f2)
12443         f.setArray(DataArrayDouble())
12444         self.assertRaises(InterpKernelException,f.__radd__,2)
12445         self.assertRaises(InterpKernelException,f.__radd__,range(5))
12446         self.assertRaises(InterpKernelException,f.__radd__,arr)
12447         self.assertRaises(InterpKernelException,f.__radd__,f2)
12448         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12449         f.getArray().alloc(5,2)
12450         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12451         ff=2+f
12452         ff.checkCoherency()
12453         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,9),(3,10),(4,11),(5,12),(6,13)]),1e-12))
12454         ff=arr+f
12455         ff.checkCoherency()
12456         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,7),(2,10),(4,13),(6,16),(8,19)]),1e-12))
12457         self.assertRaises(InterpKernelException,f.__radd__,f2)
12458         ff=[5,8]+f
12459         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(5,15),(6,16),(7,17),(8,18),(9,19)]),1e-12))
12460         ### MEDCouplingFieldDouble.__rsub__
12461         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12462         f=MEDCouplingFieldDouble(ON_CELLS)
12463         f.setMesh(m)
12464         arr=DataArrayDouble(5,2)
12465         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12466         f2=f.clone(True)
12467         self.assertRaises(InterpKernelException,f.__rsub__,2)
12468         self.assertRaises(InterpKernelException,f.__rsub__,range(5))
12469         self.assertRaises(InterpKernelException,f.__rsub__,arr)
12470         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12471         f.setArray(DataArrayDouble())
12472         self.assertRaises(InterpKernelException,f.__rsub__,2)
12473         self.assertRaises(InterpKernelException,f.__rsub__,range(5))
12474         self.assertRaises(InterpKernelException,f.__rsub__,arr)
12475         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12476         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12477         f.getArray().alloc(5,2)
12478         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12479         ff=2-f
12480         ff.checkCoherency()
12481         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(2,-5),(1,-6),(0,-7),(-1,-8),(-2,-9)]),1e-12))
12482         ff=arr-f
12483         ff.checkCoherency()
12484         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,-7),(0,-6),(0,-5),(0,-4),(0,-3)]),1e-12))
12485         self.assertRaises(InterpKernelException,f.__rsub__,f2)
12486         ### MEDCouplingFieldDouble.__rmul__
12487         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12488         f=MEDCouplingFieldDouble(ON_CELLS)
12489         f.setMesh(m)
12490         arr=DataArrayDouble(5,2)
12491         arr[:,0]=range(5) ; arr[:,1]=2*arr[:,0]
12492         f2=f.clone(True)
12493         self.assertRaises(InterpKernelException,f.__rmul__,2)
12494         self.assertRaises(InterpKernelException,f.__rmul__,range(5))
12495         self.assertRaises(InterpKernelException,f.__rmul__,arr)
12496         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12497         f.setArray(DataArrayDouble())
12498         self.assertRaises(InterpKernelException,f.__rmul__,2)
12499         self.assertRaises(InterpKernelException,f.__rmul__,range(5))
12500         self.assertRaises(InterpKernelException,f.__rmul__,arr)
12501         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12502         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12503         f.getArray().alloc(5,2)
12504         f.getArray()[:,0]=range(5) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12505         ff=2*f
12506         ff.checkCoherency()
12507         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,14),(2,16),(4,18),(6,20),(8,22)]),1e-12))
12508         ff=arr*f
12509         ff.checkCoherency()
12510         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,0),(1,16),(4,36),(9,60),(16,88)]),1e-12))
12511         self.assertRaises(InterpKernelException,f.__rmul__,f2)
12512         ff=f*[5,8]
12513         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(0,56),(5,64),(10,72),(15,80),(20,88)]),1e-12))
12514         ### MEDCouplingFieldDouble.__rdiv__
12515         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12516         f=MEDCouplingFieldDouble(ON_CELLS)
12517         f.setMesh(m)
12518         arr=DataArrayDouble(5,2)
12519         arr[:,0]=range(1,6) ; arr[:,1]=2*arr[:,0]
12520         f2=f.clone(True)
12521         self.assertRaises(InterpKernelException,f.__rdiv__,2)
12522         self.assertRaises(InterpKernelException,f.__rdiv__,range(5))
12523         self.assertRaises(InterpKernelException,f.__rdiv__,arr)
12524         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12525         f.setArray(DataArrayDouble())
12526         self.assertRaises(InterpKernelException,f.__rdiv__,2)
12527         self.assertRaises(InterpKernelException,f.__rdiv__,range(5))
12528         self.assertRaises(InterpKernelException,f.__rdiv__,arr)
12529         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12530         self.assertRaises(InterpKernelException,f.__getitem__,(slice(None),0))
12531         f.getArray().alloc(5,2)
12532         f.getArray()[:,0]=range(1,6) ; f.getArray()[:,1]=f.getArray()[:,0]+7
12533         ff=2/f
12534         ff.checkCoherency()
12535         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))
12536         ff=arr/f
12537         ff.checkCoherency()
12538         self.assertTrue(ff.getArray().isEqual(DataArrayDouble([(1,0.25),(1,0.44444444444444442),(1,0.59999999999999998),(1,0.72727272727272729),(1,0.83333333333333337)]),1e-12))
12539         self.assertRaises(InterpKernelException,f.__rdiv__,f2)
12540         pass
12541     
12542     def testSwig2FieldDoubleBuildSubPartRange1(self):
12543         #ON_CELLS
12544         m=MEDCouplingDataForTest.build2DTargetMesh_1()
12545         f=MEDCouplingFieldDouble(ON_CELLS)
12546         f.setMesh(m)
12547         arr=DataArrayDouble(5,2) ; arr[:,0]=range(7,12) ; arr[:,1]=100+arr[:,0]
12548         f.setArray(arr)
12549         f.checkCoherency()
12550         ff=f[1:-1:2]
12551         ff.checkCoherency()
12552         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12553         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12554         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12555         self.assertTrue(ff.getArray().isEqual(arr[[1,3]],1e-12))
12556         #
12557         a,b=f.buildSubMeshDataRange(2,5,1)
12558         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12559         self.assertEqual(b,slice(2,5,1))
12560         ff=f[2:]
12561         ff.checkCoherency()
12562         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12563         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12564         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12565         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4]],1e-12))
12566         #
12567         ff=f[-2:0:-1]
12568         ff.checkCoherency()
12569         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12570         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12571         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12572         self.assertTrue(ff.getArray().isEqual(arr[[3,2,1]],1e-12))
12573         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[3,2,1],1],1e-12))
12574         #ON_NODES
12575         f=MEDCouplingFieldDouble(ON_NODES)
12576         f.setMesh(m)
12577         arr=DataArrayDouble(9,2) ; arr[:,0]=range(7,16) ; arr[:,1]=100+arr[:,0]
12578         f.setArray(arr)
12579         f.checkCoherency()
12580         ff=f[1:-1:2]
12581         ff.checkCoherency()
12582         self.assertTrue((m.buildPartOfMySelf([1,3],False)).isEqual(ff.getMesh(),1e-12))
12583         self.assertTrue(6,ff.getMesh().getNumberOfNodes())
12584         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12585         self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,6,7]],1e-12))
12586         #
12587         m2=m.buildPartRange(2,5,1)
12588         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(m2,1e-12))
12589         m2,b=m.buildPartRangeAndReduceNodes(2,5,1)
12590         self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(m2,1e-12))
12591         self.assertTrue(b.isEqual(DataArrayInt([-1,-1,0,1,2,3,4,5,6])))
12592         a,b=f.buildSubMeshDataRange(2,5,1)
12593         self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(a,1e-12))
12594         self.assertTrue(b.isEqual(DataArrayInt([2,3,4,5,6,7,8])))
12595         ff=f[2:]
12596         ff.checkCoherency()
12597         self.assertTrue((m.buildPartOfMySelf([2,3,4],False)).isEqual(ff.getMesh(),1e-12))
12598         self.assertTrue(7,ff.getMesh().getNumberOfNodes())
12599         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12600         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,6,7,8]],1e-12))
12601         #
12602         ff=f[-2:0:-1]
12603         ff.checkCoherency()
12604         self.assertTrue((m.buildPartOfMySelf([3,2,1],False)).isEqual(ff.getMesh(),1e-12))
12605         self.assertTrue(7,ff.getMesh().getNumberOfNodes())
12606         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12607         self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,5,6,7]],1e-12))
12608         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[1,2,3,4,5,6,7],1],1e-12))
12609         #ON_GAUSS_NE
12610         f=MEDCouplingFieldDouble(ON_GAUSS_NE)
12611         f.setMesh(m)
12612         arr=DataArrayDouble(18,2) ; arr[:,0]=range(7,25) ; arr[:,1]=100+arr[:,0]
12613         f.setArray(arr)
12614         f.checkCoherency()
12615         ff=f[1:-1:2]
12616         ff.checkCoherency()
12617         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12618         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12619         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12620         self.assertTrue(ff.getArray().isEqual(arr[[4,5,6,10,11,12,13]],1e-12))
12621         #
12622         a,b=f.buildSubMeshDataRange(2,5,1)
12623         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12624         self.assertEqual(b,slice(7,18,1))
12625         ff=f[2:]
12626         ff.checkCoherency()
12627         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12628         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12629         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12630         self.assertTrue(ff.getArray().isEqual(arr[[7,8,9,10,11,12,13,14,15,16,17]],1e-12))
12631         #
12632         ff=f[-2:0:-1]
12633         ff.checkCoherency()
12634         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12635         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12636         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12637         self.assertTrue(ff.getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6]],1e-12))
12638         self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6],1],1e-12))
12639         #ON_GAUSS_PT
12640         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
12641         f.setMesh(m)
12642         f.setGaussLocalizationOnCells([0,4],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2],[0.2,0.8]);
12643         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]);
12644         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]);
12645         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]);
12646         arr=DataArrayDouble(16,2) ; arr[:,0]=range(7,23) ; arr[:,1]=100+arr[:,0]
12647         f.setArray(arr)
12648         f.checkCoherency()
12649         ff=f[1:-1:2]
12650         ff.checkCoherency()
12651         self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
12652         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12653         self.assertTrue(2,ff.getMesh().getNumberOfCells())
12654         self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,11,12,13]],1e-12))
12655         #
12656         a,b=f.buildSubMeshDataRange(2,5,1)
12657         self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
12658         self.assertEqual(b,slice(6,16,1))
12659         ff=f[2:]
12660         ff.checkCoherency()
12661         self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
12662         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12663         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12664         self.assertTrue(ff.getArray().isEqual(arr[[6,7,8,9,10,11,12,13,14,15]],1e-12))
12665         #
12666         ff=f[-2:0:-1]
12667         ff.checkCoherency()
12668         self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
12669         self.assertTrue(9,ff.getMesh().getNumberOfNodes())
12670         self.assertTrue(3,ff.getMesh().getNumberOfCells())
12671         self.assertTrue(ff.getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5]],1e-12))
12672         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))
12673         pass
12674
12675     def testSwig2FieldDoubleApplyFuncBug1(self):
12676         f=MEDCouplingFieldDouble(ON_CELLS)
12677         f.setMesh(MEDCouplingDataForTest.build2DTargetMesh_1())
12678         f.applyFunc(3,700.)
12679         f.checkCoherency()
12680         self.assertEqual(3,f.getArray().getNumberOfComponents())
12681         f.getArray().rearrange(1)
12682         self.assertTrue(f.getArray().isUniform(700.,1e-10))
12683         f.getArray().rearrange(3)
12684         f.checkCoherency()
12685         f.applyFunc(4,800.)
12686         f.checkCoherency()
12687         self.assertEqual(4,f.getArray().getNumberOfComponents())
12688         f.getArray().rearrange(1)
12689         self.assertTrue(f.getArray().isUniform(800.,1e-10))
12690         f.getArray().rearrange(4)
12691         f.checkCoherency()
12692         pass
12693
12694     def testSwig2ComputeTupleIdsNearTupleBug1(self):
12695         coords=[1.1,0.0, 1.1,0.0 ];
12696         coordsArr=DataArrayDouble(coords,2,2);
12697         mesh=MEDCouplingUMesh();
12698         mesh.setCoords(coordsArr);
12699         points=[1.1, 0.002]
12700         c,cI=mesh.getNodeIdsNearPoints(points,0.00185);
12701         self.assertTrue(c.isEqual(DataArrayInt([])))
12702         self.assertTrue(cI.isEqual(DataArrayInt([0,0])))
12703         c,cI=mesh.getNodeIdsNearPoints(points,0.00200000000000001);
12704         self.assertTrue(c.isEqual(DataArrayInt([0,1])))
12705         self.assertTrue(cI.isEqual(DataArrayInt([0,2])))
12706         pass
12707
12708     def testSwig2NonRegressionBugChangeUnderlyingWithZeroCells(self):
12709         coords1=[0.,1.,2.,3.]
12710         coords2=[2.,1.,0.,3.] #0 <==> #2
12711         # mesh 1
12712         mesh1=MEDCouplingUMesh.New();
12713         coordsArr=DataArrayDouble.New(coords1,4,1);
12714         mesh1.setCoords(coordsArr);
12715         mesh1.setMeshDimension(0);
12716         mesh1.allocateCells(0);
12717         mesh1.finishInsertingCells();
12718         # mesh 2
12719         mesh2=mesh1.deepCpy();
12720         coordsArr=DataArrayDouble.New(coords2,4,1);
12721         mesh2.setCoords(coordsArr);
12722         field = mesh1.fillFromAnalytic(ON_NODES,1,"x")
12723         field.checkCoherency()
12724         levOfCheck = 10
12725         field.changeUnderlyingMesh( mesh2, levOfCheck, 1e-13, 0 )
12726         self.assertTrue( field.getArray().getValues() == coords2 )
12727         pass
12728
12729     def testSwig2UMeshDistanceToMesh2(self):
12730         sz=5
12731         m=MEDCouplingCMesh()
12732         arr=DataArrayDouble(sz+1) ; arr.iota() ; arr/=sz
12733         m.setCoords(arr,arr,arr)
12734         m=m.buildUnstructured()
12735         m1=m.computeSkin()
12736         m1.zipCoords()
12737         c=m1.getCoords()[:]
12738         d=2*(c-[0.5,0.5,0.5])+[0.5,0.5,0.5]
12739         time_deb = datetime.now()
12740         #print "go.."
12741         a,b=m1.distanceToPoints(d)
12742         #print 'time spent in distanceToPoints %s ' %str(datetime.now() - time_deb)
12743         time_deb = datetime.now()
12744         a1=DataArrayDouble(len(d))
12745         b1=DataArrayInt(len(d))
12746         m1s=[m1[i] for i in xrange(m1.getNumberOfCells())]
12747         for j,pt in enumerate(d):
12748             eter=1e308
12749             fter=-1
12750             for i,miter in enumerate(m1s):
12751                 e,f=miter.distanceToPoint(pt)
12752                 self.assertEqual(0,f)
12753                 if e<eter:
12754                     eter=e ; fter=i
12755                     pass
12756                 pass
12757             a1[j]=eter
12758             b1[j]=fter
12759             pass
12760         #print 'time spent in naive distanceToPoints  %s ' %str(datetime.now() - time_deb)
12761         self.assertTrue(a.isEqual(a1,1e-12))
12762         self.assertTrue(b.isEqual(b1))
12763         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))
12764         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])))
12765         pass
12766
12767     def testSwig2NonRegressionBugDistance1(self):
12768         pt=DataArrayDouble([(8.8452994616207476,3.1547005383792515,3.1547005383792515)])
12769         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)])
12770         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])
12771         m=MEDCouplingUMesh("mesh",2)
12772         m.setCoords(coo)
12773         m.allocateCells()
12774         for i in xrange(24):
12775             m.insertNextCell(NORM_QUAD4,conn[4*i:4*i+4])
12776             pass
12777         m.checkCoherency2()
12778         m0=m[3] ; m0.zipCoords()
12779         expectedDist=0.8452994616207476
12780         a,b=m0.distanceToPoint(pt)
12781         self.assertAlmostEqual(expectedDist,a,14)
12782         self.assertEqual(0,b)
12783         #
12784         a,b=m.distanceToPoint(pt)
12785         self.assertAlmostEqual(expectedDist,a,14)
12786         self.assertEqual(3,b)
12787         #
12788         fd=MEDCouplingFieldDiscretization.New(ON_CELLS)
12789         self.assertEqual(24,fd.getNumberOfTuples(m))
12790         fd=MEDCouplingFieldDiscretization.New(ON_NODES)
12791         self.assertEqual(26,fd.getNumberOfTuples(m))
12792         pass
12793
12794     def testSwig2AreaBarySeg3Quad8Tri6QPolyg(self):
12795         #QUAD8 representing a circle of center zeBary and radius zeRadius
12796         zeBary=[5,6]
12797         zeRadius=3
12798         d=DataArrayDouble(8,2)
12799         d[:,0]=zeRadius
12800         d[:,1]=[87,-100,-170,110,5,-130,175,95] # angle in degree
12801         d[:,1]*=pi/180. # angle in radian
12802         d=d.fromPolarToCart()
12803         d+=zeBary
12804         m=MEDCouplingUMesh("quad8",2) ; m.allocateCells() ; m.insertNextCell(NORM_QUAD8,range(8)) ; m.setCoords(d)
12805         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12806         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12807         tri32D=m.buildDescendingConnectivity()[0][0] ; tri32D.zipCoords()
12808         # spaceDim=3 QUAD8 becomes QUAD4 ... for the moment
12809         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12810         m2=m.deepCpy()
12811         m2.convertQuadraticCellsToLinear()
12812         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12813         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12814         #TRI6 representing a circle of center zeBary and radius zeRadius
12815         zeBary=[5,6]
12816         zeRadius=3
12817         d=DataArrayDouble(6,2)
12818         d[:,0]=zeRadius
12819         d[:,1]=[87,-100,110,5,175,95] # angle in degree
12820         d[:,1]*=pi/180. # angle in radian
12821         d=d.fromPolarToCart()
12822         d+=zeBary
12823         m=MEDCouplingUMesh("tri6",2) ; m.allocateCells() ; m.insertNextCell(NORM_TRI6,range(6)) ; m.setCoords(d)
12824         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12825         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12826         # spaceDim=3 TRI6 becomes TRI3 ... for the moment
12827         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12828         m2=m.deepCpy()
12829         m2.convertQuadraticCellsToLinear()
12830         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12831         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12832         # QPOLYG representing a circle of center zeBary and radius zeRadius
12833         zeBary=[5,6]
12834         zeRadius=3
12835         d=DataArrayDouble(10,2)
12836         d[:,0]=zeRadius
12837         d[:,1]=[87,-80,-100,-170,110,5,-90,-130,175,95] # angle in degree
12838         d[:,1]*=pi/180. # angle in radian
12839         d=d.fromPolarToCart()
12840         d+=zeBary
12841         m=MEDCouplingUMesh("qpolyg",2) ; m.allocateCells() ; m.insertNextCell(NORM_QPOLYG,range(10)) ; m.setCoords(d)
12842         self.assertTrue(m.getBarycenterAndOwner().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
12843         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
12844         # spaceDim=3 QPOLYG becomes POLYG ... for the moment
12845         m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
12846         m2=m.deepCpy()
12847         m2.convertQuadraticCellsToLinear() ; m2.checkCoherency2()
12848         self.assertTrue(m2.getAllGeoTypes()==[NORM_POLYGON] and m2.getNodalConnectivity().getValues()==[5,0,1,2,3,4])
12849         self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
12850         self.assertTrue(m.getBarycenterAndOwner().isEqual(m2.getBarycenterAndOwner(),1e-13))
12851         # TRI3
12852         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),(87+100)*pi/180*zeRadius,13)
12853         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)
12854         self.assertTrue(tri32D.getBarycenterAndOwner().isEqual(exp,1e-12))
12855         # spaceDim=3 TRI3 becomes TRI2 ... for the moment
12856         tri32D.changeSpaceDimension(3)
12857         tri2=tri32D.deepCpy() ; tri2.convertQuadraticCellsToLinear()
12858         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),float(tri2.getMeasureField(False).getArray()),13)
12859         self.assertTrue(tri32D.getBarycenterAndOwner().isEqual(tri2.getBarycenterAndOwner(),1e-12))
12860         tri32D.changeSpaceDimension(1)
12861         self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),-0.67795240172962323,12)
12862         pass
12863
12864     # this bug 5/6/2013 is swig specific
12865     def testSwigNonRegressionBugRotate3D1(self):
12866         m=MEDCouplingUMesh.New()
12867         dataArray=DataArrayDouble.New(100,3)
12868         dataArray[:]=0.
12869         dataArray[0]=[0.,1,3]
12870         m.setCoords(dataArray[0])
12871         m1=m.deepCpy()
12872         m.rotate([0.,0.,3.],[1.,0.,0.],0.5*pi)
12873         self.assertTrue(m.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
12874         #
12875         d1=DataArrayDouble([0.,0.,3.],1,3) ; d2=DataArrayDouble([1.,0.,0.],1,3)
12876         pts=[[0.,0.,3.],[(0.,0.,3.)],DataArrayDouble([0.,0.,3.],1,3),list(d1)[0]]
12877         vec=[[1.,0.,0.],[(1.,0.,0.)],DataArrayDouble([1.,0.,0.],1,3),list(d2)[0]]
12878         for p in pts:
12879             for v in vec:
12880                 m2=m1.deepCpy()
12881                 m2.rotate(p,v,0.5*pi)
12882                 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
12883                 pass
12884         pass
12885
12886     def testSwig2DataArrayCount1(self):
12887         d=DataArrayInt([])
12888         self.assertEqual(0,d.getNumberOfTuples())
12889         self.assertEqual(1,d.getNumberOfComponents())
12890         self.assertEqual(0,d.count(0))
12891         self.assertEqual(0,d.count(1))
12892         self.assertEqual(0,d.count(-1))
12893         d=DataArrayInt([2,1,-2,-3,2,0,0,7,2,-2,3,0])
12894         self.assertEqual(12,d.getNumberOfTuples())
12895         self.assertEqual(1,d.getNumberOfComponents())
12896         self.assertEqual(3,d.count(0))
12897         self.assertEqual(1,d.count(1))
12898         self.assertEqual(0,d.count(-1))
12899         self.assertEqual(2,d.count(-2))
12900         self.assertEqual(3,d.count(2))
12901         e=d.getDifferentValues()
12902         f=DataArrayInt()
12903         for it in e:
12904             f.pushBackSilent(d.count(int(it)))
12905             pass
12906         self.assertEqual(12,f.accumulate()[0])
12907         #
12908         eps=1e-12
12909         d=DataArrayDouble([])
12910         self.assertEqual(0,d.getNumberOfTuples())
12911         self.assertEqual(1,d.getNumberOfComponents())
12912         self.assertEqual(0,d.count(0,eps))
12913         self.assertEqual(0,d.count(1,eps))
12914         self.assertEqual(0,d.count(-1,eps))
12915         d=DataArrayDouble([2,1,-2,-3,2,0,eps/10,7,2+eps/10,-2,3,0])
12916         self.assertEqual(12,d.getNumberOfTuples())
12917         self.assertEqual(1,d.getNumberOfComponents())
12918         self.assertEqual(3,d.count(0,eps))
12919         self.assertEqual(1,d.count(1,eps))
12920         self.assertEqual(0,d.count(-1,eps))
12921         self.assertEqual(2,d.count(-2,eps))
12922         self.assertEqual(3,d.count(2,eps))
12923         self.assertEqual(3,d.count(2,eps))
12924         self.assertEqual(2,d.count(2,eps/100))
12925         e=d.getDifferentValues(eps)
12926         f=DataArrayInt()
12927         for it in e:
12928             f.pushBackSilent(d.count(float(it),eps))
12929             pass
12930         self.assertEqual(12,f.accumulate()[0])
12931         pass
12932
12933     def testSwig2DataArrayGetSlice1(self):
12934         s=slice(2,18,1)
12935         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),16)
12936         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),16)
12937         self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,1))
12938         self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,1))
12939         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,1))
12940         self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,1))
12941         #
12942         s=slice(2,18,2)
12943         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),8)
12944         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),8)
12945         self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,2))
12946         self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,2))
12947         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,2))
12948         self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,2))
12949         #
12950         s=slice(1,18,1)
12951         self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,1))
12952         self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,1))
12953         self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,1))
12954         self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,1))# 18 not 17
12955         #
12956         s=slice(1,18,2)
12957         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
12958         self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),9)
12959         self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,2))
12960         self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,2))
12961         self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,2))
12962         self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,2))# 18 not 17
12963         #
12964         s=slice(18,2,-1)
12965         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
12966         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
12967         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
12968         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-1))
12969         #
12970         s=slice(18,2,-2)
12971         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
12972         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
12973         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
12974         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-2))
12975         #
12976         s=slice(18,1,-1)
12977         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
12978         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
12979         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
12980         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-1))# 1 not 2
12981         #
12982         s=slice(18,1,-2)
12983         self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
12984         self.assertRaises(InterpKernelException,DataArray.GetNumberOfItemGivenBES,s)
12985         self.assertEqual(sum([DataArray.GetNumberOfItemGivenBESRelative(DataArray.GetSlice(s,i,4)) for i in xrange(4)]),DataArray.GetNumberOfItemGivenBESRelative(s))
12986         self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
12987         self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
12988         self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
12989         self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-2))# 1 not 2
12990         self.assertRaises(InterpKernelException,DataArray.GetSlice,slice(0,None,2),0,4)
12991         #
12992         d=DataArrayInt.Range(0,18,1)
12993         s=slice(2,None,1)
12994         self.assertEqual(d.getNumberOfItemGivenBES(s),16)
12995         self.assertEqual(d.getNumberOfItemGivenBESRelative(s),16)
12996         self.assertEqual(d.getSlice(s,0,4),slice(2,6,1))
12997         self.assertEqual(d.getSlice(s,1,4),slice(6,10,1))
12998         self.assertEqual(d.getSlice(s,2,4),slice(10,14,1))
12999         self.assertEqual(d.getSlice(s,3,4),slice(14,18,1))
13000         #
13001         d=DataArrayInt.Range(0,18,1)
13002         s=slice(2,-2,1)
13003         self.assertEqual(d.getSlice(s,0,4),slice(2,5,1))
13004         self.assertEqual(d.getSlice(s,1,4),slice(5,8,1))
13005         self.assertEqual(d.getSlice(s,2,4),slice(8,11,1))
13006         self.assertEqual(d.getSlice(s,3,4),slice(11,16,1))
13007         #
13008         d=DataArrayInt.Range(0,18,1)
13009         s=slice(None,None,1)
13010         self.assertEqual(d.getSlice(s,0,4),slice(0,4,1))
13011         self.assertEqual(d.getSlice(s,1,4),slice(4,8,1))
13012         self.assertEqual(d.getSlice(s,2,4),slice(8,12,1))
13013         self.assertEqual(d.getSlice(s,3,4),slice(12,18,1))
13014         #
13015         d=DataArrayInt.Range(0,18,1)
13016         s=slice(None,2,-2)
13017         self.assertRaises(InterpKernelException,d.getNumberOfItemGivenBES,s)
13018         self.assertEqual(d.getNumberOfItemGivenBESRelative(s),8)
13019         self.assertEqual(d.getSlice(s,0,4),slice(17,13,-2))
13020         self.assertEqual(d.getSlice(s,1,4),slice(13,9,-2))
13021         self.assertEqual(d.getSlice(s,2,4),slice(9,5,-2))
13022         self.assertEqual(d.getSlice(s,3,4),slice(5,2,-2))
13023         pass
13024
13025     def testSwig2AccumulatePerChunk1(self):
13026         arr=DataArrayDouble(11) ; arr.iota()
13027         m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
13028         m=m.buildUnstructured()
13029         m0=m[::2] ; ids0=m0.simplexize(0) ; m1=m[1::2]
13030         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m0,m1) ; m.setName("mesh")
13031         m.checkConsecutiveCellTypesForMEDFileFrmt()
13032         #
13033         formula="7-sqrt((x-5.)*(x-5.)+(y-5.)*(y-5.))"
13034         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
13035         f.fillFromAnalytic(1,formula)
13036         f.setName("Field1") ; f.setTime(1.1,1,-1)
13037         f.checkCoherency()
13038         #
13039         arr=f.getArray()
13040         arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr
13041         arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr ; arr2[:,1]=2*arr
13042         f.setArray(arr2)
13043         f.checkCoherency()
13044         # here the compact code to obviously put field on cell to nodes
13045         rn,rni=f.getMesh().getReverseNodalConnectivity()
13046         arr2=f.getArray()[rn]
13047         arr4=arr2.accumulatePerChunck(rni)
13048         nbOfCellsSharingNodes=rni.deltaShiftIndex()
13049         arr4/=nbOfCellsSharingNodes.convertToDblArr()
13050         #
13051         maxNbCSN=nbOfCellsSharingNodes.getMaxValue()[0]
13052         arr3=DataArrayDouble(f.getMesh().getNumberOfNodes(),f.getArray().getNumberOfComponents()) ; arr3[:]=0.
13053         for i in xrange(1,maxNbCSN+1):
13054             ids=nbOfCellsSharingNodes.getIdsEqual(i)
13055             if len(ids)==0:
13056                 continue
13057             for j in range(i):
13058                 rni2=rni[ids] ; rni2+=j
13059                 arr3[ids]+=arr2[rni2]
13060                 pass
13061             arr3[ids]/=i
13062             pass
13063         fNode=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; fNode.setMesh(m)
13064         fNode.setName("Field1Node") ; fNode.setTime(1.1,1,-1)
13065         fNode.setArray(arr3) ; fNode.checkCoherency()
13066         self.assertTrue(arr3.isEqual(arr4,1e-12))
13067         #
13068         d=DataArrayInt.Range(0,20,1)
13069         self.assertTrue(d.accumulatePerChunck([2,4,12]).isEqual(DataArrayInt([5,60])))
13070         #
13071         a=DataArrayDouble(12) ; a.iota() ; a.rearrange(3)
13072         b=DataArrayDouble(12) ; b.iota(20) ; b.rearrange(3)
13073         ids=DataArrayInt([])
13074         self.assertEqual(len(a[ids]),0)
13075         self.assertEqual(len(b[ids]),0)
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         a2=a.deepCpy() ;  a2[ids]/=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13079         a2=a.deepCpy() ;  a2[ids]-=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
13080         pass
13081
13082     def testSwig2CheckAndPreparePermutation1(self):
13083         a=DataArrayInt([10003,9999999,5,67])
13084         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([2,3,0,1])))
13085         a=DataArrayInt([10003,-9999999,5,67])
13086         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([3,0,1,2])))
13087         a=DataArrayInt([])
13088         self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([])))
13089         a=DataArrayInt([])
13090         a.iota();
13091         self.assertTrue(a.isEqual(DataArrayInt([])))
13092         pass
13093
13094     def testSwig21SGTUMesh1(self):
13095         m=MEDCoupling1GTUMesh.New("m",NORM_PENTA6)
13096         m.__repr__() ; m.__str__()
13097         self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh))
13098         m.setCoords(DataArrayDouble(20,3))
13099         m.allocateCells()
13100         m.__repr__() ; m.__str__()
13101         m.insertNextCell([0,1,2,5,7,2])
13102         self.assertEqual(1,m.getNumberOfCells())
13103         self.assertTrue(DataArrayInt([6]).isEqual(m.computeNbOfNodesPerCell()))
13104         self.assertTrue(DataArrayInt([5]).isEqual(m.computeNbOfFacesPerCell()))
13105         m.__repr__() ; m.__str__()
13106         m.checkCoherency()
13107         m.checkCoherency2()
13108         #
13109         cm=MEDCouplingCMesh() ; cm.setName("m")
13110         arr0=DataArrayDouble(6) ; arr0.iota()
13111         arr1=DataArrayDouble([0,1])
13112         cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured()
13113         #
13114         m=MEDCoupling1SGTUMesh("m",NORM_QUAD4)
13115         mem_m=m.getHeapMemorySize()
13116         m.allocateCells(5)
13117         self.assertIn(m.getHeapMemorySize()-mem_m,xrange(5*4*4,5*4*4+32))
13118         self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
13119         m.setCoords(um.getCoords())
13120         m.insertNextCell([1,0,6,7])
13121         self.assertEqual(1,m.getNumberOfCells())
13122         m.insertNextCell([2,1,7,8])
13123         m.insertNextCell([3,2,8,9])
13124         m.insertNextCell([4,3,9,10])
13125         m.insertNextCell([5,4,10,11])
13126         self.assertEqual(5,m.getNumberOfCells())
13127         self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7])
13128         self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7,1,2])
13129         self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
13130         f=m.getMeasureField(ON_CELLS)
13131         self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
13132         self.assertTrue(f.getArray().isUniform(1,1e-14))
13133         self.assertEqual(m.getType(),10)
13134         self.assertEqual(m.getCellModelEnum(),NORM_QUAD4)
13135         mo=MEDCoupling1SGTUMesh("m",NORM_QUAD4) ; mo.setCoords(m.getCoords())
13136         mo.setNodalConnectivity(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11]))
13137         self.assertTrue(m.isEqual(mo,1e-12))
13138         #
13139         mo2=MEDCoupling1SGTUMesh.Merge1SGTUMeshesOnSameCoords([m[[0,1]],m[[2]],m[[3,4]]])
13140         mo2.setName(m.getName())
13141         self.assertTrue(m.isEqual(mo2,1e-12))
13142         #
13143         mp0=m[[0]] ; mp0.zipCoords() ; mp1=m[2] ; mp1.zipCoords() ; mp2=m[4] ; mp2.zipCoords()
13144         mo3=MEDCoupling1SGTUMesh.Merge1SGTUMeshes([mp0,mp1,mp2])
13145         self.assertTrue(isinstance(mo3,MEDCoupling1SGTUMesh))
13146         mo3.setName(m.getName())
13147         m_ref=m[(0,2,4)] ; m_ref.zipCoords()
13148         m_ref.tryToShareSameCoordsPermute(mo3,1e-12)
13149         self.assertTrue(m_ref.isEqual(mo3,1e-12))
13150         #
13151         m1=um.buildDescendingConnectivity()[0]
13152         ids=m1.getCellIdsFullyIncludedInNodeIds(DataArrayInt.Range(0,12,1))
13153         m1=m1[ids]
13154         m1c=m1.convertIntoSingleGeoTypeMesh()
13155         self.assertTrue(isinstance(m1c,MEDCoupling1SGTUMesh))
13156         self.assertEqual(m1c.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13157         m1c.checkCoherency2()
13158         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])))
13159         self.assertEqual(20,m1c.getNodalConnectivityLength())
13160         self.assertTrue(m.isEqual(m1c,1e-12))
13161         m.getNodalConnectivity().setIJ(1,0,1)
13162         self.assertTrue(not m.isEqual(m1c,1e-12))
13163         m.getNodalConnectivity().setIJ(1,0,0)
13164         self.assertTrue(m.isEqual(m1c,1e-12))
13165         m1c.setCoords(m.getCoords().deepCpy())
13166         self.assertTrue(m.isEqual(m1c,1e-12))
13167         m1c.getCoords().setIJ(0,1,0.1)
13168         self.assertTrue(not m.isEqual(m1c,1e-12))
13169         m1c.getCoords().setIJ(0,1,0)
13170         self.assertTrue(m.isEqual(m1c,1e-12))
13171         m1c.getCoords().setInfoOnComponent(1,"X")
13172         self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13173         m.getCoords().setInfoOnComponent(1,"X")
13174         self.assertTrue(m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13175         m.setName("m2")
13176         self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
13177         #
13178         m.checkCoherency() ; m.checkCoherency1() ; m.checkCoherency2()
13179         self.assertEqual(m.getMeshDimension(),2)
13180         self.assertTrue(m.giveCellsWithType(NORM_QUAD4).isEqual(DataArrayInt([0,1,2,3,4])))
13181         self.assertTrue(m.giveCellsWithType(NORM_TRI3).isEqual(DataArrayInt([])))
13182         self.assertEqual(m.getNumberOfCellsWithType(NORM_QUAD4),5)
13183         self.assertEqual(m.getNumberOfCellsWithType(NORM_TRI3),0)
13184         self.assertEqual(m.getTypeOfCell(3),NORM_QUAD4)
13185         self.assertRaises(InterpKernelException,m.getTypeOfCell,5)
13186         self.assertEqual(m.getAllGeoTypes(),[NORM_QUAD4])
13187         self.assertEqual(m.getDistributionOfTypes(),[[NORM_QUAD4,5,-1]])
13188         ##
13189         pfl1=DataArrayInt([1,3,4])
13190         a,b,c=m.splitProfilePerType(pfl1)
13191         d,e,f=m.buildUnstructured().splitProfilePerType(pfl1)
13192         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())
13193         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
13194         #
13195         pfl2=DataArrayInt([0,1,2,3])
13196         a,b,c=m.splitProfilePerType(pfl2)
13197         d,e,f=m.buildUnstructured().splitProfilePerType(pfl2)
13198         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())
13199         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
13200         #
13201         pfl3=DataArrayInt([0,1,2,3,4])
13202         a,b,c=m.splitProfilePerType(pfl3)
13203         d,e,f=m.buildUnstructured().splitProfilePerType(pfl3)
13204         self.assertTrue(a==[[4,5,-1]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3,4])) and c==[])
13205         self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and c==[])
13206         #
13207         invalidPfl=DataArrayInt([1,2,3,4,5])
13208         self.assertRaises(InterpKernelException,m.splitProfilePerType,invalidPfl)
13209         self.assertRaises(InterpKernelException,m.buildUnstructured().splitProfilePerType,invalidPfl)
13210         ##
13211         pfl1=DataArrayInt([1,2,3])
13212         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
13213         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
13214         self.assertTrue(a.isEqual(b) and pfl1.getHiddenCppPointer(),a.getHiddenCppPointer())
13215         #
13216         pfl2=DataArrayInt([0,1,2,3])
13217         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
13218         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
13219         self.assertTrue(a.isEqual(b) and pfl2.getHiddenCppPointer()==a.getHiddenCppPointer())
13220         #
13221         pfl3=DataArrayInt([0,1,2,3,4])
13222         a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl3])
13223         b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,5,0],[pfl3])
13224         self.assertTrue(a.isEqual(b) and pfl3.getHiddenCppPointer()==a.getHiddenCppPointer())
13225         #
13226         invalidPfl=DataArrayInt([1,2,3,4,5])
13227         self.assertRaises(InterpKernelException,m.checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
13228         self.assertRaises(InterpKernelException,m.buildUnstructured().checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
13229         ##
13230         self.assertTrue(DataArrayInt([4,4,4,4,4]).isEqual(m.computeNbOfNodesPerCell()))
13231         ##
13232         self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8])
13233         ##
13234         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))
13235         ##
13236         ref=m.getCoords().getHiddenCppPointer()
13237         mcpy=m.deepCpy() ; mcpy.insertNextCell([1,0,6,7])
13238         c=m.getNodalConnectivity().deepCpy()
13239         o2n=DataArrayInt([2,0,1,4,3])
13240         m.renumberCells(o2n,False)
13241         c.rearrange(4) ; c.renumberInPlace(o2n) ; c.rearrange(1)
13242         self.assertTrue(c.isEqual(m.getNodalConnectivity()))
13243         self.assertEqual(ref,m.getCoords().getHiddenCppPointer())
13244         m2=mcpy.mergeMyselfWith(m)
13245         self.assertTrue(isinstance(m2,MEDCoupling1SGTUMesh))
13246         self.assertEqual(11,m2.getNumberOfCells())
13247         self.assertEqual(48,m2.getNumberOfNodes())
13248         self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.Aggregate([m.getCoords(),m.getCoords()]),1e-12))
13249         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])))
13250         ##
13251         mu=m.buildUnstructured()
13252         mu.checkCoherency2()
13253         self.assertEqual(mu.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13254         self.assertEqual(2,mu.getMeshDimension())
13255         self.assertEqual([NORM_QUAD4],mu.getAllGeoTypes())
13256         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])))
13257         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25])))
13258         ##
13259         for typ in [0,1]:
13260             mcpy2=m.deepCpy() ; umcpy2=mcpy2.buildUnstructured()
13261             ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
13262             self.assertTrue(ids.isEqual(ids2))
13263             mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
13264             self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
13265             pass
13266         um1=um.convertIntoSingleGeoTypeMesh()
13267         self.assertEqual(8,um1.getNumberOfNodesPerCell())
13268         for typ in [PLANAR_FACE_5,PLANAR_FACE_6]:
13269             mcpy2=um1.deepCpy() ; umcpy2=mcpy2.buildUnstructured()
13270             ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
13271             self.assertTrue(ids.isEqual(ids2))
13272             mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
13273             self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
13274             pass
13275         ##
13276         self.assertRaises(InterpKernelException,mcpy.mergeMyselfWithOnSameCoords,m)
13277         mcpy.tryToShareSameCoords(m,1e-14)
13278         m3=mcpy.mergeMyselfWithOnSameCoords(m)
13279         self.assertTrue(isinstance(m3,MEDCoupling1SGTUMesh))
13280         self.assertEqual(11,m3.getNumberOfCells())
13281         self.assertEqual(24,m3.getNumberOfNodes())
13282         self.assertEqual(m3.getCoords().getHiddenCppPointer(),mcpy.getCoords().getHiddenCppPointer())
13283         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])))
13284         ##
13285         ref=mcpy.getCoords().deepCpy()
13286         c3=mcpy.getNodalConnectivity()[:]
13287         mcpy.getNodalConnectivity().setIJ(int(c3.getIdsEqual(11)),0,24)
13288         c2=DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()[11:]])
13289         mcpy.setCoords(c2)
13290         mcpy.checkCoherency2()
13291         a,b=mcpy.getNodeIdsInUse()
13292         self.assertEqual(12,b)
13293         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])))
13294         ids=mcpy.zipCoordsTraducer()
13295         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])))
13296         self.assertTrue(mcpy.getCoords().isEqual(ref[:12],1e-12))
13297         self.assertTrue(mcpy.getNodalConnectivity().isEqual(c3))
13298         mcpy.checkCoherency2()
13299         ##
13300         m4=mcpy[DataArrayInt([0,3,4])]
13301         m5=mcpy.buildPartOfMySelfKeepCoords(DataArrayInt([0,3,4]))
13302         self.assertTrue(isinstance(m4,MEDCoupling1SGTUMesh))
13303         self.assertTrue(m4.isEqual(m5,-1e-14))# < 0 not a bug it proves that coordinates pointer are equal
13304         self.assertTrue(m4.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,4,3,9,10,5,4,10,11])))
13305         m6=mcpy[::2]
13306         self.assertTrue(isinstance(m6,MEDCoupling1SGTUMesh))
13307         self.assertTrue(m6.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,3,2,8,9,5,4,10,11])))
13308         ##
13309         mcpy.setCoords(DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()]))
13310         mcpy.checkCoherency2()
13311         ##
13312         mcppy=mcpy.deepCpyConnectivityOnly()
13313         self.assertTrue(mcppy.isEqual(mcpy,1e-12))
13314         self.assertTrue(mcppy.getCoords().getHiddenCppPointer()==mcpy.getCoords().getHiddenCppPointer())
13315         self.assertTrue(mcppy.getNodalConnectivity().isEqual(mcpy.getNodalConnectivity()))
13316         self.assertTrue(mcppy.getNodalConnectivity().getHiddenCppPointer()!=mcpy.getNodalConnectivity().getHiddenCppPointer())
13317         ##
13318         a,b=mcpy.getReverseNodalConnectivity()
13319         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])))
13320         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])))
13321         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],False).isEqual(DataArrayInt([0,1,5])))
13322         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,5])))
13323         self.assertTrue(mcpy.getCellsInBoundingBox([(0,1),(0,1),(0,1)],1e-12).isEqual(DataArrayInt([0,1,5])))
13324         f=mcpy.buildOrthogonalField()
13325         self.assertEqual(f.getMesh().getHiddenCppPointer(),mcpy.getHiddenCppPointer())
13326         self.assertTrue(f.getArray().isEqual(DataArrayDouble(6*[(0,0,-1)]),1e-12))
13327         mcpy.changeSpaceDimension(2)
13328         self.assertEqual(1,mcpy.getCellContainingPoint([1.5,0.5],1e-12))
13329         ##
13330         self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([0,1,5])))
13331         ##
13332         mcpy2=mcpy.deepCpy()
13333         self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
13334         mcpy.checkFastEquivalWith(mcpy2,1e-12)
13335         mcpy2.renumberCells([0,2,4,3,1,5])
13336         mcpy.checkFastEquivalWith(mcpy2,1e-12)
13337         self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
13338         mcpy2.renumberCells([0,2,4,3,1,5])
13339         mcpy2.renumberCells([1,3,5,0,2,4])
13340         self.assertRaises(InterpKernelException,mcpy.checkFastEquivalWith,mcpy2,1e-12)
13341         self.assertRaises(InterpKernelException,mcpy.checkGeoEquivalWith,mcpy2,1,1e-12)#fast equal
13342         pass
13343
13344     def testSwig21DGTUMesh1(self):
13345         a0=DataArrayInt([0,2,3,5,6,8])
13346         a1=DataArrayInt([0,4,7,11,14,18,21,25])
13347         a2=DataArrayInt([0,1,4,5])
13348         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])))
13349         self.assertEqual(a1[3:].front(),11)
13350         self.assertEqual(a1[4:].convertToDblArr().front(),14.)
13351         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])
13352         d,e=MEDCouplingUMesh.ExtractFromIndexedArrays2(1,5,2,a1c,a1)
13353         self.assertTrue(d.isEqual(DataArrayInt([8,11,0,1,5,2])))
13354         self.assertTrue(e.isEqual(DataArrayInt([0,3,6])))
13355         #
13356         m=MEDCouplingDataForTest.build2DTargetMesh_1()[0,3,4]
13357         ref=DataArrayInt([0,3,4,1,6,7,4,3,7,8,5,4])
13358         self.assertTrue(m.convertNodalConnectivityToStaticGeoTypeMesh().isEqual(ref))
13359         d,e=m.convertNodalConnectivityToDynamicGeoTypeMesh()
13360         self.assertTrue(d.isEqual(ref))
13361         self.assertTrue(e.isEqual(DataArrayInt.Range(0,13,4)))
13362         self.assertTrue(m.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([1,2])))
13363         #
13364         m=MEDCoupling1GTUMesh.New("m",NORM_POLYHED)
13365         self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh))
13366         m.__repr__() ; m.__str__()
13367         m.setCoords(DataArrayDouble(20,3))
13368         m.allocateCells()
13369         m.__repr__() ; m.__str__()
13370         m.insertNextCell([0,1,2,5,7,2,-1,1,3])
13371         self.assertEqual(1,m.getNumberOfCells())
13372         self.assertTrue(DataArrayInt([8]).isEqual(m.computeNbOfNodesPerCell()))
13373         self.assertTrue(DataArrayInt([2]).isEqual(m.computeNbOfFacesPerCell()))
13374         m.__repr__() ; m.__str__()
13375         m.checkCoherency()
13376         m.checkCoherency2()
13377         #
13378         cm=MEDCouplingCMesh() ; cm.setName("m")
13379         arr0=DataArrayDouble(6) ; arr0.iota()
13380         arr1=DataArrayDouble([0,1])
13381         cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured() ; um.convertAllToPoly()
13382         um2=um.deepCpyConnectivityOnly()
13383         self.assertTrue(um2.isEqual(um,1e-12))
13384         self.assertEqual(um2.getCoords().getHiddenCppPointer(),um.getCoords().getHiddenCppPointer())
13385         self.assertTrue(um2.getNodalConnectivity().isEqual(um.getNodalConnectivity()))
13386         self.assertTrue(um2.getNodalConnectivity().getHiddenCppPointer()!=um.getNodalConnectivity().getHiddenCppPointer())
13387         self.assertTrue(um2.getNodalConnectivityIndex().isEqual(um.getNodalConnectivityIndex()))
13388         self.assertTrue(um2.getNodalConnectivityIndex().getHiddenCppPointer()!=um.getNodalConnectivityIndex().getHiddenCppPointer())
13389         #
13390         self.assertRaises(InterpKernelException,MEDCoupling1SGTUMesh.New,"m",NORM_POLYHED)
13391         m=MEDCoupling1DGTUMesh("m",NORM_POLYHED)
13392         m.allocateCells(5)
13393         self.assertEqual(15,m.getNodalConnectivity().getNbOfElemAllocated())
13394         self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
13395         m.setCoords(um.getCoords())
13396         m.insertNextCell([1,0,6,7,-1,7,6,1])
13397         self.assertEqual(1,m.getNumberOfCells())
13398         m.insertNextCell([2,1,7,8,-1,2,1,-1,8,-1,7])
13399         m.insertNextCell([3,2,8,9])
13400         m.insertNextCell([4,3,9,10,-1,5,3,9])
13401         m.insertNextCell([5,4,10,11,-1,11,10,-1,5])
13402         m.checkCoherency()
13403         m.checkCoherency2()
13404         self.assertEqual(5,m.getNumberOfCells())
13405         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40])))
13406         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])))
13407         #
13408         m4=m.deepCpy()
13409         self.assertTrue(m.isEqual(m4,1e-12))
13410         m4.getNodalConnectivity().setIJ(2,0,5)
13411         self.assertTrue(not m.isEqual(m4,1e-12))
13412         m4.getNodalConnectivity().setIJ(2,0,6)
13413         self.assertTrue(m.isEqual(m4,1e-12))
13414         m4.getNodalConnectivityIndex().setIJ(2,0,21)
13415         self.assertTrue(not m.isEqual(m4,1e-12))
13416         m4.getNodalConnectivityIndex().setIJ(2,0,19)
13417         self.assertTrue(m.isEqual(m4,1e-12))
13418         m4.getCoords().setIJ(10,1,1.1)
13419         self.assertTrue(not m.isEqual(m4,1e-12))
13420         m4.getCoords().setIJ(10,1,1.)
13421         self.assertTrue(m.isEqual(m4,1e-12))
13422         m4.getNodalConnectivity().pushBackSilent(7)
13423         self.assertTrue(not m.isEqual(m4,1e-12))
13424         self.assertEqual(7,m4.getNodalConnectivity().popBackSilent())
13425         self.assertTrue(m.isEqual(m4,1e-12))
13426         m4.setName("m4")
13427         self.assertTrue(not m.isEqual(m4,1e-12))
13428         m4.setName("m")
13429         self.assertTrue(m.isEqual(m4,1e-12))
13430         #
13431         self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
13432         self.assertEqual(60,m.getNodalConnectivity().getNbOfElemAllocated())
13433         self.assertTrue(m.computeNbOfNodesPerCell().isEqual(DataArrayInt([7,8,4,7,7])))
13434         self.assertTrue(m.computeNbOfFacesPerCell().isEqual(DataArrayInt([2,4,1,2,3])))
13435         self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8,-1,2,1,-1,8,-1,7])
13436         f=m.computeIsoBarycenterOfNodesPerCell()
13437         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))
13438         mu0=m.buildUnstructured()
13439         o2n=[1,2,0,4,3]
13440         m2=m.deepCpy()
13441         m3=m.deepCpyConnectivityOnly()
13442         self.assertTrue(m3.isEqual(m,1e-12))
13443         self.assertEqual(m3.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
13444         self.assertTrue(m3.getNodalConnectivity().getHiddenCppPointer()!=m.getNodalConnectivity().getHiddenCppPointer())
13445         self.assertTrue(m3.getNodalConnectivity().isEqual(m.getNodalConnectivity()))
13446         self.assertTrue(m3.getNodalConnectivityIndex().getHiddenCppPointer()!=m.getNodalConnectivityIndex().getHiddenCppPointer())
13447         self.assertTrue(m3.getNodalConnectivityIndex().isEqual(m.getNodalConnectivityIndex()))
13448         m.renumberCells(o2n)
13449         mu0.renumberCells(o2n)
13450         self.assertTrue(mu0.isEqual(m.buildUnstructured(),1e-12))
13451         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,23,32,40])))
13452         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])))
13453         #
13454         mcpy0=m.buildUnstructured()
13455         self.assertTrue(isinstance(mcpy0,MEDCouplingUMesh))
13456         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])))
13457         self.assertTrue(mcpy0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,14,26,36,45])))
13458         self.assertEqual(mcpy0.getAllGeoTypes(),[NORM_POLYHED])
13459         mcpy0.checkCoherency()
13460         mcpy0.checkCoherency2()
13461         mcpy1=mcpy0.convertIntoSingleGeoTypeMesh()
13462         self.assertTrue(mcpy1.isEqual(m,1e-12))
13463         #
13464         m_mrg=MEDCoupling1DGTUMesh.Merge1DGTUMeshes([m2,m,m2])
13465         self.assertTrue(m_mrg.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
13466         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])))
13467         m_mrg2=MEDCoupling1DGTUMesh.Merge1DGTUMeshesOnSameCoords([m3,m,m3])
13468         self.assertTrue(m_mrg2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
13469         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])))
13470         a,b=m_mrg2.getReverseNodalConnectivity()
13471         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])))
13472         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])))
13473         self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([7],False).isEqual(DataArrayInt([0,1,6,7,10,11])))
13474         self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,6,10])))
13475         #
13476         self.assertTrue(m_mrg2.isPacked())
13477         self.assertEqual(120,m_mrg2.getNodalConnectivityIndex().popBackSilent())
13478         self.assertEqual(m_mrg2.getNumberOfCells(),14)
13479         m_mrg2.checkCoherency2()
13480         self.assertTrue(not m_mrg2.isPacked())
13481         m_mrg4,b=m_mrg2.copyWithNodalConnectivityPacked()
13482         self.assertTrue(not b)
13483         m_mrg4.checkCoherency2()
13484         self.assertEqual(m_mrg4.getNumberOfCells(),14)
13485         self.assertTrue(m_mrg4.getNodalConnectivityIndex().isEqual(m_mrg2.getNodalConnectivityIndex()))
13486         self.assertEqual(len(m_mrg4.getNodalConnectivity()),111)
13487         self.assertEqual(len(m_mrg2.getNodalConnectivity()),120)
13488         self.assertTrue(m_mrg4.getNodalConnectivity().isEqual(m_mrg2.getNodalConnectivity()[:111]))
13489         #
13490         m0=m_mrg2[:5]
13491         m1=m_mrg2[[5,6,7,8,9]]
13492         m2=m_mrg2[10:]
13493         self.assertTrue(m1.isEqualWithoutConsideringStr(m,1e-12))
13494         a,b=m.checkGeoEquivalWith(m0,12,1e-12)
13495         self.assertTrue(a.isEqual(DataArrayInt(o2n)))
13496         self.assertTrue(b is None)
13497         pass
13498
13499     def testSwig2DADAreIncludedInMe1(self):
13500         a=DataArrayDouble(30) ; a.iota() ; a.rearrange(3)
13501         p=DataArrayInt([5,2,1,9])
13502         b,c=a.areIncludedInMe(a[p],1e-12)
13503         self.assertTrue(b)
13504         self.assertTrue(c.isEqual(p))
13505         d=a[p]
13506         d.setIJ(3,1,28.1)
13507         b,c=a.areIncludedInMe(d,1e-12)
13508         self.assertTrue(not b)
13509         self.assertTrue(c.isEqual(DataArrayInt([5,2,1,10])))
13510         pass
13511
13512     def testSwig2DADesallocate1(self):
13513         d=DataArrayDouble([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
13514         self.assertTrue(d.isAllocated())
13515         d.checkAllocated()
13516         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13517         ref=d.getHeapMemorySize()
13518         d.desallocate()
13519         self.assertEqual(ref-d.getHeapMemorySize(),6*8)
13520         self.assertTrue(not d.isAllocated())
13521         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13522         self.assertRaises(InterpKernelException,d.checkAllocated)
13523         #
13524         d=DataArrayInt([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
13525         self.assertTrue(d.isAllocated())
13526         d.checkAllocated()
13527         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13528         ref=d.getHeapMemorySize()
13529         d.desallocate()
13530         self.assertEqual(ref-d.getHeapMemorySize(),6*4)
13531         self.assertTrue(not d.isAllocated())
13532         self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
13533         self.assertRaises(InterpKernelException,d.checkAllocated)
13534         pass
13535
13536     def testSwig2IsPartStructured1(self):
13537         #dim 1
13538         d10=DataArrayInt([2,3,4,5,6,7,8,9,10,11])
13539         a,b=MEDCouplingStructuredMesh.IsPartStructured(d10,[13])
13540         self.assertTrue(a) ; self.assertEqual(b,[(2,12)])
13541         d11=DataArrayInt([2,3,4,5,6,7,8,10,9,11])
13542         a,b=MEDCouplingStructuredMesh.IsPartStructured(d11,[13])
13543         self.assertTrue(not a)
13544         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d10,[11])
13545         #dim 2
13546         st=[10,4]
13547         d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
13548         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13549         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
13550         self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
13551         self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
13552         self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
13553         self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
13554         self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
13555         d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
13556         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13557         self.assertTrue(not a)
13558         d20=DataArrayInt([1,2,3,4,11,12,13,15,21,22,23,24])
13559         a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
13560         self.assertTrue(not a)
13561         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])
13562         a,b=MEDCouplingStructuredMesh.IsPartStructured(d21,st)
13563         self.assertTrue(a) ; self.assertEqual(b,[(0,10),(0,4)])
13564         d22=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44])
13565         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d22,st)
13566         a,b=MEDCouplingStructuredMesh.IsPartStructured(d22,[10,5])
13567         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,5)])
13568         #dim 3
13569         d30=DataArrayInt([11,12,13,14,21,22,23,24,51,52,53,54,61,62,63,64])
13570         a,b=MEDCouplingStructuredMesh.IsPartStructured(d30,[10,4,2])
13571         self.assertTrue(a) ; self.assertEqual(b,[(1,5),(1,3),(0,2)])
13572         d31=DataArrayInt([11,12,13,14,21,22,24,23,51,52,53,54,61,62,63,64])
13573         a,b=MEDCouplingStructuredMesh.IsPartStructured(d31,[10,4,2])
13574         self.assertTrue(not a)
13575         self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d30,[10,4,1])
13576         pass
13577
13578     def testSwig2PartStructured1(self):
13579         c=MEDCouplingCMesh() ; c.setName("toto")
13580         arr0=DataArrayDouble(10); arr0.iota()
13581         arr1=DataArrayDouble(4) ; arr1.iota(3)
13582         c.setCoords(arr0,arr1)
13583         self.assertEqual(c.getNodeGridStructure(),(10,4))
13584         self.assertEqual(c.getCellGridStructure(),(9,3))
13585         d20=DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])
13586         self.assertEqual(27,c.getNumberOfCells())
13587         self.assertEqual(40,c.getNumberOfNodes())
13588         self.assertEqual(2,c.getMeshDimension())
13589         c.checkCoherency()
13590         #
13591         arr2=MEDCouplingStructuredMesh.BuildExplicitIdsFrom([9,3],[(1,5),(0,3)])
13592         self.assertTrue(arr2.isEqual(DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])))
13593         # CMesh
13594         c2=c.buildStructuredSubPart([(1,5),(0,3)])
13595         c2.checkCoherency()
13596         self.assertTrue(isinstance(c2,MEDCouplingCMesh))
13597         self.assertEqual(12,c2.getNumberOfCells())
13598         self.assertEqual(20,c2.getNumberOfNodes())
13599         self.assertEqual(2,c2.getMeshDimension())
13600         self.assertEqual("toto",c2.getName())
13601         self.assertTrue(c2.getCoordsAt(0).isEqual(DataArrayDouble([1.,2.,3.,4.,5.]),1e-12))
13602         self.assertTrue(c2.getCoordsAt(1).isEqual(DataArrayDouble([3.,4.,5.,6.]),1e-12))
13603         #
13604         a,b=c.buildPartAndReduceNodes(d20)
13605         a.checkCoherency()
13606         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])
13607         self.assertTrue(exp2.isEqual(b))
13608         self.assertTrue(isinstance(a,MEDCouplingCMesh))
13609         self.assertTrue(a.buildUnstructured().isEqual(c.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
13610         # CurveLinearMesh
13611         c2=MEDCouplingCurveLinearMesh() ; c2.setName("toto")
13612         c2.setCoords(c.buildUnstructured().getCoords())
13613         c2.setNodeGridStructure([10,4])
13614         c2.checkCoherency()
13615         a,b=c2.buildPartAndReduceNodes(d20)
13616         a.checkCoherency()
13617         self.assertTrue(exp2.isEqual(b))
13618         self.assertTrue(isinstance(a,MEDCouplingCurveLinearMesh))
13619         self.assertTrue(a.buildUnstructured().isEqual(c2.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
13620         pass
13621
13622     def testSwig2FindPermutationFromFirstToSecond1(self):
13623         ids1=DataArrayInt([3,1,103,4,6,10,-7,205])
13624         ids2=DataArrayInt([-7,1,205,10,6,3,103,4])
13625         ids3=DataArrayInt.FindPermutationFromFirstToSecond(ids1,ids2)
13626         self.assertTrue(ids3.isEqual(DataArrayInt([5,1,6,7,4,3,0,2])))
13627         ids2ToTest=ids1.renumber(ids3)
13628         self.assertTrue(ids2ToTest.isEqual(ids2))
13629         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103]))
13630         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,2]))
13631         self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,1]))
13632         self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecond(DataArrayInt([]),DataArrayInt([])).empty())
13633         pass
13634
13635     def testSwig2BugStructuredMeshGetNodeIdsOfCell1(self):
13636         m=MEDCouplingCMesh("mesh")
13637         coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
13638         coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
13639         m.setCoords(coordsX,coordsY)
13640         self.assertEqual([2,3,8,7],m.getNodeIdsOfCell(2))
13641         self.assertEqual([3,4,9,8],m.getNodeIdsOfCell(3))
13642         self.assertEqual([7,8,13,12],m.getNodeIdsOfCell(6))
13643         self.assertEqual([8,9,14,13],m.getNodeIdsOfCell(7))
13644         pass
13645
13646     def testSwig2ThrowOnDAIInvertN2O2ON2(self):
13647         p1=DataArrayInt([3,5,8])
13648         p2=DataArrayInt([0,3,4,5,6,7,8,9,10])
13649         p1.transformWithIndArr(p2.invertArrayN2O2O2N(11))
13650         self.assertTrue(p1.isEqual(DataArrayInt([1,3,6])))
13651         self.assertTrue(p2.invertArrayN2O2O2N(11).isEqual(DataArrayInt([0,-1,-1,1,2,3,4,5,6,7,8])))
13652         self.assertRaises(InterpKernelException,p2.invertArrayN2O2O2N,10)
13653         pass
13654
13655     def testSwig2ComputeEffectiveNbOfNodesPerCell1(self):
13656         coords=DataArrayDouble([ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
13657                  0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
13658                  0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
13659                  0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
13660                  -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
13661                  -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
13662                  0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
13663                  0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
13664                  -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
13665                  0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
13666                 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
13667                  -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
13668                  -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
13669                  -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
13670                  -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
13671                  -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
13672                  0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
13673                  0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
13674                  0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
13675                  -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
13676                  -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
13677                 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
13678                  -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
13679                  0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
13680                  0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
13681                  0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
13682                  -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
13683                  -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
13684                 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
13685                  0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
13686                  -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
13687                  0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
13688                  0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
13689                  0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
13690                  -0.0372812069535 , -0.286740286332 , 0.00963701291166 ], 69, 3)
13691         connN = [ #polyhedron 0
13692             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
13693             , 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
13694             , 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
13695             , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
13696             # polyhedron 1
13697             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
13698             , 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
13699             , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
13700             , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
13701             # polyhedron 2
13702             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
13703             , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
13704             # polyhedron 3
13705             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
13706             , 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
13707             , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
13708             , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
13709         meshN=MEDCouplingUMesh.New()
13710         meshN.setName("ForBary")
13711         meshN.setMeshDimension(3) ; meshN.setCoords(coords)
13712         meshN.allocateCells(4)
13713         meshN.insertNextCell(NORM_POLYHED,113,connN);
13714         meshN.insertNextCell(NORM_POLYHED,99,connN[113:])
13715         meshN.insertNextCell(NORM_POLYHED,43,connN[212:])
13716         meshN.insertNextCell(NORM_POLYHED,92,connN[255:])
13717         d=meshN.computeEffectiveNbOfNodesPerCell()
13718         e=meshN.computeNbOfNodesPerCell()
13719         self.assertTrue(d.isEqual(DataArrayInt([32,28,12,26])))
13720         self.assertTrue(e.isEqual(DataArrayInt([96,84,36,78])))
13721         m0=MEDCoupling1DGTUMesh(meshN)
13722         c=MEDCouplingCMesh()
13723         arr=DataArrayDouble(3) ; arr.iota(10)
13724         c.setCoords(arr,arr,arr)
13725         m10=c.buildUnstructured()
13726         m11=c.build1SGTUnstructured()
13727         m12=MEDCoupling1SGTUMesh.New(m10)
13728         self.assertTrue(m12.isEqual(m11,1e-12))
13729         m12.setCoords(m0.getCoords()) # m12 is not OK geometrically but the aim of the test is only connectivity values
13730         m3=MEDCoupling1GTUMesh.AggregateOnSameCoordsToUMesh([m12,m0])
13731         m3.checkCoherency()
13732         self.assertEqual(m3.getCoords().getHiddenCppPointer(),m12.getCoords().getHiddenCppPointer())
13733         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])))
13734         self.assertTrue(m3.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,186,286,330,423])))
13735         pass
13736
13737     def testSwig2Tetrahedrize1(self):
13738         d=DataArrayInt([0,3,6,10,14,20])
13739         d2=d.buildExplicitArrOfSliceOnScaledArr(slice(0,5,2))
13740         self.assertTrue(d2.isEqual(DataArrayInt([0,0,0, 2,2,2,2, 4,4,4,4,4,4])))
13741         m=MEDCouplingUMesh("Penta6",3)
13742         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"])
13743         m.allocateCells()
13744         m.insertNextCell(NORM_PENTA6,[1,2,0,4,5,3])
13745         st=m.getCoords().getHiddenCppPointer()
13746         c,a,b=m.tetrahedrize(PLANAR_FACE_5)
13747         c.checkCoherency2()
13748         self.assertTrue(a.isEqual(DataArrayInt([0,0,0])))
13749         self.assertEqual(0,b)
13750         self.assertEqual(m.getCoords().getHiddenCppPointer(),c.getCoords().getHiddenCppPointer())
13751         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([1,2,0,4,4,3,5,0,5,0,2,4])))
13752         del m,c
13753         #
13754         m2=MEDCouplingUMesh("octa12",3)
13755         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)
13756         m2.setCoords(coords)
13757         m2.allocateCells()
13758         m2.insertNextCell(NORM_HEXGP12,[3,2,1,0,5,4,9,8,7,6,11,10])
13759         c,a,b=m2.tetrahedrize(PLANAR_FACE_5)
13760         c.checkCoherency2()
13761         self.assertTrue(a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0])))
13762         self.assertEqual(0,b)
13763         self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13764         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])))
13765         del m2,coords,c
13766         #
13767         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"])
13768         m3=MEDCouplingUMesh("hexa8",3)
13769         m3.setCoords(coords)
13770         m3.allocateCells(0)
13771         m3.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13772         st=m3.getCoords().getHiddenCppPointer()
13773         c,a,b=m3.tetrahedrize(PLANAR_FACE_5)
13774         c.checkCoherency2()
13775         a.isEqual(DataArrayInt([0,0,0,0,0]))
13776         self.assertEqual(0,b)
13777         self.assertEqual(m3.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13778         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])))
13779         #
13780         m4=MEDCouplingUMesh("hexa8",3)
13781         m4.setCoords(coords)
13782         m4.allocateCells(0)
13783         m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13784         c,a,b=m4.tetrahedrize(PLANAR_FACE_6)
13785         c.checkCoherency2()
13786         a.isEqual(DataArrayInt([0,0,0,0,0,0]))
13787         self.assertEqual(0,b)
13788         self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13789         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])))
13790         #
13791         m4=MEDCouplingUMesh("hexa8",3)
13792         m4.setCoords(coords)
13793         m4.allocateCells(0)
13794         m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13795         st=m4.getCoords().getHiddenCppPointer()
13796         c,a,b=m4.tetrahedrize(GENERAL_24)
13797         c.checkCoherency2()
13798         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]))
13799         self.assertEqual(7,b)
13800         self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
13801         self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
13802         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])))
13803         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)
13804         m4CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13805         self.assertTrue(c.getCoords().isEqual(m4CoordsExp,1e-12))
13806         self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
13807         #
13808         m6=MEDCouplingUMesh("hexa8",3)
13809         m6.setCoords(coords)
13810         m6.allocateCells(0)
13811         m6.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
13812         st=m6.getCoords().getHiddenCppPointer()
13813         c,a,b=m6.tetrahedrize(GENERAL_48)
13814         c.checkCoherency2()
13815         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]))
13816         self.assertEqual(19,b)
13817         self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
13818         self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
13819         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])))
13820         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)
13821         m6CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13822         self.assertTrue(c.getCoords().isEqual(m6CoordsExp,1e-12))
13823         self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
13824         #
13825         m7=MEDCouplingUMesh("polyhed",3)
13826         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"])
13827         m7.setCoords(coords)
13828         m7.allocateCells()
13829         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])
13830         c,a,b=m7.tetrahedrize(PLANAR_FACE_5)
13831         c.checkCoherency2()
13832         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])))
13833         self.assertEqual(9,b)
13834         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])))
13835         self.assertAlmostEqual(5.196152422706635,c.getMeasureField(False).accumulate()[0],12)
13836         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)
13837         m7CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
13838         self.assertTrue(c.getCoords().isEqual(m7CoordsExp,1e-12))
13839         del m7,coords,c
13840         #
13841         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"])
13842         m8=MEDCouplingUMesh("pyra5",3)
13843         m8.setCoords(coords)
13844         m8.allocateCells(0)
13845         m8.insertNextCell(NORM_PYRA5,[3,2,1,0,7])
13846         st=m8.getCoords().getHiddenCppPointer()
13847         c,a,b=m8.tetrahedrize(PLANAR_FACE_5)
13848         self.assertEqual(m8.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
13849         c.checkCoherency2()
13850         self.assertTrue(a.isEqual(DataArrayInt([0,0])))
13851         self.assertEqual(0,b)
13852         self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,1,7,3,1,0,7])))
13853         self.assertAlmostEqual(0.6666666666666667,c.getMeasureField(False).accumulate()[0],12)
13854         pass
13855
13856     def testDualMesh3D1(self):
13857         arr=DataArrayDouble(2) ; arr.iota()
13858         c=MEDCouplingCMesh() ; c.setCoords(arr,arr,arr)
13859         m=c.buildUnstructured()
13860         t=m.tetrahedrize(PLANAR_FACE_5)[0]
13861         d=t.computeDualMesh()
13862         self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,29,118,207,236,325,354,383,472])))
13863         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])))
13864         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))
13865         self.assertAlmostEqual(1.,d.getMeasureField(False).accumulate()[0],1e-13)
13866         pass
13867
13868     def testDualMesh2D1(self):
13869         arr=DataArrayDouble(5) ; arr.iota()
13870         c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
13871         m=c.buildUnstructured()
13872         m.simplexize(0)
13873         t=MEDCoupling1SGTUMesh(m)
13874         d=t.computeDualMesh()
13875         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])))
13876         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])))
13877         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))
13878         self.assertAlmostEqual(16.,d.getMeasureField(False).accumulate()[0],1e-13)
13879         pass
13880
13881     def testSwig2LoadBalanceBBox1(self):
13882         arr=DataArrayDouble(5) ; arr.iota()
13883         t=MEDCouplingCMesh() ; t.setCoords(arr,arr)
13884         arr=DataArrayDouble(16) ; arr.iota() ; arr*=2./15
13885         s=MEDCouplingCMesh() ; s.setCoords(arr,arr[:]) ; s.translate([2.,1.])
13886         #
13887         s1=s.build1SGTUnstructured()
13888         t1=t.build1SGTUnstructured()
13889         w=MEDCouplingPointSet.ComputeNbOfInteractionsWithSrcCells(s1,t1,1e-12)
13890         wExp=DataArrayInt([0,0,0,0,0,0,64,64,0,0,64,64,0,0,0,0])
13891         self.assertTrue(w.isEqual(wExp))
13892         slcs=w.splitInBalancedSlices(4)
13893         self.assertEqual(len(slcs),4)
13894         self.assertEqual(slcs,[slice(0,7,1),slice(7,8,1),slice(8,11,1),slice(11,16,1)])
13895         bbs=s1.getBoundingBoxForBBTree()
13896         bbt=t1.getBoundingBoxForBBTree()
13897         self.assertTrue(bbt.computeNbOfInteractionsWith(bbs,1e-12).isEqual(wExp))
13898         pass
13899
13900     def testKrSpatialDiscretization2(self):
13901         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)
13902         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)
13903         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)
13904         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])
13905         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])
13906         #
13907         nbOfInputPoints=100;
13908         f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
13909         mesh=MEDCoupling1SGTUMesh.New("aMesh",NORM_POINT1);
13910         mesh.setCoords(srcPointCoordsXY);
13911         f.setMesh(mesh);
13912         f.setArray(srcFieldValsOnPoints);
13913         f.checkCoherency();
13914         #
13915         res0=f.getValueOn([-0.5,-0.5]);
13916         self.assertAlmostEqual(targetFieldValsExpected.getIJ(0,0),res0[0],10)
13917         #
13918         valuesToTest=f.getValueOnMulti(targetPointCoordsXY);
13919         self.assertEqual(196,valuesToTest.getNumberOfTuples());
13920         self.assertEqual(1,valuesToTest.getNumberOfComponents());
13921         for i in xrange(40):
13922             self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
13923             pass
13924         fd=f.getDiscretization()
13925         del f
13926         self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
13927         coeffs,isDrift=fd.computeVectorOfCoefficients(mesh,srcFieldValsOnPoints)
13928         self.assertEqual(3,isDrift)
13929         self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
13930         # testing matrix
13931         pts3=[-0.5,-0.5,-0.5,-0.35,-0.35,-0.2]
13932         mesh.setCoords(srcPointCoordsXY[:4])
13933         m,nbCols=fd.computeEvaluationMatrixOnGivenPts(mesh,pts3)
13934         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))
13935         if MEDCouplingHasNumPyBindings():
13936             import numpy as np
13937             m0=m.toNumPyArray() ; m0=m0.reshape(3,nbCols) ; m0=np.matrix(m0)
13938             srcFieldValsOnPoints2=DataArrayDouble(4,2) ; srcFieldValsOnPoints2[:,0]=srcFieldValsOnPoints[:4] ; srcFieldValsOnPoints2[:,1]=2*srcFieldValsOnPoints[:4]
13939             n0=srcFieldValsOnPoints2.toNumPyArray() ; n0=n0.reshape(4,2) ; n0=np.matrix(n0)
13940             #
13941             f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME) ;  f.setMesh(mesh) ; f.setArray(srcFieldValsOnPoints2) ; f.checkCoherency()
13942             self.assertTrue(DataArrayDouble(np.array((m0*n0))).isEqual(f.getValueOnMulti(pts3),1e-14))
13943             pass
13944         #
13945         pass
13946     
13947     # test the when input slice is all the same object is return by MEDCouplingMesh.buildPartRange
13948     def testSwig2MeshPartSlice1(self):
13949         a=DataArrayDouble(4) ; a.iota()
13950         c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m=c.buildUnstructured()
13951         fc0=c.getMeasureField(False) ; fc1=fc0[:] ; fc2=fc0*fc1 ; fc2.setName(fc0.getName())
13952         self.assertEqual(fc0.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
13953         self.assertEqual(fc2.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
13954         self.assertTrue(fc2.isEqual(fc1,1e-12,1e-12))
13955         #
13956         fm0=m.getMeasureField(False) ; fm1=fm0[:] ; fm2=fm0*fm1 ; fm2.setName(fm0.getName())
13957         self.assertEqual(fm0.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
13958         self.assertEqual(fm2.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
13959         self.assertTrue(fm2.isEqual(fm1,1e-12,1e-12))
13960         pass
13961
13962     # test the correct behaviour when attempting to aggregate two fields whose mesh is null
13963     def testSwig2MergeFieldsOnFieldsHavingNoMesh(self):
13964         a=DataArrayDouble(4) ; a.iota() ; a*=1.5
13965         c=MEDCouplingCMesh() ; c.setCoords(a,a) ; f1=c.getMeasureField(False)
13966         f1.setMesh(None) ; f2=f1.deepCpy() ; f2*=2
13967         f3=MEDCouplingFieldDouble.MergeFields(f1,f2)
13968         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])
13969         self.assertTrue(f3.getArray().isEqual(daExp,1e-12))
13970         self.assertEqual(f3.getTypeOfField(),ON_CELLS)
13971         self.assertEqual(f3.getMesh(),None)
13972         f4=MEDCouplingFieldDouble.MergeFields([f1,f2])
13973         self.assertTrue(f4.getArray().isEqual(daExp,1e-12))
13974         self.assertEqual(f4.getTypeOfField(),ON_CELLS)
13975         self.assertEqual(f4.getMesh(),None)
13976         pass
13977
13978     # test a simple node to cell convertion of a field
13979     def testSwig2NodeToCellDiscretization1(self):
13980         f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
13981         a1=DataArrayDouble(4) ; a1.iota()
13982         a2=DataArrayDouble(3) ; a2.iota()
13983         m=MEDCouplingCMesh() ; m.setCoords(a1,a2)
13984         f.setMesh(m)
13985         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]"])
13986         f.setArray(arr) ; f.setName("toto")
13987         #
13988         f2=f.nodeToCellDiscretization()
13989         self.assertEqual(ON_CELLS,f2.getTypeOfField())
13990         self.assertEqual("toto",f2.getName())
13991         self.assertEqual([1.1,2,3],f2.getTime())
13992         self.assertEqual(["aa [km]","bbb [kJ]"],f2.getArray().getInfoOnComponents())
13993         self.assertEqual(6,f2.getArray().getNumberOfTuples())
13994         self.assertEqual(f.getMesh().getHiddenCppPointer(),f2.getMesh().getHiddenCppPointer())
13995         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]"])
13996         self.assertTrue(f2.getArray().isEqual(exp,1e-13))
13997         pass
13998     
13999     def testSwig2NonRegressionBugIntersectMeshes1(self):
14000         src=MEDCouplingUMesh("src",2)
14001         src.setCoords(DataArrayDouble([-2.5,-3,-2.5,3,2.5,3],3,2))
14002         src.allocateCells()
14003         src.insertNextCell(NORM_TRI3,[0,1,2])
14004         #
14005         trg=MEDCouplingUMesh("trg",2)
14006         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))
14007         trg.allocateCells()
14008         trg.insertNextCell(NORM_QPOLYG,[2,1,0,5,3,7,8,6,4,9])
14009         #
14010         a,b,c=MEDCouplingUMesh.Intersect2DMeshes(src,trg,1.0e-8)
14011         a.mergeNodes(1e-8)
14012         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))
14013         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])))
14014         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,20])))
14015         self.assertTrue(b.isEqual(DataArrayInt([0,0])))
14016         self.assertTrue(c.isEqual(DataArrayInt([0,-1])))
14017         pass
14018
14019     def testSwig2MeshOrientCorrectly2DCells1(self):
14020         m=MEDCouplingUMesh("mesh",2)
14021         coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
14022         m.setCoords(coo)
14023         m.allocateCells()
14024         m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
14025         m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
14026         self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
14027         m.changeSpaceDimension(3)
14028         m.orientCorrectly2DCells([0.,0.,-1.],False)
14029         #
14030         m.checkCoherency()
14031         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
14032         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
14033         m.changeSpaceDimension(2)
14034         self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
14035         pass
14036
14037     def testSwig2Hexa8HavingFacesWarped1(self):
14038         """ 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 
14039         intersected with src the sum of intersection volume is greater than the volume of the trg cell.
14040         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
14041         GENERAL_24).
14042         """
14043         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)
14044         src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
14045         src.allocateCells()
14046         src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
14047         src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
14048         src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
14049         src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
14050         src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
14051         src.checkCoherency2()
14052         # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
14053         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)
14054         trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
14055         trg.allocateCells()
14056         trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
14057         #
14058         srcFace=src.buildDescendingConnectivity()[0]
14059         conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
14060         eqFaces=srcFace.computePlaneEquationOf3DFaces()
14061         nodeIdInCell=3
14062         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
14063         lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
14064         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
14065         shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
14066         check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
14067         idsToTest=check.getIdsNotInRange(0.,1e-10)
14068         self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
14069         idsToTest2=idsToTest.getIdsNotInRange(18,22)
14070         self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
14071         idsToTest2.rearrange(2)
14072         self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
14073         pass
14074
14075     def testSwig2SortHexa8EachOther1(self):
14076         """
14077         testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
14078         """
14079         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)])
14080         m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
14081         m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
14082         m1.checkCoherency()
14083         #
14084         m2=m1.deepCpy() ; m2.setName("m2")
14085         #
14086         trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
14087         for i,t in enumerate(trs):
14088             for j in xrange(64):
14089                 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
14090                 m11=m1.deepCpy()
14091                 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
14092                 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
14093                 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
14094                 m11.translate(t)
14095                 #
14096                 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
14097                 m.mergeNodes(1e-12)
14098                 self.assertEqual(12,m.getNumberOfNodes())
14099                 m=MEDCoupling1SGTUMesh(m)
14100                 m.sortHexa8EachOther()
14101                 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
14102                 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
14103                 pass
14104             pass
14105         pass
14106
14107     def testSwig2normMinComputeAbs1(self):
14108         d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
14109         d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
14110         d0=d.computeAbs()
14111         dExp=d.deepCpy() ; dExp.abs()
14112         self.assertTrue(dExp.isEqual(d0,1e-12))
14113         e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
14114         self.assertAlmostEqual(0.,e.normMin(),13)
14115         self.assertAlmostEqual(0.009,d.normMin(),13)
14116         #
14117         di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
14118         di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
14119         d0i=di.computeAbs()
14120         diExp=di.deepCpy() ; diExp.abs()
14121         self.assertTrue(diExp.isEqual(d0i))
14122         self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
14123         pass
14124
14125     def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
14126         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)
14127         m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
14128         m.insertNextCell(NORM_POLYGON,[6,3,4,5])
14129         m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
14130         m.checkCoherency2()
14131         #
14132         self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
14133         self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
14134         self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
14135         pass
14136     
14137     def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
14138         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)
14139         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14140         m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
14141         m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
14142         m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
14143         m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
14144         m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
14145         m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
14146         m.checkCoherency2()
14147         self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
14148         pass
14149
14150     def testSwig2DAIGetIdsEqualTuple1(self):
14151         da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
14152         self.assertTrue(da.getIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
14153         self.assertTrue(da.getIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
14154         self.assertTrue(da.getIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
14155         da.rearrange(3)
14156         self.assertRaises(InterpKernelException,da.getIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
14157         self.assertTrue(da.getIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
14158         self.assertTrue(da.getIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
14159         da.rearrange(1)
14160         self.assertTrue(da.getIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
14161         self.assertTrue(da.getIdsEqualTuple(2).isEqual(da.getIdsEqual(2)))
14162         pass
14163
14164     def testSwig2GaussNEStaticInfo1(self):
14165         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
14166         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
14167         self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
14168         pass
14169
14170     def testSwigReverseNodalConnOnStructuredMesh(self):
14171         # 1D - standard
14172         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
14173         c.setCoordsAt(0,arr)
14174         rn,rni=c.getReverseNodalConnectivity()
14175         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14176         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14177         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14178         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14179         # 1D - limit
14180         c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
14181         c.setCoordsAt(0,arr)
14182         rn,rni=c.getReverseNodalConnectivity()
14183         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14184         self.assertTrue(rn.isEqual(DataArrayInt([0])))
14185         self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
14186         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14187         # 1D - limit
14188         c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
14189         c.setCoordsAt(0,arr)
14190         rn,rni=c.getReverseNodalConnectivity()
14191         rn.isEqual(DataArrayInt([]))
14192         rni.isEqual(DataArrayInt([0]))
14193         # 2D - standard
14194         c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
14195         c.setCoords(arr,arr2)
14196         rn,rni=c.getReverseNodalConnectivity()
14197         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14198         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])))
14199         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])))
14200         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14201         # 2D - limit
14202         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
14203         c.setCoords(arr,arr2)
14204         rn,rni=c.getReverseNodalConnectivity()
14205         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14206         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14207         # 2D - limit
14208         c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
14209         c.setCoords(arr2,arr)
14210         rn,rni=c.getReverseNodalConnectivity()
14211         self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
14212         self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
14213         # 3D - standard
14214         c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
14215         c.setCoords(arr0,arr1,arr2)
14216         rn,rni=c.getReverseNodalConnectivity()
14217         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])))
14218         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])))
14219         rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
14220         self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
14221         pass
14222
14223     def testSwig2CellToNodeDiscretization1(self):
14224         m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
14225         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
14226         arr=DataArrayDouble(12) ; arr.iota()
14227         arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
14228         f.setArray(arr)
14229         f.checkCoherency()
14230         #
14231         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.])
14232         ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
14233         f2=f.cellToNodeDiscretization()
14234         f2.checkCoherency()
14235         self.assertEqual(f2.getTime()[1:],[5,6])
14236         self.assertAlmostEqual(f2.getTime()[0],1.1,15)
14237         self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
14238         self.assertTrue(f2.getArray().isEqual(ref,1e-12))
14239         rn,rni=m.getReverseNodalConnectivity()
14240         rni2=(rni.deltaShiftIndex()).convertToDblArr()
14241         arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
14242         self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
14243         del f2
14244         #
14245         u=m.buildUnstructured() ; f.setMesh(u) ; del m
14246         f3=f.cellToNodeDiscretization()
14247         f3.checkCoherency()
14248         self.assertEqual(f3.getTime()[1:],[5,6])
14249         self.assertAlmostEqual(f3.getTime()[0],1.1,15)
14250         self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
14251         self.assertTrue(f3.getArray().isEqual(ref,1e-12))
14252         pass
14253
14254     def testSwig2GetMeshSpaceDimensionCMesh1(self):
14255         c=MEDCouplingCMesh()
14256         arr0=DataArrayDouble([0,1,2])
14257         arr1=DataArrayDouble([0])
14258         c.setCoords(arr0,arr0,arr0)
14259         self.assertEqual(c.getMeshDimension(),3)
14260         self.assertEqual(c.getSpaceDimension(),3)
14261         #
14262         c.setCoords(arr0,arr0,arr1)
14263         self.assertEqual(c.getMeshDimension(),2)
14264         self.assertEqual(c.getSpaceDimension(),3)
14265         #
14266         c.setCoords(arr0,arr0)
14267         self.assertEqual(c.getMeshDimension(),2)
14268         self.assertEqual(c.getSpaceDimension(),2)
14269         #
14270         c.setCoords(arr0,arr1)
14271         self.assertEqual(c.getMeshDimension(),1)
14272         self.assertEqual(c.getSpaceDimension(),2)
14273         #
14274         c.setCoords(arr0)
14275         self.assertEqual(c.getMeshDimension(),1)
14276         self.assertEqual(c.getSpaceDimension(),1)
14277         #
14278         c.setCoords(arr1)
14279         self.assertEqual(c.getMeshDimension(),0)
14280         self.assertEqual(c.getSpaceDimension(),1)
14281         pass
14282
14283     def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
14284         nx=6
14285         ny=6
14286         m=MEDCouplingCMesh()
14287         arr1=DataArrayDouble(nx) ; arr1.iota()
14288         arr2=DataArrayDouble(ny) ; arr2.iota()
14289         m.setCoords(arr1,arr2)
14290         m=m.buildUnstructured()
14291         da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
14292         m2=m[da] ; m2.simplexize(0)
14293         dan=da.buildComplement(m.getNumberOfCells())
14294         m1=m[dan]
14295         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
14296         #
14297         m.convertLinearCellsToQuadratic()
14298         m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
14299         m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
14300         p=m.buildSpreadZonesWithPoly()
14301         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])))
14302         self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
14303         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))
14304         pass
14305
14306     def testSwig2Conformize2D1(self):
14307         eps = 1.0e-8
14308         coo = [0.,-0.5,0.,0.,0.5,0.,0.5,-0.5,0.25,
14309                -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]
14310         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]
14311         connI = [0,5,12,17,24]
14312         m = MEDCouplingUMesh("box",2)
14313         cooArr = DataArrayDouble(coo,len(coo)/2,2)
14314         m.setCoords(cooArr)
14315         m.setConnectivity(DataArrayInt(conn),DataArrayInt(connI))
14316         m.mergeNodes(eps)
14317         m.checkCoherency()
14318         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([3])))
14319         self.assertEqual(m.getCoords().getHiddenCppPointer(),cooArr.getHiddenCppPointer()) # check that coordinates remain the same here
14320         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])))
14321         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,12,17,25])))
14322         pass
14323
14324     def testSwig2Conformize2D2(self):
14325         eps = 1.0e-8
14326         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)
14327         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])
14328         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14329         m.setCoords(coo)
14330         m.setNodalConnectivity(conn)
14331         m=m.buildUnstructured()
14332         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
14333         self.assertEqual(m.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer()) # check that coordinates remain the same here
14334         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])))
14335         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,6,12,21,26,31,37,42])))
14336         pass
14337
14338     def testSwigSplit2DCells1(self):
14339         coo=DataArrayDouble([[0,0],[1,0],[1,1],[0,1],[0.5,0],[1,0.5],[0.5,1],[0.,0.5]])
14340         m=MEDCouplingUMesh("mesh",2)
14341         m.setCoords(coo)
14342         m.allocateCells()
14343         m.insertNextCell(NORM_QUAD8,[0,1,2,3,4,5,6,7])
14344         _,d,di,_,_=m.buildDescendingConnectivity()
14345         subb=DataArrayInt([5])
14346         subbi=DataArrayInt([0,0,1,1,1])
14347         mid=DataArrayInt([-1,-1])
14348         midi=DataArrayInt([0,0,2,2,2])
14349         self.assertEqual(2,m.split2DCells(d,di,subb,subbi,mid,midi))
14350         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,1,5,2,3,4,8,9,6,7])))
14351         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11])))
14352         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))
14353         pass
14354
14355     def testSwig2Conformize2D3(self):
14356         eps = 1.0e-8
14357         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)
14358         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])
14359         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14360         m.setCoords(coo)
14361         m.setNodalConnectivity(conn)
14362         m=m.buildUnstructured()
14363         m.convertLinearCellsToQuadratic()
14364         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
14365         self.assertTrue(m.getCoords().getHiddenCppPointer()!=coo.getHiddenCppPointer()) # coordinates are not the same here contrary to testSwig2Conformize2D2 ...
14366         self.assertTrue(m.getCoords()[:18].isEqual(coo,1e-12)) # but the 18 first nodes are the same
14367         pass
14368
14369     def testSwig2Conformize2D4(self):
14370         eps = 1.0e-8
14371         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)
14372         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])
14373         m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
14374         m.setCoords(coo)
14375         m.setNodalConnectivity(conn)
14376         m=m.buildUnstructured()
14377         m.convertLinearCellsToQuadratic()
14378         self.assertEqual(42,m.getNumberOfNodes())
14379         oldCoo=m.getCoords().deepCpy()
14380         m.conformize2D(eps)
14381         self.assertTrue(m.getCoords()[:42].isEqual(oldCoo,1e-12))
14382         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])))
14383         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11,22,39,48,57,68,77])))
14384         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))
14385         pass
14386
14387     def testSwig2Conformize2D5(self):
14388         eps=1e-8
14389         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]])
14390         m=MEDCouplingUMesh("mesh",2)
14391         m.allocateCells()
14392         m.setCoords(coo)
14393         m.insertNextCell(NORM_TRI6,[1,2,0,5,4,3])
14394         m.insertNextCell(NORM_TRI6,[8,6,0,12,7,13])
14395         m.insertNextCell(NORM_TRI6,[11,9,10,16,14,15])
14396         self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0])))
14397         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))
14398         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])))
14399         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,13,20,27])))
14400         pass
14401
14402     def testSwigExtendedSlice1(self):
14403         d=DataArrayInt([5,6,7])
14404         self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
14405         self.assertTrue(d[3:].isEqual(DataArrayInt([])))
14406         try:
14407             d[4:]
14408         except InterpKernelException as e:
14409             self.assertTrue(True)
14410         else:
14411             self.assertTrue(False)
14412             pass
14413         d=DataArrayInt([5,6,7,8])
14414         self.assertEqual(d[-1],8)
14415         self.assertEqual(d[-4],5)
14416         try:
14417             d[-5]
14418         except InterpKernelException as e:
14419             self.assertTrue(True)
14420         else:
14421             self.assertTrue(False)
14422             pass
14423         self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
14424         self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
14425         self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
14426         self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
14427         self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
14428         try:
14429             d[-6::-1]
14430         except InterpKernelException as e:
14431             self.assertTrue(True)
14432         else:
14433             self.assertTrue(False)
14434             pass
14435         d=DataArrayInt([])
14436         self.assertTrue(d[0:].isEqual(DataArrayInt([])))
14437         #
14438         d=DataArrayDouble([5,6,7])
14439         self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
14440         self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
14441         try:
14442             d[4:]
14443         except InterpKernelException as e:
14444             self.assertTrue(True)
14445         else:
14446             self.assertTrue(False)
14447             pass
14448         d=DataArrayDouble([5,6,7,8])
14449         self.assertAlmostEqual(d[-1],8.,12)
14450         self.assertAlmostEqual(d[-4],5.,12)
14451         try:
14452             d[-5]
14453         except InterpKernelException as e:
14454             self.assertTrue(True)
14455         else:
14456             self.assertTrue(False)
14457             pass
14458         self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
14459         self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
14460         self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
14461         self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
14462         self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
14463         try:
14464             d[-6::-1]
14465         except InterpKernelException as e:
14466             self.assertTrue(True)
14467         else:
14468             self.assertTrue(False)
14469             pass
14470         d=DataArrayDouble([])
14471         self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
14472         pass
14473
14474     def testSwig2Hexa27GP1(self):
14475         """ This test focused on shape functions of hexa27.
14476         """
14477         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.]])
14478         m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
14479         m.allocateCells()
14480         # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
14481         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])
14482         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.]
14483         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]
14484         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]
14485         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14486         fGauss.setMesh(m)
14487         fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
14488         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14489         fGauss.setArray(arr)
14490         arrOfDisc=fGauss.getLocalizationOfDiscr()
14491         # the test is here
14492         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))
14493         #
14494         weights=27*[1]
14495         gCoords=refCoo
14496         fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
14497         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14498         self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
14499         pass
14500
14501     def testSwig2Pyra13GP1(self):
14502         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.]])
14503         m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
14504         m.allocateCells()
14505         # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
14506         m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
14507         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]
14508         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]
14509         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]
14510         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14511         fGauss.setMesh(m)
14512         fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
14513         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14514         fGauss.setArray(arr)
14515         arrOfDisc=fGauss.getLocalizationOfDiscr()
14516         # the test is here
14517         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))
14518         #
14519         weights=13*[1]
14520         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. !
14521         fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
14522         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14523         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. !
14524         pass
14525
14526     def testSwig2Tri7GP1(self):
14527         coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
14528         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14529         m.allocateCells()
14530         # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
14531         m.insertNextCell(NORM_TRI7,range(7))
14532         refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
14533         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]
14534         weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
14535         fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
14536         fGauss.setMesh(m)
14537         fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
14538         arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
14539         fGauss.setArray(arr)
14540         arrOfDisc=fGauss.getLocalizationOfDiscr()
14541         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))
14542         #
14543         weights=7*[1]
14544         gaussCoords=refCoords
14545         fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
14546         arrOfDisc2=fGauss.getLocalizationOfDiscr()
14547         self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
14548         pass
14549
14550     def testSwig2StructuredDesc1(self):
14551         c=MEDCouplingCMesh()
14552         arr0=DataArrayDouble(3) ; arr0.iota()
14553         arr1=DataArrayDouble(4) ; arr1.iota()
14554         arr2=DataArrayDouble(5) ; arr2.iota()
14555         c.setCoords(arr0,arr1,arr2)
14556         #
14557         self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
14558         m=c.build1SGTSubLevelMesh()
14559         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])))
14560         self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
14561         #
14562         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])))
14563         pass
14564
14565     def testSwig2Colinearize2D1(self):
14566         coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
14567         #
14568         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14569         m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
14570         refPtr=m.getCoords().getHiddenCppPointer()
14571         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14572         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14573         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14574         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14575         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
14576         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14577         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14578         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14579         #
14580         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14581         m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
14582         refPtr=m.getCoords().getHiddenCppPointer()
14583         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14584         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14585         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
14586         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14587         #
14588         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14589         m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
14590         refPtr=m.getCoords().getHiddenCppPointer()
14591         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14592         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14593         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
14594         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14595         #
14596         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
14597         m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
14598         refPtr=m.getCoords().getHiddenCppPointer()
14599         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14600         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14601         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
14602         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
14603         ## false quadratic
14604         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)])
14605         coo2.setInfoOnComponents(["aa","bbbb"])
14606         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
14607         m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
14608         refPtr=m.getCoords().getHiddenCppPointer()
14609         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14610         self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
14611         self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
14612         refPtr=m.getCoords().getHiddenCppPointer()
14613         self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
14614         self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
14615         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14616         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14617         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
14618         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14619         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14620         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14621         # mix of quadratic and linear inside a QPOLYG cell
14622         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)])
14623         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
14624         m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
14625         refPtr=m.getCoords().getHiddenCppPointer()
14626         self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
14627         self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
14628         self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
14629         self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
14630         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
14631         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
14632         pass
14633
14634     def testSwig2BoundingBoxForBBTree1(self):
14635         """ 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 !
14636         """
14637         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)
14638         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14639         m.allocateCells()
14640         m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
14641         m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
14642         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))
14643         pass
14644
14645     def testSwig2CartBuildUnstructuredOnExoticCases1(self):
14646         """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
14647         """
14648         #
14649         m=MEDCouplingCMesh()
14650         arrX=DataArrayDouble(3) ; arrX.iota()
14651         arrY=DataArrayDouble(4) ; arrY.iota()
14652         arrZ=DataArrayDouble(1) ; arrZ.iota()
14653         m.setCoords(arrX,arrY,arrZ)
14654         self.assertEqual(2,m.getMeshDimension())
14655         self.assertEqual(3,m.getSpaceDimension())
14656         mu=m.buildUnstructured()
14657         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])))
14658         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14659         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)])
14660         self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
14661         #
14662         m=MEDCouplingCMesh()
14663         arrX=DataArrayDouble(3) ; arrX.iota()
14664         arrY=DataArrayDouble(1) ; arrY.iota()
14665         arrZ=DataArrayDouble(4) ; arrZ.iota()
14666         m.setCoords(arrX,arrY,arrZ)
14667         self.assertEqual(2,m.getMeshDimension())
14668         self.assertEqual(3,m.getSpaceDimension())
14669         mu=m.buildUnstructured()
14670         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])))
14671         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14672         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)])
14673         self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
14674         #
14675         m=MEDCouplingCMesh()
14676         arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
14677         arrY=DataArrayDouble(3) ; arrY.iota()
14678         arrZ=DataArrayDouble(4) ; arrZ.iota()
14679         m.setCoords(arrX,arrY,arrZ)
14680         self.assertEqual(2,m.getMeshDimension())
14681         self.assertEqual(3,m.getSpaceDimension())
14682         mu=m.buildUnstructured()
14683         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])))
14684         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
14685         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)])
14686         self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
14687         #
14688         m=MEDCouplingCMesh()
14689         arrX=DataArrayDouble(3) ; arrX.iota()
14690         arrY=DataArrayDouble(1) ; arrY.iota(7)
14691         arrZ=DataArrayDouble(1) ; arrZ.iota(8)
14692         m.setCoords(arrX,arrY,arrZ)
14693         self.assertEqual(1,m.getMeshDimension())
14694         self.assertEqual(3,m.getSpaceDimension())
14695         mu=m.buildUnstructured()
14696         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14697         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14698         coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
14699         self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
14700         #
14701         m=MEDCouplingCMesh()
14702         arrX=DataArrayDouble(1) ; arrX.iota(7)
14703         arrY=DataArrayDouble(1) ; arrY.iota(8)
14704         arrZ=DataArrayDouble(3) ; arrZ.iota()
14705         m.setCoords(arrX,arrY,arrZ)
14706         self.assertEqual(1,m.getMeshDimension())
14707         self.assertEqual(3,m.getSpaceDimension())
14708         mu=m.buildUnstructured()
14709         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14710         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14711         coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
14712         self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
14713         #
14714         m=MEDCouplingCMesh()
14715         arrX=DataArrayDouble(3) ; arrX.iota()
14716         arrY=DataArrayDouble(1) ; arrY.iota(7)
14717         m.setCoords(arrX,arrY)
14718         self.assertEqual(1,m.getMeshDimension())
14719         self.assertEqual(2,m.getSpaceDimension())
14720         mu=m.buildUnstructured()
14721         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14722         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14723         coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
14724         self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
14725         #
14726         m=MEDCouplingCMesh()
14727         arrX=DataArrayDouble(1) ; arrX.iota(7)
14728         arrY=DataArrayDouble(3) ; arrY.iota()
14729         m.setCoords(arrX,arrY)
14730         self.assertEqual(1,m.getMeshDimension())
14731         self.assertEqual(2,m.getSpaceDimension())
14732         mu=m.buildUnstructured()
14733         self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
14734         self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
14735         coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
14736         self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
14737         pass
14738
14739     def testSwig2Colinearize2D2(self):
14740         """ simple non regression test but that has revealed a bug"""
14741         coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
14742         m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
14743         m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
14744         m.checkCoherency2()
14745         refPtr=m.getCoords().getHiddenCppPointer()
14746         #
14747         m.colinearize2D(1e-12)
14748         m.checkCoherency2()
14749         self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
14750         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,2,3,4])))
14751         self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
14752         pass
14753
14754     def testSwig2CheckAndPreparePermutation2(self):
14755         a=DataArrayInt([10003,9999999,5,67])
14756         self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
14757         a=DataArrayInt([10003,-9999999,5,67])
14758         self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
14759         a=DataArrayInt([])
14760         self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
14761         pass
14762
14763     def testSwig2ComputeNeighborsOfNodes1(self):
14764         arrX=DataArrayDouble(3) ; arrX.iota()
14765         arrY=DataArrayDouble(4) ; arrY.iota()
14766         arrZ=DataArrayDouble(5) ; arrZ.iota()
14767         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
14768         # 3D
14769         a,b=m.computeNeighborsOfNodes()
14770         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])))
14771         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])))
14772         # 2D
14773         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
14774         a,b=m.computeNeighborsOfNodes()
14775         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])))
14776         self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
14777         # 1D
14778         m=m.buildDescendingConnectivity()[0]
14779         a,b=m.computeNeighborsOfNodes()
14780         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])))
14781         self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
14782         pass
14783
14784     def testSwigBugOnUnpackingTuplesInDataArray1(self):
14785         inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
14786         it=inp.__iter__()
14787         r=it.next()
14788         self.assertRaises(StopIteration,r.__getitem__,4)
14789         self.assertEqual(len(r),3)
14790         a,b,c=r
14791         r=it.next()
14792         self.assertEqual(len(r),3)
14793         d,e,f=r
14794         r=it.next()
14795         self.assertEqual(len(r),3)
14796         g,h,i=r
14797         r=it.next()
14798         self.assertEqual(len(r),3)
14799         j,k,l=r
14800         self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
14801         ########
14802         inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
14803         it=inp.__iter__()
14804         r=it.next()
14805         self.assertRaises(StopIteration,r.__getitem__,4)
14806         self.assertEqual(len(r),3)
14807         a,b,c=r
14808         r=it.next()
14809         self.assertEqual(len(r),3)
14810         d,e,f=r
14811         r=it.next()
14812         self.assertEqual(len(r),3)
14813         g,h,i=r
14814         r=it.next()
14815         self.assertEqual(len(r),3)
14816         j,k,l=r
14817         self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
14818         pass
14819
14820     def testSwig2IMesh1(self):
14821         """ 1st test of image grid mesh.
14822         """
14823         m=MEDCouplingIMesh()
14824         self.assertEqual(m.getSpaceDimension(),-1)
14825         self.assertEqual(1,len(m.__repr__().split("\n")))
14826         self.assertEqual(6,len(m.__str__().split("\n")))
14827         self.assertRaises(InterpKernelException,m.getNodeStruct)
14828         self.assertRaises(InterpKernelException,m.getOrigin)
14829         self.assertRaises(InterpKernelException,m.getDXYZ)
14830         m.setSpaceDimension(3)
14831         self.assertEqual(9,len(m.__str__().split("\n")))
14832         self.assertEqual(4,len(m.__repr__().split("\n")))
14833         self.assertEqual((0,0,0),m.getNodeStruct())
14834         self.assertEqual((0.,0.,0.),m.getOrigin())
14835         self.assertEqual((0.,0.,0.),m.getDXYZ())
14836         self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
14837         m.setNodeStruct([3,4,2])
14838         self.assertEqual((3,4,2),m.getNodeStruct())
14839         m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
14840         self.assertEqual((1.5,2.5,3.5),m.getOrigin())
14841         m.setDXYZ((0.5,1.,0.25))
14842         self.assertEqual((0.5,1.,0.25),m.getDXYZ())
14843         for it in DataArrayDouble([(1.5,2.5,3.5)]):
14844             m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
14845             pass
14846         self.assertEqual(3,m.getSpaceDimension())
14847         self.assertEqual((3,4,2),m2.getNodeStruct())
14848         self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
14849         self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
14850         self.assertEqual(24,m2.getNumberOfNodes())
14851         self.assertEqual(6,m2.getNumberOfCells())
14852         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14853         m2.setAxisUnit("m")
14854         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14855         m.setAxisUnit("m")
14856         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14857         m.setName("mesh")
14858         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14859         m2.setName("mesh")
14860         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14861         m2.setTime(1.1,0,3)
14862         self.assertTrue(not m.isEqual(m2,1e-12))
14863         m.setTime(1.1,0,3)
14864         self.assertTrue(m.isEqual(m2,1e-12))
14865         m.setTimeUnit("ms")
14866         self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14867         m2.setTimeUnit("ms")
14868         self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
14869         #
14870         m2.setNodeStruct([3,2,4])
14871         self.assertTrue(not m.isEqual(m2,1e-12))
14872         m.setNodeStruct([3,2,4])
14873         self.assertTrue(m.isEqual(m2,1e-12))
14874         m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
14875         self.assertTrue(not m.isEqual(m2,1e-12))
14876         m2.setOrigin([1.5,3.5,2.5])
14877         self.assertTrue(m.isEqual(m2,1e-12))
14878         m.setDXYZ((0.5,0.25,1.))
14879         self.assertTrue(not m.isEqual(m2,1e-12))
14880         m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
14881         self.assertTrue(m.isEqual(m2,1e-12))
14882         m2bis=m2.deepCpy()
14883         self.assertTrue(m2bis.isEqual(m2,1e-12))
14884         #
14885         self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
14886         m2bis.refineWithFactor([3,3,3])
14887         self.assertEqual(162,m2bis.getNumberOfCells())
14888         self.assertEqual((7,4,10),m2bis.getNodeStruct())
14889         self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
14890         self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
14891         #
14892         self.assertEqual(3,m.getMeshDimension())
14893         self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
14894         mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
14895         mu.checkCoherency2()
14896         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]"])
14897         self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
14898         self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
14899         self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
14900         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])))
14901         bary=m.getBarycenterAndOwner()
14902         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]"])
14903         self.assertTrue(bary.isEqual(baryExp,1e-12))
14904         #
14905         c=m.convertToCartesian()
14906         c.checkCoherency()
14907         self.assertEqual([1.1,0,3],c.getTime())
14908         self.assertEqual("ms",c.getTimeUnit())
14909         self.assertEqual(3,c.getMeshDimension())
14910         self.assertEqual(3,c.getSpaceDimension())
14911         arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
14912         self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
14913         arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
14914         self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
14915         arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
14916         self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
14917         self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
14918         #
14919         a,b=m.getCellsContainingPoints(baryExp,1e-12)
14920         self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
14921         self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
14922         for a,b in enumerate(baryExp):
14923             self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
14924             pass
14925         #
14926         m.translate([1.,2.,4.])
14927         self.assertEqual((3,2,4),m.getNodeStruct())
14928         self.assertEqual((2.5,5.5,6.5),m.getOrigin())
14929         self.assertEqual((0.5,0.25,1.),m.getDXYZ())
14930         m.scale([0.,1.,3.],2.)
14931         self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
14932         self.assertEqual((3,2,4),m.getNodeStruct())
14933         self.assertEqual((5.,10.,10.),m.getOrigin())
14934         self.assertEqual((1.,0.5,2.),m.getDXYZ())
14935         #
14936         f=m.getMeasureField(False)
14937         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
14938         f2.setName("MeasureOfMesh_mesh")
14939         self.assertTrue(f.isEqual(f2,1e-12,1e-12))
14940         #
14941         m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
14942         self.assertEqual((2,2,3),m3.getNodeStruct())
14943         self.assertEqual((6.,10.,12.),m3.getOrigin())
14944         self.assertEqual((1.,0.5,2.),m3.getDXYZ())
14945         # now playing with 3D surf
14946         m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
14947         self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
14948         self.assertEqual(3,m4.getSpaceDimension())
14949         self.assertEqual(2,m4.getMeshDimension())
14950         self.assertEqual(12,m4.getNumberOfNodes())
14951         self.assertEqual(6,m4.getNumberOfCells())
14952         mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
14953         mu.checkCoherency2()
14954         self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
14955         self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
14956         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]"])
14957         self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
14958         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])))
14959         pass
14960
14961     def testSwig1GetValuesAsTuple1(self):
14962         d=DataArrayDouble()
14963         self.assertEqual(d.getValues(),[])
14964         self.assertEqual(d.getValuesAsTuple(),[])
14965         d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
14966         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.])
14967         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.)]) 
14968         d=DataArrayInt()
14969         self.assertEqual(d.getValues(),[])
14970         self.assertEqual(d.getValuesAsTuple(),[])
14971         d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
14972         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])
14973         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)])
14974         pass
14975
14976     def testSwig2AMR1(self):
14977         self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
14978         self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
14979         #
14980         amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
14981         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14982         self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
14983         self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
14984         self.assertEqual(0,amr.getNumberOfPatches())
14985         self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
14986         self.assertEqual(2,amr.getSpaceDimension())
14987         amr.addPatch([(1,2),(0,1)],[4,4])
14988         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14989         self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
14990         self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
14991         self.assertEqual(1,amr.getNumberOfPatches())
14992         self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
14993         self.assertEqual(2,amr.getSpaceDimension())
14994         amr[0].addPatch([(2,3),(1,3)],[3,2])
14995         self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
14996         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
14997         self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
14998         self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
14999         self.assertEqual(1,amr.getNumberOfPatches())
15000         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15001         self.assertEqual(2,amr.getSpaceDimension())
15002         amr[0].addPatch([(0,2),(3,4)],[3,2])
15003         self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
15004         self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
15005         self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
15006         self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
15007         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15008         self.assertEqual(2,amr.getSpaceDimension())
15009         del amr[0][1]
15010         self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
15011         self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
15012         self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
15013         self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
15014         self.assertEqual(1,amr.getNumberOfPatches())
15015         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15016         self.assertEqual(2,amr.getSpaceDimension())
15017         pass
15018
15019     def testSwig2NonRegressionTestPAL1164(self):
15020         """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
15021         xarr=DataArrayDouble(3,1)
15022         xarr.iota(0.)
15023         cmesh=MEDCouplingCMesh()
15024         cmesh.setCoords(xarr,xarr,xarr)
15025         mesh=cmesh.buildUnstructured()
15026         f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
15027         f.setName("MyField")
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         self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
15030         self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
15031         f.applyLin(2.,0.,0)# here it is OK !
15032         self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
15033         f.applyLin(2.,0.)
15034         self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
15035         pass
15036
15037     def testSwig2StructurizeMe1(self):
15038         arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
15039         arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
15040         arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
15041         c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
15042         c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
15043         u=c.buildUnstructured()
15044         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])
15045         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])
15046         u.renumberCells(cp)
15047         u.renumberNodes(np,len(np))
15048         u=MEDCoupling1SGTUMesh(u)
15049         #
15050         e,d,f=u.structurizeMe()
15051         self.assertTrue(c.isEqual(e,1e-12))
15052         self.assertTrue(d.isEqual(cp))
15053         self.assertTrue(f.isEqual(np))
15054         pass
15055
15056     def testSwig2DenseMatrix1(self):
15057         m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
15058         self.assertEqual(m0.getNumberOfRows(),2)
15059         self.assertEqual(m0.getNumberOfCols(),3)
15060         self.assertEqual(m0.getNbOfElems(),6)
15061         ref=m0.getData().getHiddenCppPointer()
15062         m00=m0.deepCpy()
15063         self.assertTrue(m0.isEqual(m00,1e-12))
15064         m00.getData().setIJ(0,0,2.1)
15065         self.assertTrue(not m0.isEqual(m00,1e-12))
15066         m00.getData().setIJ(0,0,2.)
15067         self.assertTrue(m0.isEqual(m00,1e-12))
15068         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15069         #
15070         m000=m0*DataArrayDouble([5,9,3])
15071         self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
15072         #
15073         m0.reShape(3,2)
15074         self.assertTrue(not m0.isEqual(m00,1e-12))
15075         self.assertEqual(m0.getNumberOfRows(),3)
15076         self.assertEqual(m0.getNumberOfCols(),2)
15077         self.assertEqual(ref,m0.getData().getHiddenCppPointer())
15078         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15079         m0.reShape(2,3)
15080         self.assertTrue(m0.isEqual(m00,1e-12))
15081         self.assertEqual(ref,m0.getData().getHiddenCppPointer())
15082         self.assertEqual(m0.getNumberOfRows(),2)
15083         self.assertEqual(m0.getNumberOfCols(),3)
15084         self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15085         #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
15086         m1=m0.deepCpy()
15087         self.assertEqual(m1.getNumberOfRows(),2)
15088         self.assertEqual(m1.getNumberOfCols(),3)
15089         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15090         m11=m0.deepCpy() ; m11+=m1
15091         self.assertEqual(m11.getNumberOfRows(),2)
15092         self.assertEqual(m11.getNumberOfCols(),3)
15093         self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
15094         m11=m11+m1
15095         self.assertEqual(m11.getNumberOfRows(),2)
15096         self.assertEqual(m11.getNumberOfCols(),3)
15097         self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
15098         m11=m11-m1
15099         self.assertEqual(m11.getNumberOfRows(),2)
15100         self.assertEqual(m11.getNumberOfCols(),3)
15101         self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
15102         m11-=m1
15103         self.assertEqual(m1.getNumberOfRows(),2)
15104         self.assertEqual(m1.getNumberOfCols(),3)
15105         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
15106         m1.transpose()
15107         self.assertEqual(m1.getNumberOfRows(),3)
15108         self.assertEqual(m1.getNumberOfCols(),2)
15109         self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
15110         #m1np=m0np.transpose()
15111         m2=m0*m1
15112         self.assertEqual(m2.getNumberOfRows(),2)
15113         self.assertEqual(m2.getNumberOfCols(),2)
15114         self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
15115         pass
15116
15117     def testSwig2AMR2(self):
15118         """ 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."""
15119         coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
15120         fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
15121         MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
15122         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))
15123         # 3D
15124         coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
15125         fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
15126         MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
15127         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))
15128         # 1D
15129         coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
15130         fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
15131         MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
15132         self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
15133         pass
15134
15135     def testSwig2AMR3(self):
15136         """ Test spread of coarse IMesh instance into a fine one, with a factor."""
15137         coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
15138         fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
15139         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
15140         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))
15141         # 3D
15142         coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
15143         fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
15144         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
15145         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))
15146         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()
15147         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()
15148         # 1D
15149         coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
15150         fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
15151         MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
15152         self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
15153         pass
15154
15155     def testSwig2AMR4(self):
15156         """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."""
15157         im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
15158         b=im.getBarycenterAndOwner() ; b-=[1.,1.] ; b=b.magnitude()
15159         ids=b.getIdsInRange(0.4,0.7)
15160         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
15161         # f.write("test.vti")
15162         amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
15163         arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
15164         bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
15165         amr.createPatchesFromCriterion(bso,arr2,[2,2])
15166         m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
15167         self.assertEqual(12,amr.getNumberOfPatches())
15168         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)]]
15169         for i,bltr in enumerate(exp0):
15170             self.assertEqual(amr[i].getBLTRRange(),bltr)
15171             pass
15172         self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
15173         #
15174         self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
15175         self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
15176         self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
15177         m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
15178         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
15179         self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
15180         pass
15181
15182     def testSwig2AMR5(self):
15183         """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
15184         # 1D
15185         coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
15186         fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
15187         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
15188         self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
15189         coarse.iota(-1000)
15190         MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
15191         self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
15192         # 2D
15193         coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
15194         fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
15195         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
15196         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))
15197         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkCoherency()
15198         coarse.iota(-1000)
15199         fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
15200         MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
15201         MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
15202         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkCoherency()
15203         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.])
15204         self.assertTrue(coarse.isEqual(coarseExp,1e-12))
15205         self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
15206         self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
15207         pass
15208
15209     def testSwig2AMR6(self):
15210         """ 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."""
15211         amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
15212         da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
15213         amr.addPatch([(1,4),(2,4)],[4,4])
15214         amr.addPatch([(0,1),(0,1)],[4,4])
15215         amr.addPatch([(4,5),(3,4)],[4,4])
15216         amr.addPatch([(4,5),(1,3)],[4,4])
15217         amr.addPatch([(0,1),(1,4)],[4,4])
15218         da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
15219         da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
15220         da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
15221         da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
15222         da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
15223         self.assertEqual(5,amr.getNumberOfPatches())
15224         l=[da0,da1,da2,da3,da4]
15225         lCpy=[elt.deepCpy() for elt in l]
15226         l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
15227         amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
15228         amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
15229         amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
15230         #
15231         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
15232         f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkCoherency()
15233         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkCoherency()
15234         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkCoherency()
15235         f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkCoherency()
15236         f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkCoherency()
15237         #
15238         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])
15239         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])
15240         self.assertTrue(da0.isEqual(da0Exp,1e-12))
15241         self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
15242         self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
15243         self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
15244         #
15245         g0=amr.retrieveGridsAt(0)
15246         self.assertEqual(1,len(g0))
15247         self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
15248         g1=amr.retrieveGridsAt(1)
15249         self.assertEqual(5,len(g1))
15250         for i in xrange(5):
15251             self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
15252             pass
15253         pass
15254     
15255     def testSwig2AMR7(self):
15256         """Idem testSwig2AMR6 except that we are in 1D"""
15257         amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
15258         da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
15259         amr.addPatch([(1,4)],[4])
15260         amr.addPatch([(0,1)],[4])
15261         da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
15262         da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
15263         self.assertEqual(2,amr.getNumberOfPatches())
15264         l=[da0,da1]
15265         lCpy=[elt.deepCpy() for elt in l]
15266         l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
15267         amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
15268         amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
15269         amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
15270         #
15271         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
15272         f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkCoherency()
15273         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkCoherency()
15274         #
15275         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])
15276         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])
15277         self.assertTrue(da0.isEqual(da0Exp,1e-12))
15278         self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
15279         self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
15280         self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
15281         pass
15282
15283     def testSwig2AMR8(self):
15284         """This test checks 'basic' operations for ghost update."""
15285         ghostSz=1
15286         amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
15287         amr.addPatch([(1,4),(2,4)],[4,4])
15288         amr.addPatch([(4,5),(3,5)],[4,4])
15289         amr.addPatch([(0,1),(4,6)],[4,4])
15290         amr[0].addPatch([(10,12),(5,8)],[2,2])
15291         amr[1].addPatch([(0,1),(0,5)],[2,2])
15292         amr[2].addPatch([(3,4),(0,3)],[2,2])
15293         m=amr.buildMeshFromPatchEnvelop()
15294         self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
15295         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))
15296         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15297         att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
15298         att.alloc()
15299         d=att.getFieldOn(amr,"Field")
15300         self.assertEqual(56,d.getNumberOfTuples())
15301         self.assertEqual(1,d.getNumberOfComponents())
15302         d.iota() ; d+=0.1
15303         d0=att.getFieldOn(amr[0].getMesh(),"Field")
15304         self.assertEqual(140,d0.getNumberOfTuples())
15305         self.assertEqual(1,d0.getNumberOfComponents())
15306         d0.iota() ; d0+=0.2
15307         d1=att.getFieldOn(amr[1].getMesh(),"Field")
15308         self.assertEqual(60,d1.getNumberOfTuples())
15309         self.assertEqual(1,d1.getNumberOfComponents())
15310         d1.iota() ; d1+=0.3
15311         d2=att.getFieldOn(amr[2].getMesh(),"Field")
15312         self.assertEqual(60,d2.getNumberOfTuples())
15313         self.assertEqual(1,d2.getNumberOfComponents())
15314         d2.iota() ; d2+=0.4
15315         d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
15316         self.assertEqual(48,d00.getNumberOfTuples())
15317         self.assertEqual(1,d00.getNumberOfComponents())
15318         d00.iota() ; d00+=0.5
15319         d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
15320         self.assertEqual(48,d10.getNumberOfTuples())
15321         self.assertEqual(1,d10.getNumberOfComponents())
15322         d10.iota() ; d10+=0.6
15323         d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
15324         self.assertEqual(32,d20.getNumberOfTuples())
15325         self.assertEqual(1,d20.getNumberOfComponents())
15326         d20.iota() ; d20+=0.7
15327         f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
15328         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])
15329         arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
15330         self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
15331         m=MEDCoupling1SGTUMesh(f.getMesh())
15332         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])))
15333         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))
15334         # the test is here ! To be called after iteration with no remesh
15335         att.synchronizeAllGhostZones()
15336         f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkCoherency()
15337         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))
15338         f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
15339         f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
15340         f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
15341         f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
15342         f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
15343         f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
15344         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))
15345         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))
15346         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))
15347         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))
15348         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))
15349         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))
15350         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))
15351         pass
15352
15353     def testSwig2AMR9(self):
15354         """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
15355         ghostSz=2
15356         amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
15357         amr.addPatch([(1,4),(2,4)],[4,4])
15358         amr.addPatch([(4,5),(3,5)],[4,4])
15359         amr.addPatch([(0,1),(4,6)],[4,4])
15360         amr[0].addPatch([(10,12),(5,8)],[2,2])
15361         amr[1].addPatch([(0,1),(0,5)],[2,2])
15362         amr[2].addPatch([(3,4),(0,3)],[2,2])
15363         self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
15364         att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
15365         att.alloc()
15366         d=att.getFieldOn(amr,"Field")
15367         self.assertEqual(90,d.getNumberOfTuples())
15368         self.assertEqual(1,d.getNumberOfComponents())
15369         d.iota() ; d+=0.1
15370         d0=att.getFieldOn(amr[0].getMesh(),"Field")
15371         self.assertEqual(192,d0.getNumberOfTuples())
15372         self.assertEqual(1,d0.getNumberOfComponents())
15373         d0.iota() ; d0+=0.2
15374         d1=att.getFieldOn(amr[1].getMesh(),"Field")
15375         self.assertEqual(96,d1.getNumberOfTuples())
15376         self.assertEqual(1,d1.getNumberOfComponents())
15377         d1.iota() ; d1+=0.3
15378         d2=att.getFieldOn(amr[2].getMesh(),"Field")
15379         self.assertEqual(96,d2.getNumberOfTuples())
15380         self.assertEqual(1,d2.getNumberOfComponents())
15381         d2.iota() ; d2+=0.4
15382         d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
15383         self.assertEqual(80,d00.getNumberOfTuples())
15384         self.assertEqual(1,d00.getNumberOfComponents())
15385         d00.iota() ; d00+=0.5
15386         d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
15387         self.assertEqual(84,d10.getNumberOfTuples())
15388         self.assertEqual(1,d10.getNumberOfComponents())
15389         d10.iota() ; d10+=0.6
15390         d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
15391         self.assertEqual(60,d20.getNumberOfTuples())
15392         self.assertEqual(1,d20.getNumberOfComponents())
15393         d20.iota() ; d20+=0.7
15394         # the test is here ! To be called after iteration with no remesh
15395         att.synchronizeAllGhostZones()
15396         f=att.buildCellFieldOnWithGhost(amr,"Field")
15397         f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
15398         f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
15399         f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
15400         f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
15401         f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
15402         f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
15403         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))
15404         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))
15405         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))
15406         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))
15407         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))
15408         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))
15409         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
15410         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
15411         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
15412         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
15413         self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
15414         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])))
15415         pass
15416
15417     def testSwig2AMR10(self):
15418         """ 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."""
15419         szGhost=2
15420         amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
15421         amr.addPatch([(3,8),(0,3)],[2,2])
15422         amr[0].addPatch([(0,10),(3,6)],[3,3])
15423         amr[0].addPatch([(2,6),(0,3)],[3,3])
15424         amr[0].addPatch([(6,10),(2,3)],[3,3])
15425         amr.addPatch([(3,8),(3,6)],[2,2])
15426         amr[1].addPatch([(0,4),(0,6)],[3,3])
15427         amr[1].addPatch([(7,10),(0,4)],[3,3])
15428         amr[1].addPatch([(4,7),(0,3)],[3,3])
15429         amr[1].addPatch([(4,7),(3,6)],[3,3])
15430         amr.addPatch([(0,3),(6,10)],[2,2])
15431         self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
15432         self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
15433         self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
15434         self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
15435         da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
15436         MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
15437         self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
15438         att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
15439         att.spillNatures([ConservativeVolumic])
15440         att.alloc()
15441         yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
15442         yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
15443         yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
15444         yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
15445         yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
15446         yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
15447         yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
15448         yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
15449         yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
15450         yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
15451         yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
15452         att2=att.deepCpy() ; att3=att2.deepCpy() ; att4=att3.deepCpy() ; att5=att4.deepCpy() ; att6=att5.deepCpy()
15453         ###
15454         att.synchronizeFineToCoarseBetween(2,1)
15455         ###
15456         for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
15457             self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15458             pass
15459         for pos in [(0,),(1,)]:
15460             self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15461             pass
15462         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))
15463         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))
15464         del att
15465         ####
15466         att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
15467         ### 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.
15468         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])
15469         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
15470         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])
15471         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
15472         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])
15473         self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
15474         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)]:
15475             vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
15476             l=vals.getNumberOfTuples()
15477             exps=DataArrayDouble(l) ; exps.iota(iot)
15478             self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
15479             pass
15480         del att2
15481         ###
15482         att3.synchronizeCoarseToFineBetween(1,2)
15483         ###
15484         for pos in [(),(0,),(1,),(2,)]:
15485             self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15486             pass
15487         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])
15488         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
15489         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])
15490         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
15491         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])
15492         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
15493         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])
15494         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
15495         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])
15496         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
15497         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])
15498         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
15499         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])
15500         self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
15501         del att3
15502         ### 
15503         att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
15504         for pos in [(),(0,),(1,),(2,)]:
15505             self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15506             pass
15507         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])
15508         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
15509         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]])
15510         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
15511         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])
15512         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
15513         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])
15514         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
15515         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])
15516         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
15517         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])
15518         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
15519         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])
15520         self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
15521         del att4
15522         ###
15523         att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
15524         for pos in [(),(0,),(1,),(2,)]:
15525             self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
15526             pass
15527         att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
15528         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])
15529         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
15530         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])
15531         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
15532         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])
15533         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
15534         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])
15535         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
15536         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])
15537         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
15538         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])
15539         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
15540         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])
15541         self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
15542         pass
15543
15544     def testSwig2AMR11(self):
15545         """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
15546         coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
15547         fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
15548         MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15549         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.])
15550         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.])
15551         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.])
15552         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.])
15553         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.])
15554         exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
15555         self.assertTrue(fine.isEqual(exp,1e-12))
15556         #
15557         fine.iota()
15558         coarse.iota(0.5)
15559         MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
15560         amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
15561         amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
15562         att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15563         att.alloc()
15564         exp1=DataArrayDouble(990) ; exp1.iota(0.5)
15565         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])
15566         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.])
15567         exp1[ids]=vals
15568         self.assertTrue(coarse.isEqual(exp1,1e-12))
15569         #
15570         MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
15571         exp2=DataArrayDouble(990) ; exp2.iota(0.5)
15572         exp2[ids]=vals/24.
15573         self.assertTrue(coarse.isEqual(exp2,1e-12))
15574         #
15575         coarse.iota(0.5) ; fine.iota(0.1)
15576         MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15577         #
15578         coarse.iota(0.5) ; fine.iota(0.1)
15579         MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
15580         exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
15581         self.assertTrue(fine[:240].isEqual(exp00,1e-12))
15582         exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
15583         self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
15584         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))
15585         pass
15586
15587     def testSwig2AMR12(self):
15588         """ This test check the MEDCouplingAMRAttribute.projectTo method."""
15589         amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15590         amr0.addPatch([(3,8),(0,3)],[2,2])
15591         amr0.addPatch([(3,8),(3,6)],[2,2])
15592         att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
15593         att0.alloc()
15594         att0.getFieldOn(amr0,"YY").iota(0.01)
15595         att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
15596         att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
15597         amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15598         amr1.addPatch([(2,5),(1,4)],[2,2])
15599         att1=att0.projectTo(amr1)
15600         self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
15601         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))
15602         #
15603         amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15604         amr0.addPatch([(2,5),(2,7)],[2,2])
15605         amr0.addPatch([(5,8),(2,7)],[2,2])
15606         att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
15607         att0.alloc()
15608         att0.getFieldOn(amr0,"YY").iota(0.01)
15609         att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
15610         att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
15611         amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
15612         amr1.addPatch([(3,6),(2,7)],[2,2])
15613         amr1.addPatch([(6,9),(2,7)],[2,2])
15614         att1=att0.projectTo(amr1)
15615         self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
15616         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))
15617         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))
15618         pass
15619
15620     def testSwig2AMR13(self):
15621         """ non regression test"""
15622         for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
15623             amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15624             amr.addPatch([(1,3),(0,2)],fact)
15625             amr.addPatch([(1,3),(3,4)],fact)
15626             att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15627             att.alloc()
15628             att.getFieldOn(amr,"YY").iota(0.1)
15629             att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
15630             att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
15631             att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
15632             exp=DataArrayDouble(64) ; exp.iota(0.1)
15633             self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
15634             exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
15635             self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
15636             exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
15637             self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
15638             pass
15639         pass
15640     
15641     def testSwig2AMR14(self):
15642         """ non regression linked to VTHB write."""
15643         fact=[2,2] ; fact2=[3,3]
15644         amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15645         amr.addPatch([(1,3),(0,2)],fact)
15646         amr.addPatch([(1,3),(3,4)],fact)
15647         amr[0].addPatch([(1,3),(1,3)],fact2)
15648         amr[1].addPatch([(1,3),(1,2)],fact2)
15649         att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
15650         att.alloc()
15651         att.getFieldOn(amr,"YY").iota(0.1)
15652         att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
15653         att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
15654         att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
15655         att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
15656         self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
15657         self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
15658         self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
15659         self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
15660         pass
15661
15662     def testSwig2Intersect2DMeshWith1DLine1(self):
15663         """A basic test with no colinearity between m1 and m2."""
15664         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15665         m1=i.buildUnstructured()
15666         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])
15667         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15668         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])))
15669         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,31,1,31,28,1,28,29,1,29,30,1,30,27,1,27,26])))
15670         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])))
15671         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18])))
15672         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15673         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15674         self.assertTrue(a.getCoords()[25:25+2].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15675         self.assertTrue(a.getCoords()[27:].isEqualWithoutConsideringStr(DataArrayDouble([(3.3214285714285716,2.),(1.6071428571428572,3.),(2.,2.7708333333333335),(3.,2.1875),(1.,3.354166666666667)]),1e-12))
15676         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])))
15677         self.assertTrue(d.isEqual(DataArrayInt([(10,10),(11,12),(13,14),(15,16),(17,18),(19,19)])))
15678         pass
15679
15680     def testSwig2Intersect2DMeshWith1DLine2(self):
15681         """A basic test with colinearity between m1 and m2 and the last cell of m2 outside m1."""
15682         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15683         m1=i.buildUnstructured()
15684         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()
15685         for i in xrange(6):
15686             m2.insertNextCell(NORM_SEG2,[i,i+1])
15687             pass
15688         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15689         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])))
15690         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,51,59,64,70,75,83,88])))
15691         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])))
15692         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
15693         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15694         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15695         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15696         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,12,13,14,15,4,5,6,7,8,9,10,11])))
15697         self.assertTrue(d.isEqual(DataArrayInt([(12,8),(13,9),(14,10),(14,10),(14,10),(14,10),(15,11),(-1,-1)])))
15698         pass
15699
15700     def testSwig2Intersect2DMeshWith1DLine3(self):
15701         """m2 fully included in cell #12. of m1"""
15702         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15703         m1=i.buildUnstructured()
15704         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(0.75,3.25),(0.5,3.5),(0.25,3.25)])) ; m2.allocateCells()
15705         for i in xrange(2):
15706             m2.insertNextCell(NORM_SEG2,[i,i+1])
15707             pass
15708         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15709         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])))
15710         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80])))
15711         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,26,1,26,27])))
15712         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
15713         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15714         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15715         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15716         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,12])))
15717         self.assertTrue(d.isEqual(DataArrayInt([(15,15),(15,15)])))
15718         pass
15719
15720     def testSwig2Intersect2DMeshWith1DLine4(self):
15721         """A special case where an edge is simultaneously a cut and colinear. This tests also checks negative values in descending edges of m1."""
15722         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15723         m1=i.buildUnstructured()
15724         part=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15])
15725         m1_1=m1[part]
15726         m1_2=m1[part.buildComplement(m1.getNumberOfCells())]
15727         m1=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1_1,m1_2.buildSpreadZonesWithPoly())
15728         m1.zipCoords()
15729         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(3.5,2.),(0.5,2.)])) ; m2.allocateCells()
15730         m2.insertNextCell(NORM_SEG2,[0,1])
15731         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15732         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])))
15733         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,52,58,64,70,76])))
15734         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,24,12,1,12,11,1,11,25])))
15735         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9])))
15736         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15737         self.assertTrue(a.getCoords()[:24].isEqual(m1.getCoords(),1e-12))
15738         self.assertTrue(a.getCoords()[24:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15739         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,8,9,10,11,4,5,6,7,12,12])))
15740         self.assertTrue(d.isEqual(DataArrayInt([(9,11),(12,13),(8,10)])))
15741         pass
15742
15743     def testSwig2Intersect2DMeshWith1DLine5(self):
15744         """A test focusing on a special case for cut."""
15745         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
15746         m1=i.buildUnstructured()
15747         m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(1.,0.),(3.,2.),(1.,4.)])) ; m2.allocateCells()
15748         for i in xrange(2):
15749             m2.insertNextCell(NORM_SEG2,[i,i+1])
15750             pass
15751         a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
15752         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])))
15753         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])))
15754         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,1,7,1,7,13,1,13,17,1,17,21])))
15755         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12])))
15756         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15757         self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
15758         self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
15759         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])))
15760         self.assertTrue(d.isEqual(DataArrayInt([(12,13),(14,15),(16,17),(18,19)])))
15761         pass
15762
15763     def testIntersect2DMeshWith1DLine6(self):
15764         """ Basic test for Intersect2DMeshWith1DLine: a vertical line intersecting a square. """
15765         m1c = MEDCouplingCMesh()
15766         coordX = DataArrayDouble([-1., 1., 2])
15767         m1c.setCoordsAt(0,coordX)
15768         coordY = DataArrayDouble([0., 2.])
15769         m1c.setCoordsAt(1,coordY);
15770         m1 = m1c.buildUnstructured()
15771
15772         # A simple line:
15773         m2 = MEDCouplingUMesh("bla", 1)
15774         coord2 = DataArrayDouble([0.,-1.0,  0.,1.,  0.,3.,  0.5,2.2], 4, 2)
15775         conn2 = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,2,3])
15776         connI2 = DataArrayInt([0,3,7])
15777         m2.setCoords(coord2)
15778         m2.setConnectivity(conn2, connI2)
15779
15780         # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15781         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)        
15782         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])))
15783         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,16,27])))
15784         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,6,10,1,10,7,2,7,11,12,2,11,8,13])))
15785         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,14])))
15786         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15787         self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
15788         self.assertTrue(a.getCoords()[6:10].isEqual(m2.getCoords(),1e-12))
15789         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))
15790         self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
15791         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(-1,-1)])))
15792         pass
15793
15794     def testSwig2Intersect2DMeshWith1DLine7(self):
15795         """ Star pattern (a triangle intersecting another one upside down) """
15796         coords1 = DataArrayDouble([-2.,1.,   2.,1.,  0.,-2.], 3,2)
15797         coords2 = DataArrayDouble([0.,2.,   2.,-1.,  -2.,-1.,  0.,3.], 4,2)
15798         m1 = MEDCouplingUMesh("triangle", 2)
15799         m2 = MEDCouplingUMesh("tri_line", 1)
15800         m1.setCoords(coords1)
15801         m2.setCoords(coords2)
15802         m1.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2]), DataArrayInt([0,4]))
15803         m2.setConnectivity(DataArrayInt([NORM_SEG2,0,1,NORM_SEG2,1,2,NORM_SEG2,2,3]), DataArrayInt([0,3,6,9]))
15804     # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15805         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15806         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])))
15807         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,19])))
15808         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])))
15809         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24,27])))
15810         self.assertTrue(a.getCoords()[:3].isEqual(m1.getCoords(),1e-12))
15811         self.assertTrue(a.getCoords()[3:7].isEqual(m2.getCoords(),1e-12))
15812         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))
15813         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15814         self.assertTrue(c.isEqual(DataArrayInt([0,0,0,0])))
15815         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,3),(-1,-1),(-1,-1),(1,3),(-1,-1),(-1,-1),(2,3),(-1,-1)])))
15816         pass
15817     
15818     def testSwig2Intersect2DMeshWith1DLine8(self):
15819         """ Line pieces ending (or fully located) in the middle of a cell """
15820         m1c = MEDCouplingCMesh()
15821         m1c.setCoordsAt(0,DataArrayDouble([-1., 1.]))
15822         m1c.setCoordsAt(1,DataArrayDouble([-1., 1.]));
15823         m1 = m1c.buildUnstructured()
15824         coords2 = DataArrayDouble([0.,0.,  0.,1.5, -1.5,0.,  0.5,0.0,  0.0,-0.5, 1.1,-0.6], 6,2)
15825         m2 = MEDCouplingUMesh("piecewise_line", 1)
15826         m2.setCoords(coords2)
15827         c = DataArrayInt([NORM_SEG2,2,1, NORM_SEG2,1,4, NORM_SEG2,4,3,  NORM_SEG2,3,5])
15828         cI = DataArrayInt([0,3,6,9,12])
15829         m2.setConnectivity(c, cI)
15830         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15831         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])))
15832         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,10,19])))
15833         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])))
15834         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
15835         self.assertTrue(a.getCoords()[:4].isEqual(m1.getCoords(),1e-12))
15836         self.assertTrue(a.getCoords()[4:10].isEqual(m2.getCoords(),1e-12))
15837         self.assertTrue(a.getCoords()[10:].isEqual(DataArrayDouble([(-1.,0.5),(-0.5,1.),(0.,1.),(1.,-0.5)]),1e-12))
15838         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15839         self.assertTrue(c.isEqual(DataArrayInt([0,0,0])))
15840         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
15841         pass
15842
15843     def testSwig2Intersect2DMeshWith1DLine9(self):
15844         """ Intersection with a line whose connectivity is not consecutive """
15845         m1c = MEDCouplingCMesh()
15846         coordX = DataArrayDouble([-1., 1., 2])
15847         m1c.setCoordsAt(0,coordX)
15848         coordY = DataArrayDouble([0., 2.])
15849         m1c.setCoordsAt(1,coordY);
15850         m1 = m1c.buildUnstructured()
15851         # A simple line:
15852         m2 = MEDCouplingUMesh("bla", 1)
15853         coord2 = DataArrayDouble([0.,1.5,  0.5,1.,  0.0,0.5,  0.0,3.0,  0.0,-1.0], 5, 2)
15854         conn2 = DataArrayInt([NORM_SEG2,3,0,NORM_SEG3,0,2,1,NORM_SEG2,2,4])
15855         connI2 = DataArrayInt([0,3,7,10])
15856         m2.setCoords(coord2)
15857         m2.setConnectivity(conn2, connI2)
15858         # End of construction of input meshes m1bis and m2 -> start of specific part of the test
15859         a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
15860         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])))
15861         self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,18,31])))
15862         self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,9,12,1,12,6,2,6,8,13,1,8,11,1,11,10])))
15863         self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,13,16])))
15864         self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
15865         self.assertTrue(a.getCoords()[6:11].isEqual(m2.getCoords(),1e-12))
15866         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))
15867         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15868         self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
15869         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
15870         pass
15871
15872     def testSwig2Intersect2DMeshWith1DLine10(self):
15873         """ Intersection between a circle and various lines """
15874         eps = 1.0e-8
15875         m_circ = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 2.0)
15876         coords = [0.0,3.0,0.0,-3.0]
15877         connec = [0,1]
15878         m_line = MEDCouplingUMesh("seg", 1)  
15879         m_line.allocateCells(1)
15880         meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
15881         m_line.setCoords(meshCoords)
15882         m_line.insertNextCell(NORM_SEG2, connec)
15883         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m_circ, m_line, eps)
15884         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15885         self.assertTrue(a.getCoords()[:m_circ.getNumberOfNodes()].isEqual(m_circ.getCoords(),1e-12))
15886         self.assertTrue(a.getCoords()[m_circ.getNumberOfNodes():m_circ.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15887         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))
15888         self.assertEqual([32,1,7,10,11,12,13,14,15,32,5,3,11,10,16,17,18,19],a.getNodalConnectivity().getValues())
15889         self.assertEqual([0,9,18],  a.getNodalConnectivityIndex().getValues())
15890         self.assertEqual([1,8,11,1,11,10,1,10,9],b.getNodalConnectivity().getValues())
15891         self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
15892         self.assertTrue(a.getCoords()[:8].isEqual(m_circ.getCoords(),1e-12))
15893         self.assertTrue(a.getCoords()[8:10].isEqual(m_line.getCoords(),1e-12))
15894         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])
15895         self.assertTrue(a.getCoords().isEqualWithoutConsideringStr(coo_tgt,1.0e-12))
15896         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15897         self.assertEqual([0,0],c.getValues())
15898         self.assertEqual([-1,-1,0,1,-1,-1],d.getValues())
15899
15900     def testSwig2Intersect2DMeshWith1DLine11(self):
15901         """ Quad line re-entering a square cell """
15902         eps = 1.0e-8
15903         m = MEDCouplingUMesh("box", 2)
15904         m.setCoords(DataArrayDouble([-1., -1., -1., 1., 1., 1., 1., -1.0],4,2))
15905         c, cI = [NORM_POLYGON, 0, 1, 2, 3], [0, 5]
15906         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15907         m.checkCoherency()
15908         coords2 = [0., 1.3, -1.3, 0., -0.6, 0.6, 0., -1.3, -0.5, -0.5]
15909         connec2, cI2 = [NORM_SEG3, 0, 1, 2, NORM_SEG3, 1, 3, 4], [0,4,8]
15910         m_line = MEDCouplingUMesh("seg", 1)  
15911         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15912         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15913         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15914         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15915         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15916         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15917         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))
15918         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())
15919         self.assertEqual([0,13,20,27],a.getNodalConnectivityIndex().getValues())
15920         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())
15921         self.assertEqual([0,4,8,12,16,20,24],b.getNodalConnectivityIndex().getValues())
15922         self.assertTrue(a.getCoords()[:4].isEqual(m.getCoords(),1e-12))
15923         self.assertTrue(a.getCoords()[4:9].isEqual(m_line.getCoords(),1e-12))
15924         self.assertTrue(DataArrayInt([0,0,0]).isEqual(c))
15925         self.assertTrue(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(0,1),(-1,-1)]).isEqual(d))
15926         pass
15927
15928     def testSwig2Intersect2DMeshWith1DLine12(self):
15929         """ Two squares one in the other intersected by an horizontal line """
15930         eps = 1.0e-8
15931         m = MEDCouplingUMesh("boxbox", 2)
15932         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))
15933         c = [NORM_POLYGON, 4, 5, 6, 7, NORM_POLYGON, 0, 1, 5, 4, NORM_POLYGON, 1, 2, 3, 0, 4, 7, 6, 5]
15934         cI = [0, 5, 10, 19]
15935         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15936         m.checkCoherency()
15937         coords2 = [-1., 0.25, 1., 0.25]
15938         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
15939         m_line = MEDCouplingUMesh.New("seg", 1)  
15940         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15941         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15942         m_line2 = m_line.deepCpy()
15943         m2 = m.deepCpy()
15944         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15945         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15946         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15947         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15948         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))
15949         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())
15950         self.assertEqual([0,5,9,14,20,27],a.getNodalConnectivityIndex().getValues())
15951         self.assertEqual([1,8,10,1,10,5,1,5,6,1,6,11,1,11,9],b.getNodalConnectivity().getValues())
15952         self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
15953         self.assertTrue(c.isEqual(DataArrayInt([0,1,1,2,2])))
15954         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
15955         pass
15956
15957     def testSwig2Intersect2DMeshWith1DLine13(self):
15958         """ A square (side length) in a circle intersected by a simple horizontal line """
15959         import math
15960         eps = 1.0e-8
15961         m = MEDCouplingUMesh("boxcircle", 2)
15962         sq2 = math.sqrt(2.0)
15963         soth = (sq2+1.0)/2.0
15964         coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1., 
15965          1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
15966         coo = DataArrayDouble(coo); coo.rearrange(2) 
15967         m.setCoords(coo)
15968         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]
15969         cI = [0, 9, 18, 35]
15970         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
15971         m.checkCoherency()
15972         coords2 = [-2., 1., 2., 1.0]
15973         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
15974         m_line = MEDCouplingUMesh("seg", 1)  
15975         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
15976         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
15977         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
15978         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
15979         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
15980         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
15981         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))
15982         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())
15983         self.assertEqual([0,9,18,25,32,49],a.getNodalConnectivityIndex().getValues())
15984         self.assertEqual([1,18,21,1,21,9,1,9,10,1,10,20,1,20,19],b.getNodalConnectivity().getValues())
15985         self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
15986         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
15987         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(3,4),(-1,-1)])))
15988         pass
15989
15990     def testSwig2Intersect2DMeshWith1DLine14(self):
15991         """ A circle in a circle intersected by a simple horizontal line, not tangent to the circles """
15992         eps = 1.0e-8
15993         m = MEDCouplingUMesh("boxcircle", 2)
15994         coo = [2.,0.,1.4142135623730951,1.414213562373095,0.,2.,-1.414213562373095,1.4142135623730951,-2.,0.,-1.4142135623730954,-1.414213562373095,0.,-2.,
15995                1.4142135623730947,-1.4142135623730954,1.,0.,0.7071067811865476,0.7071067811865475,0.,1.,-0.7071067811865475,0.7071067811865476,-1.,0.,-0.7071067811865477,-0.7071067811865475,
15996                0.,-1.,0.7071067811865474,-0.7071067811865477,1.060660171779821,-1.0606601717798214,-1.0606601717798214,-1.0606601717798212]
15997         coo = DataArrayDouble(coo); coo.rearrange(2) 
15998         m.setCoords(coo)
15999         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]
16000         cI = [0, 9, 18, 35] 
16001         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
16002         m.checkCoherency()
16003         coords2 = [-2., 0., 2., 0.]
16004         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
16005         m_line = MEDCouplingUMesh.New("seg", 1)  
16006         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
16007         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
16008         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
16009         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
16010         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
16011         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
16012         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))
16013         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())
16014         self.assertEqual([0,9,26,35,44,53,62],a.getNodalConnectivityIndex().getValues())
16015         self.assertEqual([1,18,20,1,20,21,1,21,19],b.getNodalConnectivity().getValues())
16016         self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
16017         self.assertTrue(c.isEqual(DataArrayInt([1,2,2,2,0,0])))
16018         self.assertTrue(d.isEqual(DataArrayInt([(1,3),(4,5),(1,2)])))
16019         pass
16020
16021     def testSwig2Intersect2DMeshWith1DLine15(self):
16022         """ Same as testSwig2Intersect2DMeshWith1DLine13 except that the line is colinear AND splits on of the common edge of 2D mesh."""
16023         import math
16024         eps = 1.0e-8
16025         m = MEDCouplingUMesh("boxcircle", 2)
16026         sq2 = math.sqrt(2.0)
16027         soth = (sq2+1.0)/2.0
16028         coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1., 
16029          1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
16030         coo = DataArrayDouble(coo); coo.rearrange(2) 
16031         m.setCoords(coo)
16032         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]
16033         cI = [0, 9, 18, 35]
16034         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
16035         m.checkCoherency()
16036         coords2 = [(-2., 1.),(2.,1.),(0.,1)]
16037         connec2, cI2 = [NORM_SEG2, 0, 2, NORM_SEG2, 2, 1], [0,3,6]
16038         m_line = MEDCouplingUMesh("seg", 1)  
16039         m_line.setCoords(DataArrayDouble(coords2))
16040         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
16041         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
16042         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
16043         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
16044         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
16045         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))
16046         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())
16047         self.assertEqual([0,11,22,29,36,53],a.getNodalConnectivityIndex().getValues())
16048         self.assertEqual([1,18,22,1,22,9,1,9,20,1,20,10,1,10,21,1,21,19],b.getNodalConnectivity().getValues())
16049         self.assertEqual([0,3,6,9,12,15,18],b.getNodalConnectivityIndex().getValues())
16050         self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
16051         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(1,0),(3,4),(-1,-1)])))
16052         pass
16053
16054     def testSwig2Intersect2DMeshWith1DLine16(self):
16055         """ Same than testSwig2Intersect2DMeshWith1DLine13 except it is a vertical line. Non regression test."""
16056         import math
16057         eps = 1.0e-8
16058         m = MEDCouplingUMesh("boxcircle", 2)
16059         sq2 = math.sqrt(2.0)
16060         soth = (sq2+1.0)/2.0
16061         coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1., 
16062          1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
16063         coo = DataArrayDouble(coo); coo.rearrange(2) 
16064         m.setCoords(coo)
16065         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]
16066         cI = [0, 9, 18, 35]
16067         m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
16068         m.checkCoherency()
16069         coords2 = [1., 2., 1., -2.]
16070         connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
16071         m_line = MEDCouplingUMesh("seg", 1)  
16072         m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
16073         m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
16074         a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
16075         self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
16076         self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
16077         self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
16078         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),(1.,2.),(1.,-2.),(1.,1.7320508075688772),(1.,-1.7320508075688772),(1.2071067811865475,1.2071067811865475),(1.,1.3660254037844386),(1.217522858017441,1.5867066805824703),(-1.2071067811865475,1.2071067811865475),(-0.2610523844401028,1.9828897227476208),(1.,1.3660254037844386),(0.,1.),(1.2071067811865475,1.2071067811865475),(2.,0.),(1.217522858017441,-1.5867066805824703),(1.,-1.3660254037844386),(1.,0.),(-2.,0.),(-1.2071067811865475,1.2071067811865475),(-1.,0.),(0.,-1.),(1.,-1.3660254037844386),(-0.2610523844401028,-1.9828897227476208)]),1e-12))
16079         self.assertEqual([32,8,9,10,11,12,13,14,15,32,1,10,20,22,23,24,32,9,3,20,10,25,26,27,28,32,10,1,7,21,11,29,30,31,32,33,32,5,3,9,8,11,21,34,35,36,37,38,39],a.getNodalConnectivity().getValues())
16080         self.assertEqual([0,9,16,25,36,49],a.getNodalConnectivityIndex().getValues())
16081         self.assertEqual([1,18,20,1,20,10,1,10,11,1,11,21,1,21,19],b.getNodalConnectivity().getValues())
16082         self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
16083         self.assertTrue(c.isEqual(DataArrayInt([0,1,1,2,2])))
16084         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
16085         pass
16086
16087     def testOrderConsecutiveCells1D1(self):
16088         """A line in several unconnected pieces:"""
16089         m2 = MEDCouplingUMesh.New("bla", 1)
16090         c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
16091                                NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
16092                                NORM_SEG2,11,12,NORM_SEG2,12,13,
16093                                NORM_SEG2,14,15])
16094         cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
16095         coords2 = DataArrayDouble([float(i) for i in range(32)], 16,2)
16096         m2.setCoords(coords2);
16097         m2.setConnectivity(c, cI);
16098         m2.checkCoherency2(1.0e-8);
16099       
16100         # Shuffle a bit :-)
16101         m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
16102         res = m2.orderConsecutiveCells1D()
16103         expRes = [0,3,6,8,1,4,2,7,5]
16104         self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
16105         self.assertEqual(expRes, res.getValues())
16106       
16107         # A closed line (should also work)
16108         m3 = MEDCouplingUMesh.New("bla3", 1)
16109         conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
16110         coord3 = coords2[0:5]
16111         c.reAlloc(10)
16112         cI.reAlloc(4)
16113         
16114         m3.setCoords(coord3)
16115         m3.setConnectivity(conn3A, cI)
16116         m3.checkCoherency2(1.0e-8)
16117         res2 = m3.orderConsecutiveCells1D()
16118         expRes2 = [0,1,2]
16119         self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
16120         self.assertEqual(expRes2, res2.getValues())
16121         pass
16122
16123     def testDADApplyFuncOnThis1(self):
16124         d=DataArrayDouble(5) ; d.iota(0.)
16125         d.applyFuncOnThis("2*x+1")
16126         self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
16127         d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
16128         d.applyFuncOnThis("2*x+1")
16129         self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
16130         d.applyFuncOnThis("1+2*3")
16131         self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
16132         pass
16133
16134     def testSwig2PointSetComputeFetchedNodeIds1(self):
16135         arr=DataArrayDouble(6) ; arr.iota()
16136         m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
16137         m=m.buildUnstructured()
16138         m0=m[[0,1,5,6,25,26,30,31,124]]
16139         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])
16140         self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
16141         self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
16142         self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
16143         m0.convertAllToPoly()
16144         self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
16145         self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
16146         pass
16147
16148     def testSwig2PartDefinition1(self):
16149         pd=PartDefinition.New(5,22,3)
16150         self.assertTrue(isinstance(pd,SlicePartDefinition))
16151         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
16152         self.assertEqual(pd.getNumberOfElems(),6)
16153         self.assertEqual(pd.getEffectiveStop(),23)
16154         pd=PartDefinition.New(5,23,3)
16155         self.assertTrue(isinstance(pd,SlicePartDefinition))
16156         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
16157         self.assertEqual(pd.getNumberOfElems(),6)
16158         self.assertEqual(pd.getEffectiveStop(),23)
16159         self.assertEqual(pd.getSlice(),slice(5,23,3))
16160         pd=PartDefinition.New(5,22,1)
16161         self.assertTrue(isinstance(pd,SlicePartDefinition))
16162         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
16163         self.assertEqual(pd.getNumberOfElems(),17)
16164         self.assertEqual(pd.getEffectiveStop(),22)
16165         pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
16166         self.assertTrue(isinstance(pd,SlicePartDefinition))
16167         self.assertEqual(pd.getNumberOfElems(),8)
16168         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
16169         self.assertEqual(pd.getEffectiveStop(),29)
16170         pd=SlicePartDefinition(5,22,1)
16171         self.assertTrue(isinstance(pd,SlicePartDefinition))
16172         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
16173         self.assertEqual(pd.getNumberOfElems(),17)
16174         self.assertEqual(pd.getEffectiveStop(),22)
16175         d=DataArrayInt([2,4,5,6,10])
16176         pd=PartDefinition.New(d)
16177         self.assertTrue(isinstance(pd,DataArrayPartDefinition))
16178         self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
16179         pd=DataArrayPartDefinition(d)
16180         self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
16181         pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
16182         self.assertTrue(isinstance(pd,DataArrayPartDefinition))
16183         self.assertEqual(pd.getNumberOfElems(),8)
16184         self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
16185         pass
16186
16187     def testSwig2SortEachPairToMakeALinkedList1(self):
16188         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)])
16189         d.sortEachPairToMakeALinkedList()
16190         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)])))
16191         pass
16192
16193     def testSwig2DAIIsRange(self):
16194         d=DataArrayInt([2,6,10])
16195         a,b=d.isRange()
16196         self.assertTrue(a)
16197         self.assertEqual(b,slice(2,11,4))
16198         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16199         #
16200         d=DataArrayInt([2,7,10])
16201         a,b=d.isRange()
16202         self.assertTrue(not a)
16203         self.assertTrue(b is None)
16204         #
16205         d=DataArrayInt([22,17,12])
16206         a,b=d.isRange()
16207         self.assertTrue(a)
16208         self.assertEqual(b,slice(22,11,-5))
16209         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16210         #
16211         d=DataArrayInt([22,16,12])
16212         a,b=d.isRange()
16213         self.assertTrue(not a)
16214         self.assertTrue(b is None)
16215         #
16216         d=DataArrayInt([33])
16217         a,b=d.isRange()
16218         self.assertTrue(a)
16219         self.assertEqual(b,slice(33,34,1))
16220         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16221         #
16222         d=DataArrayInt([])
16223         a,b=d.isRange()
16224         self.assertTrue(a)
16225         self.assertEqual(b,slice(0,0,1))
16226         self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
16227         #
16228         d=DataArrayInt([2,6,10,2])
16229         a,b=d.isRange()
16230         self.assertTrue(not a)
16231         self.assertTrue(b is None)
16232         pass
16233
16234     def testSwig2PartDefinitionComposeWith1(self):
16235         f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
16236         g=PartDefinition.New(4,14,1)
16237         h=f.composeWith(g)
16238         self.assertTrue(isinstance(h,DataArrayPartDefinition))
16239         self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
16240         f2=f.tryToSimplify()
16241         g2=g.tryToSimplify()
16242         self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
16243         self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
16244         p=PartDefinition.New(DataArrayInt([2,6,10]))
16245         p2=p.tryToSimplify()
16246         self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
16247         self.assertTrue(isinstance(p2,SlicePartDefinition))
16248         self.assertEqual(p2.getSlice(),slice(2,11,4))
16249         pass
16250
16251     def testSwig2DAIGetIdsStrictlyNegative1(self):
16252         d=DataArrayInt([4,-5,-1,0,3,99,-7])
16253         self.assertTrue(d.getIdsStrictlyNegative().isEqual(DataArrayInt([1,2,6])))
16254         pass
16255
16256     def testSwig2DAIReplaceOneValByInThis1(self):
16257         d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
16258         d.replaceOneValByInThis(-5,900)
16259         self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
16260         pass
16261
16262     def testSwig2DAIGetMinMaxValues1(self):
16263         d=DataArrayInt([4,-5,-1,0,3,99,-7])
16264         a,b=d.getMinMaxValues()
16265         self.assertEqual(a,-7)
16266         self.assertEqual(b,99)
16267         pass
16268
16269     def testSwig2DAIBuildUniqueNotSorted1(self):
16270         d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
16271         self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
16272         pass
16273
16274     def testSwig2UMeshChangeOrientationOfCells1(self):
16275         """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
16276         m=MEDCouplingUMesh("mesh",1)
16277         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])
16278         cI=DataArrayInt([0,3,6,10,14,17,22,27])
16279         m.setConnectivity(c,cI)
16280         m.changeOrientationOfCells()
16281         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])))
16282         self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
16283         # testing 2D cells
16284         m=MEDCouplingUMesh("mesh",2)
16285         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])
16286         cI=DataArrayInt([0,4,9,15,22,31,42])
16287         m.setConnectivity(c,cI)
16288         m.changeOrientationOfCells()
16289         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])))
16290         self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
16291         pass
16292
16293     def testSwig2StructuredMeshCellLocation1(self):
16294         # 3D
16295         arrX=DataArrayDouble(5) ; arrX.iota()
16296         arrY=DataArrayDouble(4) ; arrY.iota()
16297         arrZ=DataArrayDouble(3) ; arrZ.iota()
16298         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
16299         li=[]
16300         liExp3D=[(0,0,0),(1,0,0),(2,0,0),(3,0,0),(0,1,0),(1,1,0),(2,1,0),(3,1,0),(0,2,0),(1,2,0),(2,2,0),(3,2,0),(0,0,1),(1,0,1),(2,0,1),(3,0,1),(0,1,1),(1,1,1),(2,1,1),(3,1,1),(0,2,1),(1,2,1),(2,2,1),(3,2,1)]
16301         self.assertEqual(24,m.getNumberOfCells())
16302         for i in xrange(m.getNumberOfCells()):
16303             li.append(m.getLocationFromCellId(i))
16304             pass
16305         self.assertEqual(liExp3D,li)
16306         self.assertRaises(InterpKernelException,m.getLocationFromCellId,24)
16307         self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
16308         # 2D
16309         arrX=DataArrayDouble(5) ; arrX.iota()
16310         arrY=DataArrayDouble(4) ; arrY.iota()
16311         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
16312         li=[]
16313         liExp2D=[(0,0),(1,0),(2,0),(3,0),(0,1),(1,1),(2,1),(3,1),(0,2),(1,2),(2,2),(3,2)]
16314         self.assertEqual(12,m.getNumberOfCells())
16315         for i in xrange(m.getNumberOfCells()):
16316             li.append(m.getLocationFromCellId(i))
16317             pass
16318         self.assertEqual(liExp2D,li)
16319         self.assertRaises(InterpKernelException,m.getLocationFromCellId,12)
16320         self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
16321         # 1D
16322         arrX=DataArrayDouble(5) ; arrX.iota()
16323         m=MEDCouplingCMesh() ; m.setCoords(arrX)
16324         self.assertEqual(4,m.getNumberOfCells())
16325         for i in xrange(m.getNumberOfCells()):
16326             self.assertEqual((i,),m.getLocationFromCellId(i))
16327             pass
16328         self.assertRaises(InterpKernelException,m.getLocationFromCellId,4)
16329         self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
16330         pass
16331
16332     def testSwig2StructuredMeshNodeLocation1(self):
16333         # 3D
16334         arrX=DataArrayDouble(5) ; arrX.iota()
16335         arrY=DataArrayDouble(4) ; arrY.iota()
16336         arrZ=DataArrayDouble(3) ; arrZ.iota()
16337         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
16338         li=[]
16339         liExp3D=[(0,0,0),(1,0,0),(2,0,0),(3,0,0),(4,0,0),(0,1,0),(1,1,0),(2,1,0),(3,1,0),(4,1,0),(0,2,0),(1,2,0),(2,2,0),(3,2,0),(4,2,0),(0,3,0),(1,3,0),(2,3,0),(3,3,0),(4,3,0),(0,0,1),(1,0,1),(2,0,1),(3,0,1),(4,0,1),(0,1,1),(1,1,1),(2,1,1),(3,1,1),(4,1,1),(0,2,1),(1,2,1),(2,2,1),(3,2,1),(4,2,1),(0,3,1),(1,3,1),(2,3,1),(3,3,1),(4,3,1),(0,0,2),(1,0,2),(2,0,2),(3,0,2),(4,0,2),(0,1,2),(1,1,2),(2,1,2),(3,1,2),(4,1,2),(0,2,2),(1,2,2),(2,2,2),(3,2,2),(4,2,2),(0,3,2),(1,3,2),(2,3,2),(3,3,2),(4,3,2)]
16340         self.assertEqual(60,m.getNumberOfNodes())
16341         for i in xrange(m.getNumberOfNodes()):
16342             li.append(m.getLocationFromNodeId(i))
16343             pass
16344         self.assertEqual(liExp3D,li)
16345         self.assertRaises(InterpKernelException,m.getLocationFromNodeId,60)
16346         self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
16347         # 2D
16348         arrX=DataArrayDouble(5) ; arrX.iota()
16349         arrY=DataArrayDouble(4) ; arrY.iota()
16350         m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
16351         li=[]
16352         liExp2D=[(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)]
16353         self.assertEqual(20,m.getNumberOfNodes())
16354         for i in xrange(m.getNumberOfNodes()):
16355             li.append(m.getLocationFromNodeId(i))
16356             pass
16357         self.assertEqual(liExp2D,li)
16358         self.assertRaises(InterpKernelException,m.getLocationFromNodeId,20)
16359         self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
16360         # 1D
16361         arrX=DataArrayDouble(5) ; arrX.iota()
16362         m=MEDCouplingCMesh() ; m.setCoords(arrX)
16363         self.assertEqual(5,m.getNumberOfNodes())
16364         for i in xrange(m.getNumberOfNodes()):
16365             self.assertEqual((i,),m.getLocationFromNodeId(i))
16366             pass
16367         self.assertRaises(InterpKernelException,m.getLocationFromCellId,5)
16368         self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
16369         pass
16370
16371     def testSwig2DataArrayPrintNotTooLong1(self):
16372         """ Now that DataArrayDouble and DataArrayInt and pickelized they can appear in YACS ports. Avoid to have too heavy string representation of them."""
16373         d=DataArrayDouble(2000) ; d.iota() ; d.rearrange(2)
16374         st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
16375         self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
16376         self.assertEqual(st1,st2)
16377         #
16378         d=DataArrayDouble(2002) ; d.iota() ; d.rearrange(2)
16379         st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
16380         self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
16381         self.assertEqual(st1,st2)
16382         self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
16383         ## Now for DataArrayInt
16384         d=DataArrayInt(2000) ; d.iota() ; d.rearrange(2)
16385         st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
16386         self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
16387         self.assertEqual(st1,st2)
16388         #
16389         d=DataArrayInt(2002) ; d.iota() ; d.rearrange(2)
16390         st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
16391         self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
16392         self.assertEqual(st1,st2)
16393         self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
16394         pass
16395
16396     def testExtrudedMeshWithoutZipCoords1(self):
16397         """This test checks that MEDCouplingUMesh.buildExtrudedMesh do not perform a zipCoords."""
16398         arr=DataArrayDouble([(0.,0.),(1.,0.),(2.,0.),(3.,0.)])
16399         m=MEDCouplingUMesh("mesh",1) ; m.setCoords(arr)
16400         m.allocateCells()
16401         m.insertNextCell(NORM_SEG2,[1,2])
16402         arr1D=DataArrayDouble([(0.,0.),(0.,1.5),(0.,2.)])
16403         m1D=MEDCouplingUMesh("mesh1D",1) ; m1D.setCoords(arr1D)
16404         m1D.allocateCells()
16405         m1D.insertNextCell(NORM_SEG2,[0,1])
16406         m1D.insertNextCell(NORM_SEG2,[1,2])
16407         m2D=m.buildExtrudedMesh(m1D,0)
16408         self.assertEqual(m.getCoords().getHiddenCppPointer(),m2D.getCoords().getHiddenCppPointer())
16409         coo=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(0,1.5),(1,1.5),(2,1.5),(3,1.5),(0,2),(1,2),(2,2),(3,2)])
16410         self.assertTrue(m.getCoords().isEqual(coo,1e-12))
16411         self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([4,1,2,6,5,4,5,6,10,9])))
16412         self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10])))
16413         pass
16414     pass
16415
16416 if __name__ == '__main__':
16417     unittest.main()