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 testSwig2MeshOrientCorrectly2DCells1(self):
1487 m=MEDCouplingUMesh("mesh",2)
1488 coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
1491 m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
1492 m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
1493 self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1494 m.changeSpaceDimension(3)
1495 m.orientCorrectly2DCells([0.,0.,-1.],False)
1497 m.checkConsistencyLight()
1498 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
1499 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
1500 m.changeSpaceDimension(2)
1501 self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1504 def testSwig2Hexa8HavingFacesWarped1(self):
1505 """ 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
1506 intersected with src the sum of intersection volume is greater than the volume of the trg cell.
1507 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
1510 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)
1511 src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
1513 src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
1514 src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
1515 src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
1516 src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
1517 src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
1518 src.checkConsistency()
1519 # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
1520 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)
1521 trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
1523 trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
1525 srcFace=src.buildDescendingConnectivity()[0]
1526 conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
1527 eqFaces=srcFace.computePlaneEquationOf3DFaces()
1529 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
1530 lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
1531 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
1532 shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
1533 check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
1534 idsToTest=check.findIdsNotInRange(0.,1e-10)
1535 self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
1536 idsToTest2=idsToTest.findIdsNotInRange(18,22)
1537 self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
1538 idsToTest2.rearrange(2)
1539 self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
1542 def testSwig2SortHexa8EachOther1(self):
1544 testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
1546 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)])
1547 m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
1548 m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
1549 m1.checkConsistencyLight()
1551 m2=m1.deepCopy() ; m2.setName("m2")
1553 trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
1554 for i,t in enumerate(trs):
1555 for j in xrange(64):
1556 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
1558 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
1559 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
1560 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
1563 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
1565 self.assertEqual(12,m.getNumberOfNodes())
1566 m=MEDCoupling1SGTUMesh(m)
1567 m.sortHexa8EachOther()
1568 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
1569 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
1574 def testSwig2normMinComputeAbs1(self):
1575 d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
1576 d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1578 dExp=d.deepCopy() ; dExp.abs()
1579 self.assertTrue(dExp.isEqual(d0,1e-12))
1580 e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
1581 self.assertAlmostEqual(0.,e.normMin(),13)
1582 self.assertAlmostEqual(0.009,d.normMin(),13)
1584 di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
1585 di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1587 diExp=di.deepCopy() ; diExp.abs()
1588 self.assertTrue(diExp.isEqual(d0i))
1589 self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
1592 def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
1593 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)
1594 m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
1595 m.insertNextCell(NORM_POLYGON,[6,3,4,5])
1596 m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
1597 m.checkConsistency()
1599 self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
1600 self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
1601 self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
1604 def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
1605 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)
1606 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1607 m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
1608 m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
1609 m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
1610 m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
1611 m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
1612 m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
1613 m.checkConsistency()
1614 self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
1617 def testSwig2DAIGetIdsEqualTuple1(self):
1618 da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
1619 self.assertTrue(da.findIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
1620 self.assertTrue(da.findIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
1621 self.assertTrue(da.findIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
1623 self.assertRaises(InterpKernelException,da.findIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
1624 self.assertTrue(da.findIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
1625 self.assertTrue(da.findIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
1627 self.assertTrue(da.findIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
1628 self.assertTrue(da.findIdsEqualTuple(2).isEqual(da.findIdsEqual(2)))
1631 def testSwig2GaussNEStaticInfo1(self):
1632 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
1633 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
1634 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
1637 def testSwigReverseNodalConnOnStructuredMesh(self):
1639 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
1640 c.setCoordsAt(0,arr)
1641 rn,rni=c.getReverseNodalConnectivity()
1642 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1643 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1644 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1645 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1647 c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
1648 c.setCoordsAt(0,arr)
1649 rn,rni=c.getReverseNodalConnectivity()
1650 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1651 self.assertTrue(rn.isEqual(DataArrayInt([0])))
1652 self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
1653 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1655 c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
1656 c.setCoordsAt(0,arr)
1657 rn,rni=c.getReverseNodalConnectivity()
1658 rn.isEqual(DataArrayInt([]))
1659 rni.isEqual(DataArrayInt([0]))
1661 c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
1662 c.setCoords(arr,arr2)
1663 rn,rni=c.getReverseNodalConnectivity()
1664 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1665 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])))
1666 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])))
1667 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1669 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1670 c.setCoords(arr,arr2)
1671 rn,rni=c.getReverseNodalConnectivity()
1672 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1673 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1675 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1676 c.setCoords(arr2,arr)
1677 rn,rni=c.getReverseNodalConnectivity()
1678 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1679 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1681 c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
1682 c.setCoords(arr0,arr1,arr2)
1683 rn,rni=c.getReverseNodalConnectivity()
1684 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])))
1685 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])))
1686 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1687 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1690 def testSwig2CellToNodeDiscretization1(self):
1691 m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
1692 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
1693 arr=DataArrayDouble(12) ; arr.iota()
1694 arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
1696 f.checkConsistencyLight()
1698 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.])
1699 ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
1700 f2=f.cellToNodeDiscretization()
1701 f2.checkConsistencyLight()
1702 self.assertEqual(f2.getTime()[1:],[5,6])
1703 self.assertAlmostEqual(f2.getTime()[0],1.1,15)
1704 self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
1705 self.assertTrue(f2.getArray().isEqual(ref,1e-12))
1706 rn,rni=m.getReverseNodalConnectivity()
1707 rni2=(rni.deltaShiftIndex()).convertToDblArr()
1708 arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
1709 self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
1712 u=m.buildUnstructured() ; f.setMesh(u) ; del m
1713 f3=f.cellToNodeDiscretization()
1714 f3.checkConsistencyLight()
1715 self.assertEqual(f3.getTime()[1:],[5,6])
1716 self.assertAlmostEqual(f3.getTime()[0],1.1,15)
1717 self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
1718 self.assertTrue(f3.getArray().isEqual(ref,1e-12))
1721 def testSwig2GetMeshSpaceDimensionCMesh1(self):
1722 c=MEDCouplingCMesh()
1723 arr0=DataArrayDouble([0,1,2])
1724 arr1=DataArrayDouble([0])
1725 c.setCoords(arr0,arr0,arr0)
1726 self.assertEqual(c.getMeshDimension(),3)
1727 self.assertEqual(c.getSpaceDimension(),3)
1729 c.setCoords(arr0,arr0,arr1)
1730 self.assertEqual(c.getMeshDimension(),2)
1731 self.assertEqual(c.getSpaceDimension(),3)
1733 c.setCoords(arr0,arr0)
1734 self.assertEqual(c.getMeshDimension(),2)
1735 self.assertEqual(c.getSpaceDimension(),2)
1737 c.setCoords(arr0,arr1)
1738 self.assertEqual(c.getMeshDimension(),1)
1739 self.assertEqual(c.getSpaceDimension(),2)
1742 self.assertEqual(c.getMeshDimension(),1)
1743 self.assertEqual(c.getSpaceDimension(),1)
1746 self.assertEqual(c.getMeshDimension(),0)
1747 self.assertEqual(c.getSpaceDimension(),1)
1750 def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
1753 m=MEDCouplingCMesh()
1754 arr1=DataArrayDouble(nx) ; arr1.iota()
1755 arr2=DataArrayDouble(ny) ; arr2.iota()
1756 m.setCoords(arr1,arr2)
1757 m=m.buildUnstructured()
1758 da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
1759 m2=m[da] ; m2.simplexize(0)
1760 dan=da.buildComplement(m.getNumberOfCells())
1762 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1764 m.convertLinearCellsToQuadratic()
1765 m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
1766 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1767 p=m.buildSpreadZonesWithPoly()
1768 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])))
1769 self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
1770 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))
1773 def testSwigExtendedSlice1(self):
1774 d=DataArrayInt([5,6,7])
1775 self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
1776 self.assertTrue(d[3:].isEqual(DataArrayInt([])))
1779 except InterpKernelException as e:
1780 self.assertTrue(True)
1782 self.assertTrue(False)
1784 d=DataArrayInt([5,6,7,8])
1785 self.assertEqual(d[-1],8)
1786 self.assertEqual(d[-4],5)
1789 except InterpKernelException as e:
1790 self.assertTrue(True)
1792 self.assertTrue(False)
1794 self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
1795 self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
1796 self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
1797 self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
1798 self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
1801 except InterpKernelException as e:
1802 self.assertTrue(True)
1804 self.assertTrue(False)
1807 self.assertTrue(d[0:].isEqual(DataArrayInt([])))
1809 d=DataArrayDouble([5,6,7])
1810 self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
1811 self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
1814 except InterpKernelException as e:
1815 self.assertTrue(True)
1817 self.assertTrue(False)
1819 d=DataArrayDouble([5,6,7,8])
1820 self.assertAlmostEqual(d[-1],8.,12)
1821 self.assertAlmostEqual(d[-4],5.,12)
1824 except InterpKernelException as e:
1825 self.assertTrue(True)
1827 self.assertTrue(False)
1829 self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
1830 self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
1831 self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
1832 self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
1833 self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
1836 except InterpKernelException as e:
1837 self.assertTrue(True)
1839 self.assertTrue(False)
1841 d=DataArrayDouble([])
1842 self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
1845 def testSwig2Hexa27GP1(self):
1846 """ This test focused on shape functions of hexa27.
1848 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.]])
1849 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1851 # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
1852 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])
1853 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.]
1854 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]
1855 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]
1856 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1858 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1859 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1860 fGauss.setArray(arr)
1861 arrOfDisc=fGauss.getLocalizationOfDiscr()
1863 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))
1867 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1868 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1869 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1872 def testSwig2Pyra13GP1(self):
1873 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.]])
1874 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1876 # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
1877 m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
1878 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]
1879 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]
1880 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]
1881 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1883 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1884 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1885 fGauss.setArray(arr)
1886 arrOfDisc=fGauss.getLocalizationOfDiscr()
1888 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))
1891 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. !
1892 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1893 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1894 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. !
1897 def testSwig2Tri7GP1(self):
1898 coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
1899 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
1901 # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
1902 m.insertNextCell(NORM_TRI7,range(7))
1903 refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
1904 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]
1905 weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
1906 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1908 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1909 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1910 fGauss.setArray(arr)
1911 arrOfDisc=fGauss.getLocalizationOfDiscr()
1912 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))
1915 gaussCoords=refCoords
1916 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1917 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1918 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1921 def testSwig2StructuredDesc1(self):
1922 c=MEDCouplingCMesh()
1923 arr0=DataArrayDouble(3) ; arr0.iota()
1924 arr1=DataArrayDouble(4) ; arr1.iota()
1925 arr2=DataArrayDouble(5) ; arr2.iota()
1926 c.setCoords(arr0,arr1,arr2)
1928 self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
1929 m=c.build1SGTSubLevelMesh()
1930 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])))
1931 self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
1933 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])))
1936 def testSwig2Colinearize2D1(self):
1937 coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
1939 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1940 m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
1941 refPtr=m.getCoords().getHiddenCppPointer()
1942 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1943 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1944 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1945 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1946 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1947 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1948 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1949 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1951 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1952 m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
1953 refPtr=m.getCoords().getHiddenCppPointer()
1954 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1955 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1956 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1957 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1959 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1960 m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
1961 refPtr=m.getCoords().getHiddenCppPointer()
1962 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1963 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1964 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
1965 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1967 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1968 m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
1969 refPtr=m.getCoords().getHiddenCppPointer()
1970 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1971 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1972 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
1973 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1975 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)])
1976 coo2.setInfoOnComponents(["aa","bbbb"])
1977 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1978 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1979 refPtr=m.getCoords().getHiddenCppPointer()
1980 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1981 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
1982 self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
1983 refPtr=m.getCoords().getHiddenCppPointer()
1984 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
1985 self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
1986 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1987 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1988 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1989 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1990 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1991 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1992 # mix of quadratic and linear inside a QPOLYG cell
1993 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)])
1994 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1995 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1996 refPtr=m.getCoords().getHiddenCppPointer()
1997 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1998 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
1999 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
2000 self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
2001 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2002 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2005 def testSwig2BoundingBoxForBBTree1(self):
2006 """ 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 !
2008 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)
2009 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2011 m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
2012 m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
2013 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))
2016 def testSwig2CartBuildUnstructuredOnExoticCases1(self):
2017 """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
2020 m=MEDCouplingCMesh()
2021 arrX=DataArrayDouble(3) ; arrX.iota()
2022 arrY=DataArrayDouble(4) ; arrY.iota()
2023 arrZ=DataArrayDouble(1) ; arrZ.iota()
2024 m.setCoords(arrX,arrY,arrZ)
2025 self.assertEqual(2,m.getMeshDimension())
2026 self.assertEqual(3,m.getSpaceDimension())
2027 mu=m.buildUnstructured()
2028 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])))
2029 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2030 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)])
2031 self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
2033 m=MEDCouplingCMesh()
2034 arrX=DataArrayDouble(3) ; arrX.iota()
2035 arrY=DataArrayDouble(1) ; arrY.iota()
2036 arrZ=DataArrayDouble(4) ; arrZ.iota()
2037 m.setCoords(arrX,arrY,arrZ)
2038 self.assertEqual(2,m.getMeshDimension())
2039 self.assertEqual(3,m.getSpaceDimension())
2040 mu=m.buildUnstructured()
2041 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])))
2042 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2043 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)])
2044 self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
2046 m=MEDCouplingCMesh()
2047 arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
2048 arrY=DataArrayDouble(3) ; arrY.iota()
2049 arrZ=DataArrayDouble(4) ; arrZ.iota()
2050 m.setCoords(arrX,arrY,arrZ)
2051 self.assertEqual(2,m.getMeshDimension())
2052 self.assertEqual(3,m.getSpaceDimension())
2053 mu=m.buildUnstructured()
2054 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])))
2055 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2056 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)])
2057 self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
2059 m=MEDCouplingCMesh()
2060 arrX=DataArrayDouble(3) ; arrX.iota()
2061 arrY=DataArrayDouble(1) ; arrY.iota(7)
2062 arrZ=DataArrayDouble(1) ; arrZ.iota(8)
2063 m.setCoords(arrX,arrY,arrZ)
2064 self.assertEqual(1,m.getMeshDimension())
2065 self.assertEqual(3,m.getSpaceDimension())
2066 mu=m.buildUnstructured()
2067 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2068 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2069 coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
2070 self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
2072 m=MEDCouplingCMesh()
2073 arrX=DataArrayDouble(1) ; arrX.iota(7)
2074 arrY=DataArrayDouble(1) ; arrY.iota(8)
2075 arrZ=DataArrayDouble(3) ; arrZ.iota()
2076 m.setCoords(arrX,arrY,arrZ)
2077 self.assertEqual(1,m.getMeshDimension())
2078 self.assertEqual(3,m.getSpaceDimension())
2079 mu=m.buildUnstructured()
2080 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2081 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2082 coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
2083 self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
2085 m=MEDCouplingCMesh()
2086 arrX=DataArrayDouble(3) ; arrX.iota()
2087 arrY=DataArrayDouble(1) ; arrY.iota(7)
2088 m.setCoords(arrX,arrY)
2089 self.assertEqual(1,m.getMeshDimension())
2090 self.assertEqual(2,m.getSpaceDimension())
2091 mu=m.buildUnstructured()
2092 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2093 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2094 coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
2095 self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
2097 m=MEDCouplingCMesh()
2098 arrX=DataArrayDouble(1) ; arrX.iota(7)
2099 arrY=DataArrayDouble(3) ; arrY.iota()
2100 m.setCoords(arrX,arrY)
2101 self.assertEqual(1,m.getMeshDimension())
2102 self.assertEqual(2,m.getSpaceDimension())
2103 mu=m.buildUnstructured()
2104 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2105 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2106 coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
2107 self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
2110 def testSwig2Colinearize2D2(self):
2111 """ simple non regression test but that has revealed a bug"""
2112 coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
2113 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2114 m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
2115 m.checkConsistency()
2116 refPtr=m.getCoords().getHiddenCppPointer()
2118 m.colinearize2D(1e-12)
2119 m.checkConsistency()
2120 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2121 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_POLYGON,0,2,3,4])))
2122 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
2125 def testSwig2Colinearize2D3(self):
2126 """ colinearize was too agressive, potentially producing cells with one edge """
2127 # Flat polygon with 3 edges - nothing should happen (min number of edges for a linear polyg)
2128 coo = DataArrayDouble([0.0,0.0, 2.0,0.0, 1.5,0.0, 1.0,0.0, 0.5,0.0], 5,2)
2129 m = MEDCouplingUMesh("m", 2)
2130 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2], [0,4]] ]
2131 m.setCoords(coo); m.setConnectivity(c, cI)
2132 m.colinearize2D(1e-10)
2133 m.checkConsistency()
2134 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2135 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2137 # Flat quad polygon, 2 edges - nothing should happen (min number of edges for a quad polyg)
2138 m = MEDCouplingUMesh("m", 2)
2139 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1, 2,3], [0,5]] ]
2140 m.setCoords(coo); m.setConnectivity(c, cI)
2141 m.colinearize2D(1e-10)
2142 m.checkConsistency()
2143 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2144 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2146 # Flat polygon, 4 edges - one reduction should happen
2147 m = MEDCouplingUMesh("m", 2)
2148 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2,3], [0,5]] ]
2149 m.setCoords(coo); m.setConnectivity(c, cI)
2150 m.colinearize2D(1e-10)
2151 m.checkConsistency()
2152 self.assertEqual([NORM_POLYGON, 3,1,2], m.getNodalConnectivity().getValues())
2153 self.assertEqual([0,4], m.getNodalConnectivityIndex().getValues())
2155 # Flat quad polygon, 3 edges - one reduction expected
2156 m = MEDCouplingUMesh("m", 2)
2157 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1,3, 3,2,4], [0,7]] ]
2158 m.setCoords(coo); m.setConnectivity(c, cI)
2159 m.colinearize2D(1e-10)
2160 m.checkConsistency()
2161 self.assertEqual([NORM_QPOLYG, 3,1, 5,2], m.getNodalConnectivity().getValues())
2162 self.assertTrue( m.getCoords()[5].isEqual( DataArrayDouble([(1.5,0.0)]), 1.0e-12 ) )
2163 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2165 # Now an actual (neutronic) case: circle made of 4 SEG3. Should be reduced to 2 SEG3
2166 m = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 1.0)
2167 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 7,5,3,1, 6,4,2,0], [0,9]] ]
2168 m.colinearize2D(1e-10)
2169 m.checkConsistency()
2170 self.assertEqual([NORM_QPOLYG, 3,5, 8,4], m.getNodalConnectivity().getValues())
2171 self.assertTrue( m.getCoords()[8].isEqual( DataArrayDouble([(1.0,0.0)]), 1.0e-12 ) )
2172 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2174 def testSwig2CheckAndPreparePermutation2(self):
2175 a=DataArrayInt([10003,9999999,5,67])
2176 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
2177 a=DataArrayInt([10003,-9999999,5,67])
2178 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
2180 self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
2183 def testSwig2ComputeNeighborsOfNodes1(self):
2184 arrX=DataArrayDouble(3) ; arrX.iota()
2185 arrY=DataArrayDouble(4) ; arrY.iota()
2186 arrZ=DataArrayDouble(5) ; arrZ.iota()
2187 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
2189 a,b=m.computeNeighborsOfNodes()
2190 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])))
2191 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])))
2193 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
2194 a,b=m.computeNeighborsOfNodes()
2195 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])))
2196 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2198 m=m.buildDescendingConnectivity()[0]
2199 a,b=m.computeNeighborsOfNodes()
2200 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])))
2201 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2204 def testSwigBugOnUnpackingTuplesInDataArray1(self):
2205 inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2208 self.assertRaises(StopIteration,r.__getitem__,4)
2209 self.assertEqual(len(r),3)
2212 self.assertEqual(len(r),3)
2215 self.assertEqual(len(r),3)
2218 self.assertEqual(len(r),3)
2220 self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
2222 inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2225 self.assertRaises(StopIteration,r.__getitem__,4)
2226 self.assertEqual(len(r),3)
2229 self.assertEqual(len(r),3)
2232 self.assertEqual(len(r),3)
2235 self.assertEqual(len(r),3)
2237 self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
2240 def testSwig2IMesh1(self):
2241 """ 1st test of image grid mesh.
2243 m=MEDCouplingIMesh()
2244 self.assertEqual(m.getSpaceDimension(),-1)
2245 self.assertEqual(1,len(m.__repr__().split("\n")))
2246 self.assertEqual(6,len(m.__str__().split("\n")))
2247 self.assertRaises(InterpKernelException,m.getNodeStruct)
2248 self.assertRaises(InterpKernelException,m.getOrigin)
2249 self.assertRaises(InterpKernelException,m.getDXYZ)
2250 m.setSpaceDimension(3)
2251 self.assertEqual(9,len(m.__str__().split("\n")))
2252 self.assertEqual(4,len(m.__repr__().split("\n")))
2253 self.assertEqual((0,0,0),m.getNodeStruct())
2254 self.assertEqual((0.,0.,0.),m.getOrigin())
2255 self.assertEqual((0.,0.,0.),m.getDXYZ())
2256 self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
2257 m.setNodeStruct([3,4,2])
2258 self.assertEqual((3,4,2),m.getNodeStruct())
2259 m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
2260 self.assertEqual((1.5,2.5,3.5),m.getOrigin())
2261 m.setDXYZ((0.5,1.,0.25))
2262 self.assertEqual((0.5,1.,0.25),m.getDXYZ())
2263 for it in DataArrayDouble([(1.5,2.5,3.5)]):
2264 m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
2266 self.assertEqual(3,m.getSpaceDimension())
2267 self.assertEqual((3,4,2),m2.getNodeStruct())
2268 self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
2269 self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
2270 self.assertEqual(24,m2.getNumberOfNodes())
2271 self.assertEqual(6,m2.getNumberOfCells())
2272 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2274 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2276 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2278 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2280 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2282 self.assertTrue(not m.isEqual(m2,1e-12))
2284 self.assertTrue(m.isEqual(m2,1e-12))
2286 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2287 m2.setTimeUnit("ms")
2288 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2290 m2.setNodeStruct([3,2,4])
2291 self.assertTrue(not m.isEqual(m2,1e-12))
2292 m.setNodeStruct([3,2,4])
2293 self.assertTrue(m.isEqual(m2,1e-12))
2294 m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
2295 self.assertTrue(not m.isEqual(m2,1e-12))
2296 m2.setOrigin([1.5,3.5,2.5])
2297 self.assertTrue(m.isEqual(m2,1e-12))
2298 m.setDXYZ((0.5,0.25,1.))
2299 self.assertTrue(not m.isEqual(m2,1e-12))
2300 m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
2301 self.assertTrue(m.isEqual(m2,1e-12))
2303 self.assertTrue(m2bis.isEqual(m2,1e-12))
2305 self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
2306 m2bis.refineWithFactor([3,3,3])
2307 self.assertEqual(162,m2bis.getNumberOfCells())
2308 self.assertEqual((7,4,10),m2bis.getNodeStruct())
2309 self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
2310 self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
2312 self.assertEqual(3,m.getMeshDimension())
2313 self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
2314 mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
2315 mu.checkConsistency()
2316 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]"])
2317 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2318 self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
2319 self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
2320 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])))
2321 bary=m.computeCellCenterOfMass()
2322 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]"])
2323 self.assertTrue(bary.isEqual(baryExp,1e-12))
2325 c=m.convertToCartesian()
2326 c.checkConsistencyLight()
2327 self.assertEqual([1.1,0,3],c.getTime())
2328 self.assertEqual("ms",c.getTimeUnit())
2329 self.assertEqual(3,c.getMeshDimension())
2330 self.assertEqual(3,c.getSpaceDimension())
2331 arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
2332 self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
2333 arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
2334 self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
2335 arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
2336 self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
2337 self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
2339 a,b=m.getCellsContainingPoints(baryExp,1e-12)
2340 self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
2341 self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
2342 for a,b in enumerate(baryExp):
2343 self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
2346 m.translate([1.,2.,4.])
2347 self.assertEqual((3,2,4),m.getNodeStruct())
2348 self.assertEqual((2.5,5.5,6.5),m.getOrigin())
2349 self.assertEqual((0.5,0.25,1.),m.getDXYZ())
2350 m.scale([0.,1.,3.],2.)
2351 self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
2352 self.assertEqual((3,2,4),m.getNodeStruct())
2353 self.assertEqual((5.,10.,10.),m.getOrigin())
2354 self.assertEqual((1.,0.5,2.),m.getDXYZ())
2356 f=m.getMeasureField(False)
2357 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
2358 f2.setName("MeasureOfMesh_mesh")
2359 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
2361 m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
2362 self.assertEqual((2,2,3),m3.getNodeStruct())
2363 self.assertEqual((6.,10.,12.),m3.getOrigin())
2364 self.assertEqual((1.,0.5,2.),m3.getDXYZ())
2365 # now playing with 3D surf
2366 m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
2367 self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
2368 self.assertEqual(3,m4.getSpaceDimension())
2369 self.assertEqual(2,m4.getMeshDimension())
2370 self.assertEqual(12,m4.getNumberOfNodes())
2371 self.assertEqual(6,m4.getNumberOfCells())
2372 mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
2373 mu.checkConsistency()
2374 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2375 self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
2376 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]"])
2377 self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
2378 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])))
2381 def testSwig1GetValuesAsTuple1(self):
2383 self.assertEqual(d.getValues(),[])
2384 self.assertEqual(d.getValuesAsTuple(),[])
2385 d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
2386 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.])
2387 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.)])
2389 self.assertEqual(d.getValues(),[])
2390 self.assertEqual(d.getValuesAsTuple(),[])
2391 d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
2392 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])
2393 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)])
2396 def testSwig2AMR1(self):
2397 self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
2398 self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
2400 amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
2401 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2402 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
2403 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
2404 self.assertEqual(0,amr.getNumberOfPatches())
2405 self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
2406 self.assertEqual(2,amr.getSpaceDimension())
2407 amr.addPatch([(1,2),(0,1)],[4,4])
2408 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2409 self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
2410 self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
2411 self.assertEqual(1,amr.getNumberOfPatches())
2412 self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
2413 self.assertEqual(2,amr.getSpaceDimension())
2414 amr[0].addPatch([(2,3),(1,3)],[3,2])
2415 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2416 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2417 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2418 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2419 self.assertEqual(1,amr.getNumberOfPatches())
2420 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2421 self.assertEqual(2,amr.getSpaceDimension())
2422 amr[0].addPatch([(0,2),(3,4)],[3,2])
2423 self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
2424 self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
2425 self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
2426 self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
2427 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2428 self.assertEqual(2,amr.getSpaceDimension())
2430 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2431 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2432 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2433 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2434 self.assertEqual(1,amr.getNumberOfPatches())
2435 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2436 self.assertEqual(2,amr.getSpaceDimension())
2439 def testSwig2NonRegressionTestPAL1164(self):
2440 """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
2441 xarr=DataArrayDouble(3,1)
2443 cmesh=MEDCouplingCMesh()
2444 cmesh.setCoords(xarr,xarr,xarr)
2445 mesh=cmesh.buildUnstructured()
2446 f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
2447 f.setName("MyField")
2448 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2449 self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
2450 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2451 f.applyLin(2.,0.,0)# here it is OK !
2452 self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
2454 self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
2457 def testSwig2StructurizeMe1(self):
2458 arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
2459 arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
2460 arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
2461 c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
2462 c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
2463 u=c.buildUnstructured()
2464 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])
2465 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])
2467 u.renumberNodes(np,len(np))
2468 u=MEDCoupling1SGTUMesh(u)
2470 e,d,f=u.structurizeMe()
2471 self.assertTrue(c.isEqual(e,1e-12))
2472 self.assertTrue(d.isEqual(cp))
2473 self.assertTrue(f.isEqual(np))
2476 def testSwig2DenseMatrix1(self):
2477 m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
2478 self.assertEqual(m0.getNumberOfRows(),2)
2479 self.assertEqual(m0.getNumberOfCols(),3)
2480 self.assertEqual(m0.getNbOfElems(),6)
2481 ref=m0.getData().getHiddenCppPointer()
2483 self.assertTrue(m0.isEqual(m00,1e-12))
2484 m00.getData().setIJ(0,0,2.1)
2485 self.assertTrue(not m0.isEqual(m00,1e-12))
2486 m00.getData().setIJ(0,0,2.)
2487 self.assertTrue(m0.isEqual(m00,1e-12))
2488 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2490 m000=m0*DataArrayDouble([5,9,3])
2491 self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
2494 self.assertTrue(not m0.isEqual(m00,1e-12))
2495 self.assertEqual(m0.getNumberOfRows(),3)
2496 self.assertEqual(m0.getNumberOfCols(),2)
2497 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2498 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2500 self.assertTrue(m0.isEqual(m00,1e-12))
2501 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2502 self.assertEqual(m0.getNumberOfRows(),2)
2503 self.assertEqual(m0.getNumberOfCols(),3)
2504 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2505 #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
2507 self.assertEqual(m1.getNumberOfRows(),2)
2508 self.assertEqual(m1.getNumberOfCols(),3)
2509 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2510 m11=m0.deepCopy() ; m11+=m1
2511 self.assertEqual(m11.getNumberOfRows(),2)
2512 self.assertEqual(m11.getNumberOfCols(),3)
2513 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2515 self.assertEqual(m11.getNumberOfRows(),2)
2516 self.assertEqual(m11.getNumberOfCols(),3)
2517 self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
2519 self.assertEqual(m11.getNumberOfRows(),2)
2520 self.assertEqual(m11.getNumberOfCols(),3)
2521 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2523 self.assertEqual(m1.getNumberOfRows(),2)
2524 self.assertEqual(m1.getNumberOfCols(),3)
2525 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2527 self.assertEqual(m1.getNumberOfRows(),3)
2528 self.assertEqual(m1.getNumberOfCols(),2)
2529 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
2530 #m1np=m0np.transpose()
2532 self.assertEqual(m2.getNumberOfRows(),2)
2533 self.assertEqual(m2.getNumberOfCols(),2)
2534 self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
2537 def testSwig2AMR2(self):
2538 """ 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."""
2539 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2540 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2541 MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
2542 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))
2544 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2545 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2546 MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
2547 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))
2549 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2550 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2551 MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
2552 self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
2555 def testSwig2AMR3(self):
2556 """ Test spread of coarse IMesh instance into a fine one, with a factor."""
2557 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2558 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2559 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
2560 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))
2562 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2563 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2564 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
2565 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))
2566 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()
2567 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()
2569 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2570 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2571 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
2572 self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
2575 def testSwig2AMR4(self):
2576 """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."""
2577 im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
2578 b=im.computeCellCenterOfMass() ; b-=[1.,1.] ; b=b.magnitude()
2579 ids=b.findIdsInRange(0.4,0.7)
2580 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
2581 # f.write("test.vti")
2582 amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
2583 arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
2584 bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
2585 amr.createPatchesFromCriterion(bso,arr2,[2,2])
2586 m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
2587 self.assertEqual(12,amr.getNumberOfPatches())
2588 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)]]
2589 for i,bltr in enumerate(exp0):
2590 self.assertEqual(amr[i].getBLTRRange(),bltr)
2592 self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
2594 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
2595 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
2596 self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
2597 m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
2598 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
2599 self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
2602 def testSwig2AMR5(self):
2603 """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
2605 coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
2606 fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
2607 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
2608 self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
2610 MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
2611 self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
2613 coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
2614 fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
2615 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
2616 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))
2617 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2619 fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
2620 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
2621 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
2622 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2623 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.])
2624 self.assertTrue(coarse.isEqual(coarseExp,1e-12))
2625 self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
2626 self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
2629 def testSwig2AMR6(self):
2630 """ 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."""
2631 amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
2632 da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
2633 amr.addPatch([(1,4),(2,4)],[4,4])
2634 amr.addPatch([(0,1),(0,1)],[4,4])
2635 amr.addPatch([(4,5),(3,4)],[4,4])
2636 amr.addPatch([(4,5),(1,3)],[4,4])
2637 amr.addPatch([(0,1),(1,4)],[4,4])
2638 da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
2639 da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
2640 da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
2641 da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
2642 da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
2643 self.assertEqual(5,amr.getNumberOfPatches())
2644 l=[da0,da1,da2,da3,da4]
2645 lCpy=[elt.deepCopy() for elt in l]
2646 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2647 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2648 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2649 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2651 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2652 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2653 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2654 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkConsistencyLight()
2655 f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkConsistencyLight()
2656 f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkConsistencyLight()
2658 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])
2659 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])
2660 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2661 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2662 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2663 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2665 g0=amr.retrieveGridsAt(0)
2666 self.assertEqual(1,len(g0))
2667 self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
2668 g1=amr.retrieveGridsAt(1)
2669 self.assertEqual(5,len(g1))
2671 self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
2675 def testSwig2AMR7(self):
2676 """Idem testSwig2AMR6 except that we are in 1D"""
2677 amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
2678 da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
2679 amr.addPatch([(1,4)],[4])
2680 amr.addPatch([(0,1)],[4])
2681 da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
2682 da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
2683 self.assertEqual(2,amr.getNumberOfPatches())
2685 lCpy=[elt.deepCopy() for elt in l]
2686 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2687 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2688 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2689 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2691 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2692 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2693 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2695 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])
2696 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])
2697 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2698 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2699 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2700 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2703 def testSwig2AMR8(self):
2704 """This test checks 'basic' operations for ghost update."""
2706 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2707 amr.addPatch([(1,4),(2,4)],[4,4])
2708 amr.addPatch([(4,5),(3,5)],[4,4])
2709 amr.addPatch([(0,1),(4,6)],[4,4])
2710 amr[0].addPatch([(10,12),(5,8)],[2,2])
2711 amr[1].addPatch([(0,1),(0,5)],[2,2])
2712 amr[2].addPatch([(3,4),(0,3)],[2,2])
2713 m=amr.buildMeshFromPatchEnvelop()
2714 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
2715 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))
2716 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2717 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2719 d=att.getFieldOn(amr,"Field")
2720 self.assertEqual(56,d.getNumberOfTuples())
2721 self.assertEqual(1,d.getNumberOfComponents())
2723 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2724 self.assertEqual(140,d0.getNumberOfTuples())
2725 self.assertEqual(1,d0.getNumberOfComponents())
2727 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2728 self.assertEqual(60,d1.getNumberOfTuples())
2729 self.assertEqual(1,d1.getNumberOfComponents())
2731 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2732 self.assertEqual(60,d2.getNumberOfTuples())
2733 self.assertEqual(1,d2.getNumberOfComponents())
2735 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2736 self.assertEqual(48,d00.getNumberOfTuples())
2737 self.assertEqual(1,d00.getNumberOfComponents())
2738 d00.iota() ; d00+=0.5
2739 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2740 self.assertEqual(48,d10.getNumberOfTuples())
2741 self.assertEqual(1,d10.getNumberOfComponents())
2742 d10.iota() ; d10+=0.6
2743 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2744 self.assertEqual(32,d20.getNumberOfTuples())
2745 self.assertEqual(1,d20.getNumberOfComponents())
2746 d20.iota() ; d20+=0.7
2747 f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
2748 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])
2749 arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
2750 self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
2751 m=MEDCoupling1SGTUMesh(f.getMesh())
2752 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])))
2753 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))
2754 # the test is here ! To be called after iteration with no remesh
2755 att.synchronizeAllGhostZones()
2756 f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkConsistencyLight()
2757 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))
2758 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2759 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2760 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2761 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2762 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2763 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2764 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))
2765 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))
2766 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))
2767 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))
2768 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))
2769 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))
2770 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))
2773 def testSwig2AMR9(self):
2774 """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
2776 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2777 amr.addPatch([(1,4),(2,4)],[4,4])
2778 amr.addPatch([(4,5),(3,5)],[4,4])
2779 amr.addPatch([(0,1),(4,6)],[4,4])
2780 amr[0].addPatch([(10,12),(5,8)],[2,2])
2781 amr[1].addPatch([(0,1),(0,5)],[2,2])
2782 amr[2].addPatch([(3,4),(0,3)],[2,2])
2783 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2784 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2786 d=att.getFieldOn(amr,"Field")
2787 self.assertEqual(90,d.getNumberOfTuples())
2788 self.assertEqual(1,d.getNumberOfComponents())
2790 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2791 self.assertEqual(192,d0.getNumberOfTuples())
2792 self.assertEqual(1,d0.getNumberOfComponents())
2794 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2795 self.assertEqual(96,d1.getNumberOfTuples())
2796 self.assertEqual(1,d1.getNumberOfComponents())
2798 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2799 self.assertEqual(96,d2.getNumberOfTuples())
2800 self.assertEqual(1,d2.getNumberOfComponents())
2802 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2803 self.assertEqual(80,d00.getNumberOfTuples())
2804 self.assertEqual(1,d00.getNumberOfComponents())
2805 d00.iota() ; d00+=0.5
2806 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2807 self.assertEqual(84,d10.getNumberOfTuples())
2808 self.assertEqual(1,d10.getNumberOfComponents())
2809 d10.iota() ; d10+=0.6
2810 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2811 self.assertEqual(60,d20.getNumberOfTuples())
2812 self.assertEqual(1,d20.getNumberOfComponents())
2813 d20.iota() ; d20+=0.7
2814 # the test is here ! To be called after iteration with no remesh
2815 att.synchronizeAllGhostZones()
2816 f=att.buildCellFieldOnWithGhost(amr,"Field")
2817 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2818 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2819 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2820 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2821 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2822 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2823 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))
2824 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))
2825 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))
2826 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))
2827 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))
2828 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))
2829 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
2830 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
2831 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
2832 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
2833 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
2834 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])))
2837 def testSwig2AMR10(self):
2838 """ 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."""
2840 amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
2841 amr.addPatch([(3,8),(0,3)],[2,2])
2842 amr[0].addPatch([(0,10),(3,6)],[3,3])
2843 amr[0].addPatch([(2,6),(0,3)],[3,3])
2844 amr[0].addPatch([(6,10),(2,3)],[3,3])
2845 amr.addPatch([(3,8),(3,6)],[2,2])
2846 amr[1].addPatch([(0,4),(0,6)],[3,3])
2847 amr[1].addPatch([(7,10),(0,4)],[3,3])
2848 amr[1].addPatch([(4,7),(0,3)],[3,3])
2849 amr[1].addPatch([(4,7),(3,6)],[3,3])
2850 amr.addPatch([(0,3),(6,10)],[2,2])
2851 self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
2852 self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
2853 self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
2854 self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
2855 da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
2856 MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
2857 self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
2858 att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
2859 att.spillNatures([IntensiveMaximum])
2861 yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
2862 yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
2863 yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
2864 yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
2865 yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
2866 yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
2867 yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
2868 yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
2869 yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
2870 yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
2871 yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
2872 att2=att.deepCopy() ; att3=att2.deepCopy() ; att4=att3.deepCopy() ; att5=att4.deepCopy() ; att6=att5.deepCopy()
2874 att.synchronizeFineToCoarseBetween(2,1)
2876 for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
2877 self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2879 for pos in [(0,),(1,)]:
2880 self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2882 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))
2883 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))
2886 att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
2887 ### 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.
2888 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])
2889 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
2890 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])
2891 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
2892 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])
2893 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
2894 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)]:
2895 vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
2896 l=vals.getNumberOfTuples()
2897 exps=DataArrayDouble(l) ; exps.iota(iot)
2898 self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
2902 att3.synchronizeCoarseToFineBetween(1,2)
2904 for pos in [(),(0,),(1,),(2,)]:
2905 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2907 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])
2908 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
2909 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])
2910 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
2911 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])
2912 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
2913 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])
2914 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
2915 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])
2916 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
2917 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])
2918 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
2919 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])
2920 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
2923 att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
2924 for pos in [(),(0,),(1,),(2,)]:
2925 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2927 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])
2928 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
2929 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]])
2930 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
2931 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])
2932 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
2933 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])
2934 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
2935 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])
2936 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
2937 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])
2938 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
2939 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])
2940 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
2943 att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
2944 for pos in [(),(0,),(1,),(2,)]:
2945 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2947 att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
2948 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])
2949 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
2950 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])
2951 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
2952 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])
2953 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
2954 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])
2955 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
2956 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])
2957 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
2958 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])
2959 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
2960 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])
2961 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
2964 def testSwig2AMR11(self):
2965 """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
2966 coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
2967 fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
2968 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
2969 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.])
2970 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.])
2971 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.])
2972 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.])
2973 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.])
2974 exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
2975 self.assertTrue(fine.isEqual(exp,1e-12))
2979 MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
2980 amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
2981 amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
2982 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
2984 exp1=DataArrayDouble(990) ; exp1.iota(0.5)
2985 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])
2986 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.])
2988 self.assertTrue(coarse.isEqual(exp1,1e-12))
2990 MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
2991 exp2=DataArrayDouble(990) ; exp2.iota(0.5)
2993 self.assertTrue(coarse.isEqual(exp2,1e-12))
2995 coarse.iota(0.5) ; fine.iota(0.1)
2996 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
2998 coarse.iota(0.5) ; fine.iota(0.1)
2999 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3000 exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
3001 self.assertTrue(fine[:240].isEqual(exp00,1e-12))
3002 exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
3003 self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
3004 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))
3007 def testSwig2AMR12(self):
3008 """ This test check the MEDCouplingAMRAttribute.projectTo method."""
3009 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3010 amr0.addPatch([(3,8),(0,3)],[2,2])
3011 amr0.addPatch([(3,8),(3,6)],[2,2])
3012 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3014 att0.getFieldOn(amr0,"YY").iota(0.01)
3015 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3016 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3017 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3018 amr1.addPatch([(2,5),(1,4)],[2,2])
3019 att1=att0.projectTo(amr1)
3020 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
3021 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))
3023 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3024 amr0.addPatch([(2,5),(2,7)],[2,2])
3025 amr0.addPatch([(5,8),(2,7)],[2,2])
3026 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3028 att0.getFieldOn(amr0,"YY").iota(0.01)
3029 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3030 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3031 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3032 amr1.addPatch([(3,6),(2,7)],[2,2])
3033 amr1.addPatch([(6,9),(2,7)],[2,2])
3034 att1=att0.projectTo(amr1)
3035 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
3036 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))
3037 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))
3040 def testSwig2AMR13(self):
3041 """ non regression test"""
3042 for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
3043 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3044 amr.addPatch([(1,3),(0,2)],fact)
3045 amr.addPatch([(1,3),(3,4)],fact)
3046 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3048 att.getFieldOn(amr,"YY").iota(0.1)
3049 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3050 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3051 att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
3052 exp=DataArrayDouble(64) ; exp.iota(0.1)
3053 self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
3054 exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
3055 self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
3056 exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
3057 self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
3061 def testSwig2AMR14(self):
3062 """ non regression linked to VTHB write."""
3063 fact=[2,2] ; fact2=[3,3]
3064 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3065 amr.addPatch([(1,3),(0,2)],fact)
3066 amr.addPatch([(1,3),(3,4)],fact)
3067 amr[0].addPatch([(1,3),(1,3)],fact2)
3068 amr[1].addPatch([(1,3),(1,2)],fact2)
3069 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3071 att.getFieldOn(amr,"YY").iota(0.1)
3072 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3073 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3074 att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
3075 att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
3076 self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
3077 self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
3078 self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
3079 self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
3082 def testOrderConsecutiveCells1D1(self):
3083 """A line in several unconnected pieces:"""
3084 m2 = MEDCouplingUMesh.New("bla", 1)
3085 c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
3086 NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
3087 NORM_SEG2,11,12,NORM_SEG2,12,13,
3089 cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
3090 coords2 = DataArrayDouble([float(i) for i in range(32)], 16,2)
3091 m2.setCoords(coords2);
3092 m2.setConnectivity(c, cI);
3093 m2.checkConsistency(1.0e-8);
3096 m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
3097 res = m2.orderConsecutiveCells1D()
3098 expRes = [0,3,6,8,1,4,2,7,5]
3099 self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
3100 self.assertEqual(expRes, res.getValues())
3102 # A closed line (should also work)
3103 m3 = MEDCouplingUMesh.New("bla3", 1)
3104 conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
3105 coord3 = coords2[0:5]
3109 m3.setCoords(coord3)
3110 m3.setConnectivity(conn3A, cI)
3111 m3.checkConsistency(1.0e-8)
3112 res2 = m3.orderConsecutiveCells1D()
3114 self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
3115 self.assertEqual(expRes2, res2.getValues())
3118 def testDADApplyFuncOnThis1(self):
3119 d=DataArrayDouble(5) ; d.iota(0.)
3120 d.applyFuncOnThis("2*x+1")
3121 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
3122 d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
3123 d.applyFuncOnThis("2*x+1")
3124 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
3125 d.applyFuncOnThis("1+2*3")
3126 self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
3129 def testSwig2PointSetComputeFetchedNodeIds1(self):
3130 arr=DataArrayDouble(6) ; arr.iota()
3131 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3132 m=m.buildUnstructured()
3133 m0=m[[0,1,5,6,25,26,30,31,124]]
3134 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])
3135 self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
3136 self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3137 self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
3138 m0.convertAllToPoly()
3139 self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
3140 self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3143 def testSwig2PartDefinition1(self):
3144 pd=PartDefinition.New(5,22,3)
3145 self.assertTrue(isinstance(pd,SlicePartDefinition))
3146 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3147 self.assertEqual(pd.getNumberOfElems(),6)
3148 self.assertEqual(pd.getEffectiveStop(),23)
3149 pd=PartDefinition.New(5,23,3)
3150 self.assertTrue(isinstance(pd,SlicePartDefinition))
3151 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3152 self.assertEqual(pd.getNumberOfElems(),6)
3153 self.assertEqual(pd.getEffectiveStop(),23)
3154 self.assertEqual(pd.getSlice(),slice(5,23,3))
3155 pd=PartDefinition.New(5,22,1)
3156 self.assertTrue(isinstance(pd,SlicePartDefinition))
3157 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3158 self.assertEqual(pd.getNumberOfElems(),17)
3159 self.assertEqual(pd.getEffectiveStop(),22)
3160 pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
3161 self.assertTrue(isinstance(pd,SlicePartDefinition))
3162 self.assertEqual(pd.getNumberOfElems(),8)
3163 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
3164 self.assertEqual(pd.getEffectiveStop(),29)
3165 pd=SlicePartDefinition(5,22,1)
3166 self.assertTrue(isinstance(pd,SlicePartDefinition))
3167 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3168 self.assertEqual(pd.getNumberOfElems(),17)
3169 self.assertEqual(pd.getEffectiveStop(),22)
3170 d=DataArrayInt([2,4,5,6,10])
3171 pd=PartDefinition.New(d)
3172 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3173 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3174 pd=DataArrayPartDefinition(d)
3175 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3176 pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
3177 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3178 self.assertEqual(pd.getNumberOfElems(),8)
3179 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
3182 def testSwig2SortEachPairToMakeALinkedList1(self):
3183 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)])
3184 d.sortEachPairToMakeALinkedList()
3185 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)])))
3186 d=DataArrayInt([(0,2),(1,2),(1,3)])
3187 d.sortEachPairToMakeALinkedList()
3188 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3189 d=DataArrayInt([(0,2),(1,2),(3,1)])
3190 d.sortEachPairToMakeALinkedList()
3191 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3192 d=DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])
3193 d.sortEachPairToMakeALinkedList()
3194 self.assertTrue(d.isEqual(DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])))
3197 def testSwig2DAIIsRange(self):
3198 d=DataArrayInt([2,6,10])
3201 self.assertEqual(b,slice(2,11,4))
3202 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3204 d=DataArrayInt([2,7,10])
3206 self.assertTrue(not a)
3207 self.assertTrue(b is None)
3209 d=DataArrayInt([22,17,12])
3212 self.assertEqual(b,slice(22,11,-5))
3213 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3215 d=DataArrayInt([22,16,12])
3217 self.assertTrue(not a)
3218 self.assertTrue(b is None)
3220 d=DataArrayInt([33])
3223 self.assertEqual(b,slice(33,34,1))
3224 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3229 self.assertEqual(b,slice(0,0,1))
3230 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3232 d=DataArrayInt([2,6,10,2])
3234 self.assertTrue(not a)
3235 self.assertTrue(b is None)
3238 def testSwig2PartDefinitionComposeWith1(self):
3239 f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
3240 g=PartDefinition.New(4,14,1)
3242 self.assertTrue(g2.isEqual(g)[0])
3244 self.assertTrue(isinstance(h,DataArrayPartDefinition))
3245 self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3246 f2=f.tryToSimplify()
3247 g2=g.tryToSimplify()
3248 self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
3249 self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
3250 p=PartDefinition.New(DataArrayInt([2,6,10]))
3251 p2=p.tryToSimplify()
3252 self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
3253 self.assertTrue(isinstance(p2,SlicePartDefinition))
3254 self.assertEqual(p2.getSlice(),slice(2,11,4))
3255 self.assertTrue(p2.isEqual(SlicePartDefinition(2,11,4))[0])
3256 self.assertTrue(p2.isEqual(p2.deepCopy())[0])
3257 self.assertTrue(not p2.isEqual(SlicePartDefinition(1,11,4))[0])
3258 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,10,4))[0])
3259 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,11,3))[0])
3262 def testSwig2DAIGetIdsStrictlyNegative1(self):
3263 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3264 self.assertTrue(d.findIdsStricltyNegative().isEqual(DataArrayInt([1,2,6])))
3267 def testSwig2DAIReplaceOneValByInThis1(self):
3268 d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
3269 d.changeValue(-5,900)
3270 self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
3273 def testSwig2DAIGetMinMaxValues1(self):
3274 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3275 a,b=d.getMinMaxValues()
3276 self.assertEqual(a,-7)
3277 self.assertEqual(b,99)
3280 def testSwig2DAIBuildUniqueNotSorted1(self):
3281 d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
3282 self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
3285 def testSwig2UMeshChangeOrientationOfCells1(self):
3286 """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
3287 m=MEDCouplingUMesh("mesh",1)
3288 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])
3289 cI=DataArrayInt([0,3,6,10,14,17,22,27])
3290 m.setConnectivity(c,cI)
3291 m.changeOrientationOfCells()
3292 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])))
3293 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3295 m=MEDCouplingUMesh("mesh",2)
3296 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])
3297 cI=DataArrayInt([0,4,9,15,22,31,42])
3298 m.setConnectivity(c,cI)
3299 m.changeOrientationOfCells()
3300 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])))
3301 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3304 def testSwig2StructuredMeshCellLocation1(self):
3306 arrX=DataArrayDouble(5) ; arrX.iota()
3307 arrY=DataArrayDouble(4) ; arrY.iota()
3308 arrZ=DataArrayDouble(3) ; arrZ.iota()
3309 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3311 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)]
3312 self.assertEqual(24,m.getNumberOfCells())
3313 for i in xrange(m.getNumberOfCells()):
3314 li.append(m.getLocationFromCellId(i))
3316 self.assertEqual(liExp3D,li)
3317 self.assertRaises(InterpKernelException,m.getLocationFromCellId,24)
3318 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3320 arrX=DataArrayDouble(5) ; arrX.iota()
3321 arrY=DataArrayDouble(4) ; arrY.iota()
3322 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3324 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)]
3325 self.assertEqual(12,m.getNumberOfCells())
3326 for i in xrange(m.getNumberOfCells()):
3327 li.append(m.getLocationFromCellId(i))
3329 self.assertEqual(liExp2D,li)
3330 self.assertRaises(InterpKernelException,m.getLocationFromCellId,12)
3331 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3333 arrX=DataArrayDouble(5) ; arrX.iota()
3334 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3335 self.assertEqual(4,m.getNumberOfCells())
3336 for i in xrange(m.getNumberOfCells()):
3337 self.assertEqual((i,),m.getLocationFromCellId(i))
3339 self.assertRaises(InterpKernelException,m.getLocationFromCellId,4)
3340 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3343 def testSwig2StructuredMeshNodeLocation1(self):
3345 arrX=DataArrayDouble(5) ; arrX.iota()
3346 arrY=DataArrayDouble(4) ; arrY.iota()
3347 arrZ=DataArrayDouble(3) ; arrZ.iota()
3348 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3350 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)]
3351 self.assertEqual(60,m.getNumberOfNodes())
3352 for i in xrange(m.getNumberOfNodes()):
3353 li.append(m.getLocationFromNodeId(i))
3355 self.assertEqual(liExp3D,li)
3356 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,60)
3357 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3359 arrX=DataArrayDouble(5) ; arrX.iota()
3360 arrY=DataArrayDouble(4) ; arrY.iota()
3361 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3363 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)]
3364 self.assertEqual(20,m.getNumberOfNodes())
3365 for i in xrange(m.getNumberOfNodes()):
3366 li.append(m.getLocationFromNodeId(i))
3368 self.assertEqual(liExp2D,li)
3369 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,20)
3370 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3372 arrX=DataArrayDouble(5) ; arrX.iota()
3373 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3374 self.assertEqual(5,m.getNumberOfNodes())
3375 for i in xrange(m.getNumberOfNodes()):
3376 self.assertEqual((i,),m.getLocationFromNodeId(i))
3378 self.assertRaises(InterpKernelException,m.getLocationFromCellId,5)
3379 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3382 def testSwig2DataArrayPrintNotTooLong1(self):
3383 """ Now that DataArrayDouble and DataArrayInt and pickelized they can appear in YACS ports. Avoid to have too heavy string representation of them."""
3384 d=DataArrayDouble(2000) ; d.iota() ; d.rearrange(2)
3385 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3386 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3387 self.assertEqual(st1,st2)
3389 d=DataArrayDouble(2002) ; d.iota() ; d.rearrange(2)
3390 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3391 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3392 self.assertEqual(st1,st2)
3393 self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
3394 ## Now for DataArrayInt
3395 d=DataArrayInt(2000) ; d.iota() ; d.rearrange(2)
3396 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3397 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3398 self.assertEqual(st1,st2)
3400 d=DataArrayInt(2002) ; d.iota() ; d.rearrange(2)
3401 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3402 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3403 self.assertEqual(st1,st2)
3404 self.assertIn(len(st2),xrange(0,1000)) # no more than 1000 characters
3407 def testExtrudedMeshWithoutZipCoords1(self):
3408 """This test checks that MEDCouplingUMesh.buildExtrudedMesh do not perform a zipCoords."""
3409 arr=DataArrayDouble([(0.,0.),(1.,0.),(2.,0.),(3.,0.)])
3410 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(arr)
3412 m.insertNextCell(NORM_SEG2,[1,2])
3413 arr1D=DataArrayDouble([(0.,0.),(0.,1.5),(0.,2.)])
3414 m1D=MEDCouplingUMesh("mesh1D",1) ; m1D.setCoords(arr1D)
3416 m1D.insertNextCell(NORM_SEG2,[0,1])
3417 m1D.insertNextCell(NORM_SEG2,[1,2])
3418 m2D=m.buildExtrudedMesh(m1D,0)
3419 self.assertEqual(m.getCoords().getHiddenCppPointer(),m2D.getCoords().getHiddenCppPointer())
3420 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)])
3421 self.assertTrue(m.getCoords().isEqual(coo,1e-12))
3422 self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([4,1,2,6,5,4,5,6,10,9])))
3423 self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10])))
3426 def testPointSetAreAllNodesFetched1(self):
3427 m=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
3428 m.setCoords(arr,arr)
3429 m=m.buildUnstructured()
3430 self.assertTrue(m.areAllNodesFetched())
3432 self.assertTrue(not m2.areAllNodesFetched())
3434 self.assertTrue(m2.areAllNodesFetched())
3437 def testMEDCouplingPointSetComputeDiameterField1(self):
3438 arrX=DataArrayDouble([0.,1.1,1.7,2.1])
3439 arrY=DataArrayDouble([0.,0.7,0.8,1.9])
3440 arrZ=DataArrayDouble([0.,1.3,2.1,2.4])
3441 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
3442 f=m.computeDiameterField()
3443 f.checkConsistencyLight()
3444 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])
3445 self.assertTrue(exp.isEqual(f.getArray(),1e-12))
3448 m2.simplexize(PLANAR_FACE_5)
3449 m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
3450 f=m3.computeDiameterField()
3451 f.checkConsistencyLight()
3452 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])
3453 self.assertTrue(exp2.isEqual(f.getArray(),1e-12))
3454 # TRI3 - spacedim = 2
3455 coo=DataArrayDouble([(1,1),(5,1.9),(2.1,3)])
3456 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3457 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3458 m.setNodalConnectivity(DataArrayInt(c))
3459 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3460 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3461 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3462 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3463 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3464 # TRI3 - spacedim = 3
3465 coo=DataArrayDouble([(1.3198537928820775,1.0991902391274959,-0.028645697595823361),(5.2486835106806335,2.2234012799688281,0.30368935050077939),(2.2973688139447361,3.1572023778066649,0.10937756365410012)])
3466 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3467 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3468 m.setNodalConnectivity(DataArrayInt(c))
3469 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3470 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3471 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3472 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3473 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3474 # QUAD4 - spacedim = 2
3475 coo=DataArrayDouble([(0,2),(2,0),(6,4),(4,9)])
3476 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3478 for delta in xrange(4):
3479 c=[(elt+delta)%4 for elt in xrange(4)]
3480 m.setNodalConnectivity(DataArrayInt(c))
3481 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3482 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3483 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3484 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3485 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3487 m.setNodalConnectivity(DataArrayInt(c))
3488 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3489 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3490 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3491 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3492 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3493 # QUAD4 - spacedim = 3
3494 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)])
3495 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3496 for delta in xrange(4):
3497 c=[(elt+delta)%4 for elt in xrange(4)]
3498 m.setNodalConnectivity(DataArrayInt(c))
3499 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3500 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3501 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3502 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3503 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3505 m.setNodalConnectivity(DataArrayInt(c))
3506 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3507 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3508 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3509 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3510 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3512 # 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)
3513 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)])
3514 m=MEDCoupling1SGTUMesh("mesh",NORM_PENTA6) ; m.setCoords(coo)
3515 exp4=2.5041256256889888
3516 self.assertAlmostEqual(exp4,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3517 for delta in xrange(3):
3518 c=[(elt+delta)%3 for elt in xrange(3)]
3519 c+=[elt+3 for elt in c]
3520 m.setNodalConnectivity(DataArrayInt(c))
3521 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3522 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3523 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3525 m.setNodalConnectivity(DataArrayInt(c))
3526 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3527 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3528 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3530 # 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)
3531 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)])
3532 m=MEDCoupling1SGTUMesh("mesh",NORM_HEXA8) ; m.setCoords(coo)
3533 exp5=2.5366409441884215
3534 self.assertAlmostEqual(exp5,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3535 for delta in xrange(4):
3536 c=[(elt+delta)%4 for elt in xrange(4)]
3537 c+=[elt+4 for elt in c]
3538 m.setNodalConnectivity(DataArrayInt(c))
3539 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3540 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3541 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3543 m.setNodalConnectivity(DataArrayInt(c))
3544 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3545 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3546 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3547 # PYRA5 (1) 5th node is further
3548 # 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)
3549 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)])
3550 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3551 exp6=2.1558368027391386
3552 self.assertAlmostEqual(exp6,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3553 for delta in xrange(4):
3554 c=[(elt+delta)%4 for elt in xrange(4)]
3556 m.setNodalConnectivity(DataArrayInt(c))
3557 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp6,12)
3558 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3559 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp6,12)
3561 # PYRA5 (2) 5th node is closer
3562 # 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)
3563 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)])
3564 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3565 exp7=1.4413563787228953
3566 self.assertAlmostEqual(exp7,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3567 for delta in xrange(4):
3568 c=[(elt+delta)%4 for elt in xrange(4)]
3570 m.setNodalConnectivity(DataArrayInt(c))
3571 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp7,12)
3572 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3573 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp7,12)
3576 # 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)
3577 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)])
3578 m=MEDCoupling1SGTUMesh("mesh",NORM_TETRA4) ; m.setCoords(coo)
3579 exp8=1.7131322579364157
3580 self.assertAlmostEqual(exp8,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3581 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]]:
3583 m.setNodalConnectivity(DataArrayInt([(elt+i)%4 for elt in c]))
3584 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp8,12)
3585 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3586 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp8,12)
3591 def testMEDCouplingSkyLineArray(self):
3592 index = DataArrayInt([ 0, 3, 5, 6, 6 ])
3593 value = DataArrayInt([ 1, 2, 3, 2, 3, 3 ])
3595 sla0 = MEDCouplingSkyLineArray()
3596 self.assertEqual( -1, sla0.getNumberOf() )
3597 self.assertEqual( 0, sla0.getLength() )
3598 sla0.set( index, value )
3599 self.assertTrue( index.isEqual( sla0.getIndexArray() ))
3600 self.assertTrue( value.isEqual( sla0.getValuesArray() ))
3601 self.assertEqual( 4, sla0.getNumberOf() )
3602 self.assertEqual( 6, sla0.getLength() )
3604 sla1 = MEDCouplingSkyLineArray( index, value )
3605 self.assertTrue( index.isEqual( sla1.getIndexArray() ))
3606 self.assertTrue( value.isEqual( sla1.getValuesArray() ))
3607 self.assertEqual( 4, sla1.getNumberOf() )
3608 self.assertEqual( 6, sla1.getLength() )
3610 sla2 = MEDCouplingSkyLineArray( sla1 )
3611 self.assertTrue( index.isEqual( sla2.getIndexArray() ))
3612 self.assertTrue( value.isEqual( sla2.getValuesArray() ))
3613 self.assertEqual( 4, sla2.getNumberOf() )
3614 self.assertEqual( 6, sla2.getLength() )
3616 indexVec = ivec(); indexVec.reserve( len( index ))
3617 for i in index: indexVec.push_back( i[0] )
3618 valueVec = ivec(); valueVec.reserve( len( value ))
3619 for i in value: valueVec.push_back( i[0] )
3620 sla3 = MEDCouplingSkyLineArray( indexVec, valueVec )
3621 self.assertTrue( index.isEqual( sla3.getIndexArray() ))
3622 self.assertTrue( value.isEqual( sla3.getValuesArray() ))
3623 self.assertEqual( 4, sla3.getNumberOf() )
3624 self.assertEqual( 6, sla3.getLength() )
3628 def testMEDCouplingSkyLineArrayThreeLevels(self):
3629 # [[28,1,4]] , [[2,35,8], [9,10,1,12]]
3630 superi = DataArrayInt([ 0,1,3 ])
3631 index = DataArrayInt ([ 0,3,6,10 ])
3632 value = DataArrayInt ([ 28,1,4,2,35,8,9,10,1,12 ])
3634 sla0 = MEDCouplingSkyLineArray()
3635 self.assertEqual( -1, sla0.getSuperNumberOf() )
3636 self.assertEqual( -1, sla0.getNumberOf() )
3637 self.assertEqual( 0, sla0.getLength() )
3638 sla0.set3( superi.deepCopy(), index.deepCopy(), value.deepCopy() )
3639 self.assertTrue( superi.isEqual( sla0.getSuperIndexArray() ))
3641 pack = sla0.getSimplePackSafe(2)
3642 self.assertEqual([9,10,1,12], pack)
3643 ids = sla0.findPackIds([0,1], [9,10,1,12])
3644 self.assertEqual([-1,1], ids)
3646 sla0.deletePack(1, 1)
3647 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3648 self.assertEqual([28,1,4,2,35,8], val.getValues())
3649 self.assertEqual([0,3,6], idx.getValues())
3650 self.assertEqual([0,1,2], si.getValues())
3652 sla0.pushBackPack(0, [3,2,1,0])
3653 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3654 self.assertEqual([0,2,3], si.getValues())
3655 self.assertEqual([0,3,7,10], idx.getValues())
3656 self.assertEqual([28,1,4,3,2,1,0, 2,35,8], val.getValues())
3658 # Build connectivity from POLYHED connectivity
3660 c = [NORM_POLYHED, 1,2,3,-1, 2,3,4,-1, 3,4,5,-1, 4,5,6,
3661 NORM_POLYHED, 7,8,9,10,-1, 9,10,11,12,-1, 3,4,5,6,-1, 5,6,7,8,-1, 9,10,11,12]
3662 sla0 = MEDCouplingSkyLineArray.BuildFromPolyhedronConn(DataArrayInt(c), DataArrayInt(cI))
3663 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3664 self.assertEqual([0,4,9], si.getValues())
3665 self.assertEqual([0,3,6,9,12,16,20,24,28,32], idx.getValues())
3666 self.assertEqual([1,2,3, 2,3,4, 3,4,5, 4,5,6,
3667 7,8,9,10, 9,10,11,12, 3,4,5,6, 5,6,7,8, 9,10,11,12], val.getValues())
3668 c1, cI1 = sla0.convertToPolyhedronConn()
3669 self.assertEqual(c1.getValues(), c)
3670 self.assertEqual(cI1.getValues(), cI)
3673 def testMEDCouplingSkyLineArrayThreeLevels2(self):
3675 siRef = [0, 9, 16, 22]
3676 idx = [0,4,8,12,16,20,23,26,29, 32,36,40,44,48,52, 56,60,64,68,72,76,80]
3677 c = [1,0,2,3, 5,7,6,4, 1,5,4,0, 0,4,6,2, 2,6,7,3, 3,7,8, 7,5,8, 5,1,8, 1,3,8,
3678 9,1,3,10, 11,12,7,5, 9,11,5,1, 1,5,7,3, 3,7,12,10, 10,12,11,9,
3679 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3680 idxRef = [0,4,8,12,16,20,23,26,29,32,36,40,44,48,52,55,58, 62, 66, 70, 74, 78, 82 ]
3681 cRef = [1,0,2,3, 5,7,6,4, 1,5,4,0, 0,4,6,2, 2,6,7,3, 3,7,8, 7,5,8, 5,1,8, 1,3,8,
3682 9,1,3,10, 11,12,7,5, 9,11,5,1, 3,7,12,10, 10,12,11,9, 3,7,8, 7,5,8,
3683 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3684 sla0 = MEDCouplingSkyLineArray()
3685 sla0.set3( DataArrayInt(si), DataArrayInt(idx), DataArrayInt(c) )
3686 ids = sla0.findPackIds([1], [1,5,7,3])
3687 sla0.deletePack(1, ids[0])
3688 sla0.pushBackPack(1, [3,7,8])
3689 sla0.pushBackPack(1, [7,5,8])
3690 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3691 self.assertEqual(siRef, si.getValues())
3692 self.assertEqual(idxRef, idx.getValues())
3693 self.assertEqual(cRef, val.getValues())
3695 idxRef2 = [0,4,8,12,16,20,23,26,29,32,36,40,42,46,50,53,56, 60, 64, 68, 72, 76, 80 ]
3696 cRef2 = [1,0,2,3, 5,7,6,4, 1,5,4,0, 0,4,6,2, 2,6,7,3, 3,7,8, 7,5,8, 5,1,8, 1,3,8,
3697 9,1,3,10, 11,12,7,5, 300,300, 3,7,12,10, 10,12,11,9, 3,7,8, 7,5,8,
3698 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3699 sla0.replacePack(1,2, [300,300])
3700 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3701 self.assertEqual(siRef, si.getValues())
3702 self.assertEqual(idxRef2, idx.getValues())
3703 self.assertEqual(cRef2, val.getValues())
3705 sla0.replacePack(1,2, [9,11,5,1])
3706 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3707 self.assertEqual(siRef, si.getValues())
3708 self.assertEqual(idxRef, idx.getValues())
3709 self.assertEqual(cRef, val.getValues())
3711 sla0.replaceSimplePack(11, [300,300]) # 11 is the abs index of pack (superIdx=1,idx=2)
3712 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3713 self.assertEqual(siRef, si.getValues())
3714 self.assertEqual(idxRef2, idx.getValues())
3715 self.assertEqual(cRef2, val.getValues())
3717 sla0.replaceSimplePack(11, [9,11,5,1]) # 11 is the abs index of pack (superIdx=1,idx=2)
3718 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3719 self.assertEqual(siRef, si.getValues())
3720 self.assertEqual(idxRef, idx.getValues())
3721 self.assertEqual(cRef, val.getValues())
3724 def testMEDCouplingUMeshgenerateGraph(self):
3725 # cartesian mesh 3x3
3726 arr=DataArrayDouble(4) ; arr.iota()
3727 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
3728 m=c.buildUnstructured()
3729 graph = m.generateGraph()
3742 self.assertEqual(valRef,list(graph.getValuesArray().getValues()));
3744 indRef=[0, 3, 7, 10, 14, 19, 23, 26, 30, 33]
3745 self.assertEqual(indRef,list(graph.getIndexArray().getValues()));
3748 def testSwig2MEDCouplingCurveLinearReprQuick1(self):
3749 """Non regression test. Error in m.__str__ when m is a MEDCouplingCurveLinear with spaceDim != meshDim."""
3750 arr=DataArrayDouble(12) ; arr.iota() ; arr.rearrange(2)
3751 m=MEDCouplingCurveLinearMesh()
3753 m.setNodeGridStructure([3,2])
3754 m.checkConsistencyLight()
3755 self.assertEqual(m.getMeshDimension(),2)
3756 self.assertEqual(m.getSpaceDimension(),2)
3757 self.assertTrue(not "mismatch" in m.__str__())
3758 self.assertTrue(not "mismatch" in m.__repr__())
3760 arr=DataArrayDouble(18) ; arr.iota() ; arr.rearrange(3)
3762 self.assertEqual(m.getMeshDimension(),2)
3763 self.assertEqual(m.getSpaceDimension(),3)
3764 self.assertTrue(not "mismatch" in m.__str__())
3765 self.assertTrue(not "mismatch" in m.__repr__())# bug was here !
3768 def testSwig2BugComputeOffsets1(self):
3769 """Non regression test. computeOffsetsFull on empty array must return 0."""
3771 d.computeOffsetsFull()
3772 self.assertTrue(d.isEqual(DataArrayInt([0,3])))
3775 self.assertTrue(d.isEqual(DataArrayInt([])))
3777 d.computeOffsetsFull()
3778 self.assertTrue(d.isEqual(DataArrayInt([0]))) # <- bug was here
3781 def testSwig2Cartesianize1(self):
3782 """Test of engine of cartesianize mechanism in medcoupling"""
3784 arr=DataArrayDouble([(3,0.2),(2,1.6)]) ; arr.setInfoOnComponents(["A","BB"])
3785 arr2=arr.cartesianize(AX_CYL)
3786 arr2_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836),(-0.05839904460257763,1.9991472060830102)]) ; arr2_exp.setInfoOnComponents(["A","BB"])
3787 self.assertTrue(arr2_exp.isEqual(arr2,1e-14))
3789 arr3=arr.cartesianize(AX_SPHER)
3790 self.assertTrue(arr2_exp.isEqual(arr3,1e-14))
3792 arr=DataArrayDouble([(3,0.2,7.1),(2,1.6,12.3)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3793 arr4=arr.cartesianize(AX_CYL)
3794 arr4_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836,7.1),(-0.05839904460257763,1.9991472060830102,12.3)]) ; arr4_exp.setInfoOnComponents(["A","BB","CCC"])
3795 self.assertTrue(arr4_exp.isEqual(arr4,1e-14))
3797 arr=DataArrayDouble([(3,0.2,0.5),(2,1.3,5.8)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3798 arr5=arr.cartesianize(AX_SPHER)
3799 arr5_exp=DataArrayDouble([(0.5230462208645272,0.2857414527616764,2.940199733523725),(1.706499157790973,-0.8953424658735863,0.5349976572491747)]) ; arr5_exp.setInfoOnComponents(["A","BB","CCC"])
3800 self.assertTrue(arr5_exp.isEqual(arr5,1e-14))
3802 m=MEDCouplingCMesh() ; m.setName("aa") ; m.setDescription("bbb") ; m.setTime(4.125,5,6) ; m.setTimeUnit("ms")
3803 arrX=DataArrayDouble([0,1,2]) ; arrX.setInfoOnComponent(0,"ccc")
3804 arrY=DataArrayDouble([3,4,5,6]) ; arrY.setInfoOnComponent(0,"dddd")
3805 m.setCoords(arrX,arrY)
3806 m2=m.buildCurveLinear()
3808 self.assertTrue(isinstance(m2,MEDCouplingCurveLinearMesh))
3809 self.assertEqual(m2.getName(),"aa")
3810 self.assertEqual(m2.getDescription(),"bbb")
3811 self.assertEqual(m2.getTime(),[4.125,5,6])
3812 self.assertEqual(m2.getTimeUnit(),"ms")
3813 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"])
3814 self.assertTrue(m2.getCoords().isEqual(m2c_exp,1e-14))
3815 self.assertEqual(m2.getNodeGridStructure(),(3,4))
3818 def testRemoveIdsFromIndexedArrays1(self):
3819 arr=DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,504,505,601,602])
3820 arrI=DataArrayInt([0,3,7,8,8,13,15])
3821 # case where all elts in inputs are in
3822 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3823 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([501,502],arr2,arrI2))
3824 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,503,504,505,601,602])))
3825 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,11,13])))
3826 # case where part of elts in inputs are in
3827 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3828 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([504,507],arr2,arrI2))
3829 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,505,601,602])))
3830 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,12,14])))
3831 # case where no elts in inputs are in
3832 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3833 self.assertTrue(not MEDCouplingUMesh.RemoveIdsFromIndexedArrays([1,5,701],arr2,arrI2))
3834 self.assertTrue(arr2.isEqual(arr))
3835 self.assertTrue(arrI2.isEqual(arrI))
3838 def testFieldIntIsOnStage1(self):
3839 """ My first test with field int."""
3840 m=MEDCouplingCMesh()
3842 arrX=DataArrayDouble([0,1,2,3])
3843 m.setCoords(arrX,arrX)
3844 f=MEDCouplingFieldInt(ON_CELLS)
3846 arr=DataArrayInt(8) ; arr.iota() ;f.setArray(arr)
3847 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
3848 arr=DataArrayInt(9) ; arr.iota() ;f.setArray(arr)
3849 f.checkConsistencyLight()
3851 self.assertEqual(f.getTimeUnit(),"ms")
3854 self.assertEqual(b,5)
3855 self.assertEqual(c,6)
3856 self.assertEqual(a,3.2,12)
3859 def testNoThrowOn1DGTU2UOnNullCells(self):
3860 """ Non regression test : no throw when trying to convert 1DGTUMesh to UMesh on an empty mesh"""
3861 m=MEDCoupling1DGTUMesh("",NORM_POLYGON) ; m.setCoords(DataArrayDouble([],0,3))
3862 m.setNodalConnectivity(DataArrayInt([]),DataArrayInt([0]))
3863 m=m.buildUnstructured()
3866 def testExplodeMeshIntoMicroEdges1(self):
3867 """ test for new functionality MEDCouplingUMesh.explodeMeshIntoMicroEdges"""
3868 m=MEDCouplingUMesh("mesh",2)
3869 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)
3872 # here a mix of quadratic, linear cells. Non conform but conform considering micro edges
3873 m.insertNextCell(NORM_TRI6,[0,4,1,7,8,9])
3874 m.insertNextCell(NORM_TRI6,[1,5,2,10,11,12])
3875 m.insertNextCell(NORM_TRI6,[5,1,4,10,8,13])
3876 m.insertNextCell(NORM_TRI3,[3,4,7])
3877 m.insertNextCell(NORM_TRI3,[3,7,0])
3878 m.insertNextCell(NORM_TRI3,[6,2,11])
3879 m.insertNextCell(NORM_TRI3,[6,11,5])
3880 m.insertNextCell(NORM_TRI3,[6,5,13])
3881 m.insertNextCell(NORM_TRI3,[6,13,4])
3882 edges,d,di,rd,rdi=m.explodeMeshIntoMicroEdges() # <- new method
3883 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])))
3884 self.assertEqual(edges.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer())
3885 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])))
3886 self.assertTrue(di.isEqual(DataArrayInt([0,6,12,18,21,24,27,30,33,36])))
3887 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])))
3888 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])))
3891 def testFieldIntIsOnStage2(self):
3892 """ Very important test to check that isEqual of MEDCouplingFieldInt is OK !"""
3893 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3894 m1=m1.buildUnstructured() ; m1.setName("mesh")
3895 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setMesh(m1)
3896 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"])
3897 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
3899 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3900 m2=m2.buildUnstructured() ; m2.setName("mesh")
3901 f2=MEDCouplingFieldInt(ON_CELLS) ; f2.setMesh(m2)
3902 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"])
3903 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
3905 self.assertTrue(f1.isEqual(f2,1e-12,0.))
3907 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
3908 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
3910 self.assertTrue(f1.isEqual(f2,1e-12,0.))
3913 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
3915 self.assertTrue(f1.isEqual(f2,1e-12,0.))
3917 f1.getArray().setInfoOnComponents(["aa","bbbb"])
3918 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
3919 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
3920 f1.getArray().setInfoOnComponents(["aa","bbb"])
3921 self.assertTrue(f1.isEqual(f2,1e-12,0.))
3924 self.assertTrue(f1.isEqual(f3,1e-12,0.))
3926 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
3927 f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
3928 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"])
3929 f4.setArray(arr4) ; f4.setName("f1")
3930 self.assertEqual(f1.isEqual(f4,1e-12,0.),expected)
3934 def testDADSymmetry1(self):
3935 arr=DataArrayDouble([2,3,4],1,3)
3936 res=arr.symmetry3DPlane([0.,0.,0.],[0.,0.,2.])
3937 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-4],1,3),1e-14))
3939 res=arr.symmetry3DPlane([-1000,100,-1],[0.,0.,2.])
3940 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-6],1,3),1e-14))
3942 res=arr.symmetry3DPlane([0,0,0],[1.,0.,0.])
3943 self.assertTrue(res.isEqual(DataArrayDouble([-2,3,4],1,3),1e-14))
3945 res=arr.symmetry3DPlane([0,0,0],[0.,1.,0.])
3946 self.assertTrue(res.isEqual(DataArrayDouble([2,-3,4],1,3),1e-14))
3948 res=arr.symmetry3DPlane([0,0,0],[-1.,1.,0.])
3949 self.assertTrue(res.isEqual(DataArrayDouble([3,2,4],1,3),1e-14))
3952 a=DataArrayDouble(DataArrayDouble.GiveBaseForPlane(plane))
3953 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[1]).magnitude()[0],0.,13)
3954 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[2]).magnitude()[0],0.,13)
3955 self.assertAlmostEqual(DataArrayDouble.Dot(a[1],a[2]).magnitude()[0],0.,13)
3956 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]])
3957 m=MEDCouplingUMesh("",2) ; m.setCoords(coo) ; m.allocateCells()
3958 m.insertNextCell(NORM_QUAD4,[0,1,2,3])
3959 d,_=m.distanceToPoint(arr)
3960 res=arr.symmetry3DPlane([0.,0.,0.],plane) #
3961 d2,_=m.distanceToPoint(res)
3962 self.assertAlmostEqual(abs(d-d2),0.,12)
3963 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[0])[0],0.,12)
3964 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[1])[0],0.,12)
3965 self.assertAlmostEqual((res-arr).magnitude()[0]-2*d,0.,12)
3966 self.assertTrue(res.isEqual(DataArrayDouble([2.666666666666667,3.5333333333333333,3.0666666666666666],1,3),1e-12))
3969 def testExtrudedMeshBuildUnstructured1(self):
3970 """ 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"""
3971 arr=DataArrayDouble(11) ; arr.iota()
3972 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3973 m=m.buildUnstructured()
3974 faces=MEDCouplingCMesh() ; faces.setCoords(arr,arr)
3975 faces=faces.buildUnstructured()
3976 faces.setCoords(m.getCoords())
3977 em=MEDCouplingMappedExtrudedMesh(m,faces,0)
3978 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12))
3979 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
3980 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
3983 def testExtrudedMeshFromCMesh1(self):
3984 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
3985 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ)
3986 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
3987 self.assertTrue(ex.buildUnstructured().isEqual(mesh3D.buildUnstructured(),1e-12))
3990 def testCylSpherPolarCartFiesta(self):
3991 """Test to check new capabilities from to cyl spher polar cart conversions"""
3992 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)])
3993 self.assertTrue(da0.fromCartToCyl().fromCylToCart().isEqual(da0,1e-12))
3994 self.assertTrue(da0.fromCartToSpher().fromSpherToCart().isEqual(da0,1e-12))
3996 self.assertTrue(da1.fromCartToPolar().fromPolarToCart().isEqual(da1,1e-12))
4002 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)])
4003 da4=da0.fromCartToCylGiven(da2,pt,vect)
4004 self.assertTrue(da4.isEqual(expected,1e-12))
4006 m=MEDCouplingUMesh.Build0DMeshFromCoords(da2)
4007 self.assertEqual(m.getDirectAccessOfCoordsArrIfInStructure().getHiddenCppPointer(),da2.getHiddenCppPointer())
4008 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setArray(da0)
4009 f=f0.computeVectorFieldCyl(pt,vect)
4010 f.checkConsistencyLight()
4011 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
4012 self.assertTrue(f.getArray().isEqual(expected,1e-12))
4015 def testDAIIndicesOfSubPart(self):
4016 a=DataArrayInt([9,10,0,6,4,11,3,8])
4017 b=DataArrayInt([6,0,11,8])
4018 c=a.indicesOfSubPart(b)
4019 self.assertTrue(c.isEqual(DataArrayInt([3,2,5,7])))
4021 d=DataArrayInt([9,10,0,6,4,11,0,8])
4022 self.assertRaises(InterpKernelException,d.indicesOfSubPart,b) # 0 appears twice in the d array
4023 f=DataArrayInt([6,0,11,8,12])
4024 self.assertRaises(InterpKernelException,a.indicesOfSubPart,f) # 12 in f does not exist in a
4027 def testDACirPermAndRev1(self):
4028 d=DataArrayInt([1,2,3,4,5,6])
4029 d2=d.deepCopy() ; d2.circularPermutation(1)
4030 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4031 d2=d.deepCopy() ; d2.circularPermutation()
4032 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4033 d2=d.deepCopy() ; d2.circularPermutation(2)
4034 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4035 d2=d.deepCopy() ; d2.circularPermutation(3)
4036 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4037 d2=d.deepCopy() ; d2.circularPermutation(4)
4038 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4039 d2=d.deepCopy() ; d2.circularPermutation(5)
4040 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4041 d2=d.deepCopy() ; d2.circularPermutation(6)
4042 self.assertTrue(d2.isEqual(d))
4043 d2=d.deepCopy() ; d2.circularPermutation(7)
4044 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4045 d2=d.deepCopy() ; d2.circularPermutation(-1)
4046 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4047 d2=d.deepCopy() ; d2.circularPermutation(-2)
4048 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4049 d2=d.deepCopy() ; d2.circularPermutation(-3)
4050 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4051 d2=d.deepCopy() ; d2.circularPermutation(-4)
4052 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4053 d2=d.deepCopy() ; d2.circularPermutation(-5)
4054 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4055 d2=d.deepCopy() ; d2.circularPermutation(-6)
4056 self.assertTrue(d2.isEqual(d))
4057 d2=d.deepCopy() ; d2.circularPermutation(-7)
4058 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4060 d=DataArrayInt([1,2,3,4,5,6],2,3)
4061 d2=d.deepCopy() ; d2.circularPermutationPerTuple(0)
4062 self.assertTrue(d2.isEqual(d))
4063 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4064 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4065 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4066 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4067 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4068 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4069 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4070 self.assertTrue(d2.isEqual(d))
4071 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4072 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4073 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4074 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4075 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4076 self.assertTrue(d2.isEqual(d))
4077 d.setInfoOnComponents(["a","b","c"])
4078 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4079 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4080 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4081 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4082 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4083 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4084 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4085 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4086 d2=d.deepCopy() ; d2.circularPermutationPerTuple(4)
4087 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4088 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4089 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4090 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4091 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4092 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4093 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4094 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-4)
4095 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4097 d2=d.deepCopy() ; d2.reversePerTuple()
4098 d3Exp=DataArrayInt([3,2,1,6,5,4],2,3) ; d3Exp.setInfoOnComponents(["c","b","a"])
4099 self.assertTrue(d3Exp.isEqual(d2))
4102 def testDAExplodeComponents1(self):
4103 d=DataArrayDouble([(1,2),(3,4),(5,6)])
4105 d.setInfoOnComponents(["a","b"])
4106 d2=d.explodeComponents()
4107 self.assertEqual(len(d2),2)
4109 d3=DataArrayDouble([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4110 self.assertTrue(d3.isEqual(d2[0],1e-14))
4111 d4=DataArrayDouble([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4112 self.assertTrue(d4.isEqual(d2[1],1e-14))
4114 d=DataArrayInt([(1,2),(3,4),(5,6)])
4116 d.setInfoOnComponents(["a","b"])
4117 d2=d.explodeComponents()
4118 self.assertEqual(len(d2),2)
4120 d3=DataArrayInt([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4121 self.assertTrue(d3.isEqual(d2[0]))
4122 d4=DataArrayInt([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4123 self.assertTrue(d4.isEqual(d2[1]))
4126 def testVoronoi2D_1(self):
4127 """ Check of voronize on 2D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4128 tmp=MEDCouplingCMesh("mesh")
4129 arr=DataArrayDouble(5) ; arr.iota()
4130 tmp.setCoords(arr,arr)
4131 tmp=tmp.build1SGTUnstructured()
4132 conn=tmp.getNodalConnectivity()
4134 conn.reversePerTuple()
4135 conn.circularPermutationPerTuple(2)
4137 coo=tmp.getCoords().deepCopy()
4138 coo.circularPermutationPerTuple(2) ; coo*=0.1
4140 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4142 coo2.circularPermutationPerTuple(2)
4143 tmp.getCoords()[:]+=coo2*coo
4145 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4146 field.setName("MyFieldPG") ; field.setMesh(tmp)
4147 field.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.8,-0.8, 0.8,0.8, -0.8,0.8, -0.8,-0.8, 0.,0., 0.2,0.2, 0.1,0.3],[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
4148 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4150 field.checkConsistencyLight()
4152 fieldOnCell=field.voronoize(1e-12) # hot point
4153 fieldOnCell.checkConsistencyLight()
4154 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),112)
4155 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),256)
4156 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4157 meaRef=field.getMesh().getMeasureField(True).getArray()
4158 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4159 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4160 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4162 mea2=mea.sumPerTuple()
4163 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4166 def testVoronoi2D_2(self):
4167 """More aggressive 2D test. No warping here. To check data"""
4168 tmp=MEDCouplingCMesh("mesh")
4169 arr=DataArrayDouble([-1.,1.])
4170 tmp.setCoords(arr,arr)
4171 tmp=tmp.buildUnstructured()
4172 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4173 field.setName("MyFieldPG") ; field.setMesh(tmp)
4174 field.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.8,-0.8, 0.8,0.8, -0.8,0.8, -0.8,-0.8, 0.,0., 0.2,0.2, 0.1,0.3],[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
4175 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4177 field.checkConsistencyLight()
4179 fieldOnCell=field.voronoize(1e-12) # hot point
4180 fieldOnCell.checkConsistencyLight()
4181 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4182 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),16)
4183 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4184 meaRef=DataArrayDouble([0.65,0.4710714285714285,0.59875,0.68,0.73875,0.4,0.46142857142857235])
4185 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4186 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4187 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4188 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4190 gsPt=field.getLocalizationOfDiscr()
4191 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4192 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4193 self.assertTrue(b.isIota(8))
4195 self.assertEqual(fieldOnCell.getMesh().buildDescendingConnectivity()[0].getNumberOfCells(),22)# last little test to reduce chance of errors. For humans there 21 but last tiny edge is split into 2 subedges due to alg
4198 def testVoronoi3D_1(self):
4199 """ Check of voronize on 3D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4200 tmp=MEDCouplingCMesh("mesh")
4201 arr=DataArrayDouble(5) ; arr.iota()
4202 tmp.setCoords(arr,arr)
4203 tmp=tmp.build1SGTUnstructured()
4204 conn=tmp.getNodalConnectivity()
4206 conn.reversePerTuple()
4207 conn.circularPermutationPerTuple(2)
4209 coo=tmp.getCoords().deepCopy()
4210 coo.circularPermutationPerTuple(2) ; coo*=0.1
4212 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4214 coo2.circularPermutationPerTuple(2)
4215 tmp.getCoords()[:]+=coo2*coo
4217 tmp.changeSpaceDimension(3,0.)
4219 arrZ=DataArrayDouble(5) ; arrZ.iota()
4220 mz=MEDCouplingCMesh() ; mz.setCoords(arrZ) ; mz=mz.buildUnstructured()
4221 mz.changeSpaceDimension(3,0.)
4222 mz.getCoords().circularPermutationPerTuple(1)
4223 tmp=tmp.buildUnstructured().buildExtrudedMesh(mz,0)
4225 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4226 field.setName("MyFieldPG") ; field.setMesh(tmp)
4227 field.setGaussLocalizationOnType(NORM_HEXA8,[-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.8,-0.8,0., 0.8,0.8,0., -0.8,0.8,0., -0.8,-0.8,0., 0.,0.,0., 0.2,0.2,0., 0.1,0.3,0.],[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
4228 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4230 field.checkConsistencyLight()
4232 fieldOnCell=field.voronoize(1e-12) # hot point
4233 fieldOnCell.checkConsistencyLight()
4234 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4235 meaRef=field.getMesh().getMeasureField(True).getArray()
4236 mea=fieldOnCell.getMesh().getMeasureField(False).getArray()
4237 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4238 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4240 mea2=mea.sumPerTuple()
4244 self.assertEqual(len(delta.findIdsNotInRange(0,1e-2)),0) # 1e-2 because hexa8 are warped !
4247 def testVoronoi3D_2(self):
4248 """More aggressive 3D test. No warping here. To check data"""
4249 tmp=MEDCouplingCMesh("mesh")
4250 arr=DataArrayDouble([-1.,1.])
4251 tmp.setCoords(arr,arr,arr)
4252 tmp=tmp.buildUnstructured()
4253 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4254 field.setName("MyFieldPG") ; field.setMesh(tmp)
4255 field.setGaussLocalizationOnType(NORM_HEXA8,[-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.8,-0.8,0., 0.8,0.8,0., -0.8,0.8,0., -0.8,-0.8,0., 0.,0.,0., 0.2,0.2,0., 0.1,0.3,0.],[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
4256 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4258 field.checkConsistencyLight()
4260 fieldOnCell=field.voronoize(1e-12) # hot point
4261 fieldOnCell.checkConsistencyLight()
4262 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4263 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),34)
4264 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4265 meaRef=DataArrayDouble([1.3,0.9421428571428572,1.1975,1.36,1.4775,0.8,0.922857142857143])
4266 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4267 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4268 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4269 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4271 gsPt=field.getLocalizationOfDiscr()
4272 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4273 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4274 self.assertTrue(b.isIota(8))
4276 self.assertEqual(fieldOnCell.getMesh().buildDescendingConnectivity()[0].getNumberOfCells(),2*7+21)
4279 def testVoronoi3DSurf_1(self):
4280 tmp=MEDCouplingCMesh("mesh")
4281 arr=DataArrayDouble(5) ; arr.iota()
4282 tmp.setCoords(arr,arr)
4283 tmp=tmp.build1SGTUnstructured()
4284 conn=tmp.getNodalConnectivity()
4286 conn.reversePerTuple()
4287 conn.circularPermutationPerTuple(2)
4289 coo=tmp.getCoords().deepCopy()
4290 coo.circularPermutationPerTuple(2) ; coo*=0.1
4292 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4294 coo2.circularPermutationPerTuple(2)
4295 tmp.getCoords()[:]+=coo2*coo
4297 tmp.changeSpaceDimension(3,0.) # force 3D surf
4298 tmp.rotate([0,0,0],[1,0,0],pi/3) # force 3D surf
4300 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4301 field.setName("MyFieldPG") ; field.setMesh(tmp)
4302 field.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.8,-0.8, 0.8,0.8, -0.8,0.8, -0.8,-0.8, 0.,0., 0.2,0.2, 0.1,0.3],[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
4303 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4305 field.checkConsistencyLight()
4307 fieldOnCell=field.voronoize(1e-12);
4308 fieldOnCell.checkConsistencyLight()
4309 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4310 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),2)
4311 self.assertEqual(field.getMesh().getSpaceDimension(),fieldOnCell.getMesh().getSpaceDimension())
4312 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4313 meaRef=field.getMesh().getMeasureField(True).getArray()
4314 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4315 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4316 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4318 mea2=mea.sumPerTuple()
4319 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4322 def testVoronoi1D_1(self):
4323 tmp=MEDCouplingCMesh("mesh")
4324 arr=DataArrayDouble(5) ; arr.iota()
4326 tmp=tmp.build1SGTUnstructured()
4328 tmp.changeSpaceDimension(2,0.)
4329 tmp.getCoords()[:,1]=pi/(len(arr)-1)*tmp.getCoords()[:,0]
4330 tmp.getCoords()[:,0]=1.
4331 tmp.setCoords(tmp.getCoords().fromPolarToCart())
4332 tmp.changeSpaceDimension(3,1.)
4334 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4335 field.setName("MyFieldPG") ; field.setMesh(tmp)
4336 field.setGaussLocalizationOnType(NORM_SEG2,[-1.,1.],[-0.9,-0.8,0.2,0.4,0.5,0.9],[0.1,0.1,0.1,0.1,0.1,0.5])
4337 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4339 field.checkConsistencyLight()
4341 fieldOnCell=field.voronoize(1e-12);
4342 fieldOnCell.checkConsistencyLight()
4343 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4344 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),1)
4345 assert(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4346 meaRef=field.getMesh().getMeasureField(True).getArray()
4347 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4348 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4349 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),6)
4351 mea2=mea.sumPerTuple()
4352 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4355 def testFieldDoubleConvertToLinear1(self):
4356 da=DataArrayDouble([0,0, 1,0, 2,0, 3,0, 0.5,0, 1.5,0, 2.5,0, 0,0.5, 0.5,0.5, 1, 0.5, 1.5,0.5, 2,0.5, 3,0.5, 0,1, 1,1, 2,1, 2.5,1, 3,1],18,2)
4357 da.setInfoOnComponents(["g","h"])
4358 m=MEDCouplingUMesh("mesh",2)
4361 m.insertNextCell(NORM_TRI6,[0,1,13,4,9,7])
4362 m.insertNextCell(NORM_TRI6,[1,2,14,5,10,9])
4363 m.insertNextCell(NORM_QUAD8,[2,3,17,15,6,12,16,11])
4364 refPtr=m.getHiddenCppPointer()
4365 f=MEDCouplingFieldDouble(ON_NODES)
4368 arr=DataArrayDouble(18*2) ; arr.iota()
4370 arr.setInfoOnComponents(["bb","ccc"])
4373 f.checkConsistencyLight()
4375 f1=f.convertQuadraticCellsToLinear()
4376 self.assertTrue(f.getMesh().getHiddenCppPointer(),refPtr)
4377 self.assertTrue(f1.getMesh().getHiddenCppPointer()!=refPtr)
4378 f1.checkConsistencyLight()
4379 self.assertEqual(f1.getName(),"aa")
4380 self.assertEqual(f1.getTypeOfField(),ON_NODES)
4381 da0=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(0,1),(1,1),(2,1),(3,1)])
4382 da0.setInfoOnComponents(["g","h"])
4383 self.assertTrue(f1.getMesh().getCoords().isEqual(da0,1e-12))
4384 self.assertTrue(f1.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4385 self.assertTrue(f1.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4386 da2=DataArrayDouble([(0,1),(2,3),(4,5),(6,7),(26,27),(28,29),(30,31),(34,35)])
4387 da2.setInfoOnComponents(["bb","ccc"])
4388 self.assertTrue(f1.getArray().isEqual(da2,1e-12))
4389 self.assertEqual(f1.getTime(),[0.5,2,3])
4391 f2=MEDCouplingFieldDouble(ON_CELLS)
4394 arr=DataArrayDouble(3*2) ; arr.iota()
4396 arr.setInfoOnComponents(["bb","ccc"])
4399 f2.checkConsistencyLight()
4400 f3=f2.convertQuadraticCellsToLinear()
4401 self.assertEqual(f2.getMesh().getHiddenCppPointer(),refPtr)
4402 f3.checkConsistencyLight()
4403 self.assertTrue(f3.getMesh().getHiddenCppPointer()!=refPtr)
4404 self.assertTrue(f3.getMesh().getCoords().isEqual(da0,1e-12))
4405 self.assertTrue(f3.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4406 self.assertTrue(f3.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4407 self.assertEqual(f2.getArray().getHiddenCppPointer(),f3.getArray().getHiddenCppPointer())
4408 self.assertEqual(f3.getTime(),[0.5,2,3])
4411 def testBuild1DMeshFromCoords1(self):
4412 da=DataArrayDouble([(3,4),(5,6),(7,8)])
4415 m=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4416 m.checkConsistencyLight()
4417 self.assertEqual(da0.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
4418 self.assertTrue(da.isEqual(da0,1e-12))
4419 self.assertEqual(m.getName(),da.getName())
4420 self.assertEqual(m.getMeshDimension(),1)
4421 self.assertTrue(isinstance(m,MEDCouplingUMesh))
4422 m1=MEDCoupling1SGTUMesh(m)
4423 m1.checkConsistencyLight()
4424 self.assertTrue(m1.getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2])))
4427 m2=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4428 m2.checkConsistencyLight()
4429 self.assertEqual(da0.getHiddenCppPointer(),m2.getCoords().getHiddenCppPointer())
4430 self.assertEqual(m2.getName(),"Mesh")
4433 def testVoronoi3D_3(self):
4434 """Non regression test to check MEDCouplingUMesh::clipSingle3DCellByPlane"""
4435 coo=DataArrayDouble([0.,1.,0.,0.,0.,0.,0.,0.,1.,1.,0.,0.],4,3)
4436 m=MEDCouplingUMesh("mesh",3)
4437 m.setCoords(coo) ; m.allocateCells()
4438 m.insertNextCell(NORM_TETRA4,[0,2,3,1])
4439 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4440 f.setMesh(m) ; f.setName("field")
4441 f.setGaussLocalizationOnType(NORM_TETRA4,[0.,1.,0.,0.,0.,0.,0.,0.,1.,1.,0.,0.],[0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.1381966011250105], [0.041667,0.041667,0.041667,0.041667])
4442 f.setArray(DataArrayDouble([0,1,2,3]))
4443 f3=f.voronoize(1e-12)
4444 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4445 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4446 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4449 def testVoronoi3D_4(self):
4450 """Idem testVoronoi3D_3 except that here quadratic cells are considered"""
4451 coo=DataArrayDouble([0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.5,0.0,0.5,0.0,0.0,0.5,0.0,0.5],10,3)
4452 m=MEDCouplingUMesh("mesh",3)
4453 m.setCoords(coo) ; m.allocateCells()
4454 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4455 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4456 f.setMesh(m) ; f.setName("field")
4457 f.setGaussLocalizationOnType(NORM_TETRA10,[0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.5,0.0,0.5,0.0,0.0,0.5,0.0,0.5],[0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.1381966011250105], [0.041667,0.041667,0.041667,0.041667])
4458 f.setArray(DataArrayDouble([0,1,2,3]))
4459 f3=f.voronoize(1e-12)
4460 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4461 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4462 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4465 def testVoronoi3D_5(self):
4466 """ Cell 0 of Barreau_Elga_V11.rmed and sslv07b.rmed. HEXA8 cut regularly into 8 parts"""
4467 coo=DataArrayDouble([(0.024,0.024,1.2),(0.024,0.048,1.2),(0.048,0.024,1.2),(0.048,0.048,1.2),(0.024,0.024,1.6),(0.024,0.048,1.6),(0.048,0.024,1.6),(0.048,0.048,1.6)])
4468 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4469 m.insertNextCell(NORM_HEXA8,[0,2,6,4,1,3,7,5])
4470 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4471 f.setGaussLocalizationOnType(NORM_HEXA8,[-1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0],[-0.577350269189626, -0.577350269189626, -0.577350269189626, -0.577350269189626, -0.577350269189626, 0.577350269189626, -0.577350269189626, 0.577350269189626, -0.577350269189626, -0.577350269189626, 0.577350269189626, 0.577350269189626, 0.577350269189626, -0.577350269189626, -0.577350269189626, 0.577350269189626, -0.577350269189626, 0.577350269189626, 0.577350269189626, 0.577350269189626, -0.577350269189626, 0.577350269189626, 0.577350269189626, 0.577350269189626],[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])
4472 arr=DataArrayDouble(8) ; arr.iota() ; f.setArray(arr)
4473 f.checkConsistencyLight()
4475 vol=f.getMesh().getMeasureField(False).getIJ(0,0)
4476 f2=f.voronoize(1e-12)
4477 f2.checkConsistencyLight()
4478 self.assertEqual(f2.getNumberOfTuples(),8)
4480 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isUniform(volRef,1e-12))
4483 def testVoronoi3D_6(self):
4484 """ Cell 0 of brokenshire.med (and pace.med). TETRA10 split into 4 parts"""
4485 coo=DataArrayDouble([(50.,-50.,200.0),(50.0,-30.,200.0),(30.,-50.,200.0),(50.,-50.,180.0),(50.,-40.,200.0),(40.,-50.,200.0),(50.,-50.,190.0),(40.,-40.,200.0),(50.,-40.,190.0),(40.,-50.,190.0)])
4486 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4487 m.insertNextCell(NORM_TETRA10,[2,0,1,3,5,4,7,9,6,8])
4488 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4489 f.setGaussLocalizationOnType(NORM_TETRA10,[0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.5, 0.5, 0.5, 0.5, 0, 0.5, 0, 0, 0.5, 0, 0.5],[0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105, 0.1381966011250105],[0.041666666666666664, 0.041666666666666664, 0.041666666666666664, 0.041666666666666664])
4490 arr=DataArrayDouble(4) ; arr.iota() ; f.setArray(arr)
4491 f.checkConsistencyLight()
4492 f2=f.voronoize(1e-12)
4493 f2.checkConsistencyLight()
4494 self.assertEqual(f2.getNumberOfTuples(),4)
4495 arr=f2.getMesh().getMeasureField(False).getArray()
4496 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(DataArrayDouble([378.0546928833331, 318.42621348333586, 318.4262134833361, 318.4262134833278]),1e-6))
4499 def testVoronoi3D_7(self):
4500 """ sslv07a.rmed. HEXA20 split into 27 parts """
4501 coo=DataArrayDouble([(-0.5,-0.5,0.0),(-0.25,-0.5,0.0),(0.0,-0.5,0.0),(-0.5,0.0,0.0),(-0.5,-0.25,0.0),(0.0,0.0,0.0),(0.0,-0.25,0.0),(-0.25,0.0,0.0),(-0.5,-0.5,1.0),(-0.25,-0.5,1.0),(0.0,-0.5,1.0),(0.0,-0.25,1.0),(0.0,0.0,1.0),(-0.25,0.0,1.0),(-0.5,0.0,1.0),(-0.5,-0.25,1.0),(-0.5,-0.5,0.5),(0.0,-0.5,0.5),(0.0,0.0,0.5),(-0.5,0.0,0.5)])
4502 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4503 m.insertNextCell(NORM_HEXA20,[0,3,5,2,8,14,12,10,4,7,6,1,15,13,11,9,16,19,18,17])
4504 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4505 f.setGaussLocalizationOnType(NORM_HEXA20,
4506 [-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],
4507 [-0.774597,-0.774597,-0.774597,-0.774597,-0.774597,0,-0.774597,-0.774597,0.774597,-0.774597,0,-0.774597,-0.774597,0,0,-0.774597,0,0.774597,-0.774597,0.774597,-0.774597,-0.774597,0.774597,0,-0.774597,0.774597,0.774597,0,-0.774597,-0.774597,0,-0.774597,0,0,-0.774597,0.774597,0,0,-0.774597,0,0,0,0,0,0.774597,0,0.774597,-0.774597,0,0.774597,0,0,0.774597,0.774597,0.774597,-0.774597,-0.774597,0.774597,-0.774597,0,0.774597,-0.774597,0.774597,0.774597,0,-0.774597,0.774597,0,0,0.774597,0,0.774597,0.774597,0.774597,-0.774597,0.774597,0.774597,0,0.774597,0.774597,0.774597],
4508 [0.171468,0.274348,0.171468,0.274348,0.438957,0.274348,0.171468,0.274348,0.171468,0.274348,0.438957,0.274348,0.438957,0.702332,0.438957,0.274348,0.438957,0.274348,0.171468,0.274348,0.171468,0.274348,0.438957,0.274348,0.171468,0.274348,0.171468])
4509 arr=DataArrayDouble(27) ; arr.iota() ; f.setArray(arr)
4510 f.checkConsistencyLight()
4511 f2=f.voronoize(1e-12)
4512 a=0.007187820185770747 ; b=0.0090870678008658 ; c=0.011488156225861077 ; d=0.014523687548277797
4513 ref=DataArrayDouble(27) ; ref[::2]=a ; ref[1::2]=b
4514 ref[[4,10,12,14,16,22]]=c ; ref[13]=d # 6 cells 4,10,12,14,16,22 are the 6 cells boarding the most inner cell 13
4516 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-7))
4519 def testConvertQuadToLin4Gauss_1(self):
4520 coo=DataArrayDouble([0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.5,0.0,0.5,0.0,0.0,0.5,0.0,0.5],10,3)
4521 m=MEDCouplingUMesh("mesh",3)
4522 m.setCoords(coo) ; m.allocateCells()
4523 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4524 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4525 f.setMesh(m) ; f.setName("field")
4526 aaaa=[0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.5,0.0,0.5,0.0,0.0,0.5,0.0,0.5]
4527 bbbb=[0.1381966011250105,0.1381966011250105,0.1381966011250105,0.1381966011250105,0.1381966011250105,0.5854101966249685,0.1381966011250105,0.5854101966249685,0.1381966011250105,0.5854101966249685,0.1381966011250105,0.1381966011250105]
4528 cccc=[0.041667,0.041667,0.041667,0.041667]
4529 f.setGaussLocalizationOnType(NORM_TETRA10,aaaa,bbbb,cccc)
4530 f.setArray(DataArrayDouble([0,1,2,3]))
4533 mcpy=m.deepCopy() ; mcpy.convertQuadraticCellsToLinear() ; mcpy.zipCoords()
4535 f2=f.convertQuadraticCellsToLinear()
4536 f2.checkConsistencyLight()
4537 self.assertTrue(f2.getMesh().isEqual(mcpy,1e-12))
4538 self.assertTrue(f2.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4539 self.assertEqual(f2.getNbOfGaussLocalization(),1)
4540 gl=f2.getGaussLocalization(0)
4541 self.assertEqual(gl.getType(),NORM_TETRA4)
4542 self.assertTrue(DataArrayDouble(gl.getRefCoords()).isEqual(DataArrayDouble([0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0]),1e-12))
4543 self.assertTrue(DataArrayDouble(gl.getGaussCoords()).isEqual(DataArrayDouble(bbbb),1e-12))
4544 self.assertTrue(DataArrayDouble(gl.getWeights()).isEqual(DataArrayDouble(cccc),1e-12))
4545 self.assertEqual(f2.getName(),"field")
4546 self.assertEqual(f2.getTime(),[1.,2,3])
4549 def testBugInComputationOfEqOfPlane1(self):
4550 coo=DataArrayDouble([-1.0, 1.0, -0.3872983455657959, -1.0, 1.0, 0.3872983455657959, -1.0, 1.0, 0.693649172782898, 1.0, 1.0, 0.693649172782898, 1.0, 1.0, 0.3872983455657959, 1.0, 1.0, -0.3872983455657959],6,3)
4551 m=MEDCouplingUMesh("",2)
4554 m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
4555 self.assertTrue(m.computePlaneEquationOf3DFaces().isEqual(DataArrayDouble([0,1,0,-1],1,4),1e-12))
4560 if __name__ == '__main__':