1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2016 CEA/DEN, EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 from MEDCoupling import *
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
28 class MEDCouplingBasicsTest5(unittest.TestCase):
29 def testSwig2FieldDoubleBuildSubPartRange1(self):
31 m=MEDCouplingDataForTest.build2DTargetMesh_1()
32 f=MEDCouplingFieldDouble(ON_CELLS)
34 arr=DataArrayDouble(5,2) ; arr[:,0]=range(7,12) ; arr[:,1]=100+arr[:,0]
36 f.checkConsistencyLight()
38 ff.checkConsistencyLight()
39 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
40 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
41 self.assertTrue(2,ff.getMesh().getNumberOfCells())
42 self.assertTrue(ff.getArray().isEqual(arr[[1,3]],1e-12))
44 a,b=f.buildSubMeshDataRange(2,5,1)
45 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
46 self.assertEqual(b,slice(2,5,1))
48 ff.checkConsistencyLight()
49 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
50 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
51 self.assertTrue(3,ff.getMesh().getNumberOfCells())
52 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4]],1e-12))
55 ff.checkConsistencyLight()
56 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
57 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
58 self.assertTrue(3,ff.getMesh().getNumberOfCells())
59 self.assertTrue(ff.getArray().isEqual(arr[[3,2,1]],1e-12))
60 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[3,2,1],1],1e-12))
62 f=MEDCouplingFieldDouble(ON_NODES)
64 arr=DataArrayDouble(9,2) ; arr[:,0]=range(7,16) ; arr[:,1]=100+arr[:,0]
66 f.checkConsistencyLight()
68 ff.checkConsistencyLight()
69 self.assertTrue((m.buildPartOfMySelf([1,3],False)).isEqual(ff.getMesh(),1e-12))
70 self.assertTrue(6,ff.getMesh().getNumberOfNodes())
71 self.assertTrue(2,ff.getMesh().getNumberOfCells())
72 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,6,7]],1e-12))
74 m2=m.buildPartRange(2,5,1)
75 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(m2,1e-12))
76 m2,b=m.buildPartRangeAndReduceNodes(2,5,1)
77 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(m2,1e-12))
78 self.assertTrue(b.isEqual(DataArrayInt([-1,-1,0,1,2,3,4,5,6])))
79 a,b=f.buildSubMeshDataRange(2,5,1)
80 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(a,1e-12))
81 self.assertTrue(b.isEqual(DataArrayInt([2,3,4,5,6,7,8])))
83 ff.checkConsistencyLight()
84 self.assertTrue((m.buildPartOfMySelf([2,3,4],False)).isEqual(ff.getMesh(),1e-12))
85 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
86 self.assertTrue(3,ff.getMesh().getNumberOfCells())
87 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,6,7,8]],1e-12))
90 ff.checkConsistencyLight()
91 self.assertTrue((m.buildPartOfMySelf([3,2,1],False)).isEqual(ff.getMesh(),1e-12))
92 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
93 self.assertTrue(3,ff.getMesh().getNumberOfCells())
94 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,5,6,7]],1e-12))
95 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[1,2,3,4,5,6,7],1],1e-12))
97 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
99 arr=DataArrayDouble(18,2) ; arr[:,0]=range(7,25) ; arr[:,1]=100+arr[:,0]
101 f.checkConsistencyLight()
103 ff.checkConsistencyLight()
104 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
105 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
106 self.assertTrue(2,ff.getMesh().getNumberOfCells())
107 self.assertTrue(ff.getArray().isEqual(arr[[4,5,6,10,11,12,13]],1e-12))
109 a,b=f.buildSubMeshDataRange(2,5,1)
110 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
111 self.assertEqual(b,slice(7,18,1))
113 ff.checkConsistencyLight()
114 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
115 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
116 self.assertTrue(3,ff.getMesh().getNumberOfCells())
117 self.assertTrue(ff.getArray().isEqual(arr[[7,8,9,10,11,12,13,14,15,16,17]],1e-12))
120 ff.checkConsistencyLight()
121 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
122 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
123 self.assertTrue(3,ff.getMesh().getNumberOfCells())
124 self.assertTrue(ff.getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6]],1e-12))
125 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6],1],1e-12))
127 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
129 f.setGaussLocalizationOnCells([0,4],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2],[0.2,0.8]);
130 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]);
131 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]);
132 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]);
133 arr=DataArrayDouble(16,2) ; arr[:,0]=range(7,23) ; arr[:,1]=100+arr[:,0]
135 f.checkConsistencyLight()
137 ff.checkConsistencyLight()
138 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
139 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
140 self.assertTrue(2,ff.getMesh().getNumberOfCells())
141 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,11,12,13]],1e-12))
143 a,b=f.buildSubMeshDataRange(2,5,1)
144 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
145 self.assertEqual(b,slice(6,16,1))
147 ff.checkConsistencyLight()
148 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
149 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
150 self.assertTrue(3,ff.getMesh().getNumberOfCells())
151 self.assertTrue(ff.getArray().isEqual(arr[[6,7,8,9,10,11,12,13,14,15]],1e-12))
154 ff.checkConsistencyLight()
155 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
156 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
157 self.assertTrue(3,ff.getMesh().getNumberOfCells())
158 self.assertTrue(ff.getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5]],1e-12))
159 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))
162 def testSwig2FieldDoubleApplyFuncBug1(self):
163 f=MEDCouplingFieldDouble(ON_CELLS)
164 f.setMesh(MEDCouplingDataForTest.build2DTargetMesh_1())
166 f.checkConsistencyLight()
167 self.assertEqual(3,f.getArray().getNumberOfComponents())
168 f.getArray().rearrange(1)
169 self.assertTrue(f.getArray().isUniform(700.,1e-10))
170 f.getArray().rearrange(3)
171 f.checkConsistencyLight()
173 f.checkConsistencyLight()
174 self.assertEqual(4,f.getArray().getNumberOfComponents())
175 f.getArray().rearrange(1)
176 self.assertTrue(f.getArray().isUniform(800.,1e-10))
177 f.getArray().rearrange(4)
178 f.checkConsistencyLight()
181 def testSwig2ComputeTupleIdsNearTupleBug1(self):
182 coords=[1.1,0.0, 1.1,0.0 ];
183 coordsArr=DataArrayDouble(coords,2,2);
184 mesh=MEDCouplingUMesh();
185 mesh.setCoords(coordsArr);
187 c,cI=mesh.getNodeIdsNearPoints(points,0.00185);
188 self.assertTrue(c.isEqual(DataArrayInt([])))
189 self.assertTrue(cI.isEqual(DataArrayInt([0,0])))
190 c,cI=mesh.getNodeIdsNearPoints(points,0.00200000000000001);
191 self.assertTrue(c.isEqual(DataArrayInt([0,1])))
192 self.assertTrue(cI.isEqual(DataArrayInt([0,2])))
195 def testSwig2NonRegressionBugChangeUnderlyingWithZeroCells(self):
196 coords1=[0.,1.,2.,3.]
197 coords2=[2.,1.,0.,3.] #0 <==> #2
199 mesh1=MEDCouplingUMesh.New();
200 coordsArr=DataArrayDouble.New(coords1,4,1);
201 mesh1.setCoords(coordsArr);
202 mesh1.setMeshDimension(0);
203 mesh1.allocateCells(0);
204 mesh1.finishInsertingCells();
206 mesh2=mesh1.deepCopy();
207 coordsArr=DataArrayDouble.New(coords2,4,1);
208 mesh2.setCoords(coordsArr);
209 field = mesh1.fillFromAnalytic(ON_NODES,1,"x")
210 field.checkConsistencyLight()
212 field.changeUnderlyingMesh( mesh2, levOfCheck, 1e-13, 0 )
213 self.assertTrue( field.getArray().getValues() == coords2 )
216 def testSwig2UMeshDistanceToMesh2(self):
219 arr=DataArrayDouble(sz+1) ; arr.iota() ; arr/=sz
220 m.setCoords(arr,arr,arr)
221 m=m.buildUnstructured()
225 d=2*(c-[0.5,0.5,0.5])+[0.5,0.5,0.5]
226 time_deb = datetime.now()
228 a,b=m1.distanceToPoints(d)
229 #print 'time spent in distanceToPoints %s ' %str(datetime.now() - time_deb)
230 time_deb = datetime.now()
231 a1=DataArrayDouble(len(d))
232 b1=DataArrayInt(len(d))
233 m1s=[m1[i] for i in xrange(m1.getNumberOfCells())]
234 for j,pt in enumerate(d):
237 for i,miter in enumerate(m1s):
238 e,f=miter.distanceToPoint(pt)
239 self.assertEqual(0,f)
247 #print 'time spent in naive distanceToPoints %s ' %str(datetime.now() - time_deb)
248 self.assertTrue(a.isEqual(a1,1e-12))
249 self.assertTrue(b.isEqual(b1))
250 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))
251 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])))
254 def testSwig2NonRegressionBugDistance1(self):
255 pt=DataArrayDouble([(8.8452994616207476,3.1547005383792515,3.1547005383792515)])
256 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)])
257 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])
258 m=MEDCouplingUMesh("mesh",2)
262 m.insertNextCell(NORM_QUAD4,conn[4*i:4*i+4])
265 m0=m[3] ; m0.zipCoords()
266 expectedDist=0.8452994616207476
267 a,b=m0.distanceToPoint(pt)
268 self.assertAlmostEqual(expectedDist,a,14)
269 self.assertEqual(0,b)
271 a,b=m.distanceToPoint(pt)
272 self.assertAlmostEqual(expectedDist,a,14)
273 self.assertEqual(3,b)
275 fd=MEDCouplingFieldDiscretization.New(ON_CELLS)
276 self.assertEqual(24,fd.getNumberOfTuples(m))
277 fd=MEDCouplingFieldDiscretization.New(ON_NODES)
278 self.assertEqual(26,fd.getNumberOfTuples(m))
281 def testSwig2AreaBarySeg3Quad8Tri6QPolyg(self):
282 #QUAD8 representing a circle of center zeBary and radius zeRadius
285 d=DataArrayDouble(8,2)
287 d[:,1]=[87,-100,-170,110,5,-130,175,95] # angle in degree
288 d[:,1]*=pi/180. # angle in radian
289 d=d.fromPolarToCart()
291 m=MEDCouplingUMesh("quad8",2) ; m.allocateCells() ; m.insertNextCell(NORM_QUAD8,range(8)) ; m.setCoords(d)
292 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
293 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
294 tri32D=m.buildDescendingConnectivity()[0][0] ; tri32D.zipCoords()
295 # spaceDim=3 QUAD8 becomes QUAD4 ... for the moment
296 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
298 m2.convertQuadraticCellsToLinear()
299 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
300 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
301 #TRI6 representing a circle of center zeBary and radius zeRadius
304 d=DataArrayDouble(6,2)
306 d[:,1]=[87,-100,110,5,175,95] # angle in degree
307 d[:,1]*=pi/180. # angle in radian
308 d=d.fromPolarToCart()
310 m=MEDCouplingUMesh("tri6",2) ; m.allocateCells() ; m.insertNextCell(NORM_TRI6,range(6)) ; m.setCoords(d)
311 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
312 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
313 # spaceDim=3 TRI6 becomes TRI3 ... for the moment
314 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
316 m2.convertQuadraticCellsToLinear()
317 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
318 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
319 # QPOLYG representing a circle of center zeBary and radius zeRadius
322 d=DataArrayDouble(10,2)
324 d[:,1]=[87,-80,-100,-170,110,5,-90,-130,175,95] # angle in degree
325 d[:,1]*=pi/180. # angle in radian
326 d=d.fromPolarToCart()
328 m=MEDCouplingUMesh("qpolyg",2) ; m.allocateCells() ; m.insertNextCell(NORM_QPOLYG,range(10)) ; m.setCoords(d)
329 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
330 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
331 # spaceDim=3 QPOLYG becomes POLYG ... for the moment
332 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
334 m2.convertQuadraticCellsToLinear() ; m2.checkConsistency()
335 self.assertTrue(m2.getAllGeoTypes()==[NORM_POLYGON] and m2.getNodalConnectivity().getValues()==[5,0,1,2,3,4])
336 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
337 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
339 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),(87+100)*pi/180*zeRadius,13)
340 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)
341 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(exp,1e-12))
342 # spaceDim=3 TRI3 becomes TRI2 ... for the moment
343 tri32D.changeSpaceDimension(3)
344 tri2=tri32D.deepCopy() ; tri2.convertQuadraticCellsToLinear()
345 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),float(tri2.getMeasureField(False).getArray()),13)
346 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(tri2.computeCellCenterOfMass(),1e-12))
347 tri32D.changeSpaceDimension(1)
348 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),-0.67795240172962323,12)
351 # this bug 5/6/2013 is swig specific
352 def testSwigNonRegressionBugRotate3D1(self):
353 m=MEDCouplingUMesh.New()
354 dataArray=DataArrayDouble.New(100,3)
356 dataArray[0]=[0.,1,3]
357 m.setCoords(dataArray[0])
359 m.rotate([0.,0.,3.],[1.,0.,0.],0.5*pi)
360 self.assertTrue(m.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
362 d1=DataArrayDouble([0.,0.,3.],1,3) ; d2=DataArrayDouble([1.,0.,0.],1,3)
363 pts=[[0.,0.,3.],[(0.,0.,3.)],DataArrayDouble([0.,0.,3.],1,3),list(d1)[0]]
364 vec=[[1.,0.,0.],[(1.,0.,0.)],DataArrayDouble([1.,0.,0.],1,3),list(d2)[0]]
368 m2.rotate(p,v,0.5*pi)
369 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
373 def testSwig2DataArrayCount1(self):
375 self.assertEqual(0,d.getNumberOfTuples())
376 self.assertEqual(1,d.getNumberOfComponents())
377 self.assertEqual(0,d.count(0))
378 self.assertEqual(0,d.count(1))
379 self.assertEqual(0,d.count(-1))
380 d=DataArrayInt([2,1,-2,-3,2,0,0,7,2,-2,3,0])
381 self.assertEqual(12,d.getNumberOfTuples())
382 self.assertEqual(1,d.getNumberOfComponents())
383 self.assertEqual(3,d.count(0))
384 self.assertEqual(1,d.count(1))
385 self.assertEqual(0,d.count(-1))
386 self.assertEqual(2,d.count(-2))
387 self.assertEqual(3,d.count(2))
388 e=d.getDifferentValues()
391 f.pushBackSilent(d.count(int(it)))
393 self.assertEqual(12,f.accumulate()[0])
396 d=DataArrayDouble([])
397 self.assertEqual(0,d.getNumberOfTuples())
398 self.assertEqual(1,d.getNumberOfComponents())
399 self.assertEqual(0,d.count(0,eps))
400 self.assertEqual(0,d.count(1,eps))
401 self.assertEqual(0,d.count(-1,eps))
402 d=DataArrayDouble([2,1,-2,-3,2,0,eps/10,7,2+eps/10,-2,3,0])
403 self.assertEqual(12,d.getNumberOfTuples())
404 self.assertEqual(1,d.getNumberOfComponents())
405 self.assertEqual(3,d.count(0,eps))
406 self.assertEqual(1,d.count(1,eps))
407 self.assertEqual(0,d.count(-1,eps))
408 self.assertEqual(2,d.count(-2,eps))
409 self.assertEqual(3,d.count(2,eps))
410 self.assertEqual(3,d.count(2,eps))
411 self.assertEqual(2,d.count(2,eps/100))
412 e=d.getDifferentValues(eps)
415 f.pushBackSilent(d.count(float(it),eps))
417 self.assertEqual(12,f.accumulate()[0])
420 def testSwig2DataArrayGetSlice1(self):
422 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),16)
423 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),16)
424 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,1))
425 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,1))
426 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,1))
427 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,1))
430 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),8)
431 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),8)
432 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,2))
433 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,2))
434 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,2))
435 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,2))
438 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,1))
439 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,1))
440 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,1))
441 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,1))# 18 not 17
444 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
445 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),9)
446 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,2))
447 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,2))
448 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,2))
449 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,2))# 18 not 17
452 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
453 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
454 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
455 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-1))
458 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
459 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
460 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
461 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-2))
464 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
465 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
466 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
467 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-1))# 1 not 2
470 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
471 self.assertRaises(InterpKernelException,DataArray.GetNumberOfItemGivenBES,s)
472 self.assertEqual(sum([DataArray.GetNumberOfItemGivenBESRelative(DataArray.GetSlice(s,i,4)) for i in xrange(4)]),DataArray.GetNumberOfItemGivenBESRelative(s))
473 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
474 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
475 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
476 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-2))# 1 not 2
477 self.assertRaises(InterpKernelException,DataArray.GetSlice,slice(0,None,2),0,4)
479 d=DataArrayInt.Range(0,18,1)
481 self.assertEqual(d.getNumberOfItemGivenBES(s),16)
482 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),16)
483 self.assertEqual(d.getSlice(s,0,4),slice(2,6,1))
484 self.assertEqual(d.getSlice(s,1,4),slice(6,10,1))
485 self.assertEqual(d.getSlice(s,2,4),slice(10,14,1))
486 self.assertEqual(d.getSlice(s,3,4),slice(14,18,1))
488 d=DataArrayInt.Range(0,18,1)
490 self.assertEqual(d.getSlice(s,0,4),slice(2,5,1))
491 self.assertEqual(d.getSlice(s,1,4),slice(5,8,1))
492 self.assertEqual(d.getSlice(s,2,4),slice(8,11,1))
493 self.assertEqual(d.getSlice(s,3,4),slice(11,16,1))
495 d=DataArrayInt.Range(0,18,1)
497 self.assertEqual(d.getSlice(s,0,4),slice(0,4,1))
498 self.assertEqual(d.getSlice(s,1,4),slice(4,8,1))
499 self.assertEqual(d.getSlice(s,2,4),slice(8,12,1))
500 self.assertEqual(d.getSlice(s,3,4),slice(12,18,1))
502 d=DataArrayInt.Range(0,18,1)
504 self.assertRaises(InterpKernelException,d.getNumberOfItemGivenBES,s)
505 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),8)
506 self.assertEqual(d.getSlice(s,0,4),slice(17,13,-2))
507 self.assertEqual(d.getSlice(s,1,4),slice(13,9,-2))
508 self.assertEqual(d.getSlice(s,2,4),slice(9,5,-2))
509 self.assertEqual(d.getSlice(s,3,4),slice(5,2,-2))
512 def testSwig2AccumulatePerChunk1(self):
513 arr=DataArrayDouble(11) ; arr.iota()
514 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
515 m=m.buildUnstructured()
516 m0=m[::2] ; ids0=m0.simplexize(0) ; m1=m[1::2]
517 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m0,m1) ; m.setName("mesh")
518 m.checkConsecutiveCellTypesForMEDFileFrmt()
520 formula="7-sqrt((x-5.)*(x-5.)+(y-5.)*(y-5.))"
521 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
522 f.fillFromAnalytic(1,formula)
523 f.setName("Field1") ; f.setTime(1.1,1,-1)
524 f.checkConsistencyLight()
527 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr
528 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr ; arr2[:,1]=2*arr
530 f.checkConsistencyLight()
531 # here the compact code to obviously put field on cell to nodes
532 rn,rni=f.getMesh().getReverseNodalConnectivity()
533 arr2=f.getArray()[rn]
534 arr4=arr2.accumulatePerChunck(rni)
535 nbOfCellsSharingNodes=rni.deltaShiftIndex()
536 arr4/=nbOfCellsSharingNodes.convertToDblArr()
538 maxNbCSN=nbOfCellsSharingNodes.getMaxValue()[0]
539 arr3=DataArrayDouble(f.getMesh().getNumberOfNodes(),f.getArray().getNumberOfComponents()) ; arr3[:]=0.
540 for i in xrange(1,maxNbCSN+1):
541 ids=nbOfCellsSharingNodes.findIdsEqual(i)
545 rni2=rni[ids] ; rni2+=j
546 arr3[ids]+=arr2[rni2]
550 fNode=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; fNode.setMesh(m)
551 fNode.setName("Field1Node") ; fNode.setTime(1.1,1,-1)
552 fNode.setArray(arr3) ; fNode.checkConsistencyLight()
553 self.assertTrue(arr3.isEqual(arr4,1e-12))
555 d=DataArrayInt.Range(0,20,1)
556 self.assertTrue(d.accumulatePerChunck([2,4,12]).isEqual(DataArrayInt([5,60])))
558 a=DataArrayDouble(12) ; a.iota() ; a.rearrange(3)
559 b=DataArrayDouble(12) ; b.iota(20) ; b.rearrange(3)
561 self.assertEqual(len(a[ids]),0)
562 self.assertEqual(len(b[ids]),0)
563 a2=a.deepCopy() ; a2[ids]+=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
564 a2=a.deepCopy() ; a2[ids]*=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
565 a2=a.deepCopy() ; a2[ids]/=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
566 a2=a.deepCopy() ; a2[ids]-=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
569 def testSwig2CheckAndPreparePermutation1(self):
570 a=DataArrayInt([10003,9999999,5,67])
571 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([2,3,0,1])))
572 a=DataArrayInt([10003,-9999999,5,67])
573 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([3,0,1,2])))
575 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([])))
578 self.assertTrue(a.isEqual(DataArrayInt([])))
581 def testSwig21SGTUMesh1(self):
582 m=MEDCoupling1GTUMesh.New("m",NORM_PENTA6)
583 m.__repr__() ; m.__str__()
584 self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh))
585 m.setCoords(DataArrayDouble(20,3))
587 m.__repr__() ; m.__str__()
588 m.insertNextCell([0,1,2,5,7,2])
589 self.assertEqual(1,m.getNumberOfCells())
590 self.assertTrue(DataArrayInt([6]).isEqual(m.computeNbOfNodesPerCell()))
591 self.assertTrue(DataArrayInt([5]).isEqual(m.computeNbOfFacesPerCell()))
592 m.__repr__() ; m.__str__()
593 m.checkConsistencyLight()
596 cm=MEDCouplingCMesh() ; cm.setName("m")
597 arr0=DataArrayDouble(6) ; arr0.iota()
598 arr1=DataArrayDouble([0,1])
599 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured()
601 m=MEDCoupling1SGTUMesh("m",NORM_QUAD4)
602 mem_m=m.getHeapMemorySize()
604 self.assertIn(m.getHeapMemorySize()-mem_m,xrange(5*4*4,5*4*4+32))
605 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
606 m.setCoords(um.getCoords())
607 m.insertNextCell([1,0,6,7])
608 self.assertEqual(1,m.getNumberOfCells())
609 m.insertNextCell([2,1,7,8])
610 m.insertNextCell([3,2,8,9])
611 m.insertNextCell([4,3,9,10])
612 m.insertNextCell([5,4,10,11])
613 self.assertEqual(5,m.getNumberOfCells())
614 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7])
615 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7,1,2])
616 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
617 f=m.getMeasureField(False)
618 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
619 self.assertTrue(f.getArray().isUniform(1,1e-14))
620 self.assertEqual(m.getType(),10)
621 self.assertEqual(m.getCellModelEnum(),NORM_QUAD4)
622 mo=MEDCoupling1SGTUMesh("m",NORM_QUAD4) ; mo.setCoords(m.getCoords())
623 mo.setNodalConnectivity(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11]))
624 self.assertTrue(m.isEqual(mo,1e-12))
626 mo2=MEDCoupling1SGTUMesh.Merge1SGTUMeshesOnSameCoords([m[[0,1]],m[[2]],m[[3,4]]])
627 mo2.setName(m.getName())
628 self.assertTrue(m.isEqual(mo2,1e-12))
630 mp0=m[[0]] ; mp0.zipCoords() ; mp1=m[2] ; mp1.zipCoords() ; mp2=m[4] ; mp2.zipCoords()
631 mo3=MEDCoupling1SGTUMesh.Merge1SGTUMeshes([mp0,mp1,mp2])
632 self.assertTrue(isinstance(mo3,MEDCoupling1SGTUMesh))
633 mo3.setName(m.getName())
634 m_ref=m[(0,2,4)] ; m_ref.zipCoords()
635 m_ref.tryToShareSameCoordsPermute(mo3,1e-12)
636 self.assertTrue(m_ref.isEqual(mo3,1e-12))
638 m1=um.buildDescendingConnectivity()[0]
639 ids=m1.getCellIdsFullyIncludedInNodeIds(DataArrayInt.Range(0,12,1))
641 m1c=m1.convertIntoSingleGeoTypeMesh()
642 self.assertTrue(isinstance(m1c,MEDCoupling1SGTUMesh))
643 self.assertEqual(m1c.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
644 m1c.checkConsistency()
645 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])))
646 self.assertEqual(20,m1c.getNodalConnectivityLength())
647 self.assertTrue(m.isEqual(m1c,1e-12))
648 m.getNodalConnectivity().setIJ(1,0,1)
649 self.assertTrue(not m.isEqual(m1c,1e-12))
650 m.getNodalConnectivity().setIJ(1,0,0)
651 self.assertTrue(m.isEqual(m1c,1e-12))
652 m1c.setCoords(m.getCoords().deepCopy())
653 self.assertTrue(m.isEqual(m1c,1e-12))
654 m1c.getCoords().setIJ(0,1,0.1)
655 self.assertTrue(not m.isEqual(m1c,1e-12))
656 m1c.getCoords().setIJ(0,1,0)
657 self.assertTrue(m.isEqual(m1c,1e-12))
658 m1c.getCoords().setInfoOnComponent(1,"X")
659 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
660 m.getCoords().setInfoOnComponent(1,"X")
661 self.assertTrue(m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
663 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
665 m.checkConsistencyLight() ; m.checkConsistency() ; m.checkConsistency()
666 self.assertEqual(m.getMeshDimension(),2)
667 self.assertTrue(m.giveCellsWithType(NORM_QUAD4).isEqual(DataArrayInt([0,1,2,3,4])))
668 self.assertTrue(m.giveCellsWithType(NORM_TRI3).isEqual(DataArrayInt([])))
669 self.assertEqual(m.getNumberOfCellsWithType(NORM_QUAD4),5)
670 self.assertEqual(m.getNumberOfCellsWithType(NORM_TRI3),0)
671 self.assertEqual(m.getTypeOfCell(3),NORM_QUAD4)
672 self.assertRaises(InterpKernelException,m.getTypeOfCell,5)
673 self.assertEqual(m.getAllGeoTypes(),[NORM_QUAD4])
674 self.assertEqual(m.getDistributionOfTypes(),[[NORM_QUAD4,5,-1]])
676 pfl1=DataArrayInt([1,3,4])
677 a,b,c=m.splitProfilePerType(pfl1)
678 d,e,f=m.buildUnstructured().splitProfilePerType(pfl1)
679 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())
680 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
682 pfl2=DataArrayInt([0,1,2,3])
683 a,b,c=m.splitProfilePerType(pfl2)
684 d,e,f=m.buildUnstructured().splitProfilePerType(pfl2)
685 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())
686 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
688 pfl3=DataArrayInt([0,1,2,3,4])
689 a,b,c=m.splitProfilePerType(pfl3)
690 d,e,f=m.buildUnstructured().splitProfilePerType(pfl3)
691 self.assertTrue(a==[[4,5,-1]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3,4])) and c==[])
692 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and c==[])
694 invalidPfl=DataArrayInt([1,2,3,4,5])
695 self.assertRaises(InterpKernelException,m.splitProfilePerType,invalidPfl)
696 self.assertRaises(InterpKernelException,m.buildUnstructured().splitProfilePerType,invalidPfl)
698 pfl1=DataArrayInt([1,2,3])
699 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
700 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
701 self.assertTrue(a.isEqual(b) and pfl1.getHiddenCppPointer(),a.getHiddenCppPointer())
703 pfl2=DataArrayInt([0,1,2,3])
704 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
705 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
706 self.assertTrue(a.isEqual(b) and pfl2.getHiddenCppPointer()==a.getHiddenCppPointer())
708 pfl3=DataArrayInt([0,1,2,3,4])
709 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl3])
710 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,5,0],[pfl3])
711 self.assertTrue(a.isEqual(b) and pfl3.getHiddenCppPointer()==a.getHiddenCppPointer())
713 invalidPfl=DataArrayInt([1,2,3,4,5])
714 self.assertRaises(InterpKernelException,m.checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
715 self.assertRaises(InterpKernelException,m.buildUnstructured().checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
717 self.assertTrue(DataArrayInt([4,4,4,4,4]).isEqual(m.computeNbOfNodesPerCell()))
719 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8])
721 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))
723 ref=m.getCoords().getHiddenCppPointer()
724 mcpy=m.deepCopy() ; mcpy.insertNextCell([1,0,6,7])
725 c=m.getNodalConnectivity().deepCopy()
726 o2n=DataArrayInt([2,0,1,4,3])
727 m.renumberCells(o2n,False)
728 c.rearrange(4) ; c.renumberInPlace(o2n) ; c.rearrange(1)
729 self.assertTrue(c.isEqual(m.getNodalConnectivity()))
730 self.assertEqual(ref,m.getCoords().getHiddenCppPointer())
731 m2=mcpy.mergeMyselfWith(m)
732 self.assertTrue(isinstance(m2,MEDCoupling1SGTUMesh))
733 self.assertEqual(11,m2.getNumberOfCells())
734 self.assertEqual(48,m2.getNumberOfNodes())
735 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.Aggregate([m.getCoords(),m.getCoords()]),1e-12))
736 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])))
738 mu=m.buildUnstructured()
739 mu.checkConsistency()
740 self.assertEqual(mu.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
741 self.assertEqual(2,mu.getMeshDimension())
742 self.assertEqual([NORM_QUAD4],mu.getAllGeoTypes())
743 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])))
744 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25])))
747 mcpy2=m.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
748 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
749 self.assertTrue(ids.isEqual(ids2))
750 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
751 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
753 um1=um.convertIntoSingleGeoTypeMesh()
754 self.assertEqual(8,um1.getNumberOfNodesPerCell())
755 for typ in [PLANAR_FACE_5,PLANAR_FACE_6]:
756 mcpy2=um1.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
757 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
758 self.assertTrue(ids.isEqual(ids2))
759 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
760 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
763 self.assertRaises(InterpKernelException,mcpy.mergeMyselfWithOnSameCoords,m)
764 mcpy.tryToShareSameCoords(m,1e-14)
765 m3=mcpy.mergeMyselfWithOnSameCoords(m)
766 self.assertTrue(isinstance(m3,MEDCoupling1SGTUMesh))
767 self.assertEqual(11,m3.getNumberOfCells())
768 self.assertEqual(24,m3.getNumberOfNodes())
769 self.assertEqual(m3.getCoords().getHiddenCppPointer(),mcpy.getCoords().getHiddenCppPointer())
770 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])))
772 ref=mcpy.getCoords().deepCopy()
773 c3=mcpy.getNodalConnectivity()[:]
774 mcpy.getNodalConnectivity().setIJ(int(c3.findIdsEqual(11)),0,24)
775 c2=DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()[11:]])
777 mcpy.checkConsistency()
778 a,b=mcpy.getNodeIdsInUse()
779 self.assertEqual(12,b)
780 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])))
781 ids=mcpy.zipCoordsTraducer()
782 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])))
783 self.assertTrue(mcpy.getCoords().isEqual(ref[:12],1e-12))
784 self.assertTrue(mcpy.getNodalConnectivity().isEqual(c3))
785 mcpy.checkConsistency()
787 m4=mcpy[DataArrayInt([0,3,4])]
788 m5=mcpy.buildPartOfMySelfKeepCoords(DataArrayInt([0,3,4]))
789 self.assertTrue(isinstance(m4,MEDCoupling1SGTUMesh))
790 self.assertTrue(m4.isEqual(m5,-1e-14))# < 0 not a bug it proves that coordinates pointer are equal
791 self.assertTrue(m4.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,4,3,9,10,5,4,10,11])))
793 self.assertTrue(isinstance(m6,MEDCoupling1SGTUMesh))
794 self.assertTrue(m6.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,3,2,8,9,5,4,10,11])))
796 mcpy.setCoords(DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()]))
797 mcpy.checkConsistency()
799 mcppy=mcpy.deepCopyConnectivityOnly()
800 self.assertTrue(mcppy.isEqual(mcpy,1e-12))
801 self.assertTrue(mcppy.getCoords().getHiddenCppPointer()==mcpy.getCoords().getHiddenCppPointer())
802 self.assertTrue(mcppy.getNodalConnectivity().isEqual(mcpy.getNodalConnectivity()))
803 self.assertTrue(mcppy.getNodalConnectivity().getHiddenCppPointer()!=mcpy.getNodalConnectivity().getHiddenCppPointer())
805 a,b=mcpy.getReverseNodalConnectivity()
806 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])))
807 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])))
808 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],False).isEqual(DataArrayInt([0,1,5])))
809 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,5])))
810 self.assertTrue(mcpy.getCellsInBoundingBox([(0,1),(0,1),(0,1)],1e-12).isEqual(DataArrayInt([0,1,5])))
811 f=mcpy.buildOrthogonalField()
812 self.assertEqual(f.getMesh().getHiddenCppPointer(),mcpy.getHiddenCppPointer())
813 self.assertTrue(f.getArray().isEqual(DataArrayDouble(6*[(0,0,-1)]),1e-12))
814 mcpy.changeSpaceDimension(2)
815 self.assertEqual(1,mcpy.getCellContainingPoint([1.5,0.5],1e-12))
817 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([0,1,5])))
819 mcpy2=mcpy.deepCopy()
820 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
821 mcpy.checkFastEquivalWith(mcpy2,1e-12)
822 mcpy2.renumberCells([0,2,4,3,1,5])
823 mcpy.checkFastEquivalWith(mcpy2,1e-12)
824 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
825 mcpy2.renumberCells([0,2,4,3,1,5])
826 mcpy2.renumberCells([1,3,5,0,2,4])
827 self.assertRaises(InterpKernelException,mcpy.checkFastEquivalWith,mcpy2,1e-12)
828 self.assertRaises(InterpKernelException,mcpy.checkGeoEquivalWith,mcpy2,1,1e-12)#fast equal
831 def testSwig21DGTUMesh1(self):
832 a0=DataArrayInt([0,2,3,5,6,8])
833 a1=DataArrayInt([0,4,7,11,14,18,21,25])
834 a2=DataArrayInt([0,1,4,5])
835 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])))
836 self.assertEqual(a1[3:].front(),11)
837 self.assertEqual(a1[4:].convertToDblArr().front(),14.)
838 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])
839 d,e=MEDCouplingUMesh.ExtractFromIndexedArraysSlice(1,5,2,a1c,a1)
840 self.assertTrue(d.isEqual(DataArrayInt([8,11,0,1,5,2])))
841 self.assertTrue(e.isEqual(DataArrayInt([0,3,6])))
843 m=MEDCouplingDataForTest.build2DTargetMesh_1()[0,3,4]
844 ref=DataArrayInt([0,3,4,1,6,7,4,3,7,8,5,4])
845 self.assertTrue(m.convertNodalConnectivityToStaticGeoTypeMesh().isEqual(ref))
846 d,e=m.convertNodalConnectivityToDynamicGeoTypeMesh()
847 self.assertTrue(d.isEqual(ref))
848 self.assertTrue(e.isEqual(DataArrayInt.Range(0,13,4)))
849 self.assertTrue(m.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([1,2])))
851 m=MEDCoupling1GTUMesh.New("m",NORM_POLYHED)
852 self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh))
853 m.__repr__() ; m.__str__()
854 m.setCoords(DataArrayDouble(20,3))
856 m.__repr__() ; m.__str__()
857 m.insertNextCell([0,1,2,5,7,2,-1,1,3])
858 self.assertEqual(1,m.getNumberOfCells())
859 self.assertTrue(DataArrayInt([8]).isEqual(m.computeNbOfNodesPerCell()))
860 self.assertTrue(DataArrayInt([2]).isEqual(m.computeNbOfFacesPerCell()))
861 m.__repr__() ; m.__str__()
862 m.checkConsistencyLight()
865 cm=MEDCouplingCMesh() ; cm.setName("m")
866 arr0=DataArrayDouble(6) ; arr0.iota()
867 arr1=DataArrayDouble([0,1])
868 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured() ; um.convertAllToPoly()
869 um2=um.deepCopyConnectivityOnly()
870 self.assertTrue(um2.isEqual(um,1e-12))
871 self.assertEqual(um2.getCoords().getHiddenCppPointer(),um.getCoords().getHiddenCppPointer())
872 self.assertTrue(um2.getNodalConnectivity().isEqual(um.getNodalConnectivity()))
873 self.assertTrue(um2.getNodalConnectivity().getHiddenCppPointer()!=um.getNodalConnectivity().getHiddenCppPointer())
874 self.assertTrue(um2.getNodalConnectivityIndex().isEqual(um.getNodalConnectivityIndex()))
875 self.assertTrue(um2.getNodalConnectivityIndex().getHiddenCppPointer()!=um.getNodalConnectivityIndex().getHiddenCppPointer())
877 self.assertRaises(InterpKernelException,MEDCoupling1SGTUMesh.New,"m",NORM_POLYHED)
878 m=MEDCoupling1DGTUMesh("m",NORM_POLYHED)
880 self.assertEqual(15,m.getNodalConnectivity().getNbOfElemAllocated())
881 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
882 m.setCoords(um.getCoords())
883 m.insertNextCell([1,0,6,7,-1,7,6,1])
884 self.assertEqual(1,m.getNumberOfCells())
885 m.insertNextCell([2,1,7,8,-1,2,1,-1,8,-1,7])
886 m.insertNextCell([3,2,8,9])
887 m.insertNextCell([4,3,9,10,-1,5,3,9])
888 m.insertNextCell([5,4,10,11,-1,11,10,-1,5])
889 m.checkConsistencyLight()
891 self.assertEqual(5,m.getNumberOfCells())
892 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40])))
893 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])))
896 self.assertTrue(m.isEqual(m4,1e-12))
897 m4.getNodalConnectivity().setIJ(2,0,5)
898 self.assertTrue(not m.isEqual(m4,1e-12))
899 m4.getNodalConnectivity().setIJ(2,0,6)
900 self.assertTrue(m.isEqual(m4,1e-12))
901 m4.getNodalConnectivityIndex().setIJ(2,0,21)
902 self.assertTrue(not m.isEqual(m4,1e-12))
903 m4.getNodalConnectivityIndex().setIJ(2,0,19)
904 self.assertTrue(m.isEqual(m4,1e-12))
905 m4.getCoords().setIJ(10,1,1.1)
906 self.assertTrue(not m.isEqual(m4,1e-12))
907 m4.getCoords().setIJ(10,1,1.)
908 self.assertTrue(m.isEqual(m4,1e-12))
909 m4.getNodalConnectivity().pushBackSilent(7)
910 self.assertTrue(not m.isEqual(m4,1e-12))
911 self.assertEqual(7,m4.getNodalConnectivity().popBackSilent())
912 self.assertTrue(m.isEqual(m4,1e-12))
914 self.assertTrue(not m.isEqual(m4,1e-12))
916 self.assertTrue(m.isEqual(m4,1e-12))
918 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
919 self.assertEqual(60,m.getNodalConnectivity().getNbOfElemAllocated())
920 self.assertTrue(m.computeNbOfNodesPerCell().isEqual(DataArrayInt([7,8,4,7,7])))
921 self.assertTrue(m.computeNbOfFacesPerCell().isEqual(DataArrayInt([2,4,1,2,3])))
922 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8,-1,2,1,-1,8,-1,7])
923 f=m.computeIsoBarycenterOfNodesPerCell()
924 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))
925 mu0=m.buildUnstructured()
928 m3=m.deepCopyConnectivityOnly()
929 self.assertTrue(m3.isEqual(m,1e-12))
930 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
931 self.assertTrue(m3.getNodalConnectivity().getHiddenCppPointer()!=m.getNodalConnectivity().getHiddenCppPointer())
932 self.assertTrue(m3.getNodalConnectivity().isEqual(m.getNodalConnectivity()))
933 self.assertTrue(m3.getNodalConnectivityIndex().getHiddenCppPointer()!=m.getNodalConnectivityIndex().getHiddenCppPointer())
934 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(m.getNodalConnectivityIndex()))
936 mu0.renumberCells(o2n)
937 self.assertTrue(mu0.isEqual(m.buildUnstructured(),1e-12))
938 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,23,32,40])))
939 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])))
941 mcpy0=m.buildUnstructured()
942 self.assertTrue(isinstance(mcpy0,MEDCouplingUMesh))
943 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])))
944 self.assertTrue(mcpy0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,14,26,36,45])))
945 self.assertEqual(mcpy0.getAllGeoTypes(),[NORM_POLYHED])
946 mcpy0.checkConsistencyLight()
947 mcpy0.checkConsistency()
948 mcpy1=mcpy0.convertIntoSingleGeoTypeMesh()
949 self.assertTrue(mcpy1.isEqual(m,1e-12))
951 m_mrg=MEDCoupling1DGTUMesh.Merge1DGTUMeshes([m2,m,m2])
952 self.assertTrue(m_mrg.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
953 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])))
954 m_mrg2=MEDCoupling1DGTUMesh.Merge1DGTUMeshesOnSameCoords([m3,m,m3])
955 self.assertTrue(m_mrg2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
956 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])))
957 a,b=m_mrg2.getReverseNodalConnectivity()
958 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])))
959 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])))
960 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([7],False).isEqual(DataArrayInt([0,1,6,7,10,11])))
961 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,6,10])))
963 self.assertTrue(m_mrg2.isPacked())
964 self.assertEqual(120,m_mrg2.getNodalConnectivityIndex().popBackSilent())
965 self.assertEqual(m_mrg2.getNumberOfCells(),14)
966 m_mrg2.checkConsistency()
967 self.assertTrue(not m_mrg2.isPacked())
968 m_mrg4,b=m_mrg2.copyWithNodalConnectivityPacked()
969 self.assertTrue(not b)
970 m_mrg4.checkConsistency()
971 self.assertEqual(m_mrg4.getNumberOfCells(),14)
972 self.assertTrue(m_mrg4.getNodalConnectivityIndex().isEqual(m_mrg2.getNodalConnectivityIndex()))
973 self.assertEqual(len(m_mrg4.getNodalConnectivity()),111)
974 self.assertEqual(len(m_mrg2.getNodalConnectivity()),120)
975 self.assertTrue(m_mrg4.getNodalConnectivity().isEqual(m_mrg2.getNodalConnectivity()[:111]))
978 m1=m_mrg2[[5,6,7,8,9]]
980 self.assertTrue(m1.isEqualWithoutConsideringStr(m,1e-12))
981 a,b=m.checkGeoEquivalWith(m0,12,1e-12)
982 self.assertTrue(a.isEqual(DataArrayInt(o2n)))
983 self.assertTrue(b is None)
986 def testSwig2DADAreIncludedInMe1(self):
987 a=DataArrayDouble(30) ; a.iota() ; a.rearrange(3)
988 p=DataArrayInt([5,2,1,9])
989 b,c=a.areIncludedInMe(a[p],1e-12)
991 self.assertTrue(c.isEqual(p))
994 b,c=a.areIncludedInMe(d,1e-12)
995 self.assertTrue(not b)
996 self.assertTrue(c.isEqual(DataArrayInt([5,2,1,10])))
999 def testSwig2DADesallocate1(self):
1000 d=DataArrayDouble([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1001 self.assertTrue(d.isAllocated())
1003 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1004 ref=d.getHeapMemorySize()
1006 self.assertEqual(ref-d.getHeapMemorySize(),6*8)
1007 self.assertTrue(not d.isAllocated())
1008 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1009 self.assertRaises(InterpKernelException,d.checkAllocated)
1011 d=DataArrayInt([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1012 self.assertTrue(d.isAllocated())
1014 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1015 ref=d.getHeapMemorySize()
1017 self.assertEqual(ref-d.getHeapMemorySize(),6*4)
1018 self.assertTrue(not d.isAllocated())
1019 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1020 self.assertRaises(InterpKernelException,d.checkAllocated)
1023 def testSwig2IsPartStructured1(self):
1025 d10=DataArrayInt([2,3,4,5,6,7,8,9,10,11])
1026 a,b=MEDCouplingStructuredMesh.IsPartStructured(d10,[13])
1027 self.assertTrue(a) ; self.assertEqual(b,[(2,12)])
1028 d11=DataArrayInt([2,3,4,5,6,7,8,10,9,11])
1029 a,b=MEDCouplingStructuredMesh.IsPartStructured(d11,[13])
1030 self.assertTrue(not a)
1031 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d10,[11])
1034 d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
1035 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1036 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
1037 self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
1038 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
1039 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
1040 self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
1041 self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
1042 d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
1043 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1044 self.assertTrue(not a)
1045 d20=DataArrayInt([1,2,3,4,11,12,13,15,21,22,23,24])
1046 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1047 self.assertTrue(not a)
1048 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])
1049 a,b=MEDCouplingStructuredMesh.IsPartStructured(d21,st)
1050 self.assertTrue(a) ; self.assertEqual(b,[(0,10),(0,4)])
1051 d22=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44])
1052 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d22,st)
1053 a,b=MEDCouplingStructuredMesh.IsPartStructured(d22,[10,5])
1054 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,5)])
1056 d30=DataArrayInt([11,12,13,14,21,22,23,24,51,52,53,54,61,62,63,64])
1057 a,b=MEDCouplingStructuredMesh.IsPartStructured(d30,[10,4,2])
1058 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(1,3),(0,2)])
1059 d31=DataArrayInt([11,12,13,14,21,22,24,23,51,52,53,54,61,62,63,64])
1060 a,b=MEDCouplingStructuredMesh.IsPartStructured(d31,[10,4,2])
1061 self.assertTrue(not a)
1062 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d30,[10,4,1])
1065 def testSwig2PartStructured1(self):
1066 c=MEDCouplingCMesh() ; c.setName("toto")
1067 arr0=DataArrayDouble(10); arr0.iota()
1068 arr1=DataArrayDouble(4) ; arr1.iota(3)
1069 c.setCoords(arr0,arr1)
1070 self.assertEqual(c.getNodeGridStructure(),(10,4))
1071 self.assertEqual(c.getCellGridStructure(),(9,3))
1072 d20=DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])
1073 self.assertEqual(27,c.getNumberOfCells())
1074 self.assertEqual(40,c.getNumberOfNodes())
1075 self.assertEqual(2,c.getMeshDimension())
1076 c.checkConsistencyLight()
1078 arr2=MEDCouplingStructuredMesh.BuildExplicitIdsFrom([9,3],[(1,5),(0,3)])
1079 self.assertTrue(arr2.isEqual(DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])))
1081 c2=c.buildStructuredSubPart([(1,5),(0,3)])
1082 c2.checkConsistencyLight()
1083 self.assertTrue(isinstance(c2,MEDCouplingCMesh))
1084 self.assertEqual(12,c2.getNumberOfCells())
1085 self.assertEqual(20,c2.getNumberOfNodes())
1086 self.assertEqual(2,c2.getMeshDimension())
1087 self.assertEqual("toto",c2.getName())
1088 self.assertTrue(c2.getCoordsAt(0).isEqual(DataArrayDouble([1.,2.,3.,4.,5.]),1e-12))
1089 self.assertTrue(c2.getCoordsAt(1).isEqual(DataArrayDouble([3.,4.,5.,6.]),1e-12))
1091 a,b=c.buildPartAndReduceNodes(d20)
1092 a.checkConsistencyLight()
1093 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])
1094 self.assertTrue(exp2.isEqual(b))
1095 self.assertTrue(isinstance(a,MEDCouplingCMesh))
1096 self.assertTrue(a.buildUnstructured().isEqual(c.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1098 c2=MEDCouplingCurveLinearMesh() ; c2.setName("toto")
1099 c2.setCoords(c.buildUnstructured().getCoords())
1100 c2.setNodeGridStructure([10,4])
1101 c2.checkConsistencyLight()
1102 a,b=c2.buildPartAndReduceNodes(d20)
1103 a.checkConsistencyLight()
1104 self.assertTrue(exp2.isEqual(b))
1105 self.assertTrue(isinstance(a,MEDCouplingCurveLinearMesh))
1106 self.assertTrue(a.buildUnstructured().isEqual(c2.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1109 def testSwig2FindPermutationFromFirstToSecond1(self):
1110 ids1=DataArrayInt([3,1,103,4,6,10,-7,205])
1111 ids2=DataArrayInt([-7,1,205,10,6,3,103,4])
1112 ids3=DataArrayInt.FindPermutationFromFirstToSecond(ids1,ids2)
1113 self.assertTrue(ids3.isEqual(DataArrayInt([5,1,6,7,4,3,0,2])))
1114 ids2ToTest=ids1.renumber(ids3)
1115 self.assertTrue(ids2ToTest.isEqual(ids2))
1116 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103]))
1117 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,2]))
1118 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,1]))
1119 self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecond(DataArrayInt([]),DataArrayInt([])).empty())
1122 def testSwig2BugStructuredMeshGetNodeIdsOfCell1(self):
1123 m=MEDCouplingCMesh("mesh")
1124 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
1125 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
1126 m.setCoords(coordsX,coordsY)
1127 self.assertEqual([2,3,8,7],m.getNodeIdsOfCell(2))
1128 self.assertEqual([3,4,9,8],m.getNodeIdsOfCell(3))
1129 self.assertEqual([7,8,13,12],m.getNodeIdsOfCell(6))
1130 self.assertEqual([8,9,14,13],m.getNodeIdsOfCell(7))
1133 def testSwig2ThrowOnDAIInvertN2O2ON2(self):
1134 p1=DataArrayInt([3,5,8])
1135 p2=DataArrayInt([0,3,4,5,6,7,8,9,10])
1136 p1.transformWithIndArr(p2.invertArrayN2O2O2N(11))
1137 self.assertTrue(p1.isEqual(DataArrayInt([1,3,6])))
1138 self.assertTrue(p2.invertArrayN2O2O2N(11).isEqual(DataArrayInt([0,-1,-1,1,2,3,4,5,6,7,8])))
1139 self.assertRaises(InterpKernelException,p2.invertArrayN2O2O2N,10)
1142 def testSwig2ComputeEffectiveNbOfNodesPerCell1(self):
1143 coords=DataArrayDouble([ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
1144 0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
1145 0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
1146 0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
1147 -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
1148 -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
1149 0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
1150 0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
1151 -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
1152 0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
1153 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
1154 -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
1155 -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
1156 -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
1157 -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
1158 -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
1159 0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
1160 0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
1161 0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
1162 -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
1163 -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
1164 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
1165 -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
1166 0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
1167 0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
1168 0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
1169 -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
1170 -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
1171 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
1172 0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
1173 -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
1174 0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
1175 0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
1176 0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
1177 -0.0372812069535 , -0.286740286332 , 0.00963701291166 ], 69, 3)
1178 connN = [ #polyhedron 0
1179 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
1180 , 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
1181 , 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
1182 , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
1184 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
1185 , 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
1186 , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
1187 , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
1189 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
1190 , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
1192 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
1193 , 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
1194 , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
1195 , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
1196 meshN=MEDCouplingUMesh.New()
1197 meshN.setName("ForBary")
1198 meshN.setMeshDimension(3) ; meshN.setCoords(coords)
1199 meshN.allocateCells(4)
1200 meshN.insertNextCell(NORM_POLYHED,113,connN);
1201 meshN.insertNextCell(NORM_POLYHED,99,connN[113:])
1202 meshN.insertNextCell(NORM_POLYHED,43,connN[212:])
1203 meshN.insertNextCell(NORM_POLYHED,92,connN[255:])
1204 d=meshN.computeEffectiveNbOfNodesPerCell()
1205 e=meshN.computeNbOfNodesPerCell()
1206 self.assertTrue(d.isEqual(DataArrayInt([32,28,12,26])))
1207 self.assertTrue(e.isEqual(DataArrayInt([96,84,36,78])))
1208 m0=MEDCoupling1DGTUMesh(meshN)
1209 c=MEDCouplingCMesh()
1210 arr=DataArrayDouble(3) ; arr.iota(10)
1211 c.setCoords(arr,arr,arr)
1212 m10=c.buildUnstructured()
1213 m11=c.build1SGTUnstructured()
1214 m12=MEDCoupling1SGTUMesh.New(m10)
1215 self.assertTrue(m12.isEqual(m11,1e-12))
1216 m12.setCoords(m0.getCoords()) # m12 is not OK geometrically but the aim of the test is only connectivity values
1217 m3=MEDCoupling1GTUMesh.AggregateOnSameCoordsToUMesh([m12,m0])
1218 m3.checkConsistencyLight()
1219 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m12.getCoords().getHiddenCppPointer())
1220 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])))
1221 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,186,286,330,423])))
1224 def testSwig2Tetrahedrize1(self):
1225 d=DataArrayInt([0,3,6,10,14,20])
1226 d2=d.buildExplicitArrOfSliceOnScaledArr(slice(0,5,2))
1227 self.assertTrue(d2.isEqual(DataArrayInt([0,0,0, 2,2,2,2, 4,4,4,4,4,4])))
1228 m=MEDCouplingUMesh("Penta6",3)
1229 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"])
1231 m.insertNextCell(NORM_PENTA6,[1,2,0,4,5,3])
1232 st=m.getCoords().getHiddenCppPointer()
1233 c,a,b=m.tetrahedrize(PLANAR_FACE_5)
1234 c.checkConsistency()
1235 self.assertTrue(a.isEqual(DataArrayInt([0,0,0])))
1236 self.assertEqual(0,b)
1237 self.assertEqual(m.getCoords().getHiddenCppPointer(),c.getCoords().getHiddenCppPointer())
1238 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([1,2,0,4,4,3,5,0,5,0,2,4])))
1241 m2=MEDCouplingUMesh("octa12",3)
1242 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)
1243 m2.setCoords(coords)
1245 m2.insertNextCell(NORM_HEXGP12,[3,2,1,0,5,4,9,8,7,6,11,10])
1246 c,a,b=m2.tetrahedrize(PLANAR_FACE_5)
1247 c.checkConsistency()
1248 self.assertTrue(a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0])))
1249 self.assertEqual(0,b)
1250 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1251 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])))
1254 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"])
1255 m3=MEDCouplingUMesh("hexa8",3)
1256 m3.setCoords(coords)
1258 m3.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1259 st=m3.getCoords().getHiddenCppPointer()
1260 c,a,b=m3.tetrahedrize(PLANAR_FACE_5)
1261 c.checkConsistency()
1262 a.isEqual(DataArrayInt([0,0,0,0,0]))
1263 self.assertEqual(0,b)
1264 self.assertEqual(m3.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1265 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])))
1267 m4=MEDCouplingUMesh("hexa8",3)
1268 m4.setCoords(coords)
1270 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1271 c,a,b=m4.tetrahedrize(PLANAR_FACE_6)
1272 c.checkConsistency()
1273 a.isEqual(DataArrayInt([0,0,0,0,0,0]))
1274 self.assertEqual(0,b)
1275 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1276 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])))
1278 m4=MEDCouplingUMesh("hexa8",3)
1279 m4.setCoords(coords)
1281 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1282 st=m4.getCoords().getHiddenCppPointer()
1283 c,a,b=m4.tetrahedrize(GENERAL_24)
1284 c.checkConsistency()
1285 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]))
1286 self.assertEqual(7,b)
1287 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1288 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1289 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])))
1290 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)
1291 m4CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1292 self.assertTrue(c.getCoords().isEqual(m4CoordsExp,1e-12))
1293 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1295 m6=MEDCouplingUMesh("hexa8",3)
1296 m6.setCoords(coords)
1298 m6.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1299 st=m6.getCoords().getHiddenCppPointer()
1300 c,a,b=m6.tetrahedrize(GENERAL_48)
1301 c.checkConsistency()
1302 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]))
1303 self.assertEqual(19,b)
1304 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1305 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1306 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])))
1307 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)
1308 m6CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1309 self.assertTrue(c.getCoords().isEqual(m6CoordsExp,1e-12))
1310 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1312 m7=MEDCouplingUMesh("polyhed",3)
1313 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"])
1314 m7.setCoords(coords)
1316 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])
1317 c,a,b=m7.tetrahedrize(PLANAR_FACE_5)
1318 c.checkConsistency()
1319 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])))
1320 self.assertEqual(9,b)
1321 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])))
1322 self.assertAlmostEqual(5.196152422706635,c.getMeasureField(False).accumulate()[0],12)
1323 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)
1324 m7CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1325 self.assertTrue(c.getCoords().isEqual(m7CoordsExp,1e-12))
1328 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"])
1329 m8=MEDCouplingUMesh("pyra5",3)
1330 m8.setCoords(coords)
1332 m8.insertNextCell(NORM_PYRA5,[3,2,1,0,7])
1333 st=m8.getCoords().getHiddenCppPointer()
1334 c,a,b=m8.tetrahedrize(PLANAR_FACE_5)
1335 self.assertEqual(m8.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1336 c.checkConsistency()
1337 self.assertTrue(a.isEqual(DataArrayInt([0,0])))
1338 self.assertEqual(0,b)
1339 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,1,7,3,1,0,7])))
1340 self.assertAlmostEqual(0.6666666666666667,c.getMeasureField(False).accumulate()[0],12)
1343 def testDualMesh3D1(self):
1344 arr=DataArrayDouble(2) ; arr.iota()
1345 c=MEDCouplingCMesh() ; c.setCoords(arr,arr,arr)
1346 m=c.buildUnstructured()
1347 t=m.tetrahedrize(PLANAR_FACE_5)[0]
1348 d=t.computeDualMesh()
1349 self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,29,118,207,236,325,354,383,472])))
1350 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])))
1351 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))
1352 self.assertAlmostEqual(1.,d.getMeasureField(False).accumulate()[0],1e-13)
1355 def testDualMesh2D1(self):
1356 arr=DataArrayDouble(5) ; arr.iota()
1357 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
1358 m=c.buildUnstructured()
1360 t=MEDCoupling1SGTUMesh(m)
1361 d=t.computeDualMesh()
1362 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])))
1363 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])))
1364 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))
1365 self.assertAlmostEqual(16.,d.getMeasureField(False).accumulate()[0],1e-13)
1368 def testSwig2LoadBalanceBBox1(self):
1369 arr=DataArrayDouble(5) ; arr.iota()
1370 t=MEDCouplingCMesh() ; t.setCoords(arr,arr)
1371 arr=DataArrayDouble(16) ; arr.iota() ; arr*=2./15
1372 s=MEDCouplingCMesh() ; s.setCoords(arr,arr[:]) ; s.translate([2.,1.])
1374 s1=s.build1SGTUnstructured()
1375 t1=t.build1SGTUnstructured()
1376 w=MEDCouplingPointSet.ComputeNbOfInteractionsWithSrcCells(s1,t1,1e-12)
1377 wExp=DataArrayInt([0,0,0,0,0,0,64,64,0,0,64,64,0,0,0,0])
1378 self.assertTrue(w.isEqual(wExp))
1379 slcs=w.splitInBalancedSlices(4)
1380 self.assertEqual(len(slcs),4)
1381 self.assertEqual(slcs,[slice(0,7,1),slice(7,8,1),slice(8,11,1),slice(11,16,1)])
1382 bbs=s1.getBoundingBoxForBBTree()
1383 bbt=t1.getBoundingBoxForBBTree()
1384 self.assertTrue(bbt.computeNbOfInteractionsWith(bbs,1e-12).isEqual(wExp))
1387 def testKrSpatialDiscretization2(self):
1388 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)
1389 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)
1390 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)
1391 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])
1392 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])
1394 nbOfInputPoints=100;
1395 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
1396 mesh=MEDCoupling1SGTUMesh.New("aMesh",NORM_POINT1);
1397 mesh.setCoords(srcPointCoordsXY);
1399 f.setArray(srcFieldValsOnPoints);
1400 f.checkConsistencyLight();
1402 res0=f.getValueOn([-0.5,-0.5]);
1403 self.assertAlmostEqual(targetFieldValsExpected.getIJ(0,0),res0[0],10)
1405 valuesToTest=f.getValueOnMulti(targetPointCoordsXY);
1406 self.assertEqual(196,valuesToTest.getNumberOfTuples());
1407 self.assertEqual(1,valuesToTest.getNumberOfComponents());
1408 for i in xrange(40):
1409 self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
1411 fd=f.getDiscretization()
1413 self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
1414 coeffs,isDrift=fd.computeVectorOfCoefficients(mesh,srcFieldValsOnPoints)
1415 self.assertEqual(3,isDrift)
1416 self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
1418 pts3=[-0.5,-0.5,-0.5,-0.35,-0.35,-0.2]
1419 mesh.setCoords(srcPointCoordsXY[:4])
1420 m,nbCols=fd.computeEvaluationMatrixOnGivenPts(mesh,pts3)
1421 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))
1422 if MEDCouplingHasNumPyBindings():
1424 m0=m.toNumPyArray() ; m0=m0.reshape(3,nbCols) ; m0=np.matrix(m0)
1425 srcFieldValsOnPoints2=DataArrayDouble(4,2) ; srcFieldValsOnPoints2[:,0]=srcFieldValsOnPoints[:4] ; srcFieldValsOnPoints2[:,1]=2*srcFieldValsOnPoints[:4]
1426 n0=srcFieldValsOnPoints2.toNumPyArray() ; n0=n0.reshape(4,2) ; n0=np.matrix(n0)
1428 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME) ; f.setMesh(mesh) ; f.setArray(srcFieldValsOnPoints2) ; f.checkConsistencyLight()
1429 self.assertTrue(DataArrayDouble(np.array((m0*n0))).isEqual(f.getValueOnMulti(pts3),1e-14))
1434 # test the when input slice is all the same object is return by MEDCouplingMesh.buildPartRange
1435 def testSwig2MeshPartSlice1(self):
1436 a=DataArrayDouble(4) ; a.iota()
1437 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m=c.buildUnstructured()
1438 fc0=c.getMeasureField(False) ; fc1=fc0[:] ; fc2=fc0*fc1 ; fc2.setName(fc0.getName())
1439 self.assertEqual(fc0.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1440 self.assertEqual(fc2.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1441 self.assertTrue(fc2.isEqual(fc1,1e-12,1e-12))
1443 fm0=m.getMeasureField(False) ; fm1=fm0[:] ; fm2=fm0*fm1 ; fm2.setName(fm0.getName())
1444 self.assertEqual(fm0.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1445 self.assertEqual(fm2.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1446 self.assertTrue(fm2.isEqual(fm1,1e-12,1e-12))
1449 # test the correct behaviour when attempting to aggregate two fields whose mesh is null
1450 def testSwig2MergeFieldsOnFieldsHavingNoMesh(self):
1451 a=DataArrayDouble(4) ; a.iota() ; a*=1.5
1452 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; f1=c.getMeasureField(False)
1453 f1.setMesh(None) ; f2=f1.deepCopy() ; f2*=2
1454 f3=MEDCouplingFieldDouble.MergeFields(f1,f2)
1455 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])
1456 self.assertTrue(f3.getArray().isEqual(daExp,1e-12))
1457 self.assertEqual(f3.getTypeOfField(),ON_CELLS)
1458 self.assertEqual(f3.getMesh(),None)
1459 f4=MEDCouplingFieldDouble.MergeFields([f1,f2])
1460 self.assertTrue(f4.getArray().isEqual(daExp,1e-12))
1461 self.assertEqual(f4.getTypeOfField(),ON_CELLS)
1462 self.assertEqual(f4.getMesh(),None)
1465 # test a simple node to cell convertion of a field
1466 def testSwig2NodeToCellDiscretization1(self):
1467 f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
1468 a1=DataArrayDouble(4) ; a1.iota()
1469 a2=DataArrayDouble(3) ; a2.iota()
1470 m=MEDCouplingCMesh() ; m.setCoords(a1,a2)
1472 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]"])
1473 f.setArray(arr) ; f.setName("toto")
1475 f2=f.nodeToCellDiscretization()
1476 self.assertEqual(ON_CELLS,f2.getTypeOfField())
1477 self.assertEqual("toto",f2.getName())
1478 self.assertEqual([1.1,2,3],f2.getTime())
1479 self.assertEqual(["aa [km]","bbb [kJ]"],f2.getArray().getInfoOnComponents())
1480 self.assertEqual(6,f2.getArray().getNumberOfTuples())
1481 self.assertEqual(f.getMesh().getHiddenCppPointer(),f2.getMesh().getHiddenCppPointer())
1482 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]"])
1483 self.assertTrue(f2.getArray().isEqual(exp,1e-13))
1486 def testSwig2NonRegressionBugIntersectMeshes1(self):
1487 src=MEDCouplingUMesh("src",2)
1488 src.setCoords(DataArrayDouble([-2.5,-3,-2.5,3,2.5,3],3,2))
1490 src.insertNextCell(NORM_TRI3,[0,1,2])
1492 trg=MEDCouplingUMesh("trg",2)
1493 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))
1495 trg.insertNextCell(NORM_QPOLYG,[2,1,0,5,3,7,8,6,4,9])
1497 a,b,c=MEDCouplingUMesh.Intersect2DMeshes(src,trg,1.0e-8)
1499 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))
1500 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])))
1501 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,20])))
1502 self.assertTrue(b.isEqual(DataArrayInt([0,0])))
1503 self.assertTrue(c.isEqual(DataArrayInt([0,-1])))
1506 def testSwig2MeshOrientCorrectly2DCells1(self):
1507 m=MEDCouplingUMesh("mesh",2)
1508 coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
1511 m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
1512 m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
1513 self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1514 m.changeSpaceDimension(3)
1515 m.orientCorrectly2DCells([0.,0.,-1.],False)
1517 m.checkConsistencyLight()
1518 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
1519 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
1520 m.changeSpaceDimension(2)
1521 self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1524 def testSwig2Hexa8HavingFacesWarped1(self):
1525 """ 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
1526 intersected with src the sum of intersection volume is greater than the volume of the trg cell.
1527 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
1530 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)
1531 src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
1533 src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
1534 src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
1535 src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
1536 src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
1537 src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
1538 src.checkConsistency()
1539 # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
1540 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)
1541 trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
1543 trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
1545 srcFace=src.buildDescendingConnectivity()[0]
1546 conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
1547 eqFaces=srcFace.computePlaneEquationOf3DFaces()
1549 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
1550 lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
1551 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
1552 shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
1553 check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
1554 idsToTest=check.findIdsNotInRange(0.,1e-10)
1555 self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
1556 idsToTest2=idsToTest.findIdsNotInRange(18,22)
1557 self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
1558 idsToTest2.rearrange(2)
1559 self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
1562 def testSwig2SortHexa8EachOther1(self):
1564 testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
1566 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)])
1567 m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
1568 m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
1569 m1.checkConsistencyLight()
1571 m2=m1.deepCopy() ; m2.setName("m2")
1573 trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
1574 for i,t in enumerate(trs):
1575 for j in xrange(64):
1576 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
1578 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
1579 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
1580 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
1583 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
1585 self.assertEqual(12,m.getNumberOfNodes())
1586 m=MEDCoupling1SGTUMesh(m)
1587 m.sortHexa8EachOther()
1588 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
1589 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
1594 def testSwig2normMinComputeAbs1(self):
1595 d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
1596 d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1598 dExp=d.deepCopy() ; dExp.abs()
1599 self.assertTrue(dExp.isEqual(d0,1e-12))
1600 e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
1601 self.assertAlmostEqual(0.,e.normMin(),13)
1602 self.assertAlmostEqual(0.009,d.normMin(),13)
1604 di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
1605 di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1607 diExp=di.deepCopy() ; diExp.abs()
1608 self.assertTrue(diExp.isEqual(d0i))
1609 self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
1612 def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
1613 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)
1614 m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
1615 m.insertNextCell(NORM_POLYGON,[6,3,4,5])
1616 m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
1617 m.checkConsistency()
1619 self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
1620 self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
1621 self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
1624 def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
1625 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)
1626 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1627 m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
1628 m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
1629 m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
1630 m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
1631 m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
1632 m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
1633 m.checkConsistency()
1634 self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
1637 def testSwig2DAIGetIdsEqualTuple1(self):
1638 da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
1639 self.assertTrue(da.findIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
1640 self.assertTrue(da.findIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
1641 self.assertTrue(da.findIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
1643 self.assertRaises(InterpKernelException,da.findIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
1644 self.assertTrue(da.findIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
1645 self.assertTrue(da.findIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
1647 self.assertTrue(da.findIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
1648 self.assertTrue(da.findIdsEqualTuple(2).isEqual(da.findIdsEqual(2)))
1651 def testSwig2GaussNEStaticInfo1(self):
1652 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
1653 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
1654 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
1657 def testSwigReverseNodalConnOnStructuredMesh(self):
1659 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
1660 c.setCoordsAt(0,arr)
1661 rn,rni=c.getReverseNodalConnectivity()
1662 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1663 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1664 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1665 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1667 c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
1668 c.setCoordsAt(0,arr)
1669 rn,rni=c.getReverseNodalConnectivity()
1670 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1671 self.assertTrue(rn.isEqual(DataArrayInt([0])))
1672 self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
1673 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1675 c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
1676 c.setCoordsAt(0,arr)
1677 rn,rni=c.getReverseNodalConnectivity()
1678 rn.isEqual(DataArrayInt([]))
1679 rni.isEqual(DataArrayInt([0]))
1681 c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
1682 c.setCoords(arr,arr2)
1683 rn,rni=c.getReverseNodalConnectivity()
1684 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1685 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])))
1686 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])))
1687 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1689 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1690 c.setCoords(arr,arr2)
1691 rn,rni=c.getReverseNodalConnectivity()
1692 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1693 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1695 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1696 c.setCoords(arr2,arr)
1697 rn,rni=c.getReverseNodalConnectivity()
1698 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1699 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1701 c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
1702 c.setCoords(arr0,arr1,arr2)
1703 rn,rni=c.getReverseNodalConnectivity()
1704 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])))
1705 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])))
1706 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1707 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1710 def testSwig2CellToNodeDiscretization1(self):
1711 m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
1712 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
1713 arr=DataArrayDouble(12) ; arr.iota()
1714 arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
1716 f.checkConsistencyLight()
1718 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.])
1719 ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
1720 f2=f.cellToNodeDiscretization()
1721 f2.checkConsistencyLight()
1722 self.assertEqual(f2.getTime()[1:],[5,6])
1723 self.assertAlmostEqual(f2.getTime()[0],1.1,15)
1724 self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
1725 self.assertTrue(f2.getArray().isEqual(ref,1e-12))
1726 rn,rni=m.getReverseNodalConnectivity()
1727 rni2=(rni.deltaShiftIndex()).convertToDblArr()
1728 arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
1729 self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
1732 u=m.buildUnstructured() ; f.setMesh(u) ; del m
1733 f3=f.cellToNodeDiscretization()
1734 f3.checkConsistencyLight()
1735 self.assertEqual(f3.getTime()[1:],[5,6])
1736 self.assertAlmostEqual(f3.getTime()[0],1.1,15)
1737 self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
1738 self.assertTrue(f3.getArray().isEqual(ref,1e-12))
1741 def testSwig2GetMeshSpaceDimensionCMesh1(self):
1742 c=MEDCouplingCMesh()
1743 arr0=DataArrayDouble([0,1,2])
1744 arr1=DataArrayDouble([0])
1745 c.setCoords(arr0,arr0,arr0)
1746 self.assertEqual(c.getMeshDimension(),3)
1747 self.assertEqual(c.getSpaceDimension(),3)
1749 c.setCoords(arr0,arr0,arr1)
1750 self.assertEqual(c.getMeshDimension(),2)
1751 self.assertEqual(c.getSpaceDimension(),3)
1753 c.setCoords(arr0,arr0)
1754 self.assertEqual(c.getMeshDimension(),2)
1755 self.assertEqual(c.getSpaceDimension(),2)
1757 c.setCoords(arr0,arr1)
1758 self.assertEqual(c.getMeshDimension(),1)
1759 self.assertEqual(c.getSpaceDimension(),2)
1762 self.assertEqual(c.getMeshDimension(),1)
1763 self.assertEqual(c.getSpaceDimension(),1)
1766 self.assertEqual(c.getMeshDimension(),0)
1767 self.assertEqual(c.getSpaceDimension(),1)
1770 def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
1773 m=MEDCouplingCMesh()
1774 arr1=DataArrayDouble(nx) ; arr1.iota()
1775 arr2=DataArrayDouble(ny) ; arr2.iota()
1776 m.setCoords(arr1,arr2)
1777 m=m.buildUnstructured()
1778 da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
1779 m2=m[da] ; m2.simplexize(0)
1780 dan=da.buildComplement(m.getNumberOfCells())
1782 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1784 m.convertLinearCellsToQuadratic()
1785 m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
1786 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1787 p=m.buildSpreadZonesWithPoly()
1788 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])))
1789 self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
1790 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))
1793 def testSwig2Conformize2D1(self):
1795 coo = [0.,-0.5,0.,0.,0.5,0.,0.5,-0.5,0.25,
1796 -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]
1797 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]
1798 connI = [0,5,12,17,24]
1799 m = MEDCouplingUMesh("box",2)
1800 cooArr = DataArrayDouble(coo,len(coo)/2,2)
1802 m.setConnectivity(DataArrayInt(conn),DataArrayInt(connI))
1804 m.checkConsistencyLight()
1805 self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([3])))
1806 self.assertEqual(m.getCoords().getHiddenCppPointer(),cooArr.getHiddenCppPointer()) # check that coordinates remain the same here
1807 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])))
1808 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,12,17,25])))
1811 def testSwig2Conformize2D2(self):
1813 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)
1814 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])
1815 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
1817 m.setNodalConnectivity(conn)
1818 m=m.buildUnstructured()
1819 self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
1820 self.assertEqual(m.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer()) # check that coordinates remain the same here
1821 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])))
1822 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,6,12,21,26,31,37,42])))
1825 def testSwigSplit2DCells1(self):
1826 coo=DataArrayDouble([[0,0],[1,0],[1,1],[0,1],[0.5,0],[1,0.5],[0.5,1],[0.,0.5]])
1827 m=MEDCouplingUMesh("mesh",2)
1830 m.insertNextCell(NORM_QUAD8,[0,1,2,3,4,5,6,7])
1831 _,d,di,_,_=m.buildDescendingConnectivity()
1832 subb=DataArrayInt([5])
1833 subbi=DataArrayInt([0,0,1,1,1])
1834 mid=DataArrayInt([-1,-1])
1835 midi=DataArrayInt([0,0,2,2,2])
1836 self.assertEqual(2,m.split2DCells(d,di,subb,subbi,mid,midi))
1837 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,1,5,2,3,4,8,9,6,7])))
1838 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11])))
1839 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))
1842 def testSwig2Conformize2D3(self):
1844 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)
1845 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])
1846 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
1848 m.setNodalConnectivity(conn)
1849 m=m.buildUnstructured()
1850 m.convertLinearCellsToQuadratic()
1851 self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0,1,2,5])))
1852 self.assertTrue(m.getCoords().getHiddenCppPointer()!=coo.getHiddenCppPointer()) # coordinates are not the same here contrary to testSwig2Conformize2D2 ...
1853 self.assertTrue(m.getCoords()[:18].isEqual(coo,1e-12)) # but the 18 first nodes are the same
1856 def testSwig2Conformize2D4(self):
1858 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)
1859 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])
1860 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4)
1862 m.setNodalConnectivity(conn)
1863 m=m.buildUnstructured()
1864 m.convertLinearCellsToQuadratic()
1865 self.assertEqual(42,m.getNumberOfNodes())
1866 oldCoo=m.getCoords().deepCopy()
1868 self.assertTrue(m.getCoords()[:42].isEqual(oldCoo,1e-12))
1869 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])))
1870 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,11,22,39,48,57,68,77])))
1871 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))
1874 def testSwig2Conformize2D5(self):
1876 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]])
1877 m=MEDCouplingUMesh("mesh",2)
1880 m.insertNextCell(NORM_TRI6,[1,2,0,5,4,3])
1881 m.insertNextCell(NORM_TRI6,[8,6,0,12,7,13])
1882 m.insertNextCell(NORM_TRI6,[11,9,10,16,14,15])
1883 self.assertTrue(m.conformize2D(eps).isEqual(DataArrayInt([0])))
1884 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))
1885 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])))
1886 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,13,20,27])))
1889 def testSwigExtendedSlice1(self):
1890 d=DataArrayInt([5,6,7])
1891 self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
1892 self.assertTrue(d[3:].isEqual(DataArrayInt([])))
1895 except InterpKernelException as e:
1896 self.assertTrue(True)
1898 self.assertTrue(False)
1900 d=DataArrayInt([5,6,7,8])
1901 self.assertEqual(d[-1],8)
1902 self.assertEqual(d[-4],5)
1905 except InterpKernelException as e:
1906 self.assertTrue(True)
1908 self.assertTrue(False)
1910 self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
1911 self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
1912 self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
1913 self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
1914 self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
1917 except InterpKernelException as e:
1918 self.assertTrue(True)
1920 self.assertTrue(False)
1923 self.assertTrue(d[0:].isEqual(DataArrayInt([])))
1925 d=DataArrayDouble([5,6,7])
1926 self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
1927 self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
1930 except InterpKernelException as e:
1931 self.assertTrue(True)
1933 self.assertTrue(False)
1935 d=DataArrayDouble([5,6,7,8])
1936 self.assertAlmostEqual(d[-1],8.,12)
1937 self.assertAlmostEqual(d[-4],5.,12)
1940 except InterpKernelException as e:
1941 self.assertTrue(True)
1943 self.assertTrue(False)
1945 self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
1946 self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
1947 self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
1948 self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
1949 self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
1952 except InterpKernelException as e:
1953 self.assertTrue(True)
1955 self.assertTrue(False)
1957 d=DataArrayDouble([])
1958 self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
1961 def testSwig2Hexa27GP1(self):
1962 """ This test focused on shape functions of hexa27.
1964 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.]])
1965 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1967 # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
1968 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])
1969 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.]
1970 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]
1971 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]
1972 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1974 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1975 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1976 fGauss.setArray(arr)
1977 arrOfDisc=fGauss.getLocalizationOfDiscr()
1979 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))
1983 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1984 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1985 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1988 def testSwig2Pyra13GP1(self):
1989 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.]])
1990 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1992 # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
1993 m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
1994 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]
1995 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]
1996 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]
1997 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1999 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
2000 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
2001 fGauss.setArray(arr)
2002 arrOfDisc=fGauss.getLocalizationOfDiscr()
2004 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))
2007 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. !
2008 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
2009 arrOfDisc2=fGauss.getLocalizationOfDiscr()
2010 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. !
2013 def testSwig2Tri7GP1(self):
2014 coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
2015 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2017 # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
2018 m.insertNextCell(NORM_TRI7,range(7))
2019 refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
2020 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]
2021 weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
2022 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
2024 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
2025 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
2026 fGauss.setArray(arr)
2027 arrOfDisc=fGauss.getLocalizationOfDiscr()
2028 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))
2031 gaussCoords=refCoords
2032 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
2033 arrOfDisc2=fGauss.getLocalizationOfDiscr()
2034 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
2037 def testSwig2StructuredDesc1(self):
2038 c=MEDCouplingCMesh()
2039 arr0=DataArrayDouble(3) ; arr0.iota()
2040 arr1=DataArrayDouble(4) ; arr1.iota()
2041 arr2=DataArrayDouble(5) ; arr2.iota()
2042 c.setCoords(arr0,arr1,arr2)
2044 self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
2045 m=c.build1SGTSubLevelMesh()
2046 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])))
2047 self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
2049 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])))
2052 def testSwig2Colinearize2D1(self):
2053 coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
2055 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
2056 m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
2057 refPtr=m.getCoords().getHiddenCppPointer()
2058 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2059 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2060 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
2061 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
2062 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
2063 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2064 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
2065 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
2067 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
2068 m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
2069 refPtr=m.getCoords().getHiddenCppPointer()
2070 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2071 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2072 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
2073 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
2075 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
2076 m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
2077 refPtr=m.getCoords().getHiddenCppPointer()
2078 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2079 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2080 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
2081 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
2083 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
2084 m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
2085 refPtr=m.getCoords().getHiddenCppPointer()
2086 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2087 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2088 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
2089 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
2091 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)])
2092 coo2.setInfoOnComponents(["aa","bbbb"])
2093 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
2094 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
2095 refPtr=m.getCoords().getHiddenCppPointer()
2096 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2097 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
2098 self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
2099 refPtr=m.getCoords().getHiddenCppPointer()
2100 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
2101 self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
2102 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2103 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2104 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
2105 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2106 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2107 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2108 # mix of quadratic and linear inside a QPOLYG cell
2109 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)])
2110 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
2111 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
2112 refPtr=m.getCoords().getHiddenCppPointer()
2113 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2114 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
2115 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
2116 self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
2117 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2118 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2121 def testSwig2BoundingBoxForBBTree1(self):
2122 """ 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 !
2124 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)
2125 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2127 m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
2128 m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
2129 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))
2132 def testSwig2CartBuildUnstructuredOnExoticCases1(self):
2133 """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
2136 m=MEDCouplingCMesh()
2137 arrX=DataArrayDouble(3) ; arrX.iota()
2138 arrY=DataArrayDouble(4) ; arrY.iota()
2139 arrZ=DataArrayDouble(1) ; arrZ.iota()
2140 m.setCoords(arrX,arrY,arrZ)
2141 self.assertEqual(2,m.getMeshDimension())
2142 self.assertEqual(3,m.getSpaceDimension())
2143 mu=m.buildUnstructured()
2144 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])))
2145 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2146 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)])
2147 self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
2149 m=MEDCouplingCMesh()
2150 arrX=DataArrayDouble(3) ; arrX.iota()
2151 arrY=DataArrayDouble(1) ; arrY.iota()
2152 arrZ=DataArrayDouble(4) ; arrZ.iota()
2153 m.setCoords(arrX,arrY,arrZ)
2154 self.assertEqual(2,m.getMeshDimension())
2155 self.assertEqual(3,m.getSpaceDimension())
2156 mu=m.buildUnstructured()
2157 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])))
2158 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2159 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)])
2160 self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
2162 m=MEDCouplingCMesh()
2163 arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
2164 arrY=DataArrayDouble(3) ; arrY.iota()
2165 arrZ=DataArrayDouble(4) ; arrZ.iota()
2166 m.setCoords(arrX,arrY,arrZ)
2167 self.assertEqual(2,m.getMeshDimension())
2168 self.assertEqual(3,m.getSpaceDimension())
2169 mu=m.buildUnstructured()
2170 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])))
2171 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2172 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)])
2173 self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
2175 m=MEDCouplingCMesh()
2176 arrX=DataArrayDouble(3) ; arrX.iota()
2177 arrY=DataArrayDouble(1) ; arrY.iota(7)
2178 arrZ=DataArrayDouble(1) ; arrZ.iota(8)
2179 m.setCoords(arrX,arrY,arrZ)
2180 self.assertEqual(1,m.getMeshDimension())
2181 self.assertEqual(3,m.getSpaceDimension())
2182 mu=m.buildUnstructured()
2183 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2184 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2185 coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
2186 self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
2188 m=MEDCouplingCMesh()
2189 arrX=DataArrayDouble(1) ; arrX.iota(7)
2190 arrY=DataArrayDouble(1) ; arrY.iota(8)
2191 arrZ=DataArrayDouble(3) ; arrZ.iota()
2192 m.setCoords(arrX,arrY,arrZ)
2193 self.assertEqual(1,m.getMeshDimension())
2194 self.assertEqual(3,m.getSpaceDimension())
2195 mu=m.buildUnstructured()
2196 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2197 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2198 coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
2199 self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
2201 m=MEDCouplingCMesh()
2202 arrX=DataArrayDouble(3) ; arrX.iota()
2203 arrY=DataArrayDouble(1) ; arrY.iota(7)
2204 m.setCoords(arrX,arrY)
2205 self.assertEqual(1,m.getMeshDimension())
2206 self.assertEqual(2,m.getSpaceDimension())
2207 mu=m.buildUnstructured()
2208 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2209 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2210 coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
2211 self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
2213 m=MEDCouplingCMesh()
2214 arrX=DataArrayDouble(1) ; arrX.iota(7)
2215 arrY=DataArrayDouble(3) ; arrY.iota()
2216 m.setCoords(arrX,arrY)
2217 self.assertEqual(1,m.getMeshDimension())
2218 self.assertEqual(2,m.getSpaceDimension())
2219 mu=m.buildUnstructured()
2220 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2221 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2222 coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
2223 self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
2226 def testSwig2Colinearize2D2(self):
2227 """ simple non regression test but that has revealed a bug"""
2228 coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
2229 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2230 m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
2231 m.checkConsistency()
2232 refPtr=m.getCoords().getHiddenCppPointer()
2234 m.colinearize2D(1e-12)
2235 m.checkConsistency()
2236 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2237 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_POLYGON,0,2,3,4])))
2238 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
2241 def testSwig2Colinearize2D3(self):
2242 """ colinearize was too agressive, potentially producing cells with one edge """
2243 # Flat polygon with 3 edges - nothing should happen (min number of edges for a linear polyg)
2244 coo = DataArrayDouble([0.0,0.0, 2.0,0.0, 1.5,0.0, 1.0,0.0, 0.5,0.0], 5,2)
2245 m = MEDCouplingUMesh("m", 2)
2246 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2], [0,4]] ]
2247 m.setCoords(coo); m.setConnectivity(c, cI)
2248 m.colinearize2D(1e-10)
2249 m.checkConsistency()
2250 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2251 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2253 # Flat quad polygon, 2 edges - nothing should happen (min number of edges for a quad polyg)
2254 m = MEDCouplingUMesh("m", 2)
2255 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1, 2,3], [0,5]] ]
2256 m.setCoords(coo); m.setConnectivity(c, cI)
2257 m.colinearize2D(1e-10)
2258 m.checkConsistency()
2259 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2260 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2262 # Flat polygon, 4 edges - one reduction should happen
2263 m = MEDCouplingUMesh("m", 2)
2264 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2,3], [0,5]] ]
2265 m.setCoords(coo); m.setConnectivity(c, cI)
2266 m.colinearize2D(1e-10)
2267 m.checkConsistency()
2268 self.assertEqual([NORM_POLYGON, 3,1,2], m.getNodalConnectivity().getValues())
2269 self.assertEqual([0,4], m.getNodalConnectivityIndex().getValues())
2271 # Flat quad polygon, 3 edges - one reduction expected
2272 m = MEDCouplingUMesh("m", 2)
2273 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1,3, 3,2,4], [0,7]] ]
2274 m.setCoords(coo); m.setConnectivity(c, cI)
2275 m.colinearize2D(1e-10)
2276 m.checkConsistency()
2277 self.assertEqual([NORM_QPOLYG, 3,1, 5,2], m.getNodalConnectivity().getValues())
2278 self.assertTrue( m.getCoords()[5].isEqual( DataArrayDouble([(1.5,0.0)]), 1.0e-12 ) )
2279 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2281 # Now an actual (neutronic) case: circle made of 4 SEG3. Should be reduced to 2 SEG3
2282 m = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 1.0)
2283 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 7,5,3,1, 6,4,2,0], [0,9]] ]
2284 m.colinearize2D(1e-10)
2285 m.checkConsistency()
2286 self.assertEqual([NORM_QPOLYG, 3,5, 8,4], m.getNodalConnectivity().getValues())
2287 self.assertTrue( m.getCoords()[8].isEqual( DataArrayDouble([(1.0,0.0)]), 1.0e-12 ) )
2288 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2290 def testSwig2CheckAndPreparePermutation2(self):
2291 a=DataArrayInt([10003,9999999,5,67])
2292 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
2293 a=DataArrayInt([10003,-9999999,5,67])
2294 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
2296 self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
2299 def testSwig2ComputeNeighborsOfNodes1(self):
2300 arrX=DataArrayDouble(3) ; arrX.iota()
2301 arrY=DataArrayDouble(4) ; arrY.iota()
2302 arrZ=DataArrayDouble(5) ; arrZ.iota()
2303 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
2305 a,b=m.computeNeighborsOfNodes()
2306 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])))
2307 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])))
2309 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
2310 a,b=m.computeNeighborsOfNodes()
2311 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])))
2312 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2314 m=m.buildDescendingConnectivity()[0]
2315 a,b=m.computeNeighborsOfNodes()
2316 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])))
2317 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2320 def testSwigBugOnUnpackingTuplesInDataArray1(self):
2321 inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2324 self.assertRaises(StopIteration,r.__getitem__,4)
2325 self.assertEqual(len(r),3)
2328 self.assertEqual(len(r),3)
2331 self.assertEqual(len(r),3)
2334 self.assertEqual(len(r),3)
2336 self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
2338 inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2341 self.assertRaises(StopIteration,r.__getitem__,4)
2342 self.assertEqual(len(r),3)
2345 self.assertEqual(len(r),3)
2348 self.assertEqual(len(r),3)
2351 self.assertEqual(len(r),3)
2353 self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
2356 def testSwig2IMesh1(self):
2357 """ 1st test of image grid mesh.
2359 m=MEDCouplingIMesh()
2360 self.assertEqual(m.getSpaceDimension(),-1)
2361 self.assertEqual(1,len(m.__repr__().split("\n")))
2362 self.assertEqual(6,len(m.__str__().split("\n")))
2363 self.assertRaises(InterpKernelException,m.getNodeStruct)
2364 self.assertRaises(InterpKernelException,m.getOrigin)
2365 self.assertRaises(InterpKernelException,m.getDXYZ)
2366 m.setSpaceDimension(3)
2367 self.assertEqual(9,len(m.__str__().split("\n")))
2368 self.assertEqual(4,len(m.__repr__().split("\n")))
2369 self.assertEqual((0,0,0),m.getNodeStruct())
2370 self.assertEqual((0.,0.,0.),m.getOrigin())
2371 self.assertEqual((0.,0.,0.),m.getDXYZ())
2372 self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
2373 m.setNodeStruct([3,4,2])
2374 self.assertEqual((3,4,2),m.getNodeStruct())
2375 m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
2376 self.assertEqual((1.5,2.5,3.5),m.getOrigin())
2377 m.setDXYZ((0.5,1.,0.25))
2378 self.assertEqual((0.5,1.,0.25),m.getDXYZ())
2379 for it in DataArrayDouble([(1.5,2.5,3.5)]):
2380 m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
2382 self.assertEqual(3,m.getSpaceDimension())
2383 self.assertEqual((3,4,2),m2.getNodeStruct())
2384 self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
2385 self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
2386 self.assertEqual(24,m2.getNumberOfNodes())
2387 self.assertEqual(6,m2.getNumberOfCells())
2388 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2390 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2392 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2394 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2396 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2398 self.assertTrue(not m.isEqual(m2,1e-12))
2400 self.assertTrue(m.isEqual(m2,1e-12))
2402 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2403 m2.setTimeUnit("ms")
2404 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2406 m2.setNodeStruct([3,2,4])
2407 self.assertTrue(not m.isEqual(m2,1e-12))
2408 m.setNodeStruct([3,2,4])
2409 self.assertTrue(m.isEqual(m2,1e-12))
2410 m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
2411 self.assertTrue(not m.isEqual(m2,1e-12))
2412 m2.setOrigin([1.5,3.5,2.5])
2413 self.assertTrue(m.isEqual(m2,1e-12))
2414 m.setDXYZ((0.5,0.25,1.))
2415 self.assertTrue(not m.isEqual(m2,1e-12))
2416 m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
2417 self.assertTrue(m.isEqual(m2,1e-12))
2419 self.assertTrue(m2bis.isEqual(m2,1e-12))
2421 self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
2422 m2bis.refineWithFactor([3,3,3])
2423 self.assertEqual(162,m2bis.getNumberOfCells())
2424 self.assertEqual((7,4,10),m2bis.getNodeStruct())
2425 self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
2426 self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
2428 self.assertEqual(3,m.getMeshDimension())
2429 self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
2430 mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
2431 mu.checkConsistency()
2432 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]"])
2433 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2434 self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
2435 self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
2436 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])))
2437 bary=m.computeCellCenterOfMass()
2438 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]"])
2439 self.assertTrue(bary.isEqual(baryExp,1e-12))
2441 c=m.convertToCartesian()
2442 c.checkConsistencyLight()
2443 self.assertEqual([1.1,0,3],c.getTime())
2444 self.assertEqual("ms",c.getTimeUnit())
2445 self.assertEqual(3,c.getMeshDimension())
2446 self.assertEqual(3,c.getSpaceDimension())
2447 arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
2448 self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
2449 arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
2450 self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
2451 arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
2452 self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
2453 self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
2455 a,b=m.getCellsContainingPoints(baryExp,1e-12)
2456 self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
2457 self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
2458 for a,b in enumerate(baryExp):
2459 self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
2462 m.translate([1.,2.,4.])
2463 self.assertEqual((3,2,4),m.getNodeStruct())
2464 self.assertEqual((2.5,5.5,6.5),m.getOrigin())
2465 self.assertEqual((0.5,0.25,1.),m.getDXYZ())
2466 m.scale([0.,1.,3.],2.)
2467 self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
2468 self.assertEqual((3,2,4),m.getNodeStruct())
2469 self.assertEqual((5.,10.,10.),m.getOrigin())
2470 self.assertEqual((1.,0.5,2.),m.getDXYZ())
2472 f=m.getMeasureField(False)
2473 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
2474 f2.setName("MeasureOfMesh_mesh")
2475 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
2477 m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
2478 self.assertEqual((2,2,3),m3.getNodeStruct())
2479 self.assertEqual((6.,10.,12.),m3.getOrigin())
2480 self.assertEqual((1.,0.5,2.),m3.getDXYZ())
2481 # now playing with 3D surf
2482 m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
2483 self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
2484 self.assertEqual(3,m4.getSpaceDimension())
2485 self.assertEqual(2,m4.getMeshDimension())
2486 self.assertEqual(12,m4.getNumberOfNodes())
2487 self.assertEqual(6,m4.getNumberOfCells())
2488 mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
2489 mu.checkConsistency()
2490 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2491 self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
2492 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]"])
2493 self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
2494 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])))
2497 def testSwig1GetValuesAsTuple1(self):
2499 self.assertEqual(d.getValues(),[])
2500 self.assertEqual(d.getValuesAsTuple(),[])
2501 d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
2502 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.])
2503 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.)])
2505 self.assertEqual(d.getValues(),[])
2506 self.assertEqual(d.getValuesAsTuple(),[])
2507 d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
2508 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])
2509 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)])
2512 def testSwig2AMR1(self):
2513 self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
2514 self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
2516 amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
2517 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2518 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
2519 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
2520 self.assertEqual(0,amr.getNumberOfPatches())
2521 self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
2522 self.assertEqual(2,amr.getSpaceDimension())
2523 amr.addPatch([(1,2),(0,1)],[4,4])
2524 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2525 self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
2526 self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
2527 self.assertEqual(1,amr.getNumberOfPatches())
2528 self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
2529 self.assertEqual(2,amr.getSpaceDimension())
2530 amr[0].addPatch([(2,3),(1,3)],[3,2])
2531 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2532 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2533 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2534 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2535 self.assertEqual(1,amr.getNumberOfPatches())
2536 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2537 self.assertEqual(2,amr.getSpaceDimension())
2538 amr[0].addPatch([(0,2),(3,4)],[3,2])
2539 self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
2540 self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
2541 self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
2542 self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
2543 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2544 self.assertEqual(2,amr.getSpaceDimension())
2546 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2547 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2548 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2549 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2550 self.assertEqual(1,amr.getNumberOfPatches())
2551 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2552 self.assertEqual(2,amr.getSpaceDimension())
2555 def testSwig2NonRegressionTestPAL1164(self):
2556 """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
2557 xarr=DataArrayDouble(3,1)
2559 cmesh=MEDCouplingCMesh()
2560 cmesh.setCoords(xarr,xarr,xarr)
2561 mesh=cmesh.buildUnstructured()
2562 f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
2563 f.setName("MyField")
2564 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2565 self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
2566 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2567 f.applyLin(2.,0.,0)# here it is OK !
2568 self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
2570 self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
2573 def testSwig2StructurizeMe1(self):
2574 arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
2575 arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
2576 arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
2577 c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
2578 c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
2579 u=c.buildUnstructured()
2580 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])
2581 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])
2583 u.renumberNodes(np,len(np))
2584 u=MEDCoupling1SGTUMesh(u)
2586 e,d,f=u.structurizeMe()
2587 self.assertTrue(c.isEqual(e,1e-12))
2588 self.assertTrue(d.isEqual(cp))
2589 self.assertTrue(f.isEqual(np))
2592 def testSwig2DenseMatrix1(self):
2593 m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
2594 self.assertEqual(m0.getNumberOfRows(),2)
2595 self.assertEqual(m0.getNumberOfCols(),3)
2596 self.assertEqual(m0.getNbOfElems(),6)
2597 ref=m0.getData().getHiddenCppPointer()
2599 self.assertTrue(m0.isEqual(m00,1e-12))
2600 m00.getData().setIJ(0,0,2.1)
2601 self.assertTrue(not m0.isEqual(m00,1e-12))
2602 m00.getData().setIJ(0,0,2.)
2603 self.assertTrue(m0.isEqual(m00,1e-12))
2604 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2606 m000=m0*DataArrayDouble([5,9,3])
2607 self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
2610 self.assertTrue(not m0.isEqual(m00,1e-12))
2611 self.assertEqual(m0.getNumberOfRows(),3)
2612 self.assertEqual(m0.getNumberOfCols(),2)
2613 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2614 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2616 self.assertTrue(m0.isEqual(m00,1e-12))
2617 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2618 self.assertEqual(m0.getNumberOfRows(),2)
2619 self.assertEqual(m0.getNumberOfCols(),3)
2620 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2621 #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
2623 self.assertEqual(m1.getNumberOfRows(),2)
2624 self.assertEqual(m1.getNumberOfCols(),3)
2625 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2626 m11=m0.deepCopy() ; m11+=m1
2627 self.assertEqual(m11.getNumberOfRows(),2)
2628 self.assertEqual(m11.getNumberOfCols(),3)
2629 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2631 self.assertEqual(m11.getNumberOfRows(),2)
2632 self.assertEqual(m11.getNumberOfCols(),3)
2633 self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
2635 self.assertEqual(m11.getNumberOfRows(),2)
2636 self.assertEqual(m11.getNumberOfCols(),3)
2637 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2639 self.assertEqual(m1.getNumberOfRows(),2)
2640 self.assertEqual(m1.getNumberOfCols(),3)
2641 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2643 self.assertEqual(m1.getNumberOfRows(),3)
2644 self.assertEqual(m1.getNumberOfCols(),2)
2645 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
2646 #m1np=m0np.transpose()
2648 self.assertEqual(m2.getNumberOfRows(),2)
2649 self.assertEqual(m2.getNumberOfCols(),2)
2650 self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
2653 def testSwig2AMR2(self):
2654 """ 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."""
2655 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2656 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2657 MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
2658 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))
2660 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2661 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2662 MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
2663 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))
2665 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2666 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2667 MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
2668 self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
2671 def testSwig2AMR3(self):
2672 """ Test spread of coarse IMesh instance into a fine one, with a factor."""
2673 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2674 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2675 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
2676 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))
2678 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2679 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2680 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
2681 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))
2682 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.checkConsistencyLight()
2683 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.checkConsistencyLight()
2685 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2686 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2687 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
2688 self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
2691 def testSwig2AMR4(self):
2692 """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."""
2693 im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
2694 b=im.computeCellCenterOfMass() ; b-=[1.,1.] ; b=b.magnitude()
2695 ids=b.findIdsInRange(0.4,0.7)
2696 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
2697 # f.write("test.vti")
2698 amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
2699 arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
2700 bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
2701 amr.createPatchesFromCriterion(bso,arr2,[2,2])
2702 m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
2703 self.assertEqual(12,amr.getNumberOfPatches())
2704 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)]]
2705 for i,bltr in enumerate(exp0):
2706 self.assertEqual(amr[i].getBLTRRange(),bltr)
2708 self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
2710 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
2711 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
2712 self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
2713 m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
2714 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
2715 self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
2718 def testSwig2AMR5(self):
2719 """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
2721 coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
2722 fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
2723 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
2724 self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
2726 MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
2727 self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
2729 coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
2730 fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
2731 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
2732 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))
2733 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2735 fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
2736 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
2737 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
2738 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2739 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.])
2740 self.assertTrue(coarse.isEqual(coarseExp,1e-12))
2741 self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
2742 self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
2745 def testSwig2AMR6(self):
2746 """ 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."""
2747 amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
2748 da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
2749 amr.addPatch([(1,4),(2,4)],[4,4])
2750 amr.addPatch([(0,1),(0,1)],[4,4])
2751 amr.addPatch([(4,5),(3,4)],[4,4])
2752 amr.addPatch([(4,5),(1,3)],[4,4])
2753 amr.addPatch([(0,1),(1,4)],[4,4])
2754 da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
2755 da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
2756 da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
2757 da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
2758 da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
2759 self.assertEqual(5,amr.getNumberOfPatches())
2760 l=[da0,da1,da2,da3,da4]
2761 lCpy=[elt.deepCopy() for elt in l]
2762 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2763 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2764 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2765 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2767 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2768 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2769 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2770 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkConsistencyLight()
2771 f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkConsistencyLight()
2772 f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkConsistencyLight()
2774 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])
2775 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])
2776 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2777 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2778 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2779 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2781 g0=amr.retrieveGridsAt(0)
2782 self.assertEqual(1,len(g0))
2783 self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
2784 g1=amr.retrieveGridsAt(1)
2785 self.assertEqual(5,len(g1))
2787 self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
2791 def testSwig2AMR7(self):
2792 """Idem testSwig2AMR6 except that we are in 1D"""
2793 amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
2794 da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
2795 amr.addPatch([(1,4)],[4])
2796 amr.addPatch([(0,1)],[4])
2797 da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
2798 da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
2799 self.assertEqual(2,amr.getNumberOfPatches())
2801 lCpy=[elt.deepCopy() for elt in l]
2802 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2803 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2804 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2805 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2807 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2808 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2809 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2811 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])
2812 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])
2813 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2814 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2815 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2816 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2819 def testSwig2AMR8(self):
2820 """This test checks 'basic' operations for ghost update."""
2822 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2823 amr.addPatch([(1,4),(2,4)],[4,4])
2824 amr.addPatch([(4,5),(3,5)],[4,4])
2825 amr.addPatch([(0,1),(4,6)],[4,4])
2826 amr[0].addPatch([(10,12),(5,8)],[2,2])
2827 amr[1].addPatch([(0,1),(0,5)],[2,2])
2828 amr[2].addPatch([(3,4),(0,3)],[2,2])
2829 m=amr.buildMeshFromPatchEnvelop()
2830 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
2831 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))
2832 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2833 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2835 d=att.getFieldOn(amr,"Field")
2836 self.assertEqual(56,d.getNumberOfTuples())
2837 self.assertEqual(1,d.getNumberOfComponents())
2839 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2840 self.assertEqual(140,d0.getNumberOfTuples())
2841 self.assertEqual(1,d0.getNumberOfComponents())
2843 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2844 self.assertEqual(60,d1.getNumberOfTuples())
2845 self.assertEqual(1,d1.getNumberOfComponents())
2847 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2848 self.assertEqual(60,d2.getNumberOfTuples())
2849 self.assertEqual(1,d2.getNumberOfComponents())
2851 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2852 self.assertEqual(48,d00.getNumberOfTuples())
2853 self.assertEqual(1,d00.getNumberOfComponents())
2854 d00.iota() ; d00+=0.5
2855 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2856 self.assertEqual(48,d10.getNumberOfTuples())
2857 self.assertEqual(1,d10.getNumberOfComponents())
2858 d10.iota() ; d10+=0.6
2859 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2860 self.assertEqual(32,d20.getNumberOfTuples())
2861 self.assertEqual(1,d20.getNumberOfComponents())
2862 d20.iota() ; d20+=0.7
2863 f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
2864 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])
2865 arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
2866 self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
2867 m=MEDCoupling1SGTUMesh(f.getMesh())
2868 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])))
2869 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))
2870 # the test is here ! To be called after iteration with no remesh
2871 att.synchronizeAllGhostZones()
2872 f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkConsistencyLight()
2873 ftmp=att.buildCellFieldOnWithoutGhost(amr,"Field") ; ftmp.checkConsistencyLight() ; 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))
2874 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2875 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2876 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2877 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2878 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2879 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2880 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))
2881 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))
2882 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))
2883 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))
2884 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))
2885 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))
2886 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))
2889 def testSwig2AMR9(self):
2890 """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
2892 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2893 amr.addPatch([(1,4),(2,4)],[4,4])
2894 amr.addPatch([(4,5),(3,5)],[4,4])
2895 amr.addPatch([(0,1),(4,6)],[4,4])
2896 amr[0].addPatch([(10,12),(5,8)],[2,2])
2897 amr[1].addPatch([(0,1),(0,5)],[2,2])
2898 amr[2].addPatch([(3,4),(0,3)],[2,2])
2899 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2900 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2902 d=att.getFieldOn(amr,"Field")
2903 self.assertEqual(90,d.getNumberOfTuples())
2904 self.assertEqual(1,d.getNumberOfComponents())
2906 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2907 self.assertEqual(192,d0.getNumberOfTuples())
2908 self.assertEqual(1,d0.getNumberOfComponents())
2910 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2911 self.assertEqual(96,d1.getNumberOfTuples())
2912 self.assertEqual(1,d1.getNumberOfComponents())
2914 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2915 self.assertEqual(96,d2.getNumberOfTuples())
2916 self.assertEqual(1,d2.getNumberOfComponents())
2918 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2919 self.assertEqual(80,d00.getNumberOfTuples())
2920 self.assertEqual(1,d00.getNumberOfComponents())
2921 d00.iota() ; d00+=0.5
2922 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2923 self.assertEqual(84,d10.getNumberOfTuples())
2924 self.assertEqual(1,d10.getNumberOfComponents())
2925 d10.iota() ; d10+=0.6
2926 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2927 self.assertEqual(60,d20.getNumberOfTuples())
2928 self.assertEqual(1,d20.getNumberOfComponents())
2929 d20.iota() ; d20+=0.7
2930 # the test is here ! To be called after iteration with no remesh
2931 att.synchronizeAllGhostZones()
2932 f=att.buildCellFieldOnWithGhost(amr,"Field")
2933 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2934 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2935 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2936 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2937 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2938 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2939 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))
2940 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))
2941 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))
2942 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))
2943 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))
2944 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))
2945 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
2946 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
2947 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
2948 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
2949 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
2950 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])))
2953 def testSwig2AMR10(self):
2954 """ 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."""
2956 amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
2957 amr.addPatch([(3,8),(0,3)],[2,2])
2958 amr[0].addPatch([(0,10),(3,6)],[3,3])
2959 amr[0].addPatch([(2,6),(0,3)],[3,3])
2960 amr[0].addPatch([(6,10),(2,3)],[3,3])
2961 amr.addPatch([(3,8),(3,6)],[2,2])
2962 amr[1].addPatch([(0,4),(0,6)],[3,3])
2963 amr[1].addPatch([(7,10),(0,4)],[3,3])
2964 amr[1].addPatch([(4,7),(0,3)],[3,3])
2965 amr[1].addPatch([(4,7),(3,6)],[3,3])
2966 amr.addPatch([(0,3),(6,10)],[2,2])
2967 self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
2968 self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
2969 self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
2970 self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
2971 da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
2972 MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
2973 self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
2974 att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
2975 att.spillNatures([IntensiveMaximum])
2977 yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
2978 yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
2979 yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
2980 yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
2981 yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
2982 yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
2983 yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
2984 yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
2985 yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
2986 yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
2987 yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
2988 att2=att.deepCopy() ; att3=att2.deepCopy() ; att4=att3.deepCopy() ; att5=att4.deepCopy() ; att6=att5.deepCopy()
2990 att.synchronizeFineToCoarseBetween(2,1)
2992 for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
2993 self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2995 for pos in [(0,),(1,)]:
2996 self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2998 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))
2999 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))
3002 att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
3003 ### 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.
3004 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])
3005 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
3006 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])
3007 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
3008 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])
3009 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
3010 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)]:
3011 vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
3012 l=vals.getNumberOfTuples()
3013 exps=DataArrayDouble(l) ; exps.iota(iot)
3014 self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
3018 att3.synchronizeCoarseToFineBetween(1,2)
3020 for pos in [(),(0,),(1,),(2,)]:
3021 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
3023 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])
3024 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
3025 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])
3026 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
3027 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])
3028 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
3029 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])
3030 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
3031 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])
3032 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
3033 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])
3034 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
3035 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])
3036 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
3039 att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
3040 for pos in [(),(0,),(1,),(2,)]:
3041 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
3043 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])
3044 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
3045 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]])
3046 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
3047 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])
3048 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
3049 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])
3050 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
3051 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])
3052 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
3053 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])
3054 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
3055 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])
3056 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
3059 att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
3060 for pos in [(),(0,),(1,),(2,)]:
3061 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
3063 att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
3064 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])
3065 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
3066 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])
3067 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
3068 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])
3069 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
3070 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])
3071 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
3072 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])
3073 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
3074 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])
3075 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
3076 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])
3077 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
3080 def testSwig2AMR11(self):
3081 """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
3082 coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
3083 fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
3084 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3085 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.])
3086 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.])
3087 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.])
3088 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.])
3089 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.])
3090 exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
3091 self.assertTrue(fine.isEqual(exp,1e-12))
3095 MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
3096 amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
3097 amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
3098 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3100 exp1=DataArrayDouble(990) ; exp1.iota(0.5)
3101 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])
3102 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.])
3104 self.assertTrue(coarse.isEqual(exp1,1e-12))
3106 MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
3107 exp2=DataArrayDouble(990) ; exp2.iota(0.5)
3109 self.assertTrue(coarse.isEqual(exp2,1e-12))
3111 coarse.iota(0.5) ; fine.iota(0.1)
3112 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3114 coarse.iota(0.5) ; fine.iota(0.1)
3115 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3116 exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
3117 self.assertTrue(fine[:240].isEqual(exp00,1e-12))
3118 exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
3119 self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
3120 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))
3123 def testSwig2AMR12(self):
3124 """ This test check the MEDCouplingAMRAttribute.projectTo method."""
3125 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3126 amr0.addPatch([(3,8),(0,3)],[2,2])
3127 amr0.addPatch([(3,8),(3,6)],[2,2])
3128 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3130 att0.getFieldOn(amr0,"YY").iota(0.01)
3131 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3132 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3133 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3134 amr1.addPatch([(2,5),(1,4)],[2,2])
3135 att1=att0.projectTo(amr1)
3136 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
3137 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))
3139 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3140 amr0.addPatch([(2,5),(2,7)],[2,2])
3141 amr0.addPatch([(5,8),(2,7)],[2,2])
3142 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3144 att0.getFieldOn(amr0,"YY").iota(0.01)
3145 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3146 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3147 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3148 amr1.addPatch([(3,6),(2,7)],[2,2])
3149 amr1.addPatch([(6,9),(2,7)],[2,2])
3150 att1=att0.projectTo(amr1)
3151 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
3152 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))
3153 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))
3156 def testSwig2AMR13(self):
3157 """ non regression test"""
3158 for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
3159 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3160 amr.addPatch([(1,3),(0,2)],fact)
3161 amr.addPatch([(1,3),(3,4)],fact)
3162 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3164 att.getFieldOn(amr,"YY").iota(0.1)
3165 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3166 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3167 att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
3168 exp=DataArrayDouble(64) ; exp.iota(0.1)
3169 self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
3170 exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
3171 self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
3172 exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
3173 self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
3177 def testSwig2AMR14(self):
3178 """ non regression linked to VTHB write."""
3179 fact=[2,2] ; fact2=[3,3]
3180 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3181 amr.addPatch([(1,3),(0,2)],fact)
3182 amr.addPatch([(1,3),(3,4)],fact)
3183 amr[0].addPatch([(1,3),(1,3)],fact2)
3184 amr[1].addPatch([(1,3),(1,2)],fact2)
3185 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3187 att.getFieldOn(amr,"YY").iota(0.1)
3188 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3189 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3190 att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
3191 att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
3192 self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
3193 self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
3194 self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
3195 self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
3198 def testSwig2Intersect2DMeshWith1DLine1(self):
3199 """A basic test with no colinearity between m1 and m2."""
3200 i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3201 m1=i.buildUnstructured()
3202 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])
3203 a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
3204 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])))
3205 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,31,1,31,28,1,28,29,1,29,30,1,30,27,1,27,26])))
3206 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])))
3207 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18])))
3208 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3209 self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
3210 self.assertTrue(a.getCoords()[25:25+2].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
3211 self.assertTrue(a.getCoords()[27:].isEqualWithoutConsideringStr(DataArrayDouble([(3.3214285714285716,2.),(1.6071428571428572,3.),(2.,2.7708333333333335),(3.,2.1875),(1.,3.354166666666667)]),1e-12))
3212 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])))
3213 self.assertTrue(d.isEqual(DataArrayInt([(10,10),(11,12),(13,14),(15,16),(17,18),(19,19)])))
3216 def testSwig2Intersect2DMeshWith1DLine2(self):
3217 """A basic test with colinearity between m1 and m2 and the last cell of m2 outside m1."""
3218 i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3219 m1=i.buildUnstructured()
3220 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()
3222 m2.insertNextCell(NORM_SEG2,[i,i+1])
3224 a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
3225 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])))
3226 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,51,59,64,70,75,83,88])))
3227 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])))
3228 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
3229 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3230 self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
3231 self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
3232 self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,12,13,14,15,4,5,6,7,8,9,10,11])))
3233 self.assertTrue(d.isEqual(DataArrayInt([(12,8),(13,9),(14,10),(14,10),(14,10),(14,10),(15,11),(-1,-1)])))
3236 def testSwig2Intersect2DMeshWith1DLine3(self):
3237 """m2 fully included in cell #12. of m1"""
3238 i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3239 m1=i.buildUnstructured()
3240 m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(0.75,3.25),(0.5,3.5),(0.25,3.25)])) ; m2.allocateCells()
3242 m2.insertNextCell(NORM_SEG2,[i,i+1])
3244 a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
3245 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])))
3246 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80])))
3247 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,25,26,1,26,27])))
3248 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
3249 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3250 self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
3251 self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
3252 self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,12])))
3253 self.assertTrue(d.isEqual(DataArrayInt([(15,15),(15,15)])))
3256 def testSwig2Intersect2DMeshWith1DLine4(self):
3257 """A special case where an edge is simultaneously a cut and colinear. This tests also checks negative values in descending edges of m1."""
3258 i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3259 m1=i.buildUnstructured()
3260 part=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15])
3262 m1_2=m1[part.buildComplement(m1.getNumberOfCells())]
3263 m1=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1_1,m1_2.buildSpreadZonesWithPoly())
3265 m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(3.5,2.),(0.5,2.)])) ; m2.allocateCells()
3266 m2.insertNextCell(NORM_SEG2,[0,1])
3267 a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
3268 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])))
3269 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,46,52,58,64,70,76])))
3270 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,24,12,1,12,11,1,11,25])))
3271 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9])))
3272 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3273 self.assertTrue(a.getCoords()[:24].isEqual(m1.getCoords(),1e-12))
3274 self.assertTrue(a.getCoords()[24:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
3275 self.assertTrue(c.isEqual(DataArrayInt([0,1,2,3,8,9,10,11,4,5,6,7,12,12])))
3276 self.assertTrue(d.isEqual(DataArrayInt([(9,11),(12,13),(8,10)])))
3279 def testSwig2Intersect2DMeshWith1DLine5(self):
3280 """A test focusing on a special case for cut."""
3281 i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3282 m1=i.buildUnstructured()
3283 m2=MEDCouplingUMesh("mesh",1) ; m2.setCoords(DataArrayDouble([(1.,0.),(3.,2.),(1.,4.)])) ; m2.allocateCells()
3285 m2.insertNextCell(NORM_SEG2,[i,i+1])
3287 a,b,c,d=MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1,m2,1e-12)
3288 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])))
3289 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])))
3290 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,1,7,1,7,13,1,13,17,1,17,21])))
3291 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12])))
3292 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3293 self.assertTrue(a.getCoords()[:25].isEqual(m1.getCoords(),1e-12))
3294 self.assertTrue(a.getCoords()[25:].isEqualWithoutConsideringStr(m2.getCoords(),1e-12))
3295 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])))
3296 self.assertTrue(d.isEqual(DataArrayInt([(12,13),(14,15),(16,17),(18,19)])))
3299 def testIntersect2DMeshWith1DLine6(self):
3300 """ Basic test for Intersect2DMeshWith1DLine: a vertical line intersecting a square. """
3301 m1c = MEDCouplingCMesh()
3302 coordX = DataArrayDouble([-1., 1., 2])
3303 m1c.setCoordsAt(0,coordX)
3304 coordY = DataArrayDouble([0., 2.])
3305 m1c.setCoordsAt(1,coordY);
3306 m1 = m1c.buildUnstructured()
3309 m2 = MEDCouplingUMesh("bla", 1)
3310 coord2 = DataArrayDouble([0.,-1.0, 0.,1., 0.,3., 0.5,2.2], 4, 2)
3311 conn2 = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,2,3])
3312 connI2 = DataArrayInt([0,3,7])
3313 m2.setCoords(coord2)
3314 m2.setConnectivity(conn2, connI2)
3316 # End of construction of input meshes m1bis and m2 -> start of specific part of the test
3317 a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
3318 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])))
3319 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,16,27])))
3320 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,6,10,1,10,7,2,7,11,12,2,11,8,13])))
3321 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,14])))
3322 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3323 self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
3324 self.assertTrue(a.getCoords()[6:10].isEqual(m2.getCoords(),1e-12))
3325 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))
3326 self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
3327 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(-1,-1)])))
3330 def testSwig2Intersect2DMeshWith1DLine7(self):
3331 """ Star pattern (a triangle intersecting another one upside down) """
3332 coords1 = DataArrayDouble([-2.,1., 2.,1., 0.,-2.], 3,2)
3333 coords2 = DataArrayDouble([0.,2., 2.,-1., -2.,-1., 0.,3.], 4,2)
3334 m1 = MEDCouplingUMesh("triangle", 2)
3335 m2 = MEDCouplingUMesh("tri_line", 1)
3336 m1.setCoords(coords1)
3337 m2.setCoords(coords2)
3338 m1.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2]), DataArrayInt([0,4]))
3339 m2.setConnectivity(DataArrayInt([NORM_SEG2,0,1,NORM_SEG2,1,2,NORM_SEG2,2,3]), DataArrayInt([0,3,6,9]))
3340 # End of construction of input meshes m1bis and m2 -> start of specific part of the test
3341 a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
3342 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])))
3343 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,19])))
3344 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])))
3345 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24,27])))
3346 self.assertTrue(a.getCoords()[:3].isEqual(m1.getCoords(),1e-12))
3347 self.assertTrue(a.getCoords()[3:7].isEqual(m2.getCoords(),1e-12))
3348 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))
3349 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3350 self.assertTrue(c.isEqual(DataArrayInt([0,0,0,0])))
3351 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,3),(-1,-1),(-1,-1),(1,3),(-1,-1),(-1,-1),(2,3),(-1,-1)])))
3354 def testSwig2Intersect2DMeshWith1DLine8(self):
3355 """ Line pieces ending (or fully located) in the middle of a cell """
3356 m1c = MEDCouplingCMesh()
3357 m1c.setCoordsAt(0,DataArrayDouble([-1., 1.]))
3358 m1c.setCoordsAt(1,DataArrayDouble([-1., 1.]));
3359 m1 = m1c.buildUnstructured()
3360 coords2 = DataArrayDouble([0.,0., 0.,1.5, -1.5,0., 0.5,0.0, 0.0,-0.5, 1.1,-0.6], 6,2)
3361 m2 = MEDCouplingUMesh("piecewise_line", 1)
3362 m2.setCoords(coords2)
3363 c = DataArrayInt([NORM_SEG2,2,1, NORM_SEG2,1,4, NORM_SEG2,4,3, NORM_SEG2,3,5])
3364 cI = DataArrayInt([0,3,6,9,12])
3365 m2.setConnectivity(c, cI)
3366 a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
3367 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])))
3368 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,10,19])))
3369 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])))
3370 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,9,12,15,18,21,24])))
3371 self.assertTrue(a.getCoords()[:4].isEqual(m1.getCoords(),1e-12))
3372 self.assertTrue(a.getCoords()[4:10].isEqual(m2.getCoords(),1e-12))
3373 self.assertTrue(a.getCoords()[10:].isEqual(DataArrayDouble([(-1.,0.5),(-0.5,1.),(0.,1.),(1.,-0.5)]),1e-12))
3374 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3375 self.assertTrue(c.isEqual(DataArrayInt([0,0,0])))
3376 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
3379 def testSwig2Intersect2DMeshWith1DLine9(self):
3380 """ Intersection with a line whose connectivity is not consecutive """
3381 m1c = MEDCouplingCMesh()
3382 coordX = DataArrayDouble([-1., 1., 2])
3383 m1c.setCoordsAt(0,coordX)
3384 coordY = DataArrayDouble([0., 2.])
3385 m1c.setCoordsAt(1,coordY);
3386 m1 = m1c.buildUnstructured()
3388 m2 = MEDCouplingUMesh("bla", 1)
3389 coord2 = DataArrayDouble([0.,1.5, 0.5,1., 0.0,0.5, 0.0,3.0, 0.0,-1.0], 5, 2)
3390 conn2 = DataArrayInt([NORM_SEG2,3,0,NORM_SEG3,0,2,1,NORM_SEG2,2,4])
3391 connI2 = DataArrayInt([0,3,7,10])
3392 m2.setCoords(coord2)
3393 m2.setConnectivity(conn2, connI2)
3394 # End of construction of input meshes m1bis and m2 -> start of specific part of the test
3395 a,b,c,d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m1, m2, 1e-10)
3396 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])))
3397 self.assertTrue(a.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,18,31])))
3398 self.assertTrue(b.getNodalConnectivity().isEqual(DataArrayInt([1,9,12,1,12,6,2,6,8,13,1,8,11,1,11,10])))
3399 self.assertTrue(b.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6,10,13,16])))
3400 self.assertTrue(a.getCoords()[:6].isEqual(m1.getCoords(),1e-12))
3401 self.assertTrue(a.getCoords()[6:11].isEqual(m2.getCoords(),1e-12))
3402 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))
3403 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3404 self.assertTrue(c.isEqual(DataArrayInt([1,0,0])))
3405 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(1,2),(1,2),(-1,-1)])))
3408 def testSwig2Intersect2DMeshWith1DLine10(self):
3409 """ Intersection between a circle and various lines """
3411 m_circ = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 2.0)
3412 coords = [0.0,3.0,0.0,-3.0]
3414 m_line = MEDCouplingUMesh("seg", 1)
3415 m_line.allocateCells(1)
3416 meshCoords = DataArrayDouble.New(coords, len(coords)/2, 2)
3417 m_line.setCoords(meshCoords)
3418 m_line.insertNextCell(NORM_SEG2, connec)
3419 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m_circ, m_line, eps)
3420 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3421 self.assertTrue(a.getCoords()[:m_circ.getNumberOfNodes()].isEqual(m_circ.getCoords(),1e-12))
3422 self.assertTrue(a.getCoords()[m_circ.getNumberOfNodes():m_circ.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3423 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))
3424 self.assertEqual([32,1,7,10,11,12,13,14,15,32,5,3,11,10,16,17,18,19],a.getNodalConnectivity().getValues())
3425 self.assertEqual([0,9,18], a.getNodalConnectivityIndex().getValues())
3426 self.assertEqual([1,8,11,1,11,10,1,10,9],b.getNodalConnectivity().getValues())
3427 self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
3428 self.assertTrue(a.getCoords()[:8].isEqual(m_circ.getCoords(),1e-12))
3429 self.assertTrue(a.getCoords()[8:10].isEqual(m_line.getCoords(),1e-12))
3430 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])
3431 self.assertTrue(a.getCoords().isEqualWithoutConsideringStr(coo_tgt,1.0e-12))
3432 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3433 self.assertEqual([0,0],c.getValues())
3434 self.assertEqual([-1,-1,0,1,-1,-1],d.getValues())
3436 def testSwig2Intersect2DMeshWith1DLine11(self):
3437 """ Quad line re-entering a square cell """
3439 m = MEDCouplingUMesh("box", 2)
3440 m.setCoords(DataArrayDouble([-1., -1., -1., 1., 1., 1., 1., -1.0],4,2))
3441 c, cI = [NORM_POLYGON, 0, 1, 2, 3], [0, 5]
3442 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3443 m.checkConsistencyLight()
3444 coords2 = [0., 1.3, -1.3, 0., -0.6, 0.6, 0., -1.3, -0.5, -0.5]
3445 connec2, cI2 = [NORM_SEG3, 0, 1, 2, NORM_SEG3, 1, 3, 4], [0,4,8]
3446 m_line = MEDCouplingUMesh("seg", 1)
3447 m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
3448 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3449 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3450 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3451 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3452 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3453 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))
3454 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())
3455 self.assertEqual([0,13,20,27],a.getNodalConnectivityIndex().getValues())
3456 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())
3457 self.assertEqual([0,4,8,12,16,20,24],b.getNodalConnectivityIndex().getValues())
3458 self.assertTrue(a.getCoords()[:4].isEqual(m.getCoords(),1e-12))
3459 self.assertTrue(a.getCoords()[4:9].isEqual(m_line.getCoords(),1e-12))
3460 self.assertTrue(DataArrayInt([0,0,0]).isEqual(c))
3461 self.assertTrue(DataArrayInt([(-1,-1),(0,2),(-1,-1),(-1,-1),(0,1),(-1,-1)]).isEqual(d))
3464 def testSwig2Intersect2DMeshWith1DLine12(self):
3465 """ Two squares one in the other intersected by an horizontal line """
3467 m = MEDCouplingUMesh("boxbox", 2)
3468 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))
3469 c = [NORM_POLYGON, 4, 5, 6, 7, NORM_POLYGON, 0, 1, 5, 4, NORM_POLYGON, 1, 2, 3, 0, 4, 7, 6, 5]
3471 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3472 m.checkConsistencyLight()
3473 coords2 = [-1., 0.25, 1., 0.25]
3474 connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
3475 m_line = MEDCouplingUMesh.New("seg", 1)
3476 m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
3477 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3478 m_line2 = m_line.deepCopy()
3480 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3481 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3482 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3483 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3484 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))
3485 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())
3486 self.assertEqual([0,5,9,14,20,27],a.getNodalConnectivityIndex().getValues())
3487 self.assertEqual([1,8,10,1,10,5,1,5,6,1,6,11,1,11,9],b.getNodalConnectivity().getValues())
3488 self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
3489 self.assertTrue(c.isEqual(DataArrayInt([0,1,1,2,2])))
3490 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
3493 def testSwig2Intersect2DMeshWith1DLine13(self):
3494 """ A square (side length) in a circle intersected by a simple horizontal line """
3497 m = MEDCouplingUMesh("boxcircle", 2)
3498 sq2 = math.sqrt(2.0)
3499 soth = (sq2+1.0)/2.0
3500 coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1.,
3501 1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
3502 coo = DataArrayDouble(coo); coo.rearrange(2)
3504 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]
3506 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3507 m.checkConsistencyLight()
3508 coords2 = [-2., 1., 2., 1.0]
3509 connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
3510 m_line = MEDCouplingUMesh("seg", 1)
3511 m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
3512 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3513 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3514 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3515 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3516 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3517 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))
3518 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())
3519 self.assertEqual([0,9,18,25,32,49],a.getNodalConnectivityIndex().getValues())
3520 self.assertEqual([1,18,21,1,21,9,1,9,10,1,10,20,1,20,19],b.getNodalConnectivity().getValues())
3521 self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
3522 self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
3523 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(3,4),(-1,-1)])))
3526 def testSwig2Intersect2DMeshWith1DLine14(self):
3527 """ A circle in a circle intersected by a simple horizontal line, not tangent to the circles """
3529 m = MEDCouplingUMesh("boxcircle", 2)
3530 coo = [2.,0.,1.4142135623730951,1.414213562373095,0.,2.,-1.414213562373095,1.4142135623730951,-2.,0.,-1.4142135623730954,-1.414213562373095,0.,-2.,
3531 1.4142135623730947,-1.4142135623730954,1.,0.,0.7071067811865476,0.7071067811865475,0.,1.,-0.7071067811865475,0.7071067811865476,-1.,0.,-0.7071067811865477,-0.7071067811865475,
3532 0.,-1.,0.7071067811865474,-0.7071067811865477,1.060660171779821,-1.0606601717798214,-1.0606601717798214,-1.0606601717798212]
3533 coo = DataArrayDouble(coo); coo.rearrange(2)
3535 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]
3537 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3538 m.checkConsistencyLight()
3539 coords2 = [-2., 0., 2., 0.]
3540 connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
3541 m_line = MEDCouplingUMesh.New("seg", 1)
3542 m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
3543 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3544 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3545 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3546 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3547 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3548 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))
3549 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())
3550 self.assertEqual([0,9,26,35,44,53,62],a.getNodalConnectivityIndex().getValues())
3551 self.assertEqual([1,18,20,1,20,21,1,21,19],b.getNodalConnectivity().getValues())
3552 self.assertEqual([0,3,6,9],b.getNodalConnectivityIndex().getValues())
3553 self.assertTrue(c.isEqual(DataArrayInt([1,2,2,2,0,0])))
3554 self.assertTrue(d.isEqual(DataArrayInt([(1,3),(4,5),(1,2)])))
3557 def testSwig2Intersect2DMeshWith1DLine15(self):
3558 """ Same as testSwig2Intersect2DMeshWith1DLine13 except that the line is colinear AND splits on of the common edge of 2D mesh."""
3561 m = MEDCouplingUMesh("boxcircle", 2)
3562 sq2 = math.sqrt(2.0)
3563 soth = (sq2+1.0)/2.0
3564 coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1.,
3565 1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
3566 coo = DataArrayDouble(coo); coo.rearrange(2)
3568 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]
3570 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3571 m.checkConsistencyLight()
3572 coords2 = [(-2., 1.),(2.,1.),(0.,1)]
3573 connec2, cI2 = [NORM_SEG2, 0, 2, NORM_SEG2, 2, 1], [0,3,6]
3574 m_line = MEDCouplingUMesh("seg", 1)
3575 m_line.setCoords(DataArrayDouble(coords2))
3576 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3577 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3578 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3579 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3580 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3581 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))
3582 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())
3583 self.assertEqual([0,11,22,29,36,53],a.getNodalConnectivityIndex().getValues())
3584 self.assertEqual([1,18,22,1,22,9,1,9,20,1,20,10,1,10,21,1,21,19],b.getNodalConnectivity().getValues())
3585 self.assertEqual([0,3,6,9,12,15,18],b.getNodalConnectivityIndex().getValues())
3586 self.assertTrue(c.isEqual(DataArrayInt([0,1,2,2,2])))
3587 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(2,4),(1,0),(1,0),(3,4),(-1,-1)])))
3590 def testSwig2Intersect2DMeshWith1DLine16(self):
3591 """ Same than testSwig2Intersect2DMeshWith1DLine13 except it is a vertical line. Non regression test."""
3594 m = MEDCouplingUMesh("boxcircle", 2)
3595 sq2 = math.sqrt(2.0)
3596 soth = (sq2+1.0)/2.0
3597 coo = [2., 0., sq2, sq2, 0., 2., -sq2, sq2, -2., 0., -sq2, -sq2, 0., -2., sq2, -sq2, -1., -1., -1., 1., 1.,
3598 1., 1., -1., -1., 0., 0., 1., 1., 0., 0., -1., -soth, soth, soth,soth]
3599 coo = DataArrayDouble(coo); coo.rearrange(2)
3601 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]
3603 m.setConnectivity(DataArrayInt(c), DataArrayInt(cI))
3604 m.checkConsistencyLight()
3605 coords2 = [1., 2., 1., -2.]
3606 connec2, cI2 = [NORM_SEG2, 0, 1], [0,3]
3607 m_line = MEDCouplingUMesh("seg", 1)
3608 m_line.setCoords(DataArrayDouble(coords2, len(coords2)/2, 2))
3609 m_line.setConnectivity(DataArrayInt(connec2), DataArrayInt(cI2))
3610 a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(m, m_line, eps)
3611 self.assertTrue(a.getCoords().getHiddenCppPointer()==b.getCoords().getHiddenCppPointer())
3612 self.assertTrue(a.getCoords()[:m.getNumberOfNodes()].isEqual(m.getCoords(),1e-12))
3613 self.assertTrue(a.getCoords()[m.getNumberOfNodes():m.getNumberOfNodes()+m_line.getNumberOfNodes()].isEqual(m_line.getCoords(),1e-12))
3614 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))
3615 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())
3616 self.assertEqual([0,9,16,25,36,49],a.getNodalConnectivityIndex().getValues())
3617 self.assertEqual([1,18,20,1,20,10,1,10,11,1,11,21,1,21,19],b.getNodalConnectivity().getValues())
3618 self.assertEqual([0,3,6,9,12,15],b.getNodalConnectivityIndex().getValues())
3619 self.assertTrue(c.isEqual(DataArrayInt([0,1,1,2,2])))
3620 self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
3623 def testOrderConsecutiveCells1D1(self):
3624 """A line in several unconnected pieces:"""
3625 m2 = MEDCouplingUMesh.New("bla", 1)
3626 c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
3627 NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
3628 NORM_SEG2,11,12,NORM_SEG2,12,13,
3630 cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
3631 coords2 = DataArrayDouble([float(i) for i in range(32)], 16,2)
3632 m2.setCoords(coords2);
3633 m2.setConnectivity(c, cI);
3634 m2.checkConsistency(1.0e-8);
3637 m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
3638 res = m2.orderConsecutiveCells1D()
3639 expRes = [0,3,6,8,1,4,2,7,5]
3640 self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
3641 self.assertEqual(expRes, res.getValues())
3643 # A closed line (should also work)
3644 m3 = MEDCouplingUMesh.New("bla3", 1)
3645 conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
3646 coord3 = coords2[0:5]
3650 m3.setCoords(coord3)
3651 m3.setConnectivity(conn3A, cI)
3652 m3.checkConsistency(1.0e-8)
3653 res2 = m3.orderConsecutiveCells1D()
3655 self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
3656 self.assertEqual(expRes2, res2.getValues())
3659 def testDADApplyFuncOnThis1(self):
3660 d=DataArrayDouble(5) ; d.iota(0.)
3661 d.applyFuncOnThis("2*x+1")
3662 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
3663 d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
3664 d.applyFuncOnThis("2*x+1")
3665 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
3666 d.applyFuncOnThis("1+2*3")
3667 self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
3670 def testSwig2PointSetComputeFetchedNodeIds1(self):
3671 arr=DataArrayDouble(6) ; arr.iota()
3672 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3673 m=m.buildUnstructured()
3674 m0=m[[0,1,5,6,25,26,30,31,124]]
3675 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])
3676 self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
3677 self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3678 self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
3679 m0.convertAllToPoly()
3680 self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
3681 self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3684 def testSwig2PartDefinition1(self):
3685 pd=PartDefinition.New(5,22,3)
3686 self.assertTrue(isinstance(pd,SlicePartDefinition))
3687 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3688 self.assertEqual(pd.getNumberOfElems(),6)
3689 self.assertEqual(pd.getEffectiveStop(),23)
3690 pd=PartDefinition.New(5,23,3)
3691 self.assertTrue(isinstance(pd,SlicePartDefinition))
3692 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3693 self.assertEqual(pd.getNumberOfElems(),6)
3694 self.assertEqual(pd.getEffectiveStop(),23)
3695 self.assertEqual(pd.getSlice(),slice(5,23,3))
3696 pd=PartDefinition.New(5,22,1)
3697 self.assertTrue(isinstance(pd,SlicePartDefinition))
3698 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3699 self.assertEqual(pd.getNumberOfElems(),17)
3700 self.assertEqual(pd.getEffectiveStop(),22)
3701 pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
3702 self.assertTrue(isinstance(pd,SlicePartDefinition))
3703 self.assertEqual(pd.getNumberOfElems(),8)
3704 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
3705 self.assertEqual(pd.getEffectiveStop(),29)
3706 pd=SlicePartDefinition(5,22,1)
3707 self.assertTrue(isinstance(pd,SlicePartDefinition))
3708 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3709 self.assertEqual(pd.getNumberOfElems(),17)
3710 self.assertEqual(pd.getEffectiveStop(),22)
3711 d=DataArrayInt([2,4,5,6,10])
3712 pd=PartDefinition.New(d)
3713 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3714 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3715 pd=DataArrayPartDefinition(d)
3716 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3717 pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
3718 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3719 self.assertEqual(pd.getNumberOfElems(),8)
3720 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
3723 def testSwig2SortEachPairToMakeALinkedList1(self):
3724 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)])
3725 d.sortEachPairToMakeALinkedList()
3726 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)])))
3727 d=DataArrayInt([(0,2),(1,2),(1,3)])
3728 d.sortEachPairToMakeALinkedList()
3729 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3730 d=DataArrayInt([(0,2),(1,2),(3,1)])
3731 d.sortEachPairToMakeALinkedList()
3732 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3733 d=DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])
3734 d.sortEachPairToMakeALinkedList()
3735 self.assertTrue(d.isEqual(DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])))
3738 def testSwig2DAIIsRange(self):
3739 d=DataArrayInt([2,6,10])
3742 self.assertEqual(b,slice(2,11,4))
3743 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3745 d=DataArrayInt([2,7,10])
3747 self.assertTrue(not a)
3748 self.assertTrue(b is None)
3750 d=DataArrayInt([22,17,12])
3753 self.assertEqual(b,slice(22,11,-5))
3754 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3756 d=DataArrayInt([22,16,12])
3758 self.assertTrue(not a)
3759 self.assertTrue(b is None)
3761 d=DataArrayInt([33])
3764 self.assertEqual(b,slice(33,34,1))
3765 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3770 self.assertEqual(b,slice(0,0,1))
3771 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3773 d=DataArrayInt([2,6,10,2])
3775 self.assertTrue(not a)
3776 self.assertTrue(b is None)
3779 def testSwig2PartDefinitionComposeWith1(self):
3780 f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
3781 g=PartDefinition.New(4,14,1)
3783 self.assertTrue(g2.isEqual(g)[0])
3785 self.assertTrue(isinstance(h,DataArrayPartDefinition))
3786 self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3787 f2=f.tryToSimplify()
3788 g2=g.tryToSimplify()
3789 self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
3790 self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
3791 p=PartDefinition.New(DataArrayInt([2,6,10]))
3792 p2=p.tryToSimplify()
3793 self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
3794 self.assertTrue(isinstance(p2,SlicePartDefinition))
3795 self.assertEqual(p2.getSlice(),slice(2,11,4))
3796 self.assertTrue(p2.isEqual(SlicePartDefinition(2,11,4))[0])
3797 self.assertTrue(p2.isEqual(p2.deepCopy())[0])
3798 self.assertTrue(not p2.isEqual(SlicePartDefinition(1,11,4))[0])
3799 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,10,4))[0])
3800 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,11,3))[0])
3803 def testSwig2DAIGetIdsStrictlyNegative1(self):
3804 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3805 self.assertTrue(d.findIdsStricltyNegative().isEqual(DataArrayInt([1,2,6])))
3808 def testSwig2DAIReplaceOneValByInThis1(self):
3809 d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
3810 d.changeValue(-5,900)
3811 self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
3814 def testSwig2DAIGetMinMaxValues1(self):
3815 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3816 a,b=d.getMinMaxValues()
3817 self.assertEqual(a,-7)
3818 self.assertEqual(b,99)
3821 def testSwig2DAIBuildUniqueNotSorted1(self):
3822 d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
3823 self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
3826 def testSwig2UMeshChangeOrientationOfCells1(self):
3827 """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
3828 m=MEDCouplingUMesh("mesh",1)
3829 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])
3830 cI=DataArrayInt([0,3,6,10,14,17,22,27])
3831 m.setConnectivity(c,cI)
3832 m.changeOrientationOfCells()
3833 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])))
3834 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3836 m=MEDCouplingUMesh("mesh",2)
3837 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])
3838 cI=DataArrayInt([0,4,9,15,22,31,42])
3839 m.setConnectivity(c,cI)
3840 m.changeOrientationOfCells()
3841 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])))
3842 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3845 def testSwig2StructuredMeshCellLocation1(self):
3847 arrX=DataArrayDouble(5) ; arrX.iota()
3848 arrY=DataArrayDouble(4) ; arrY.iota()
3849 arrZ=DataArrayDouble(3) ; arrZ.iota()
3850 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3852 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)]
3853 self.assertEqual(24,m.getNumberOfCells())
3854 for i in xrange(m.getNumberOfCells()):
3855 li.append(m.getLocationFromCellId(i))
3857 self.assertEqual(liExp3D,li)
3858 self.assertRaises(InterpKernelException,m.getLocationFromCellId,24)
3859 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3861 arrX=DataArrayDouble(5) ; arrX.iota()
3862 arrY=DataArrayDouble(4) ; arrY.iota()
3863 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3865 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)]
3866 self.assertEqual(12,m.getNumberOfCells())
3867 for i in xrange(m.getNumberOfCells()):
3868 li.append(m.getLocationFromCellId(i))
3870 self.assertEqual(liExp2D,li)
3871 self.assertRaises(InterpKernelException,m.getLocationFromCellId,12)
3872 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3874 arrX=DataArrayDouble(5) ; arrX.iota()
3875 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3876 self.assertEqual(4,m.getNumberOfCells())
3877 for i in xrange(m.getNumberOfCells()):
3878 self.assertEqual((i,),m.getLocationFromCellId(i))
3880 self.assertRaises(InterpKernelException,m.getLocationFromCellId,4)
3881 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3884 def testSwig2StructuredMeshNodeLocation1(self):
3886 arrX=DataArrayDouble(5) ; arrX.iota()
3887 arrY=DataArrayDouble(4) ; arrY.iota()
3888 arrZ=DataArrayDouble(3) ; arrZ.iota()
3889 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3891 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)]
3892 self.assertEqual(60,m.getNumberOfNodes())
3893 for i in xrange(m.getNumberOfNodes()):
3894 li.append(m.getLocationFromNodeId(i))
3896 self.assertEqual(liExp3D,li)
3897 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,60)
3898 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3900 arrX=DataArrayDouble(5) ; arrX.iota()
3901 arrY=DataArrayDouble(4) ; arrY.iota()
3902 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3904 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)]
3905 self.assertEqual(20,m.getNumberOfNodes())
3906 for i in xrange(m.getNumberOfNodes()):
3907 li.append(m.getLocationFromNodeId(i))
3909 self.assertEqual(liExp2D,li)
3910 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,20)
3911 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3913 arrX=DataArrayDouble(5) ; arrX.iota()
3914 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3915 self.assertEqual(5,m.getNumberOfNodes())
3916 for i in xrange(m.getNumberOfNodes()):
3917 self.assertEqual((i,),m.getLocationFromNodeId(i))
3919 self.assertRaises(InterpKernelException,m.getLocationFromCellId,5)
3920 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3923 def testSwig2DataArrayPrintNotTooLong1(self):
3924 """ Now that DataArrayDouble and DataArrayInt and pickelized they can appear in YACS ports. Avoid to have too heavy string representation of them."""
3925 d=DataArrayDouble(2000) ; d.iota() ; d.rearrange(2)
3926 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3927 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3928 self.assertEqual(st1,st2)
3930 d=DataArrayDouble(2002) ; d.iota() ; d.rearrange(2)
3931 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3932 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3933 self.assertEqual(st1,st2)
3934 self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
3935 ## Now for DataArrayInt
3936 d=DataArrayInt(2000) ; d.iota() ; d.rearrange(2)
3937 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3938 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3939 self.assertEqual(st1,st2)
3941 d=DataArrayInt(2002) ; d.iota() ; d.rearrange(2)
3942 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3943 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3944 self.assertEqual(st1,st2)
3945 self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
3948 def testExtrudedMeshWithoutZipCoords1(self):
3949 """This test checks that MEDCouplingUMesh.buildExtrudedMesh do not perform a zipCoords."""
3950 arr=DataArrayDouble([(0.,0.),(1.,0.),(2.,0.),(3.,0.)])
3951 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(arr)
3953 m.insertNextCell(NORM_SEG2,[1,2])
3954 arr1D=DataArrayDouble([(0.,0.),(0.,1.5),(0.,2.)])
3955 m1D=MEDCouplingUMesh("mesh1D",1) ; m1D.setCoords(arr1D)
3957 m1D.insertNextCell(NORM_SEG2,[0,1])
3958 m1D.insertNextCell(NORM_SEG2,[1,2])
3959 m2D=m.buildExtrudedMesh(m1D,0)
3960 self.assertEqual(m.getCoords().getHiddenCppPointer(),m2D.getCoords().getHiddenCppPointer())
3961 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)])
3962 self.assertTrue(m.getCoords().isEqual(coo,1e-12))
3963 self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([4,1,2,6,5,4,5,6,10,9])))
3964 self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10])))
3967 def testPointSetAreAllNodesFetched1(self):
3968 m=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
3969 m.setCoords(arr,arr)
3970 m=m.buildUnstructured()
3971 self.assertTrue(m.areAllNodesFetched())
3973 self.assertTrue(not m2.areAllNodesFetched())
3975 self.assertTrue(m2.areAllNodesFetched())
3978 def testMEDCouplingPointSetComputeDiameterField1(self):
3979 arrX=DataArrayDouble([0.,1.1,1.7,2.1])
3980 arrY=DataArrayDouble([0.,0.7,0.8,1.9])
3981 arrZ=DataArrayDouble([0.,1.3,2.1,2.4])
3982 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
3983 f=m.computeDiameterField()
3984 f.checkConsistencyLight()
3985 exp=DataArrayDouble([1.8411952639521971,1.5937377450509227,1.5297058540778357,1.705872210923198,1.4352700094407325,1.3638181696985856,2.0273134932713295,1.8055470085267789,1.7492855684535902,1.5297058540778357,1.2206555615733703,1.1357816691600546,1.3638181696985856,1.004987562112089,0.9,1.7492855684535902,1.4866068747318506,1.4177446878757824,1.3379088160259651,0.9695359714832656,0.8602325267042626,1.1445523142259597,0.6782329983125266,0.5099019513592785,1.5842979517754858,1.2884098726725124,1.208304597359457])
3986 self.assertTrue(exp.isEqual(f.getArray(),1e-12))
3989 m2.simplexize(PLANAR_FACE_5)
3990 m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
3991 f=m3.computeDiameterField()
3992 f.checkConsistencyLight()
3993 exp2=DataArrayDouble([1.8411952639521971,1.5297058540778357,1.4352700094407325,2.0273134932713295,1.7492855684535902,1.2206555615733703,1.3638181696985856,0.9,1.4866068747318506,1.3379088160259651,0.8602325267042626,0.6782329983125266,1.5842979517754858,1.208304597359457,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.7029386365926402,1.7029386365926402,1.7029386365926402,1.7029386365926402,1.7029386365926402,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.70293863659264,1.70293863659264,1.70293863659264,1.70293863659264,1.70293863659264,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.0,1.0,1.0,1.0,1.0,1.5556349186104046,1.5556349186104046,1.5556349186104046,1.5556349186104046,1.5556349186104046,1.3601470508735443,1.3601470508735443,1.3601470508735443,1.3601470508735443,1.3601470508735443,0.9219544457292886,0.9219544457292886,0.9219544457292886,0.9219544457292886,0.9219544457292886,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,0.5,0.5,0.5,0.5,0.5,1.2529964086141667,1.2529964086141667,1.2529964086141667,1.2529964086141667,1.2529964086141667])
3994 self.assertTrue(exp2.isEqual(f.getArray(),1e-12))
3995 # TRI3 - spacedim = 2
3996 coo=DataArrayDouble([(1,1),(5,1.9),(2.1,3)])
3997 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3998 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3999 m.setNodalConnectivity(DataArrayInt(c))
4000 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
4001 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4002 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
4003 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4004 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
4005 # TRI3 - spacedim = 3
4006 coo=DataArrayDouble([(1.3198537928820775,1.0991902391274959,-0.028645697595823361),(5.2486835106806335,2.2234012799688281,0.30368935050077939),(2.2973688139447361,3.1572023778066649,0.10937756365410012)])
4007 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
4008 for c in [[0,1,2],[0,2,1],[2,1,0]]:
4009 m.setNodalConnectivity(DataArrayInt(c))
4010 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
4011 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4012 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
4013 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4014 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
4015 # QUAD4 - spacedim = 2
4016 coo=DataArrayDouble([(0,2),(2,0),(6,4),(4,9)])
4017 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
4019 for delta in xrange(4):
4020 c=[(elt+delta)%4 for elt in xrange(4)]
4021 m.setNodalConnectivity(DataArrayInt(c))
4022 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
4023 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4024 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
4025 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4026 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
4028 m.setNodalConnectivity(DataArrayInt(c))
4029 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
4030 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4031 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
4032 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4033 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
4034 # QUAD4 - spacedim = 3
4035 coo=DataArrayDouble([(0.26570992384234871,2.0405889913271817,-0.079134238105786903),(2.3739976619218064,0.15779148692781009,0.021842842914139737),(6.1207841448393197,4.3755532938679655,0.43666375769970678),(3.8363255342943359,9.2521096041694229,0.41551170895942313)])
4036 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
4037 for delta in xrange(4):
4038 c=[(elt+delta)%4 for elt in xrange(4)]
4039 m.setNodalConnectivity(DataArrayInt(c))
4040 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
4041 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4042 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
4043 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4044 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
4046 m.setNodalConnectivity(DataArrayInt(c))
4047 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
4048 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4049 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
4050 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
4051 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
4053 # noise of coo=DataArrayDouble([(0,0,0),(1,0,0),(0,1,0),(0,0,2),(1,0,2),(0,1,2)]) + rotation([0.7,-1.2,0.6],[-4,-1,10],0.3)
4054 coo=DataArrayDouble([(-0.28594726851554486,-0.23715005500928255,-0.10268080010083136),(0.6167364988633947,-0.008923258436324799,-0.08574087516687756),(-0.6132873463333834,0.6943403970881654,-0.2806118260037991),(-0.40705974936532896,-0.05868487929989308,1.7724055544436323),(0.5505955507861958,0.19145393798144705,1.8788156352163994),(-0.6092686217773406,0.812502961290914,1.685712743757831)])
4055 m=MEDCoupling1SGTUMesh("mesh",NORM_PENTA6) ; m.setCoords(coo)
4056 exp4=2.5041256256889888
4057 self.assertAlmostEqual(exp4,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
4058 for delta in xrange(3):
4059 c=[(elt+delta)%3 for elt in xrange(3)]
4060 c+=[elt+3 for elt in c]
4061 m.setNodalConnectivity(DataArrayInt(c))
4062 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
4063 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4064 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
4066 m.setNodalConnectivity(DataArrayInt(c))
4067 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
4068 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4069 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
4071 # noise of coo=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)]) + rotation([0.7,-1.2,0.6],[-4,-1,10],0.3)
4072 coo=DataArrayDouble([(-0.21266406388867243,-0.3049569460042527,-0.11012394815006032),(0.7641037943272584,-0.06990814759929553,-0.0909613877456491),(0.47406560768559974,0.8681310650341907,-0.2577311403703061),(-0.5136830410871793,0.644390554940524,-0.21319015989794698),(-0.4080167737381202,-0.12853761670628505,1.7869166291979348),(0.5650318811550441,0.20476257733110748,1.8140158890821603),(0.3230844436386215,1.1660778242678538,1.7175073141333406),(-0.6656588358432984,0.918357550969698,1.7566470691880265)])
4073 m=MEDCoupling1SGTUMesh("mesh",NORM_HEXA8) ; m.setCoords(coo)
4074 exp5=2.5366409441884215
4075 self.assertAlmostEqual(exp5,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
4076 for delta in xrange(4):
4077 c=[(elt+delta)%4 for elt in xrange(4)]
4078 c+=[elt+4 for elt in c]
4079 m.setNodalConnectivity(DataArrayInt(c))
4080 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
4081 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4082 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
4084 m.setNodalConnectivity(DataArrayInt(c))
4085 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
4086 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4087 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
4088 # PYRA5 (1) 5th node is further
4089 # noise of coo=DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(0.5,0.5,2)]) + rotation([0.7,-1.2,0.6],[-4,-1,10],0.3)
4090 coo=DataArrayDouble([(-0.31638393672228626,-0.3157865246451914,-0.12555467233075002),(0.7281379795666488,0.03836511217237115,-0.08431662762197323),(0.4757967840735147,0.8798897996143908,-0.2680890320119049),(-0.5386339871809047,0.5933159894201252,-0.2975311238319419),(0.012042592988768974,0.534282135495012,1.7859521682027926)])
4091 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
4092 exp6=2.1558368027391386
4093 self.assertAlmostEqual(exp6,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
4094 for delta in xrange(4):
4095 c=[(elt+delta)%4 for elt in xrange(4)]
4097 m.setNodalConnectivity(DataArrayInt(c))
4098 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp6,12)
4099 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4100 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp6,12)
4102 # PYRA5 (2) 5th node is closer
4103 # noise of coo=DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(0.5,0.5,0.1)]) + rotation([0.7,-1.2,0.6],[-4,-1,10],0.3)
4104 coo=DataArrayDouble([(-0.31638393672228626,-0.3157865246451914,-0.12555467233075002),(0.7281379795666488,0.03836511217237115,-0.08431662762197323),(0.4757967840735147,0.8798897996143908,-0.2680890320119049),(-0.5386339871809047,0.5933159894201252,-0.2975311238319419),(0.092964408350795,0.33389670321297005,-0.10171764888060142)])
4105 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
4106 exp7=1.4413563787228953
4107 self.assertAlmostEqual(exp7,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
4108 for delta in xrange(4):
4109 c=[(elt+delta)%4 for elt in xrange(4)]
4111 m.setNodalConnectivity(DataArrayInt(c))
4112 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp7,12)
4113 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4114 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp7,12)
4117 # noise of coo=DataArrayDouble([(0,0,0),(1,0,0),(0,1,0),(1,1,1)]) + rotation([0.7,-1.2,0.6],[-4,-1,10],0.3)
4118 coo=DataArrayDouble([(-0.2256894071281369,-0.27631691290428106,-0.20266086543995965),(0.655458695100186,-0.08173323565551605,-0.19254662462061933),(-0.49893490718947264,0.5848097154568599,-0.3039928255382145),(0.2988102920828487,1.0582266398878504,0.7347375047372364)])
4119 m=MEDCoupling1SGTUMesh("mesh",NORM_TETRA4) ; m.setCoords(coo)
4120 exp8=1.7131322579364157
4121 self.assertAlmostEqual(exp8,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
4122 for c in [[0,1,2,3],[0,3,2,1],[0,1,3,2],[0,2,3,1],[0,3,1,2],[0,2,1,3]]:
4124 m.setNodalConnectivity(DataArrayInt([(elt+i)%4 for elt in c]))
4125 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp8,12)
4126 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
4127 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp8,12)
4132 def testMEDCouplingSkyLineArray(self):
4133 index = DataArrayInt([ 0, 3, 5, 6, 6 ])
4134 value = DataArrayInt([ 1, 2, 3, 2, 3, 3 ])
4136 sla0 = MEDCouplingSkyLineArray()
4137 self.assertEqual( -1, sla0.getNumberOf() )
4138 self.assertEqual( 0, sla0.getLength() )
4139 sla0.set( index, value )
4140 self.assertTrue( index.isEqual( sla0.getIndexArray() ))
4141 self.assertTrue( value.isEqual( sla0.getValueArray() ))
4142 self.assertEqual( 4, sla0.getNumberOf() )
4143 self.assertEqual( 6, sla0.getLength() )
4145 sla1 = MEDCouplingSkyLineArray( index, value )
4146 self.assertTrue( index.isEqual( sla1.getIndexArray() ))
4147 self.assertTrue( value.isEqual( sla1.getValueArray() ))
4148 self.assertEqual( 4, sla1.getNumberOf() )
4149 self.assertEqual( 6, sla1.getLength() )
4151 sla2 = MEDCouplingSkyLineArray( sla1 )
4152 self.assertTrue( index.isEqual( sla2.getIndexArray() ))
4153 self.assertTrue( value.isEqual( sla2.getValueArray() ))
4154 self.assertEqual( 4, sla2.getNumberOf() )
4155 self.assertEqual( 6, sla2.getLength() )
4157 indexVec = ivec(); indexVec.reserve( len( index ))
4158 for i in index: indexVec.push_back( i[0] )
4159 valueVec = ivec(); valueVec.reserve( len( value ))
4160 for i in value: valueVec.push_back( i[0] )
4161 sla3 = MEDCouplingSkyLineArray( indexVec, valueVec )
4162 self.assertTrue( index.isEqual( sla3.getIndexArray() ))
4163 self.assertTrue( value.isEqual( sla3.getValueArray() ))
4164 self.assertEqual( 4, sla3.getNumberOf() )
4165 self.assertEqual( 6, sla3.getLength() )
4169 def testMEDCouplingUMeshgenerateGraph(self):
4170 # cartesian mesh 3x3
4171 arr=DataArrayDouble(4) ; arr.iota()
4172 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
4173 m=c.buildUnstructured()
4174 graph = m.generateGraph()
4187 self.assertEqual(valRef,list(graph.getValueArray().getValues()));
4189 indRef=[0, 3, 7, 10, 14, 19, 23, 26, 30, 33]
4190 self.assertEqual(indRef,list(graph.getIndexArray().getValues()));
4193 def testSwig2MEDCouplingCurveLinearReprQuick1(self):
4194 """Non regression test. Error in m.__str__ when m is a MEDCouplingCurveLinear with spaceDim != meshDim."""
4195 arr=DataArrayDouble(12) ; arr.iota() ; arr.rearrange(2)
4196 m=MEDCouplingCurveLinearMesh()
4198 m.setNodeGridStructure([3,2])
4199 m.checkConsistencyLight()
4200 self.assertEqual(m.getMeshDimension(),2)
4201 self.assertEqual(m.getSpaceDimension(),2)
4202 self.assertTrue(not "mismatch" in m.__str__())
4203 self.assertTrue(not "mismatch" in m.__repr__())
4205 arr=DataArrayDouble(18) ; arr.iota() ; arr.rearrange(3)
4207 self.assertEqual(m.getMeshDimension(),2)
4208 self.assertEqual(m.getSpaceDimension(),3)
4209 self.assertTrue(not "mismatch" in m.__str__())
4210 self.assertTrue(not "mismatch" in m.__repr__())# bug was here !
4213 def testSwig2BugComputeOffsets1(self):
4214 """Non regression test. computeOffsetsFull on empty array must return 0."""
4216 d.computeOffsetsFull()
4217 self.assertTrue(d.isEqual(DataArrayInt([0,3])))
4220 self.assertTrue(d.isEqual(DataArrayInt([])))
4222 d.computeOffsetsFull()
4223 self.assertTrue(d.isEqual(DataArrayInt([0]))) # <- bug was here
4226 def testSwig2Cartesianize1(self):
4227 """Test of engine of cartesianize mechanism in medcoupling"""
4229 arr=DataArrayDouble([(3,0.2),(2,1.6)]) ; arr.setInfoOnComponents(["A","BB"])
4230 arr2=arr.cartesianize(AX_CYL)
4231 arr2_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836),(-0.05839904460257763,1.9991472060830102)]) ; arr2_exp.setInfoOnComponents(["A","BB"])
4232 self.assertTrue(arr2_exp.isEqual(arr2,1e-14))
4234 arr3=arr.cartesianize(AX_SPHER)
4235 self.assertTrue(arr2_exp.isEqual(arr3,1e-14))
4237 arr=DataArrayDouble([(3,0.2,7.1),(2,1.6,12.3)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
4238 arr4=arr.cartesianize(AX_CYL)
4239 arr4_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836,7.1),(-0.05839904460257763,1.9991472060830102,12.3)]) ; arr4_exp.setInfoOnComponents(["A","BB","CCC"])
4240 self.assertTrue(arr4_exp.isEqual(arr4,1e-14))
4242 arr=DataArrayDouble([(3,0.2,0.5),(2,1.3,5.8)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
4243 arr5=arr.cartesianize(AX_SPHER)
4244 arr5_exp=DataArrayDouble([(0.5230462208645272,0.2857414527616764,2.940199733523725),(1.706499157790973,-0.8953424658735863,0.5349976572491747)]) ; arr5_exp.setInfoOnComponents(["A","BB","CCC"])
4245 self.assertTrue(arr5_exp.isEqual(arr5,1e-14))
4247 m=MEDCouplingCMesh() ; m.setName("aa") ; m.setDescription("bbb") ; m.setTime(4.125,5,6) ; m.setTimeUnit("ms")
4248 arrX=DataArrayDouble([0,1,2]) ; arrX.setInfoOnComponent(0,"ccc")
4249 arrY=DataArrayDouble([3,4,5,6]) ; arrY.setInfoOnComponent(0,"dddd")
4250 m.setCoords(arrX,arrY)
4251 m2=m.buildCurveLinear()
4253 self.assertTrue(isinstance(m2,MEDCouplingCurveLinearMesh))
4254 self.assertEqual(m2.getName(),"aa")
4255 self.assertEqual(m2.getDescription(),"bbb")
4256 self.assertEqual(m2.getTime(),[4.125,5,6])
4257 self.assertEqual(m2.getTimeUnit(),"ms")
4258 m2c_exp=DataArrayDouble([(0.,3.),(1.,3.),(2.,3.),(0.,4.),(1.,4.),(2.,4.),(0.,5.),(1.,5.),(2.,5.),(0.,6.),(1.,6.),(2.,6.)]) ; m2c_exp.setInfoOnComponents(["ccc","dddd"])
4259 self.assertTrue(m2.getCoords().isEqual(m2c_exp,1e-14))
4260 self.assertEqual(m2.getNodeGridStructure(),(3,4))
4263 def testRemoveIdsFromIndexedArrays1(self):
4264 arr=DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,504,505,601,602])
4265 arrI=DataArrayInt([0,3,7,8,8,13,15])
4266 # case where all elts in inputs are in
4267 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
4268 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([501,502],arr2,arrI2))
4269 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,503,504,505,601,602])))
4270 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,11,13])))
4271 # case where part of elts in inputs are in
4272 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
4273 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([504,507],arr2,arrI2))
4274 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,505,601,602])))
4275 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,12,14])))
4276 # case where no elts in inputs are in
4277 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
4278 self.assertTrue(not MEDCouplingUMesh.RemoveIdsFromIndexedArrays([1,5,701],arr2,arrI2))
4279 self.assertTrue(arr2.isEqual(arr))
4280 self.assertTrue(arrI2.isEqual(arrI))
4283 def testFieldIntIsOnStage1(self):
4284 """ My first test with field int."""
4285 m=MEDCouplingCMesh()
4287 arrX=DataArrayDouble([0,1,2,3])
4288 m.setCoords(arrX,arrX)
4289 f=MEDCouplingFieldInt(ON_CELLS)
4291 arr=DataArrayInt(8) ; arr.iota() ;f.setArray(arr)
4292 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
4293 arr=DataArrayInt(9) ; arr.iota() ;f.setArray(arr)
4294 f.checkConsistencyLight()
4296 self.assertEqual(f.getTimeUnit(),"ms")
4299 self.assertEqual(b,5)
4300 self.assertEqual(c,6)
4301 self.assertEqual(a,3.2,12)
4304 def testNoThrowOn1DGTU2UOnNullCells(self):
4305 """ Non regression test : no throw when trying to convert 1DGTUMesh to UMesh on an empty mesh"""
4306 m=MEDCoupling1DGTUMesh("",NORM_POLYGON) ; m.setCoords(DataArrayDouble([],0,3))
4307 m.setNodalConnectivity(DataArrayInt([]),DataArrayInt([0]))
4308 m=m.buildUnstructured()
4311 def testExplodeMeshIntoMicroEdges1(self):
4312 """ test for new functionality MEDCouplingUMesh.explodeMeshIntoMicroEdges"""
4313 m=MEDCouplingUMesh("mesh",2)
4314 coo=DataArrayDouble([2,0,10,0,12,0,0,3,4,5,10,5,12,7,3,2.5,7,2.5,6,0,10,2.5,11,2.5,11,0,7,5],14,2)
4317 # here a mix of quadratic, linear cells. Non conform but conform considering micro edges
4318 m.insertNextCell(NORM_TRI6,[0,4,1,7,8,9])
4319 m.insertNextCell(NORM_TRI6,[1,5,2,10,11,12])
4320 m.insertNextCell(NORM_TRI6,[5,1,4,10,8,13])
4321 m.insertNextCell(NORM_TRI3,[3,4,7])
4322 m.insertNextCell(NORM_TRI3,[3,7,0])
4323 m.insertNextCell(NORM_TRI3,[6,2,11])
4324 m.insertNextCell(NORM_TRI3,[6,11,5])
4325 m.insertNextCell(NORM_TRI3,[6,5,13])
4326 m.insertNextCell(NORM_TRI3,[6,13,4])
4327 edges,d,di,rd,rdi=m.explodeMeshIntoMicroEdges() # <- new method
4328 self.assertTrue(MEDCoupling1SGTUMesh(edges).getNodalConnectivity().isEqual(DataArrayInt([0,7,7,4,4,8,8,1,1,9,9,0,1,10,10,5,5,11,11,2,2,12,12,1,4,13,13,5,3,4,7,3,0,3,6,2,11,6,5,6,13,6,4,6])))
4329 self.assertEqual(edges.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer())
4330 self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,7,6,3,2,12,13,14,1,15,15,0,16,17,9,18,18,8,19,19,13,20,20,12,21])))
4331 self.assertTrue(di.isEqual(DataArrayInt([0,6,12,18,21,24,27,30,33,36])))
4332 self.assertTrue(rd.isEqual(DataArrayInt([0,4,0,3,0,2,0,2,0,0,1,2,1,2,1,6,1,5,1,1,2,8,2,7,3,3,4,4,5,5,6,6,7,7,8,8])))
4333 self.assertTrue(rdi.isEqual(DataArrayInt([0,2,4,6,8,9,10,12,14,16,18,19,20,22,24,25,27,28,29,31,33,35,36])))
4336 def testFieldIntIsOnStage2(self):
4337 """ Very important test to check that isEqual of MEDCouplingFieldInt is OK !"""
4338 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4339 m1=m1.buildUnstructured() ; m1.setName("mesh")
4340 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setMesh(m1)
4341 arr1=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)]) ; arr1.setInfoOnComponents(["aa","bbb"])
4342 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
4344 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4345 m2=m2.buildUnstructured() ; m2.setName("mesh")
4346 f2=MEDCouplingFieldInt(ON_CELLS) ; f2.setMesh(m2)
4347 arr2=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)]) ; arr2.setInfoOnComponents(["aa","bbb"])
4348 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
4350 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4352 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4353 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4355 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4358 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4360 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4362 f1.getArray().setInfoOnComponents(["aa","bbbb"])
4363 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4364 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4365 f1.getArray().setInfoOnComponents(["aa","bbb"])
4366 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4369 self.assertTrue(f1.isEqual(f3,1e-12,0.))
4371 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
4372 f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
4373 arr4=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)]) ; arr4.setInfoOnComponents(["aa","bbb"])
4374 f4.setArray(arr4) ; f4.setName("f1")
4375 self.assertEqual(f1.isEqual(f4,1e-12,0.),expected)
4379 def testDADSymmetry1(self):
4380 arr=DataArrayDouble([2,3,4],1,3)
4381 res=arr.symmetry3DPlane([0.,0.,0.],[0.,0.,2.])
4382 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-4],1,3),1e-14))
4384 res=arr.symmetry3DPlane([-1000,100,-1],[0.,0.,2.])
4385 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-6],1,3),1e-14))
4387 res=arr.symmetry3DPlane([0,0,0],[1.,0.,0.])
4388 self.assertTrue(res.isEqual(DataArrayDouble([-2,3,4],1,3),1e-14))
4390 res=arr.symmetry3DPlane([0,0,0],[0.,1.,0.])
4391 self.assertTrue(res.isEqual(DataArrayDouble([2,-3,4],1,3),1e-14))
4393 res=arr.symmetry3DPlane([0,0,0],[-1.,1.,0.])
4394 self.assertTrue(res.isEqual(DataArrayDouble([3,2,4],1,3),1e-14))
4397 a=DataArrayDouble(DataArrayDouble.GiveBaseForPlane(plane))
4398 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[1]).magnitude()[0],0.,13)
4399 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[2]).magnitude()[0],0.,13)
4400 self.assertAlmostEqual(DataArrayDouble.Dot(a[1],a[2]).magnitude()[0],0.,13)
4401 coo=DataArrayDouble.Aggregate([10*a[0]+10*a[1],-10*a[0]+10*a[1],-10*a[0]-10*a[1],10*a[0]-10*a[1]])
4402 m=MEDCouplingUMesh("",2) ; m.setCoords(coo) ; m.allocateCells()
4403 m.insertNextCell(NORM_QUAD4,[0,1,2,3])
4404 d,_=m.distanceToPoint(arr)
4405 res=arr.symmetry3DPlane([0.,0.,0.],plane) #
4406 d2,_=m.distanceToPoint(res)
4407 self.assertAlmostEqual(abs(d-d2),0.,12)
4408 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[0])[0],0.,12)
4409 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[1])[0],0.,12)
4410 self.assertAlmostEqual((res-arr).magnitude()[0]-2*d,0.,12)
4411 self.assertTrue(res.isEqual(DataArrayDouble([2.666666666666667,3.5333333333333333,3.0666666666666666],1,3),1e-12))
4414 def testExtrudedMeshBuildUnstructured1(self):
4415 """ Non reg test. ExtrudedMesh.buildUnstructured used to modify the coordinates of this. It used to lead to an extra amount of memory consumtion. The aim of the test here is to check that buildUnstructured method do not alter the content of the mesh"""
4416 arr=DataArrayDouble(11) ; arr.iota()
4417 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
4418 m=m.buildUnstructured()
4419 faces=MEDCouplingCMesh() ; faces.setCoords(arr,arr)
4420 faces=faces.buildUnstructured()
4421 faces.setCoords(m.getCoords())
4422 em=MEDCouplingMappedExtrudedMesh(m,faces,0)
4423 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12))
4424 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
4425 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
4428 def testExtrudedMeshFromCMesh1(self):
4429 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
4430 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ)
4431 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
4432 self.assertTrue(ex.buildUnstructured().isEqual(mesh3D.buildUnstructured(),1e-12))
4435 def testCylSpherPolarCartFiesta(self):
4436 """Test to check new capabilities from to cyl spher polar cart conversions"""
4437 da0=DataArrayDouble([(7,13,2.1),(15,2,-4.2),(-6,12,1.4),(-1,10,-3.5),(-2.1,-3.3,2.7),(-1.4,-0.2,-4),(1.2,-1.3,2.8),(2.5,-0.4,-3)])
4438 self.assertTrue(da0.fromCartToCyl().fromCylToCart().isEqual(da0,1e-12))
4439 self.assertTrue(da0.fromCartToSpher().fromSpherToCart().isEqual(da0,1e-12))
4441 self.assertTrue(da1.fromCartToPolar().fromPolarToCart().isEqual(da1,1e-12))
4447 expected=DataArrayDouble([(2.023252607860588,14.699865529518792,1.4934531458504392),(10.91440936818929,7.5640431386495965,8.384564361982669),(-7.1057844983810705,7.853310978767742,-8.354240440239513),(-8.414001990391881,-1.1910713519565301,-6.405928468241733),(-4.35426264858532,1.5616250027467273,1.0916611827536211),(-2.0571195416878396,-2.0266572603615365,-3.1082019786735042),(-1.5714718759210784,0.39735366651452453,2.8883535460356216),(0.8733250236104675,-3.800053532703407,0.45485882614734185)])
4448 da4=da0.fromCartToCylGiven(da2,pt,vect)
4449 self.assertTrue(da4.isEqual(expected,1e-12))
4451 m=MEDCouplingUMesh.Build0DMeshFromCoords(da2)
4452 self.assertEqual(m.getDirectAccessOfCoordsArrIfInStructure().getHiddenCppPointer(),da2.getHiddenCppPointer())
4453 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setArray(da0)
4454 f=f0.computeVectorFieldCyl(pt,vect)
4455 f.checkConsistencyLight()
4456 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
4457 self.assertTrue(f.getArray().isEqual(expected,1e-12))
4460 def testDAIIndicesOfSubPart(self):
4461 a=DataArrayInt([9,10,0,6,4,11,3,8])
4462 b=DataArrayInt([6,0,11,8])
4463 c=a.indicesOfSubPart(b)
4464 self.assertTrue(c.isEqual(DataArrayInt([3,2,5,7])))
4466 d=DataArrayInt([9,10,0,6,4,11,0,8])
4467 self.assertRaises(InterpKernelException,d.indicesOfSubPart,b) # 0 appears twice in the d array
4468 f=DataArrayInt([6,0,11,8,12])
4469 self.assertRaises(InterpKernelException,a.indicesOfSubPart,f) # 12 in f does not exist in a
4472 def testDACirPermAndRev1(self):
4473 d=DataArrayInt([1,2,3,4,5,6])
4474 d2=d.deepCopy() ; d2.circularPermutation(1)
4475 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4476 d2=d.deepCopy() ; d2.circularPermutation()
4477 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4478 d2=d.deepCopy() ; d2.circularPermutation(2)
4479 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4480 d2=d.deepCopy() ; d2.circularPermutation(3)
4481 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4482 d2=d.deepCopy() ; d2.circularPermutation(4)
4483 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4484 d2=d.deepCopy() ; d2.circularPermutation(5)
4485 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4486 d2=d.deepCopy() ; d2.circularPermutation(6)
4487 self.assertTrue(d2.isEqual(d))
4488 d2=d.deepCopy() ; d2.circularPermutation(7)
4489 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4490 d2=d.deepCopy() ; d2.circularPermutation(-1)
4491 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4492 d2=d.deepCopy() ; d2.circularPermutation(-2)
4493 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4494 d2=d.deepCopy() ; d2.circularPermutation(-3)
4495 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4496 d2=d.deepCopy() ; d2.circularPermutation(-4)
4497 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4498 d2=d.deepCopy() ; d2.circularPermutation(-5)
4499 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4500 d2=d.deepCopy() ; d2.circularPermutation(-6)
4501 self.assertTrue(d2.isEqual(d))
4502 d2=d.deepCopy() ; d2.circularPermutation(-7)
4503 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4505 d=DataArrayInt([1,2,3,4,5,6],2,3)
4506 d2=d.deepCopy() ; d2.circularPermutationPerTuple(0)
4507 self.assertTrue(d2.isEqual(d))
4508 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4509 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4510 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4511 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4512 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4513 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4514 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4515 self.assertTrue(d2.isEqual(d))
4516 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4517 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4518 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4519 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4520 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4521 self.assertTrue(d2.isEqual(d))
4522 d.setInfoOnComponents(["a","b","c"])
4523 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4524 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4525 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4526 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4527 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4528 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4529 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4530 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4531 d2=d.deepCopy() ; d2.circularPermutationPerTuple(4)
4532 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4533 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4534 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4535 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4536 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4537 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4538 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4539 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-4)
4540 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4542 d2=d.deepCopy() ; d2.reversePerTuple()
4543 d3Exp=DataArrayInt([3,2,1,6,5,4],2,3) ; d3Exp.setInfoOnComponents(["c","b","a"])
4544 self.assertTrue(d3Exp.isEqual(d2))
4547 def testDAExplodeComponents1(self):
4548 d=DataArrayDouble([(1,2),(3,4),(5,6)])
4550 d.setInfoOnComponents(["a","b"])
4551 d2=d.explodeComponents()
4552 self.assertEqual(len(d2),2)
4554 d3=DataArrayDouble([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4555 self.assertTrue(d3.isEqual(d2[0],1e-14))
4556 d4=DataArrayDouble([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4557 self.assertTrue(d4.isEqual(d2[1],1e-14))
4559 d=DataArrayInt([(1,2),(3,4),(5,6)])
4561 d.setInfoOnComponents(["a","b"])
4562 d2=d.explodeComponents()
4563 self.assertEqual(len(d2),2)
4565 d3=DataArrayInt([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4566 self.assertTrue(d3.isEqual(d2[0]))
4567 d4=DataArrayInt([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4568 self.assertTrue(d4.isEqual(d2[1]))
4573 if __name__ == '__main__':