1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2023 CEA, EDF
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
22 from medcoupling import *
25 from math import pi,e,sqrt,cos,sin
26 from datetime import datetime
27 from MEDCouplingDataForTest import MEDCouplingDataForTest
28 import rlcompleter,readline # this line has to be here, to ensure a usability of MEDCoupling/MEDLoader. B4 removing it please notify to anthony.geay@edf.fr
30 class MEDCouplingBasicsTest5(unittest.TestCase):
31 def testSwig2FieldDoubleBuildSubPartRange1(self):
33 m=MEDCouplingDataForTest.build2DTargetMesh_1()
34 f=MEDCouplingFieldDouble(ON_CELLS)
36 arr = DataArrayDouble(5, 2) ; arr[:, 0] = list(range(7, 12)) ; arr[:, 1] = 100 + arr[:, 0]
38 f.checkConsistencyLight()
40 ff.checkConsistencyLight()
41 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
42 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
43 self.assertTrue(2,ff.getMesh().getNumberOfCells())
44 self.assertTrue(ff.getArray().isEqual(arr[[1,3]],1e-12))
46 a,b=f.buildSubMeshDataRange(2,5,1)
47 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
48 self.assertEqual(b,slice(2,5,1))
50 ff.checkConsistencyLight()
51 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
52 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
53 self.assertTrue(3,ff.getMesh().getNumberOfCells())
54 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4]],1e-12))
57 ff.checkConsistencyLight()
58 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
59 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
60 self.assertTrue(3,ff.getMesh().getNumberOfCells())
61 self.assertTrue(ff.getArray().isEqual(arr[[3,2,1]],1e-12))
62 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[3,2,1],1],1e-12))
64 f=MEDCouplingFieldDouble(ON_NODES)
66 arr = DataArrayDouble(9, 2) ; arr[:, 0] = list(range(7, 16)) ; arr[:, 1] = 100 + arr[:, 0]
68 f.checkConsistencyLight()
70 ff.checkConsistencyLight()
71 self.assertTrue((m.buildPartOfMySelf([1,3],False)).isEqual(ff.getMesh(),1e-12))
72 self.assertTrue(6,ff.getMesh().getNumberOfNodes())
73 self.assertTrue(2,ff.getMesh().getNumberOfCells())
74 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,6,7]],1e-12))
76 m2=m.buildPartRange(2,5,1)
77 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(m2,1e-12))
78 m2,b=m.buildPartRangeAndReduceNodes(2,5,1)
79 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(m2,1e-12))
80 self.assertTrue(b.isEqual(DataArrayInt([-1,-1,0,1,2,3,4,5,6])))
81 a,b=f.buildSubMeshDataRange(2,5,1)
82 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(a,1e-12))
83 self.assertTrue(b.isEqual(DataArrayInt([2,3,4,5,6,7,8])))
85 ff.checkConsistencyLight()
86 self.assertTrue((m.buildPartOfMySelf([2,3,4],False)).isEqual(ff.getMesh(),1e-12))
87 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
88 self.assertTrue(3,ff.getMesh().getNumberOfCells())
89 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,6,7,8]],1e-12))
92 ff.checkConsistencyLight()
93 self.assertTrue((m.buildPartOfMySelf([3,2,1],False)).isEqual(ff.getMesh(),1e-12))
94 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
95 self.assertTrue(3,ff.getMesh().getNumberOfCells())
96 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,5,6,7]],1e-12))
97 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[1,2,3,4,5,6,7],1],1e-12))
99 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
101 arr = DataArrayDouble(18, 2) ; arr[:, 0] = list(range(7, 25)) ; arr[:, 1] = 100 + arr[:, 0]
103 f.checkConsistencyLight()
105 ff.checkConsistencyLight()
106 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
107 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
108 self.assertTrue(2,ff.getMesh().getNumberOfCells())
109 self.assertTrue(ff.getArray().isEqual(arr[[4,5,6,10,11,12,13]],1e-12))
111 a,b=f.buildSubMeshDataRange(2,5,1)
112 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
113 self.assertEqual(b,slice(7,18,1))
115 ff.checkConsistencyLight()
116 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
117 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
118 self.assertTrue(3,ff.getMesh().getNumberOfCells())
119 self.assertTrue(ff.getArray().isEqual(arr[[7,8,9,10,11,12,13,14,15,16,17]],1e-12))
122 ff.checkConsistencyLight()
123 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
124 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
125 self.assertTrue(3,ff.getMesh().getNumberOfCells())
126 self.assertTrue(ff.getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6]],1e-12))
127 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6],1],1e-12))
129 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
131 f.setGaussLocalizationOnCells([0,4],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2],[0.2,0.8]);
132 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]);
133 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]);
134 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]);
135 arr = DataArrayDouble(16, 2) ; arr[:, 0] = list(range(7, 23)) ; arr[:, 1] = 100 + arr[:, 0]
137 f.checkConsistencyLight()
139 ff.checkConsistencyLight()
140 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
141 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
142 self.assertTrue(2,ff.getMesh().getNumberOfCells())
143 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,11,12,13]],1e-12))
145 a,b=f.buildSubMeshDataRange(2,5,1)
146 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
147 self.assertEqual(b,slice(6,16,1))
149 ff.checkConsistencyLight()
150 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
151 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
152 self.assertTrue(3,ff.getMesh().getNumberOfCells())
153 self.assertTrue(ff.getArray().isEqual(arr[[6,7,8,9,10,11,12,13,14,15]],1e-12))
156 ff.checkConsistencyLight()
157 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
158 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
159 self.assertTrue(3,ff.getMesh().getNumberOfCells())
160 self.assertTrue(ff.getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5]],1e-12))
161 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))
164 def testSwig2FieldDoubleApplyFuncBug1(self):
165 f=MEDCouplingFieldDouble(ON_CELLS)
166 f.setMesh(MEDCouplingDataForTest.build2DTargetMesh_1())
168 f.checkConsistencyLight()
169 self.assertEqual(3,f.getArray().getNumberOfComponents())
170 f.getArray().rearrange(1)
171 self.assertTrue(f.getArray().isUniform(700.,1e-10))
172 f.getArray().rearrange(3)
173 f.checkConsistencyLight()
175 f.checkConsistencyLight()
176 self.assertEqual(4,f.getArray().getNumberOfComponents())
177 f.getArray().rearrange(1)
178 self.assertTrue(f.getArray().isUniform(800.,1e-10))
179 f.getArray().rearrange(4)
180 f.checkConsistencyLight()
183 def testSwig2ComputeTupleIdsNearTupleBug1(self):
184 coords=[1.1,0.0, 1.1,0.0 ];
185 coordsArr=DataArrayDouble(coords,2,2);
186 mesh=MEDCouplingUMesh();
187 mesh.setCoords(coordsArr);
189 c,cI=mesh.getNodeIdsNearPoints(points,0.00185);
190 self.assertTrue(c.isEqual(DataArrayInt([])))
191 self.assertTrue(cI.isEqual(DataArrayInt([0,0])))
192 c,cI=mesh.getNodeIdsNearPoints(points,0.00200000000000001);
193 self.assertTrue(c.isEqual(DataArrayInt([0,1])))
194 self.assertTrue(cI.isEqual(DataArrayInt([0,2])))
197 def testSwig2NonRegressionBugChangeUnderlyingWithZeroCells(self):
198 coords1=[0.,1.,2.,3.]
199 coords2=[2.,1.,0.,3.] #0 <==> #2
201 mesh1=MEDCouplingUMesh.New();
202 coordsArr=DataArrayDouble.New(coords1,4,1);
203 mesh1.setCoords(coordsArr);
204 mesh1.setMeshDimension(0);
205 mesh1.allocateCells(0);
206 mesh1.finishInsertingCells();
208 mesh2=mesh1.deepCopy();
209 coordsArr=DataArrayDouble.New(coords2,4,1);
210 mesh2.setCoords(coordsArr);
211 field = mesh1.fillFromAnalytic(ON_NODES,1,"x")
212 field.checkConsistencyLight()
214 field.changeUnderlyingMesh( mesh2, levOfCheck, 1e-13, 0 )
215 self.assertTrue( field.getArray().getValues() == coords2 )
218 def testSwig2UMeshDistanceToMesh2(self):
221 arr=DataArrayDouble(sz+1) ; arr.iota() ; arr/=sz
222 m.setCoords(arr,arr,arr)
223 m=m.buildUnstructured()
227 d=2*(c-[0.5,0.5,0.5])+[0.5,0.5,0.5]
228 time_deb = datetime.now()
230 a,b=m1.distanceToPoints(d)
231 #print 'time spent in distanceToPoints %s ' %str(datetime.now() - time_deb)
232 time_deb = datetime.now()
233 a1=DataArrayDouble(len(d))
234 b1=DataArrayInt(len(d))
235 m1s = [m1[i] for i in range(m1.getNumberOfCells())]
236 for j,pt in enumerate(d):
239 for i,miter in enumerate(m1s):
240 e,f=miter.distanceToPoint(pt)
241 self.assertEqual(0,f)
249 #print 'time spent in naive distanceToPoints %s ' %str(datetime.now() - time_deb)
250 self.assertTrue(a.isEqual(a1,1e-12))
251 self.assertTrue(b.isEqual(b1))
252 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))
253 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])))
256 def testSwig2NonRegressionBugDistance1(self):
257 pt=DataArrayDouble([(8.8452994616207476,3.1547005383792515,3.1547005383792515)])
258 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)])
259 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])
260 m=MEDCouplingUMesh("mesh",2)
264 m.insertNextCell(NORM_QUAD4,conn[4*i:4*i+4])
267 m0=m[3] ; m0.zipCoords()
268 expectedDist=0.8452994616207476
269 a,b=m0.distanceToPoint(pt)
270 self.assertAlmostEqual(expectedDist,a,14)
271 self.assertEqual(0,b)
273 a,b=m.distanceToPoint(pt)
274 self.assertAlmostEqual(expectedDist,a,14)
275 self.assertEqual(3,b)
277 fd=MEDCouplingFieldDiscretization.New(ON_CELLS)
278 self.assertEqual(24,fd.getNumberOfTuples(m))
279 fd=MEDCouplingFieldDiscretization.New(ON_NODES)
280 self.assertEqual(26,fd.getNumberOfTuples(m))
283 def testSwig2AreaBarySeg3Quad8Tri6QPolyg(self):
284 #QUAD8 representing a circle of center zeBary and radius zeRadius
287 d=DataArrayDouble(8,2)
289 d[:,1]=[87,-100,-170,110,5,-130,175,95] # angle in degree
290 d[:,1]*=pi/180. # angle in radian
291 d=d.fromPolarToCart()
293 m = MEDCouplingUMesh("quad8", 2) ; m.allocateCells() ; m.insertNextCell(NORM_QUAD8, list(range(8))) ; m.setCoords(d)
294 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
295 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
296 tri32D=m.buildDescendingConnectivity()[0][0] ; tri32D.zipCoords()
297 # spaceDim=3 QUAD8 becomes QUAD4 ... for the moment
298 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
300 m2.convertQuadraticCellsToLinear()
301 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
302 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
303 #TRI6 representing a circle of center zeBary and radius zeRadius
306 d=DataArrayDouble(6,2)
308 d[:,1]=[87,-100,110,5,175,95] # angle in degree
309 d[:,1]*=pi/180. # angle in radian
310 d=d.fromPolarToCart()
312 m = MEDCouplingUMesh("tri6", 2) ; m.allocateCells() ; m.insertNextCell(NORM_TRI6, list(range(6))) ; m.setCoords(d)
313 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
314 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
315 # spaceDim=3 TRI6 becomes TRI3 ... for the moment
316 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
318 m2.convertQuadraticCellsToLinear()
319 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
320 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
321 # QPOLYG representing a circle of center zeBary and radius zeRadius
324 d=DataArrayDouble(10,2)
326 d[:,1]=[87,-80,-100,-170,110,5,-90,-130,175,95] # angle in degree
327 d[:,1]*=pi/180. # angle in radian
328 d=d.fromPolarToCart()
330 m = MEDCouplingUMesh("qpolyg", 2) ; m.allocateCells() ; m.insertNextCell(NORM_QPOLYG, list(range(10))) ; m.setCoords(d)
331 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
332 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
333 # spaceDim=3 QPOLYG becomes POLYG ... for the moment
334 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
336 m2.convertQuadraticCellsToLinear() ; m2.checkConsistency()
337 self.assertTrue(m2.getAllGeoTypes()==[NORM_POLYGON] and m2.getNodalConnectivity().getValues()==[5,0,1,2,3,4])
338 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
339 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
341 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),(87+100)*pi/180*zeRadius,13)
342 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)
343 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(exp,1e-12))
344 # spaceDim=3 TRI3 becomes TRI2 ... for the moment
345 tri32D.changeSpaceDimension(3)
346 tri2=tri32D.deepCopy() ; tri2.convertQuadraticCellsToLinear()
347 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),float(tri2.getMeasureField(False).getArray()),13)
348 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(tri2.computeCellCenterOfMass(),1e-12))
349 tri32D.changeSpaceDimension(1)
350 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),-0.67795240172962323,12)
353 # this bug 5/6/2013 is swig specific
354 def testSwigNonRegressionBugRotate3D1(self):
355 m=MEDCouplingUMesh.New()
356 dataArray=DataArrayDouble.New(100,3)
358 dataArray[0]=[0.,1,3]
359 m.setCoords(dataArray[0])
361 m.rotate([0.,0.,3.],[1.,0.,0.],0.5*pi)
362 self.assertTrue(m.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
364 d1=DataArrayDouble([0.,0.,3.],1,3) ; d2=DataArrayDouble([1.,0.,0.],1,3)
365 pts=[[0.,0.,3.],[(0.,0.,3.)],DataArrayDouble([0.,0.,3.],1,3),list(d1)[0]]
366 vec=[[1.,0.,0.],[(1.,0.,0.)],DataArrayDouble([1.,0.,0.],1,3),list(d2)[0]]
370 m2.rotate(p,v,0.5*pi)
371 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
375 def testSwig2DataArrayCount1(self):
377 self.assertEqual(0,d.getNumberOfTuples())
378 self.assertEqual(1,d.getNumberOfComponents())
379 self.assertEqual(0,d.count(0))
380 self.assertEqual(0,d.count(1))
381 self.assertEqual(0,d.count(-1))
382 d=DataArrayInt([2,1,-2,-3,2,0,0,7,2,-2,3,0])
383 self.assertEqual(12,d.getNumberOfTuples())
384 self.assertEqual(1,d.getNumberOfComponents())
385 self.assertEqual(3,d.count(0))
386 self.assertEqual(1,d.count(1))
387 self.assertEqual(0,d.count(-1))
388 self.assertEqual(2,d.count(-2))
389 self.assertEqual(3,d.count(2))
390 e=d.getDifferentValues()
393 f.pushBackSilent(d.count(int(it)))
395 self.assertEqual(12,f.accumulate()[0])
398 d=DataArrayDouble([])
399 self.assertEqual(0,d.getNumberOfTuples())
400 self.assertEqual(1,d.getNumberOfComponents())
401 self.assertEqual(0,d.count(0,eps))
402 self.assertEqual(0,d.count(1,eps))
403 self.assertEqual(0,d.count(-1,eps))
404 d=DataArrayDouble([2,1,-2,-3,2,0,eps/10,7,2+eps/10,-2,3,0])
405 self.assertEqual(12,d.getNumberOfTuples())
406 self.assertEqual(1,d.getNumberOfComponents())
407 self.assertEqual(3,d.count(0,eps))
408 self.assertEqual(1,d.count(1,eps))
409 self.assertEqual(0,d.count(-1,eps))
410 self.assertEqual(2,d.count(-2,eps))
411 self.assertEqual(3,d.count(2,eps))
412 self.assertEqual(3,d.count(2,eps))
413 self.assertEqual(2,d.count(2,eps/100))
414 e=d.getDifferentValues(eps)
417 f.pushBackSilent(d.count(float(it),eps))
419 self.assertEqual(12,f.accumulate()[0])
422 def testSwig2DataArrayGetSlice1(self):
424 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),16)
425 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),16)
426 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,1))
427 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,1))
428 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,1))
429 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,1))
432 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),8)
433 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),8)
434 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,2))
435 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,2))
436 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,2))
437 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,2))
440 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,1))
441 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,1))
442 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,1))
443 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,1))# 18 not 17
446 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
447 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),9)
448 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,2))
449 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,2))
450 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,2))
451 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,2))# 18 not 17
454 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
455 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
456 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
457 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-1))
460 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
461 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
462 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
463 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-2))
466 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
467 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
468 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
469 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-1))# 1 not 2
472 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
473 self.assertRaises(InterpKernelException,DataArray.GetNumberOfItemGivenBES,s)
474 self.assertEqual(sum([DataArray.GetNumberOfItemGivenBESRelative(DataArray.GetSlice(s, i, 4)) for i in range(4)]), DataArray.GetNumberOfItemGivenBESRelative(s))
475 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
476 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
477 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
478 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-2))# 1 not 2
479 self.assertRaises(InterpKernelException,DataArray.GetSlice,slice(0,None,2),0,4)
481 d=DataArrayInt.Range(0,18,1)
483 self.assertEqual(d.getNumberOfItemGivenBES(s),16)
484 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),16)
485 self.assertEqual(d.getSlice(s,0,4),slice(2,6,1))
486 self.assertEqual(d.getSlice(s,1,4),slice(6,10,1))
487 self.assertEqual(d.getSlice(s,2,4),slice(10,14,1))
488 self.assertEqual(d.getSlice(s,3,4),slice(14,18,1))
490 d=DataArrayInt.Range(0,18,1)
492 self.assertEqual(d.getSlice(s,0,4),slice(2,5,1))
493 self.assertEqual(d.getSlice(s,1,4),slice(5,8,1))
494 self.assertEqual(d.getSlice(s,2,4),slice(8,11,1))
495 self.assertEqual(d.getSlice(s,3,4),slice(11,16,1))
497 d=DataArrayInt.Range(0,18,1)
499 self.assertEqual(d.getSlice(s,0,4),slice(0,4,1))
500 self.assertEqual(d.getSlice(s,1,4),slice(4,8,1))
501 self.assertEqual(d.getSlice(s,2,4),slice(8,12,1))
502 self.assertEqual(d.getSlice(s,3,4),slice(12,18,1))
504 d=DataArrayInt.Range(0,18,1)
506 self.assertRaises(InterpKernelException,d.getNumberOfItemGivenBES,s)
507 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),8)
508 self.assertEqual(d.getSlice(s,0,4),slice(17,13,-2))
509 self.assertEqual(d.getSlice(s,1,4),slice(13,9,-2))
510 self.assertEqual(d.getSlice(s,2,4),slice(9,5,-2))
511 self.assertEqual(d.getSlice(s,3,4),slice(5,2,-2))
514 def testSwig2AccumulatePerChunk1(self):
515 arr=DataArrayDouble(11) ; arr.iota()
516 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
517 m=m.buildUnstructured()
518 m0=m[::2] ; ids0=m0.simplexize(0) ; m1=m[1::2]
519 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m0,m1) ; m.setName("mesh")
520 m.checkConsecutiveCellTypesForMEDFileFrmt()
522 formula="7-sqrt((x-5.)*(x-5.)+(y-5.)*(y-5.))"
523 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
524 f.fillFromAnalytic(1,formula)
525 f.setName("Field1") ; f.setTime(1.1,1,-1)
526 f.checkConsistencyLight()
529 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr
530 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr ; arr2[:,1]=2*arr
532 f.checkConsistencyLight()
533 # here the compact code to obviously put field on cell to nodes
534 rn,rni=f.getMesh().getReverseNodalConnectivity()
535 arr2=f.getArray()[rn]
536 arr4=arr2.accumulatePerChunck(rni)
537 nbOfCellsSharingNodes=rni.deltaShiftIndex()
538 arr4/=nbOfCellsSharingNodes.convertToDblArr()
540 maxNbCSN=nbOfCellsSharingNodes.getMaxValue()[0]
541 arr3=DataArrayDouble(f.getMesh().getNumberOfNodes(),f.getArray().getNumberOfComponents()) ; arr3[:]=0.
542 for i in range(1, maxNbCSN + 1):
543 ids=nbOfCellsSharingNodes.findIdsEqual(i)
547 rni2=rni[ids] ; rni2+=j
548 arr3[ids]+=arr2[rni2]
552 fNode=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; fNode.setMesh(m)
553 fNode.setName("Field1Node") ; fNode.setTime(1.1,1,-1)
554 fNode.setArray(arr3) ; fNode.checkConsistencyLight()
555 self.assertTrue(arr3.isEqual(arr4,1e-12))
557 d=DataArrayInt.Range(0,20,1)
558 self.assertTrue(d.accumulatePerChunck([2,4,12]).isEqual(DataArrayInt([5,60])))
560 a=DataArrayDouble(12) ; a.iota() ; a.rearrange(3)
561 b=DataArrayDouble(12) ; b.iota(20) ; b.rearrange(3)
563 self.assertEqual(len(a[ids]),0)
564 self.assertEqual(len(b[ids]),0)
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))
567 a2=a.deepCopy() ; a2[ids]/=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
568 a2=a.deepCopy() ; a2[ids]-=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
571 def testSwig2CheckAndPreparePermutation1(self):
572 a=DataArrayInt([10003,9999999,5,67])
573 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([2,3,0,1])))
574 a=DataArrayInt([10003,-9999999,5,67])
575 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([3,0,1,2])))
577 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([])))
580 self.assertTrue(a.isEqual(DataArrayInt([])))
583 def testSwig21SGTUMesh1(self):
584 m=MEDCoupling1GTUMesh.New("m",NORM_PENTA6)
585 m.__repr__() ; m.__str__()
586 self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh))
587 m.setCoords(DataArrayDouble(20,3))
589 m.__repr__() ; m.__str__()
590 m.insertNextCell([0,1,2,5,7,2])
591 self.assertEqual(1,m.getNumberOfCells())
592 self.assertTrue(DataArrayInt([6]).isEqual(m.computeNbOfNodesPerCell()))
593 self.assertTrue(DataArrayInt([5]).isEqual(m.computeNbOfFacesPerCell()))
594 m.__repr__() ; m.__str__()
595 m.checkConsistencyLight()
598 cm=MEDCouplingCMesh() ; cm.setName("m")
599 arr0=DataArrayDouble(6) ; arr0.iota()
600 arr1=DataArrayDouble([0,1])
601 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured()
603 m=MEDCoupling1SGTUMesh("m",NORM_QUAD4)
604 mem_m=m.getHeapMemorySize()
606 self.assertIn(m.getHeapMemorySize() - mem_m, list(range(5 * 4 * MEDCouplingSizeOfIDs()//8, 5 * 4 * MEDCouplingSizeOfIDs()//8 + 32)))
607 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
608 m.setCoords(um.getCoords())
609 m.insertNextCell([1,0,6,7])
610 self.assertEqual(1,m.getNumberOfCells())
611 m.insertNextCell([2,1,7,8])
612 m.insertNextCell([3,2,8,9])
613 m.insertNextCell([4,3,9,10])
614 m.insertNextCell([5,4,10,11])
615 self.assertEqual(5,m.getNumberOfCells())
616 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7])
617 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7,1,2])
618 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
619 f=m.getMeasureField(False)
620 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
621 self.assertTrue(f.getArray().isUniform(1,1e-14))
622 self.assertEqual(m.getType(),10)
623 self.assertEqual(m.getCellModelEnum(),NORM_QUAD4)
624 mo=MEDCoupling1SGTUMesh("m",NORM_QUAD4) ; mo.setCoords(m.getCoords())
625 mo.setNodalConnectivity(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11]))
626 self.assertTrue(m.isEqual(mo,1e-12))
628 mo2=MEDCoupling1SGTUMesh.Merge1SGTUMeshesOnSameCoords([m[[0,1]],m[[2]],m[[3,4]]])
629 mo2.setName(m.getName())
630 self.assertTrue(m.isEqual(mo2,1e-12))
632 mp0=m[[0]] ; mp0.zipCoords() ; mp1=m[2] ; mp1.zipCoords() ; mp2=m[4] ; mp2.zipCoords()
633 mo3=MEDCoupling1SGTUMesh.Merge1SGTUMeshes([mp0,mp1,mp2])
634 self.assertTrue(isinstance(mo3,MEDCoupling1SGTUMesh))
635 mo3.setName(m.getName())
636 m_ref=m[(0,2,4)] ; m_ref.zipCoords()
637 m_ref.tryToShareSameCoordsPermute(mo3,1e-12)
638 self.assertTrue(m_ref.isEqual(mo3,1e-12))
640 m1=um.buildDescendingConnectivity()[0]
641 ids=m1.getCellIdsFullyIncludedInNodeIds(DataArrayInt.Range(0,12,1))
643 m1c=m1.convertIntoSingleGeoTypeMesh()
644 self.assertTrue(isinstance(m1c,MEDCoupling1SGTUMesh))
645 self.assertEqual(m1c.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
646 m1c.checkConsistency()
647 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])))
648 self.assertEqual(20,m1c.getNodalConnectivityLength())
649 self.assertTrue(m.isEqual(m1c,1e-12))
650 m.getNodalConnectivity().setIJ(1,0,1)
651 self.assertTrue(not m.isEqual(m1c,1e-12))
652 m.getNodalConnectivity().setIJ(1,0,0)
653 self.assertTrue(m.isEqual(m1c,1e-12))
654 m1c.setCoords(m.getCoords().deepCopy())
655 self.assertTrue(m.isEqual(m1c,1e-12))
656 m1c.getCoords().setIJ(0,1,0.1)
657 self.assertTrue(not m.isEqual(m1c,1e-12))
658 m1c.getCoords().setIJ(0,1,0)
659 self.assertTrue(m.isEqual(m1c,1e-12))
660 m1c.getCoords().setInfoOnComponent(1,"X")
661 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
662 m.getCoords().setInfoOnComponent(1,"X")
663 self.assertTrue(m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
665 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
667 m.checkConsistencyLight() ; m.checkConsistency() ; m.checkConsistency()
668 self.assertEqual(m.getMeshDimension(),2)
669 self.assertTrue(m.giveCellsWithType(NORM_QUAD4).isEqual(DataArrayInt([0,1,2,3,4])))
670 self.assertTrue(m.giveCellsWithType(NORM_TRI3).isEqual(DataArrayInt([])))
671 self.assertEqual(m.getNumberOfCellsWithType(NORM_QUAD4),5)
672 self.assertEqual(m.getNumberOfCellsWithType(NORM_TRI3),0)
673 self.assertEqual(m.getTypeOfCell(3),NORM_QUAD4)
674 self.assertRaises(InterpKernelException,m.getTypeOfCell,5)
675 self.assertEqual(m.getAllGeoTypes(),[NORM_QUAD4])
676 self.assertEqual(m.getDistributionOfTypes(),[[NORM_QUAD4,5,-1]])
678 pfl1=DataArrayInt([1,3,4])
679 a,b,c=m.splitProfilePerType(pfl1)
680 d,e,f=m.buildUnstructured().splitProfilePerType(pfl1)
681 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())
682 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
684 pfl2=DataArrayInt([0,1,2,3])
685 a,b,c=m.splitProfilePerType(pfl2)
686 d,e,f=m.buildUnstructured().splitProfilePerType(pfl2)
687 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())
688 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
690 pfl3=DataArrayInt([0,1,2,3,4])
691 a,b,c=m.splitProfilePerType(pfl3)
692 d,e,f=m.buildUnstructured().splitProfilePerType(pfl3)
693 self.assertTrue(a==[[4,5,-1]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3,4])) and c==[])
694 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and c==[])
696 invalidPfl=DataArrayInt([1,2,3,4,5])
697 self.assertRaises(InterpKernelException,m.splitProfilePerType,invalidPfl)
698 self.assertRaises(InterpKernelException,m.buildUnstructured().splitProfilePerType,invalidPfl)
700 pfl1=DataArrayInt([1,2,3])
701 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
702 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
703 self.assertTrue(a.isEqual(b) and pfl1.getHiddenCppPointer(),a.getHiddenCppPointer())
705 pfl2=DataArrayInt([0,1,2,3])
706 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
707 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
708 self.assertTrue(a.isEqual(b) and pfl2.getHiddenCppPointer()==a.getHiddenCppPointer())
710 pfl3=DataArrayInt([0,1,2,3,4])
711 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl3])
712 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,5,0],[pfl3])
713 self.assertTrue(a.isEqual(b) and pfl3.getHiddenCppPointer()==a.getHiddenCppPointer())
715 invalidPfl=DataArrayInt([1,2,3,4,5])
716 self.assertRaises(InterpKernelException,m.checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
717 self.assertRaises(InterpKernelException,m.buildUnstructured().checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
719 self.assertTrue(DataArrayInt([4,4,4,4,4]).isEqual(m.computeNbOfNodesPerCell()))
721 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8])
723 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))
725 ref=m.getCoords().getHiddenCppPointer()
726 mcpy=m.deepCopy() ; mcpy.insertNextCell([1,0,6,7])
727 c=m.getNodalConnectivity().deepCopy()
728 o2n=DataArrayInt([2,0,1,4,3])
729 m.renumberCells(o2n,False)
730 c.rearrange(4) ; c.renumberInPlace(o2n) ; c.rearrange(1)
731 self.assertTrue(c.isEqual(m.getNodalConnectivity()))
732 self.assertEqual(ref,m.getCoords().getHiddenCppPointer())
733 m2=mcpy.mergeMyselfWith(m)
734 self.assertTrue(isinstance(m2,MEDCoupling1SGTUMesh))
735 self.assertEqual(11,m2.getNumberOfCells())
736 self.assertEqual(48,m2.getNumberOfNodes())
737 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.Aggregate([m.getCoords(),m.getCoords()]),1e-12))
738 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])))
740 mu=m.buildUnstructured()
741 mu.checkConsistency()
742 self.assertEqual(mu.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
743 self.assertEqual(2,mu.getMeshDimension())
744 self.assertEqual([NORM_QUAD4],mu.getAllGeoTypes())
745 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])))
746 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25])))
749 mcpy2=m.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
750 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
751 self.assertTrue(ids.isEqual(ids2))
752 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
753 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
755 um1=um.convertIntoSingleGeoTypeMesh()
756 self.assertEqual(8,um1.getNumberOfNodesPerCell())
757 for typ in [PLANAR_FACE_5,PLANAR_FACE_6]:
758 mcpy2=um1.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
759 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
760 self.assertTrue(ids.isEqual(ids2))
761 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
762 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
765 self.assertRaises(InterpKernelException,mcpy.mergeMyselfWithOnSameCoords,m)
766 mcpy.tryToShareSameCoords(m,1e-14)
767 m3=mcpy.mergeMyselfWithOnSameCoords(m)
768 self.assertTrue(isinstance(m3,MEDCoupling1SGTUMesh))
769 self.assertEqual(11,m3.getNumberOfCells())
770 self.assertEqual(24,m3.getNumberOfNodes())
771 self.assertEqual(m3.getCoords().getHiddenCppPointer(),mcpy.getCoords().getHiddenCppPointer())
772 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])))
774 ref=mcpy.getCoords().deepCopy()
775 c3=mcpy.getNodalConnectivity()[:]
776 mcpy.getNodalConnectivity().setIJ(int(c3.findIdsEqual(11)),0,24)
777 c2=DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()[11:]])
779 mcpy.checkConsistency()
780 a,b=mcpy.getNodeIdsInUse()
781 self.assertEqual(12,b)
782 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])))
783 ids=mcpy.zipCoordsTraducer()
784 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])))
785 self.assertTrue(mcpy.getCoords().isEqual(ref[:12],1e-12))
786 self.assertTrue(mcpy.getNodalConnectivity().isEqual(c3))
787 mcpy.checkConsistency()
789 m4=mcpy[DataArrayInt([0,3,4])]
790 m5=mcpy.buildPartOfMySelfKeepCoords(DataArrayInt([0,3,4]))
791 self.assertTrue(isinstance(m4,MEDCoupling1SGTUMesh))
792 self.assertTrue(m4.isEqual(m5,-1e-14))# < 0 not a bug it proves that coordinates pointer are equal
793 self.assertTrue(m4.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,4,3,9,10,5,4,10,11])))
795 self.assertTrue(isinstance(m6,MEDCoupling1SGTUMesh))
796 self.assertTrue(m6.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,3,2,8,9,5,4,10,11])))
798 mcpy.setCoords(DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()]))
799 mcpy.checkConsistency()
801 mcppy=mcpy.deepCopyConnectivityOnly()
802 self.assertTrue(mcppy.isEqual(mcpy,1e-12))
803 self.assertTrue(mcppy.getCoords().getHiddenCppPointer()==mcpy.getCoords().getHiddenCppPointer())
804 self.assertTrue(mcppy.getNodalConnectivity().isEqual(mcpy.getNodalConnectivity()))
805 self.assertTrue(mcppy.getNodalConnectivity().getHiddenCppPointer()!=mcpy.getNodalConnectivity().getHiddenCppPointer())
807 a,b=mcpy.getReverseNodalConnectivity()
808 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])))
809 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])))
810 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],False).isEqual(DataArrayInt([0,1,5])))
811 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,5])))
812 self.assertTrue(mcpy.getCellsInBoundingBox([(0,1),(0,1),(0,1)],1e-12).isEqual(DataArrayInt([0,1,5])))
813 f=mcpy.buildOrthogonalField()
814 self.assertEqual(f.getMesh().getHiddenCppPointer(),mcpy.getHiddenCppPointer())
815 self.assertTrue(f.getArray().isEqual(DataArrayDouble(6*[(0,0,-1)]),1e-12))
816 mcpy.changeSpaceDimension(2)
817 self.assertEqual(1,mcpy.getCellContainingPoint([1.5,0.5],1e-12))
819 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([0,1,5])))
821 mcpy2=mcpy.deepCopy()
822 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
823 mcpy.checkFastEquivalWith(mcpy2,1e-12)
824 mcpy2.renumberCells([0,2,4,3,1,5])
825 mcpy.checkFastEquivalWith(mcpy2,1e-12)
826 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
827 mcpy2.renumberCells([0,2,4,3,1,5])
828 mcpy2.renumberCells([1,3,5,0,2,4])
829 self.assertRaises(InterpKernelException,mcpy.checkFastEquivalWith,mcpy2,1e-12)
830 self.assertRaises(InterpKernelException,mcpy.checkGeoEquivalWith,mcpy2,1,1e-12)#fast equal
833 def testSwig21DGTUMesh1(self):
834 a0=DataArrayInt([0,2,3,5,6,8])
835 a1=DataArrayInt([0,4,7,11,14,18,21,25])
836 a2=DataArrayInt([0,1,4,5])
837 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])))
838 self.assertEqual(a1[3:].front(),11)
839 self.assertEqual(a1[4:].convertToDblArr().front(),14.)
840 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])
841 d,e=MEDCouplingUMesh.ExtractFromIndexedArraysSlice(1,5,2,a1c,a1)
842 self.assertTrue(d.isEqual(DataArrayInt([8,11,0,1,5,2])))
843 self.assertTrue(e.isEqual(DataArrayInt([0,3,6])))
845 m=MEDCouplingDataForTest.build2DTargetMesh_1()[0,3,4]
846 ref=DataArrayInt([0,3,4,1,6,7,4,3,7,8,5,4])
847 self.assertTrue(m.convertNodalConnectivityToStaticGeoTypeMesh().isEqual(ref))
848 d,e=m.convertNodalConnectivityToDynamicGeoTypeMesh()
849 self.assertTrue(d.isEqual(ref))
850 self.assertTrue(e.isEqual(DataArrayInt.Range(0,13,4)))
851 self.assertTrue(m.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([1,2])))
853 m=MEDCoupling1GTUMesh.New("m",NORM_POLYHED)
854 self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh))
855 m.__repr__() ; m.__str__()
856 m.setCoords(DataArrayDouble(20,3))
858 m.__repr__() ; m.__str__()
859 m.insertNextCell([0,1,2,5,7,2,-1,1,3])
860 self.assertEqual(1,m.getNumberOfCells())
861 self.assertTrue(DataArrayInt([8]).isEqual(m.computeNbOfNodesPerCell()))
862 self.assertTrue(DataArrayInt([2]).isEqual(m.computeNbOfFacesPerCell()))
863 m.__repr__() ; m.__str__()
864 m.checkConsistencyLight()
867 cm=MEDCouplingCMesh() ; cm.setName("m")
868 arr0=DataArrayDouble(6) ; arr0.iota()
869 arr1=DataArrayDouble([0,1])
870 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured() ; um.convertAllToPoly()
871 um2=um.deepCopyConnectivityOnly()
872 self.assertTrue(um2.isEqual(um,1e-12))
873 self.assertEqual(um2.getCoords().getHiddenCppPointer(),um.getCoords().getHiddenCppPointer())
874 self.assertTrue(um2.getNodalConnectivity().isEqual(um.getNodalConnectivity()))
875 self.assertTrue(um2.getNodalConnectivity().getHiddenCppPointer()!=um.getNodalConnectivity().getHiddenCppPointer())
876 self.assertTrue(um2.getNodalConnectivityIndex().isEqual(um.getNodalConnectivityIndex()))
877 self.assertTrue(um2.getNodalConnectivityIndex().getHiddenCppPointer()!=um.getNodalConnectivityIndex().getHiddenCppPointer())
879 self.assertRaises(InterpKernelException,MEDCoupling1SGTUMesh.New,"m",NORM_POLYHED)
880 m=MEDCoupling1DGTUMesh("m",NORM_POLYHED)
882 self.assertEqual(15,m.getNodalConnectivity().getNbOfElemAllocated())
883 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
884 m.setCoords(um.getCoords())
885 m.insertNextCell([1,0,6,7,-1,7,6,1])
886 self.assertEqual(1,m.getNumberOfCells())
887 m.insertNextCell([2,1,7,8,-1,2,1,-1,8,-1,7])
888 m.insertNextCell([3,2,8,9])
889 m.insertNextCell([4,3,9,10,-1,5,3,9])
890 m.insertNextCell([5,4,10,11,-1,11,10,-1,5])
891 m.checkConsistencyLight()
893 self.assertEqual(5,m.getNumberOfCells())
894 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40])))
895 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])))
898 self.assertTrue(m.isEqual(m4,1e-12))
899 m4.getNodalConnectivity().setIJ(2,0,5)
900 self.assertTrue(not m.isEqual(m4,1e-12))
901 m4.getNodalConnectivity().setIJ(2,0,6)
902 self.assertTrue(m.isEqual(m4,1e-12))
903 m4.getNodalConnectivityIndex().setIJ(2,0,21)
904 self.assertTrue(not m.isEqual(m4,1e-12))
905 m4.getNodalConnectivityIndex().setIJ(2,0,19)
906 self.assertTrue(m.isEqual(m4,1e-12))
907 m4.getCoords().setIJ(10,1,1.1)
908 self.assertTrue(not m.isEqual(m4,1e-12))
909 m4.getCoords().setIJ(10,1,1.)
910 self.assertTrue(m.isEqual(m4,1e-12))
911 m4.getNodalConnectivity().pushBackSilent(7)
912 self.assertTrue(not m.isEqual(m4,1e-12))
913 self.assertEqual(7,m4.getNodalConnectivity().popBackSilent())
914 self.assertTrue(m.isEqual(m4,1e-12))
916 self.assertTrue(not m.isEqual(m4,1e-12))
918 self.assertTrue(m.isEqual(m4,1e-12))
920 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
921 self.assertEqual(60,m.getNodalConnectivity().getNbOfElemAllocated())
922 self.assertTrue(m.computeNbOfNodesPerCell().isEqual(DataArrayInt([7,8,4,7,7])))
923 self.assertTrue(m.computeNbOfFacesPerCell().isEqual(DataArrayInt([2,4,1,2,3])))
924 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8,-1,2,1,-1,8,-1,7])
925 f=m.computeIsoBarycenterOfNodesPerCell()
926 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))
927 mu0=m.buildUnstructured()
930 m3=m.deepCopyConnectivityOnly()
931 self.assertTrue(m3.isEqual(m,1e-12))
932 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
933 self.assertTrue(m3.getNodalConnectivity().getHiddenCppPointer()!=m.getNodalConnectivity().getHiddenCppPointer())
934 self.assertTrue(m3.getNodalConnectivity().isEqual(m.getNodalConnectivity()))
935 self.assertTrue(m3.getNodalConnectivityIndex().getHiddenCppPointer()!=m.getNodalConnectivityIndex().getHiddenCppPointer())
936 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(m.getNodalConnectivityIndex()))
938 mu0.renumberCells(o2n)
939 self.assertTrue(mu0.isEqual(m.buildUnstructured(),1e-12))
940 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,23,32,40])))
941 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])))
943 mcpy0=m.buildUnstructured()
944 self.assertTrue(isinstance(mcpy0,MEDCouplingUMesh))
945 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])))
946 self.assertTrue(mcpy0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,14,26,36,45])))
947 self.assertEqual(mcpy0.getAllGeoTypes(),[NORM_POLYHED])
948 mcpy0.checkConsistencyLight()
949 mcpy0.checkConsistency()
950 mcpy1=mcpy0.convertIntoSingleGeoTypeMesh()
951 self.assertTrue(mcpy1.isEqual(m,1e-12))
953 m_mrg=MEDCoupling1DGTUMesh.Merge1DGTUMeshes([m2,m,m2])
954 self.assertTrue(m_mrg.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
955 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])))
956 m_mrg2=MEDCoupling1DGTUMesh.Merge1DGTUMeshesOnSameCoords([m3,m,m3])
957 self.assertTrue(m_mrg2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
958 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])))
959 a,b=m_mrg2.getReverseNodalConnectivity()
960 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])))
961 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])))
962 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([7],False).isEqual(DataArrayInt([0,1,6,7,10,11])))
963 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,6,10])))
965 self.assertTrue(m_mrg2.isPacked())
966 self.assertEqual(120,m_mrg2.getNodalConnectivityIndex().popBackSilent())
967 self.assertEqual(m_mrg2.getNumberOfCells(),14)
968 m_mrg2.checkConsistency()
969 self.assertTrue(not m_mrg2.isPacked())
970 m_mrg4,b=m_mrg2.copyWithNodalConnectivityPacked()
971 self.assertTrue(not b)
972 m_mrg4.checkConsistency()
973 self.assertEqual(m_mrg4.getNumberOfCells(),14)
974 self.assertTrue(m_mrg4.getNodalConnectivityIndex().isEqual(m_mrg2.getNodalConnectivityIndex()))
975 self.assertEqual(len(m_mrg4.getNodalConnectivity()),111)
976 self.assertEqual(len(m_mrg2.getNodalConnectivity()),120)
977 self.assertTrue(m_mrg4.getNodalConnectivity().isEqual(m_mrg2.getNodalConnectivity()[:111]))
980 m1=m_mrg2[[5,6,7,8,9]]
982 self.assertTrue(m1.isEqualWithoutConsideringStr(m,1e-12))
983 a,b=m.checkGeoEquivalWith(m0,12,1e-12)
984 self.assertTrue(a.isEqual(DataArrayInt(o2n)))
985 self.assertTrue(b is None)
988 def testSwig2DADAreIncludedInMe1(self):
989 a=DataArrayDouble(30) ; a.iota() ; a.rearrange(3)
990 p=DataArrayInt([5,2,1,9])
991 b,c=a.areIncludedInMe(a[p],1e-12)
993 self.assertTrue(c.isEqual(p))
996 b,c=a.areIncludedInMe(d,1e-12)
997 self.assertTrue(not b)
998 self.assertTrue(c.isEqual(DataArrayInt([5,2,1,10])))
1001 def testSwig2DADesallocate1(self):
1002 d=DataArrayDouble([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1003 self.assertTrue(d.isAllocated())
1005 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1006 ref=d.getHeapMemorySize()
1008 self.assertEqual(ref-d.getHeapMemorySize(),6*8)
1009 self.assertTrue(not d.isAllocated())
1010 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1011 self.assertRaises(InterpKernelException,d.checkAllocated)
1013 d=DataArrayInt([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1014 self.assertTrue(d.isAllocated())
1016 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1017 ref=d.getHeapMemorySize()
1019 self.assertEqual(ref-d.getHeapMemorySize(),6*MEDCouplingSizeOfIDs()//8)
1020 self.assertTrue(not d.isAllocated())
1021 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1022 self.assertRaises(InterpKernelException,d.checkAllocated)
1025 def testSwig2IsPartStructured1(self):
1027 d10=DataArrayInt([2,3,4,5,6,7,8,9,10,11])
1028 a,b=MEDCouplingStructuredMesh.IsPartStructured(d10,[13])
1029 self.assertTrue(a) ; self.assertEqual(b,[(2,12)])
1030 d11=DataArrayInt([2,3,4,5,6,7,8,10,9,11])
1031 a,b=MEDCouplingStructuredMesh.IsPartStructured(d11,[13])
1032 self.assertTrue(not a)
1033 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d10,[11])
1036 d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
1037 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1038 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
1039 self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
1040 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
1041 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
1042 self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
1043 self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
1044 d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
1045 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1046 self.assertTrue(not a)
1047 d20=DataArrayInt([1,2,3,4,11,12,13,15,21,22,23,24])
1048 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1049 self.assertTrue(not a)
1050 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])
1051 a,b=MEDCouplingStructuredMesh.IsPartStructured(d21,st)
1052 self.assertTrue(a) ; self.assertEqual(b,[(0,10),(0,4)])
1053 d22=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44])
1054 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d22,st)
1055 a,b=MEDCouplingStructuredMesh.IsPartStructured(d22,[10,5])
1056 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,5)])
1058 d30=DataArrayInt([11,12,13,14,21,22,23,24,51,52,53,54,61,62,63,64])
1059 a,b=MEDCouplingStructuredMesh.IsPartStructured(d30,[10,4,2])
1060 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(1,3),(0,2)])
1061 d31=DataArrayInt([11,12,13,14,21,22,24,23,51,52,53,54,61,62,63,64])
1062 a,b=MEDCouplingStructuredMesh.IsPartStructured(d31,[10,4,2])
1063 self.assertTrue(not a)
1064 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d30,[10,4,1])
1067 def testSwig2PartStructured1(self):
1068 c=MEDCouplingCMesh() ; c.setName("toto")
1069 arr0=DataArrayDouble(10); arr0.iota()
1070 arr1=DataArrayDouble(4) ; arr1.iota(3)
1071 c.setCoords(arr0,arr1)
1072 self.assertEqual(c.getNodeGridStructure(),(10,4))
1073 self.assertEqual(c.getCellGridStructure(),(9,3))
1074 d20=DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])
1075 self.assertEqual(27,c.getNumberOfCells())
1076 self.assertEqual(40,c.getNumberOfNodes())
1077 self.assertEqual(2,c.getMeshDimension())
1078 c.checkConsistencyLight()
1080 arr2=MEDCouplingStructuredMesh.BuildExplicitIdsFrom([9,3],[(1,5),(0,3)])
1081 self.assertTrue(arr2.isEqual(DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])))
1083 c2=c.buildStructuredSubPart([(1,5),(0,3)])
1084 c2.checkConsistencyLight()
1085 self.assertTrue(isinstance(c2,MEDCouplingCMesh))
1086 self.assertEqual(12,c2.getNumberOfCells())
1087 self.assertEqual(20,c2.getNumberOfNodes())
1088 self.assertEqual(2,c2.getMeshDimension())
1089 self.assertEqual("toto",c2.getName())
1090 self.assertTrue(c2.getCoordsAt(0).isEqual(DataArrayDouble([1.,2.,3.,4.,5.]),1e-12))
1091 self.assertTrue(c2.getCoordsAt(1).isEqual(DataArrayDouble([3.,4.,5.,6.]),1e-12))
1093 a,b=c.buildPartAndReduceNodes(d20)
1094 a.checkConsistencyLight()
1095 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])
1096 self.assertTrue(exp2.isEqual(b))
1097 self.assertTrue(isinstance(a,MEDCouplingCMesh))
1098 self.assertTrue(a.buildUnstructured().isEqual(c.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1100 c2=MEDCouplingCurveLinearMesh() ; c2.setName("toto")
1101 c2.setCoords(c.buildUnstructured().getCoords())
1102 c2.setNodeGridStructure([10,4])
1103 c2.checkConsistencyLight()
1104 a,b=c2.buildPartAndReduceNodes(d20)
1105 a.checkConsistencyLight()
1106 self.assertTrue(exp2.isEqual(b))
1107 self.assertTrue(isinstance(a,MEDCouplingCurveLinearMesh))
1108 self.assertTrue(a.buildUnstructured().isEqual(c2.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1111 def testSwig2FindPermutationFromFirstToSecond1(self):
1112 ids1=DataArrayInt([3,1,103,4,6,10,-7,205])
1113 ids2=DataArrayInt([-7,1,205,10,6,3,103,4])
1114 ids3=DataArrayInt.FindPermutationFromFirstToSecond(ids1,ids2)
1115 self.assertTrue(ids3.isEqual(DataArrayInt([5,1,6,7,4,3,0,2])))
1116 ids2ToTest=ids1.renumber(ids3)
1117 self.assertTrue(ids2ToTest.isEqual(ids2))
1118 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103]))
1119 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,2]))
1120 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,1]))
1121 self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecond(DataArrayInt([]),DataArrayInt([])).empty())
1124 def testSwig2BugStructuredMeshGetNodeIdsOfCell1(self):
1125 m=MEDCouplingCMesh("mesh")
1126 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
1127 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
1128 m.setCoords(coordsX,coordsY)
1129 self.assertEqual([2,3,8,7],m.getNodeIdsOfCell(2))
1130 self.assertEqual([3,4,9,8],m.getNodeIdsOfCell(3))
1131 self.assertEqual([7,8,13,12],m.getNodeIdsOfCell(6))
1132 self.assertEqual([8,9,14,13],m.getNodeIdsOfCell(7))
1135 def testSwig2ThrowOnDAIInvertN2O2ON2(self):
1136 p1=DataArrayInt([3,5,8])
1137 p2=DataArrayInt([0,3,4,5,6,7,8,9,10])
1138 p1.transformWithIndArr(p2.invertArrayN2O2O2N(11))
1139 self.assertTrue(p1.isEqual(DataArrayInt([1,3,6])))
1140 self.assertTrue(p2.invertArrayN2O2O2N(11).isEqual(DataArrayInt([0,-1,-1,1,2,3,4,5,6,7,8])))
1141 self.assertRaises(InterpKernelException,p2.invertArrayN2O2O2N,10)
1144 def testSwig2ComputeEffectiveNbOfNodesPerCell1(self):
1145 coords=DataArrayDouble([ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
1146 0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
1147 0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
1148 0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
1149 -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
1150 -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
1151 0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
1152 0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
1153 -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
1154 0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
1155 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
1156 -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
1157 -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
1158 -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
1159 -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
1160 -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
1161 0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
1162 0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
1163 0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
1164 -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
1165 -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
1166 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
1167 -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
1168 0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
1169 0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
1170 0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
1171 -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
1172 -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
1173 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
1174 0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
1175 -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
1176 0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
1177 0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
1178 0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
1179 -0.0372812069535 , -0.286740286332 , 0.00963701291166 ], 69, 3)
1180 connN = [ #polyhedron 0
1181 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
1182 , 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
1183 , 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
1184 , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
1186 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
1187 , 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
1188 , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
1189 , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
1191 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
1192 , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
1194 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
1195 , 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
1196 , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
1197 , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
1198 meshN=MEDCouplingUMesh.New()
1199 meshN.setName("ForBary")
1200 meshN.setMeshDimension(3) ; meshN.setCoords(coords)
1201 meshN.allocateCells(4)
1202 meshN.insertNextCell(NORM_POLYHED,113,connN);
1203 meshN.insertNextCell(NORM_POLYHED,99,connN[113:])
1204 meshN.insertNextCell(NORM_POLYHED,43,connN[212:])
1205 meshN.insertNextCell(NORM_POLYHED,92,connN[255:])
1206 d=meshN.computeEffectiveNbOfNodesPerCell()
1207 e=meshN.computeNbOfNodesPerCell()
1208 self.assertTrue(d.isEqual(DataArrayInt([32,28,12,26])))
1209 self.assertTrue(e.isEqual(DataArrayInt([96,84,36,78])))
1210 m0=MEDCoupling1DGTUMesh(meshN)
1211 c=MEDCouplingCMesh()
1212 arr=DataArrayDouble(3) ; arr.iota(10)
1213 c.setCoords(arr,arr,arr)
1214 m10=c.buildUnstructured()
1215 m11=c.build1SGTUnstructured()
1216 m12=MEDCoupling1SGTUMesh.New(m10)
1217 self.assertTrue(m12.isEqual(m11,1e-12))
1218 m12.setCoords(m0.getCoords()) # m12 is not OK geometrically but the aim of the test is only connectivity values
1219 m3=MEDCoupling1GTUMesh.AggregateOnSameCoordsToUMesh([m12,m0])
1220 m3.checkConsistencyLight()
1221 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m12.getCoords().getHiddenCppPointer())
1222 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])))
1223 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,186,286,330,423])))
1226 def testSwig2Tetrahedrize1(self):
1227 d=DataArrayInt([0,3,6,10,14,20])
1228 d2=d.buildExplicitArrOfSliceOnScaledArr(slice(0,5,2))
1229 self.assertTrue(d2.isEqual(DataArrayInt([0,0,0, 2,2,2,2, 4,4,4,4,4,4])))
1230 m=MEDCouplingUMesh("Penta6",3)
1231 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"])
1233 m.insertNextCell(NORM_PENTA6,[1,2,0,4,5,3])
1234 st=m.getCoords().getHiddenCppPointer()
1235 c,a,b=m.tetrahedrize(PLANAR_FACE_5)
1236 c.checkConsistency()
1237 self.assertTrue(a.isEqual(DataArrayInt([0,0,0])))
1238 self.assertEqual(0,b)
1239 self.assertEqual(m.getCoords().getHiddenCppPointer(),c.getCoords().getHiddenCppPointer())
1240 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([1,2,0,4,4,3,5,0,5,0,2,4])))
1243 m2=MEDCouplingUMesh("octa12",3)
1244 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)
1245 m2.setCoords(coords)
1247 m2.insertNextCell(NORM_HEXGP12,[3,2,1,0,5,4,9,8,7,6,11,10])
1248 c,a,b=m2.tetrahedrize(PLANAR_FACE_5)
1249 c.checkConsistency()
1250 self.assertTrue(a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0])))
1251 self.assertEqual(0,b)
1252 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1253 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])))
1256 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"])
1257 m3=MEDCouplingUMesh("hexa8",3)
1258 m3.setCoords(coords)
1260 m3.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1261 st=m3.getCoords().getHiddenCppPointer()
1262 c,a,b=m3.tetrahedrize(PLANAR_FACE_5)
1263 c.checkConsistency()
1264 a.isEqual(DataArrayInt([0,0,0,0,0]))
1265 self.assertEqual(0,b)
1266 self.assertEqual(m3.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1267 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])))
1269 m4=MEDCouplingUMesh("hexa8",3)
1270 m4.setCoords(coords)
1272 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1273 c,a,b=m4.tetrahedrize(PLANAR_FACE_6)
1274 c.checkConsistency()
1275 a.isEqual(DataArrayInt([0,0,0,0,0,0]))
1276 self.assertEqual(0,b)
1277 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1278 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])))
1280 m4=MEDCouplingUMesh("hexa8",3)
1281 m4.setCoords(coords)
1283 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1284 st=m4.getCoords().getHiddenCppPointer()
1285 c,a,b=m4.tetrahedrize(GENERAL_24)
1286 c.checkConsistency()
1287 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]))
1288 self.assertEqual(7,b)
1289 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1290 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1291 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])))
1292 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)
1293 m4CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1294 self.assertTrue(c.getCoords().isEqual(m4CoordsExp,1e-12))
1295 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1297 m6=MEDCouplingUMesh("hexa8",3)
1298 m6.setCoords(coords)
1300 m6.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1301 st=m6.getCoords().getHiddenCppPointer()
1302 c,a,b=m6.tetrahedrize(GENERAL_48)
1303 c.checkConsistency()
1304 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]))
1305 self.assertEqual(19,b)
1306 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1307 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1308 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])))
1309 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)
1310 m6CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1311 self.assertTrue(c.getCoords().isEqual(m6CoordsExp,1e-12))
1312 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1314 m7=MEDCouplingUMesh("polyhed",3)
1315 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"])
1316 m7.setCoords(coords)
1318 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])
1319 c,a,b=m7.tetrahedrize(PLANAR_FACE_5)
1320 c.checkConsistency()
1321 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])))
1322 self.assertEqual(9,b)
1323 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])))
1324 self.assertAlmostEqual(5.196152422706635,c.getMeasureField(False).accumulate()[0],12)
1325 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)
1326 m7CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1327 self.assertTrue(c.getCoords().isEqual(m7CoordsExp,1e-12))
1330 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"])
1331 m8=MEDCouplingUMesh("pyra5",3)
1332 m8.setCoords(coords)
1334 m8.insertNextCell(NORM_PYRA5,[3,2,1,0,7])
1335 st=m8.getCoords().getHiddenCppPointer()
1336 c,a,b=m8.tetrahedrize(PLANAR_FACE_5)
1337 self.assertEqual(m8.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1338 c.checkConsistency()
1339 self.assertTrue(a.isEqual(DataArrayInt([0,0])))
1340 self.assertEqual(0,b)
1341 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,1,7,3,1,0,7])))
1342 self.assertAlmostEqual(0.6666666666666667,c.getMeasureField(False).accumulate()[0],12)
1345 def testDualMesh3D1(self):
1346 arr=DataArrayDouble(2) ; arr.iota()
1347 c=MEDCouplingCMesh() ; c.setCoords(arr,arr,arr)
1348 m=c.buildUnstructured()
1349 t=m.tetrahedrize(PLANAR_FACE_5)[0]
1350 d=t.computeDualMesh()
1351 self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,29,118,207,236,325,354,383,472])))
1352 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])))
1353 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))
1354 self.assertAlmostEqual(1.,d.getMeasureField(False).accumulate()[0],1e-13)
1357 def testDualMesh2D1(self):
1358 arr=DataArrayDouble(5) ; arr.iota()
1359 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
1360 m=c.buildUnstructured()
1362 t=MEDCoupling1SGTUMesh(m)
1363 d=t.computeDualMesh()
1364 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])))
1365 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])))
1366 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))
1367 self.assertAlmostEqual(16.,d.getMeasureField(False).accumulate()[0],1e-13)
1370 def testSwig2LoadBalanceBBox1(self):
1371 arr=DataArrayDouble(5) ; arr.iota()
1372 t=MEDCouplingCMesh() ; t.setCoords(arr,arr)
1373 arr=DataArrayDouble(16) ; arr.iota() ; arr*=2./15
1374 s=MEDCouplingCMesh() ; s.setCoords(arr,arr[:]) ; s.translate([2.,1.])
1376 s1=s.build1SGTUnstructured()
1377 t1=t.build1SGTUnstructured()
1378 w=MEDCouplingPointSet.ComputeNbOfInteractionsWithSrcCells(s1,t1,1e-12)
1379 wExp=DataArrayInt([0,0,0,0,0,0,64,64,0,0,64,64,0,0,0,0])
1380 self.assertTrue(w.isEqual(wExp))
1381 slcs=w.splitInBalancedSlices(4)
1382 self.assertEqual(len(slcs),4)
1383 self.assertEqual(slcs,[slice(0,7,1),slice(7,8,1),slice(8,11,1),slice(11,16,1)])
1384 bbs=s1.getBoundingBoxForBBTree()
1385 bbt=t1.getBoundingBoxForBBTree()
1386 self.assertTrue(bbt.computeNbOfInteractionsWith(bbs,1e-12).isEqual(wExp))
1389 def testKrSpatialDiscretization2(self):
1390 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)
1391 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)
1392 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)
1393 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])
1394 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])
1396 nbOfInputPoints=100;
1397 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
1398 mesh=MEDCoupling1SGTUMesh.New("aMesh",NORM_POINT1);
1399 mesh.setCoords(srcPointCoordsXY);
1401 f.setArray(srcFieldValsOnPoints);
1402 f.checkConsistencyLight();
1404 res0=f.getValueOn([-0.5,-0.5]);
1405 self.assertAlmostEqual(targetFieldValsExpected.getIJ(0,0),res0[0],10)
1407 valuesToTest=f.getValueOnMulti(targetPointCoordsXY);
1408 self.assertEqual(196,valuesToTest.getNumberOfTuples());
1409 self.assertEqual(1,valuesToTest.getNumberOfComponents());
1411 self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
1413 fd=f.getDiscretization()
1415 self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
1416 coeffs,isDrift=fd.computeVectorOfCoefficients(mesh,srcFieldValsOnPoints)
1417 self.assertEqual(3,isDrift)
1418 self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
1420 pts3=[-0.5,-0.5,-0.5,-0.35,-0.35,-0.2]
1421 mesh.setCoords(srcPointCoordsXY[:4])
1422 m,nbCols=fd.computeEvaluationMatrixOnGivenPts(mesh,pts3)
1423 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))
1424 if MEDCouplingHasNumPyBindings():
1426 m0=m.toNumPyArray() ; m0=m0.reshape(3,nbCols) ; m0=np.matrix(m0)
1427 srcFieldValsOnPoints2=DataArrayDouble(4,2) ; srcFieldValsOnPoints2[:,0]=srcFieldValsOnPoints[:4] ; srcFieldValsOnPoints2[:,1]=2*srcFieldValsOnPoints[:4]
1428 n0=srcFieldValsOnPoints2.toNumPyArray() ; n0=n0.reshape(4,2) ; n0=np.matrix(n0)
1430 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME) ; f.setMesh(mesh) ; f.setArray(srcFieldValsOnPoints2) ; f.checkConsistencyLight()
1431 self.assertTrue(DataArrayDouble(np.array((m0*n0))).isEqual(f.getValueOnMulti(pts3),1e-14))
1436 # test the when input slice is all the same object is return by MEDCouplingMesh.buildPartRange
1437 def testSwig2MeshPartSlice1(self):
1438 a=DataArrayDouble(4) ; a.iota()
1439 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m=c.buildUnstructured()
1440 fc0=c.getMeasureField(False) ; fc1=fc0[:] ; fc2=fc0*fc1 ; fc2.setName(fc0.getName())
1441 self.assertEqual(fc0.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1442 self.assertEqual(fc2.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1443 self.assertTrue(fc2.isEqual(fc1,1e-12,1e-12))
1445 fm0=m.getMeasureField(False) ; fm1=fm0[:] ; fm2=fm0*fm1 ; fm2.setName(fm0.getName())
1446 self.assertEqual(fm0.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1447 self.assertEqual(fm2.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1448 self.assertTrue(fm2.isEqual(fm1,1e-12,1e-12))
1451 # test the correct behaviour when attempting to aggregate two fields whose mesh is null
1452 def testSwig2MergeFieldsOnFieldsHavingNoMesh(self):
1453 a=DataArrayDouble(4) ; a.iota() ; a*=1.5
1454 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; f1=c.getMeasureField(False)
1455 f1.setMesh(None) ; f2=f1.deepCopy() ; f2*=2
1456 f3=MEDCouplingFieldDouble.MergeFields(f1,f2)
1457 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])
1458 self.assertTrue(f3.getArray().isEqual(daExp,1e-12))
1459 self.assertEqual(f3.getTypeOfField(),ON_CELLS)
1460 self.assertEqual(f3.getMesh(),None)
1461 f4=MEDCouplingFieldDouble.MergeFields([f1,f2])
1462 self.assertTrue(f4.getArray().isEqual(daExp,1e-12))
1463 self.assertEqual(f4.getTypeOfField(),ON_CELLS)
1464 self.assertEqual(f4.getMesh(),None)
1467 # test a simple node to cell conversion of a field
1468 def testSwig2NodeToCellDiscretization1(self):
1469 f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
1470 a1=DataArrayDouble(4) ; a1.iota()
1471 a2=DataArrayDouble(3) ; a2.iota()
1472 m=MEDCouplingCMesh() ; m.setCoords(a1,a2)
1474 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]"])
1475 f.setArray(arr) ; f.setName("toto")
1477 f2=f.nodeToCellDiscretization()
1478 self.assertEqual(ON_CELLS,f2.getTypeOfField())
1479 self.assertEqual("toto",f2.getName())
1480 self.assertEqual([1.1,2,3],f2.getTime())
1481 self.assertEqual(["aa [km]","bbb [kJ]"],f2.getArray().getInfoOnComponents())
1482 self.assertEqual(6,f2.getArray().getNumberOfTuples())
1483 self.assertEqual(f.getMesh().getHiddenCppPointer(),f2.getMesh().getHiddenCppPointer())
1484 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]"])
1485 self.assertTrue(f2.getArray().isEqual(exp,1e-13))
1488 def testSwig2MeshOrientCorrectly2DCells1(self):
1489 m=MEDCouplingUMesh("mesh",2)
1490 coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
1493 m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
1494 m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
1495 self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1496 m.changeSpaceDimension(3)
1497 m.orientCorrectly2DCells([0.,0.,-1.],False)
1499 m.checkConsistencyLight()
1500 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
1501 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
1502 m.changeSpaceDimension(2)
1503 self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1506 def testSwig2Hexa8HavingFacesWarped1(self):
1507 """ 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
1508 intersected with src the sum of intersection volume is greater than the volume of the trg cell.
1509 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
1512 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)
1513 src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
1515 src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
1516 src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
1517 src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
1518 src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
1519 src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
1520 src.checkConsistency()
1521 # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
1522 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)
1523 trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
1525 trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
1527 srcFace=src.buildDescendingConnectivity()[0]
1528 conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
1529 eqFaces=srcFace.computePlaneEquationOf3DFaces()
1531 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
1532 lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
1533 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
1534 shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
1535 check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
1536 idsToTest=check.findIdsNotInRange(0.,1e-10)
1537 self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
1538 idsToTest2=idsToTest.findIdsNotInRange(18,22)
1539 self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
1540 idsToTest2.rearrange(2)
1541 self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
1544 def testSwig2SortHexa8EachOther1(self):
1546 testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
1548 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)])
1549 m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
1550 m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
1551 m1.checkConsistencyLight()
1553 m2=m1.deepCopy() ; m2.setName("m2")
1555 trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
1556 for i,t in enumerate(trs):
1558 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
1560 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
1561 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
1562 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
1565 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
1567 self.assertEqual(12,m.getNumberOfNodes())
1568 m=MEDCoupling1SGTUMesh(m)
1569 m.sortHexa8EachOther()
1570 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
1571 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
1576 def testSwig2normMinComputeAbs1(self):
1577 d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
1578 d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1580 dExp=d.deepCopy() ; dExp.abs()
1581 self.assertTrue(dExp.isEqual(d0,1e-12))
1582 e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
1583 self.assertAlmostEqual(0.,e.normMin(),13)
1584 self.assertAlmostEqual(0.009,d.normMin(),13)
1586 di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
1587 di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1589 diExp=di.deepCopy() ; diExp.abs()
1590 self.assertTrue(diExp.isEqual(d0i))
1591 self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
1594 def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
1595 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)
1596 m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
1597 m.insertNextCell(NORM_POLYGON,[6,3,4,5])
1598 m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
1599 m.checkConsistency()
1601 self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
1602 self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
1603 self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
1606 def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
1607 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)
1608 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1609 m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
1610 m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
1611 m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
1612 m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
1613 m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
1614 m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
1615 m.checkConsistency()
1616 self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
1619 def testSwig2DAIGetIdsEqualTuple1(self):
1620 da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
1621 self.assertTrue(da.findIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
1622 self.assertTrue(da.findIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
1623 self.assertTrue(da.findIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
1625 self.assertRaises(InterpKernelException,da.findIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
1626 self.assertTrue(da.findIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
1627 self.assertTrue(da.findIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
1629 self.assertTrue(da.findIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
1630 self.assertTrue(da.findIdsEqualTuple(2).isEqual(da.findIdsEqual(2)))
1633 def testSwig2GaussNEStaticInfo1(self):
1634 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
1635 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
1636 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
1639 def testSwigReverseNodalConnOnStructuredMesh(self):
1641 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
1642 c.setCoordsAt(0,arr)
1643 rn,rni=c.getReverseNodalConnectivity()
1644 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1645 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1646 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1647 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1649 c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
1650 c.setCoordsAt(0,arr)
1651 rn,rni=c.getReverseNodalConnectivity()
1652 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1653 self.assertTrue(rn.isEqual(DataArrayInt([0])))
1654 self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
1655 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1657 c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
1658 c.setCoordsAt(0,arr)
1659 rn,rni=c.getReverseNodalConnectivity()
1660 rn.isEqual(DataArrayInt([]))
1661 rni.isEqual(DataArrayInt([0]))
1663 c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
1664 c.setCoords(arr,arr2)
1665 rn,rni=c.getReverseNodalConnectivity()
1666 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1667 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])))
1668 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])))
1669 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1671 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1672 c.setCoords(arr,arr2)
1673 rn,rni=c.getReverseNodalConnectivity()
1674 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1675 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1677 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1678 c.setCoords(arr2,arr)
1679 rn,rni=c.getReverseNodalConnectivity()
1680 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1681 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1683 c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
1684 c.setCoords(arr0,arr1,arr2)
1685 rn,rni=c.getReverseNodalConnectivity()
1686 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])))
1687 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])))
1688 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1689 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1692 def testSwig2CellToNodeDiscretization1(self):
1693 m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
1694 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
1695 arr=DataArrayDouble(12) ; arr.iota()
1696 arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
1698 f.checkConsistencyLight()
1700 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.])
1701 ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
1702 f2=f.cellToNodeDiscretization()
1703 f2.checkConsistencyLight()
1704 self.assertEqual(f2.getTime()[1:],[5,6])
1705 self.assertAlmostEqual(f2.getTime()[0],1.1,15)
1706 self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
1707 self.assertTrue(f2.getArray().isEqual(ref,1e-12))
1708 rn,rni=m.getReverseNodalConnectivity()
1709 rni2=(rni.deltaShiftIndex()).convertToDblArr()
1710 arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
1711 self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
1714 u=m.buildUnstructured() ; f.setMesh(u) ; del m
1715 f3=f.cellToNodeDiscretization()
1716 f3.checkConsistencyLight()
1717 self.assertEqual(f3.getTime()[1:],[5,6])
1718 self.assertAlmostEqual(f3.getTime()[0],1.1,15)
1719 self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
1720 self.assertTrue(f3.getArray().isEqual(ref,1e-12))
1723 def testSwig2GetMeshSpaceDimensionCMesh1(self):
1724 c=MEDCouplingCMesh()
1725 arr0=DataArrayDouble([0,1,2])
1726 arr1=DataArrayDouble([0])
1727 c.setCoords(arr0,arr0,arr0)
1728 self.assertEqual(c.getMeshDimension(),3)
1729 self.assertEqual(c.getSpaceDimension(),3)
1731 c.setCoords(arr0,arr0,arr1)
1732 self.assertEqual(c.getMeshDimension(),2)
1733 self.assertEqual(c.getSpaceDimension(),3)
1735 c.setCoords(arr0,arr0)
1736 self.assertEqual(c.getMeshDimension(),2)
1737 self.assertEqual(c.getSpaceDimension(),2)
1739 c.setCoords(arr0,arr1)
1740 self.assertEqual(c.getMeshDimension(),1)
1741 self.assertEqual(c.getSpaceDimension(),2)
1744 self.assertEqual(c.getMeshDimension(),1)
1745 self.assertEqual(c.getSpaceDimension(),1)
1748 self.assertEqual(c.getMeshDimension(),0)
1749 self.assertEqual(c.getSpaceDimension(),1)
1752 def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
1755 m=MEDCouplingCMesh()
1756 arr1=DataArrayDouble(nx) ; arr1.iota()
1757 arr2=DataArrayDouble(ny) ; arr2.iota()
1758 m.setCoords(arr1,arr2)
1759 m=m.buildUnstructured()
1760 da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
1761 m2=m[da] ; m2.simplexize(0)
1762 dan=da.buildComplement(m.getNumberOfCells())
1764 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1766 m.convertLinearCellsToQuadratic()
1767 m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
1768 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1769 p=m.buildSpreadZonesWithPoly()
1770 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])))
1771 self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
1772 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))
1775 def testSwigExtendedSlice1(self):
1776 d=DataArrayInt([5,6,7])
1777 self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
1778 self.assertTrue(d[3:].isEqual(DataArrayInt([])))
1781 except InterpKernelException as e:
1782 self.assertTrue(True)
1784 self.assertTrue(False)
1786 d=DataArrayInt([5,6,7,8])
1787 self.assertEqual(d[-1],8)
1788 self.assertEqual(d[-4],5)
1791 except InterpKernelException as e:
1792 self.assertTrue(True)
1794 self.assertTrue(False)
1796 self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
1797 self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
1798 self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
1799 self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
1800 self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
1803 except InterpKernelException as e:
1804 self.assertTrue(True)
1806 self.assertTrue(False)
1809 self.assertTrue(d[0:].isEqual(DataArrayInt([])))
1811 d=DataArrayDouble([5,6,7])
1812 self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
1813 self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
1816 except InterpKernelException as e:
1817 self.assertTrue(True)
1819 self.assertTrue(False)
1821 d=DataArrayDouble([5,6,7,8])
1822 self.assertAlmostEqual(d[-1],8.,12)
1823 self.assertAlmostEqual(d[-4],5.,12)
1826 except InterpKernelException as e:
1827 self.assertTrue(True)
1829 self.assertTrue(False)
1831 self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
1832 self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
1833 self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
1834 self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
1835 self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
1838 except InterpKernelException as e:
1839 self.assertTrue(True)
1841 self.assertTrue(False)
1843 d=DataArrayDouble([])
1844 self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
1847 def testSwig2Hexa27GP1(self):
1848 """ This test focused on shape functions of hexa27.
1850 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.]])
1851 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1853 # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
1854 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])
1855 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.]
1856 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]
1857 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]
1858 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1860 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1861 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1862 fGauss.setArray(arr)
1863 arrOfDisc=fGauss.getLocalizationOfDiscr()
1865 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))
1869 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1870 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1871 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1874 def testSwig2Pyra13GP1(self):
1875 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.]])
1876 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1878 # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
1879 m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
1880 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]
1881 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]
1882 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]
1883 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1885 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1886 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1887 fGauss.setArray(arr)
1888 arrOfDisc=fGauss.getLocalizationOfDiscr()
1890 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))
1893 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. !
1894 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1895 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1896 self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity around 0.,0.,1. !
1899 def testSwig2Tri7GP1(self):
1900 coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
1901 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
1903 # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
1904 m.insertNextCell(NORM_TRI7, list(range(7)))
1905 refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
1906 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]
1907 weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
1908 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1910 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1911 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1912 fGauss.setArray(arr)
1913 arrOfDisc=fGauss.getLocalizationOfDiscr()
1914 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))
1917 gaussCoords=refCoords
1918 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1919 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1920 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1923 def testSwig2StructuredDesc1(self):
1924 c=MEDCouplingCMesh()
1925 arr0=DataArrayDouble(3) ; arr0.iota()
1926 arr1=DataArrayDouble(4) ; arr1.iota()
1927 arr2=DataArrayDouble(5) ; arr2.iota()
1928 c.setCoords(arr0,arr1,arr2)
1930 self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
1931 m=c.build1SGTSubLevelMesh()
1932 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])))
1933 self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
1935 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])))
1938 def testSwig2Colinearize2D1(self):
1939 coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
1941 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1942 m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
1943 refPtr=m.getCoords().getHiddenCppPointer()
1944 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1945 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1946 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1947 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1948 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1949 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1950 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1951 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1953 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1954 m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
1955 refPtr=m.getCoords().getHiddenCppPointer()
1956 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1957 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1958 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1959 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1961 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1962 m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
1963 refPtr=m.getCoords().getHiddenCppPointer()
1964 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1965 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1966 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
1967 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1969 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1970 m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
1971 refPtr=m.getCoords().getHiddenCppPointer()
1972 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1973 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1974 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
1975 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1977 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)])
1978 coo2.setInfoOnComponents(["aa","bbbb"])
1979 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1980 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1981 refPtr=m.getCoords().getHiddenCppPointer()
1982 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1983 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
1984 self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
1985 refPtr=m.getCoords().getHiddenCppPointer()
1986 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
1987 self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
1988 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1989 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1990 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1991 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1992 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1993 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1994 # mix of quadratic and linear inside a QPOLYG cell
1995 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)])
1996 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1997 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1998 refPtr=m.getCoords().getHiddenCppPointer()
1999 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
2000 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
2001 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
2002 self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
2003 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2004 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2007 def testSwig2ColinearizeKeepingConform2D1(self):
2009 # Just to get a nice coords array ...
2010 mm = MEDCouplingCMesh(); arr = DataArrayDouble([0.0, 1.0,2.0])
2011 mm.setCoords(arr, arr); mm = mm.buildUnstructured(); coo = mm.getCoords()
2013 mesh = MEDCouplingUMesh("M", 2)
2015 c = [NORM_POLYGON, 0,1,4,7,6,3, NORM_QUAD4, 1,2,5,4, NORM_QUAD4,4,5,8,7]
2017 mm.setConnectivity(DataArrayInt(c),DataArrayInt(cI))
2018 mm.checkConsistencyLight()
2020 mm.colinearizeKeepingConform2D(eps)
2021 c = mm.getNodalConnectivity().getValues()
2022 cI = mm.getNodalConnectivityIndex().getValues()
2023 self.assertEqual(c, [NORM_POLYGON, 0, 1, 4, 7, 6, NORM_POLYGON, 1, 2, 5, 4, NORM_POLYGON, 4, 5, 8, 7])
2024 self.assertEqual(cI, [0,6,11,16])
2027 def testSwig2BoundingBoxForBBTree1(self):
2028 """ 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 !
2030 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)
2031 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2033 m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
2034 m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
2035 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))
2038 def testSwig2CartBuildUnstructuredOnExoticCases1(self):
2039 """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
2042 m=MEDCouplingCMesh()
2043 arrX=DataArrayDouble(3) ; arrX.iota()
2044 arrY=DataArrayDouble(4) ; arrY.iota()
2045 arrZ=DataArrayDouble(1) ; arrZ.iota()
2046 m.setCoords(arrX,arrY,arrZ)
2047 self.assertEqual(2,m.getMeshDimension())
2048 self.assertEqual(3,m.getSpaceDimension())
2049 mu=m.buildUnstructured()
2050 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])))
2051 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2052 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)])
2053 self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
2055 m=MEDCouplingCMesh()
2056 arrX=DataArrayDouble(3) ; arrX.iota()
2057 arrY=DataArrayDouble(1) ; arrY.iota()
2058 arrZ=DataArrayDouble(4) ; arrZ.iota()
2059 m.setCoords(arrX,arrY,arrZ)
2060 self.assertEqual(2,m.getMeshDimension())
2061 self.assertEqual(3,m.getSpaceDimension())
2062 mu=m.buildUnstructured()
2063 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])))
2064 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2065 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)])
2066 self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
2068 m=MEDCouplingCMesh()
2069 arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
2070 arrY=DataArrayDouble(3) ; arrY.iota()
2071 arrZ=DataArrayDouble(4) ; arrZ.iota()
2072 m.setCoords(arrX,arrY,arrZ)
2073 self.assertEqual(2,m.getMeshDimension())
2074 self.assertEqual(3,m.getSpaceDimension())
2075 mu=m.buildUnstructured()
2076 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])))
2077 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2078 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)])
2079 self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
2081 m=MEDCouplingCMesh()
2082 arrX=DataArrayDouble(3) ; arrX.iota()
2083 arrY=DataArrayDouble(1) ; arrY.iota(7)
2084 arrZ=DataArrayDouble(1) ; arrZ.iota(8)
2085 m.setCoords(arrX,arrY,arrZ)
2086 self.assertEqual(1,m.getMeshDimension())
2087 self.assertEqual(3,m.getSpaceDimension())
2088 mu=m.buildUnstructured()
2089 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2090 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2091 coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
2092 self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
2094 m=MEDCouplingCMesh()
2095 arrX=DataArrayDouble(1) ; arrX.iota(7)
2096 arrY=DataArrayDouble(1) ; arrY.iota(8)
2097 arrZ=DataArrayDouble(3) ; arrZ.iota()
2098 m.setCoords(arrX,arrY,arrZ)
2099 self.assertEqual(1,m.getMeshDimension())
2100 self.assertEqual(3,m.getSpaceDimension())
2101 mu=m.buildUnstructured()
2102 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2103 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2104 coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
2105 self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
2107 m=MEDCouplingCMesh()
2108 arrX=DataArrayDouble(3) ; arrX.iota()
2109 arrY=DataArrayDouble(1) ; arrY.iota(7)
2110 m.setCoords(arrX,arrY)
2111 self.assertEqual(1,m.getMeshDimension())
2112 self.assertEqual(2,m.getSpaceDimension())
2113 mu=m.buildUnstructured()
2114 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2115 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2116 coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
2117 self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
2119 m=MEDCouplingCMesh()
2120 arrX=DataArrayDouble(1) ; arrX.iota(7)
2121 arrY=DataArrayDouble(3) ; arrY.iota()
2122 m.setCoords(arrX,arrY)
2123 self.assertEqual(1,m.getMeshDimension())
2124 self.assertEqual(2,m.getSpaceDimension())
2125 mu=m.buildUnstructured()
2126 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2127 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2128 coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
2129 self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
2132 def testSwig2Colinearize2D2(self):
2133 """ simple non regression test but that has revealed a bug"""
2134 coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
2135 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2136 m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
2137 m.checkConsistency()
2138 refPtr=m.getCoords().getHiddenCppPointer()
2140 m.colinearize2D(1e-12)
2141 m.checkConsistency()
2142 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2143 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_POLYGON,0,2,3,4])))
2144 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
2147 def testSwig2Colinearize2D3(self):
2148 """ colinearize was too aggressive, potentially producing cells with one edge """
2149 # Flat polygon with 3 edges - nothing should happen (min number of edges for a linear polyg)
2150 coo = DataArrayDouble([0.0,0.0, 2.0,0.0, 1.5,0.0, 1.0,0.0, 0.5,0.0], 5,2)
2151 m = MEDCouplingUMesh("m", 2)
2152 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2], [0,4]] ]
2153 m.setCoords(coo); m.setConnectivity(c, cI)
2154 m.colinearize2D(1e-10)
2155 m.checkConsistency()
2156 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2157 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2159 # Flat quad polygon, 2 edges - nothing should happen (min number of edges for a quad polyg)
2160 m = MEDCouplingUMesh("m", 2)
2161 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1, 2,3], [0,5]] ]
2162 m.setCoords(coo); m.setConnectivity(c, cI)
2163 m.colinearize2D(1e-10)
2164 m.checkConsistency()
2165 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2166 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2168 # Flat polygon, 4 edges - one reduction should happen
2169 m = MEDCouplingUMesh("m", 2)
2170 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2,3], [0,5]] ]
2171 m.setCoords(coo); m.setConnectivity(c, cI)
2172 m.colinearize2D(1e-10)
2173 m.checkConsistency()
2174 self.assertEqual([NORM_POLYGON, 3,1,2], m.getNodalConnectivity().getValues())
2175 self.assertEqual([0,4], m.getNodalConnectivityIndex().getValues())
2177 # Flat quad polygon, 3 edges - one reduction expected
2178 m = MEDCouplingUMesh("m", 2)
2179 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1,3, 3,2,4], [0,7]] ]
2180 m.setCoords(coo); m.setConnectivity(c, cI)
2181 m.colinearize2D(1e-10)
2182 m.checkConsistency()
2183 self.assertEqual([NORM_QPOLYG, 3,1, 5,2], m.getNodalConnectivity().getValues())
2184 self.assertTrue( m.getCoords()[5].isEqual( DataArrayDouble([(1.5,0.0)]), 1.0e-12 ) )
2185 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2187 # Now an actual (neutronic) case: circle made of 4 SEG3. Should be reduced to 2 SEG3
2188 m = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 1.0)
2189 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 7,5,3,1, 6,4,2,0], [0,9]] ]
2190 m.colinearize2D(1e-10)
2191 m.checkConsistency()
2192 self.assertEqual([NORM_QPOLYG, 3,5, 8,4], m.getNodalConnectivity().getValues())
2193 self.assertTrue( m.getCoords()[8].isEqual( DataArrayDouble([(1.0,0.0)]), 1.0e-12 ) )
2194 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2196 def testSwig2Colinearize2D4(self):
2197 """ From ALAMOS. Colinearize around last seg in the connectivity was buggy. """
2198 mesh = MEDCouplingUMesh('C3', 2)
2199 coo = DataArrayDouble([(-31.838400909874,21.557335816426),(-34.588400909874,16.794196095611),(-33.298676775512,19.225000000000),(-33.547226066398,19.368500000000),(-32.750140188627,22.083728734445),(-35.500140188627,17.320589013630),
2200 (-35.044270549250,17.057392554621),(-32.619779010901,22.008464673393),(-32.554667298175,21.970872408523),(-32.745177043525,22.080863261284),(-32.747658616076,22.082295997864),(-32.682478027213,22.044663967338)])
2202 c = DataArrayInt([32, 0, 1, 5, 4, 9, 7, 2, 6, 3, 10, 11, 8])
2203 cI = DataArrayInt([0, 13])
2204 mesh.setConnectivity(c, cI)
2205 mesh.colinearize2D(1.0e-8)
2206 coo = mesh.getCoords()
2207 self.assertEqual(coo.getNumberOfTuples(), 13)
2209 self.assertAlmostEqual(lstPt[0,0], -32.29427054925)
2210 self.assertAlmostEqual(lstPt[0,1], 21.8205322754351)
2213 def testSwig2CheckAndPreparePermutation2(self):
2214 a=DataArrayInt([10003,9999999,5,67])
2215 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
2216 a=DataArrayInt([10003,-9999999,5,67])
2217 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
2219 self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
2222 def testSwig2ComputeNeighborsOfNodes1(self):
2223 arrX=DataArrayDouble(3) ; arrX.iota()
2224 arrY=DataArrayDouble(4) ; arrY.iota()
2225 arrZ=DataArrayDouble(5) ; arrZ.iota()
2226 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
2228 a,b=m.computeNeighborsOfNodes()
2229 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])))
2230 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])))
2232 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
2233 a,b=m.computeNeighborsOfNodes()
2234 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])))
2235 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2237 m=m.buildDescendingConnectivity()[0]
2238 a,b=m.computeNeighborsOfNodes()
2239 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])))
2240 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2243 def testSwigBugOnUnpackingTuplesInDataArray1(self):
2244 inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2247 self.assertRaises(StopIteration,r.__getitem__,4)
2248 self.assertEqual(len(r),3)
2251 self.assertEqual(len(r),3)
2254 self.assertEqual(len(r),3)
2257 self.assertEqual(len(r),3)
2259 self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
2261 inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2264 self.assertRaises(StopIteration,r.__getitem__,4)
2265 self.assertEqual(len(r),3)
2268 self.assertEqual(len(r),3)
2271 self.assertEqual(len(r),3)
2274 self.assertEqual(len(r),3)
2276 self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
2279 def testSwig2IMesh1(self):
2280 """ 1st test of image grid mesh.
2282 m=MEDCouplingIMesh()
2283 self.assertEqual(m.getSpaceDimension(),-1)
2284 self.assertEqual(1,len(m.__repr__().split("\n")))
2285 self.assertEqual(6,len(m.__str__().split("\n")))
2286 self.assertRaises(InterpKernelException,m.getNodeStruct)
2287 self.assertRaises(InterpKernelException,m.getOrigin)
2288 self.assertRaises(InterpKernelException,m.getDXYZ)
2289 m.setSpaceDimension(3)
2290 self.assertEqual(9,len(m.__str__().split("\n")))
2291 self.assertEqual(4,len(m.__repr__().split("\n")))
2292 self.assertEqual((0,0,0),m.getNodeStruct())
2293 self.assertEqual((0.,0.,0.),m.getOrigin())
2294 self.assertEqual((0.,0.,0.),m.getDXYZ())
2295 self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
2296 m.setNodeStruct([3,4,2])
2297 self.assertEqual((3,4,2),m.getNodeStruct())
2298 m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
2299 self.assertEqual((1.5,2.5,3.5),m.getOrigin())
2300 m.setDXYZ((0.5,1.,0.25))
2301 self.assertEqual((0.5,1.,0.25),m.getDXYZ())
2302 for it in DataArrayDouble([(1.5,2.5,3.5)]):
2303 m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
2305 self.assertEqual(3,m.getSpaceDimension())
2306 self.assertEqual((3,4,2),m2.getNodeStruct())
2307 self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
2308 self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
2309 self.assertEqual(24,m2.getNumberOfNodes())
2310 self.assertEqual(6,m2.getNumberOfCells())
2311 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2313 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2315 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2317 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2319 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2321 self.assertTrue(not m.isEqual(m2,1e-12))
2323 self.assertTrue(m.isEqual(m2,1e-12))
2325 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2326 m2.setTimeUnit("ms")
2327 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2329 m2.setNodeStruct([3,2,4])
2330 self.assertTrue(not m.isEqual(m2,1e-12))
2331 m.setNodeStruct([3,2,4])
2332 self.assertTrue(m.isEqual(m2,1e-12))
2333 m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
2334 self.assertTrue(not m.isEqual(m2,1e-12))
2335 m2.setOrigin([1.5,3.5,2.5])
2336 self.assertTrue(m.isEqual(m2,1e-12))
2337 m.setDXYZ((0.5,0.25,1.))
2338 self.assertTrue(not m.isEqual(m2,1e-12))
2339 m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
2340 self.assertTrue(m.isEqual(m2,1e-12))
2342 self.assertTrue(m2bis.isEqual(m2,1e-12))
2344 self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
2345 m2bis.refineWithFactor([3,3,3])
2346 self.assertEqual(162,m2bis.getNumberOfCells())
2347 self.assertEqual((7,4,10),m2bis.getNodeStruct())
2348 self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
2349 self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
2351 self.assertEqual(3,m.getMeshDimension())
2352 self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
2353 mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
2354 mu.checkConsistency()
2355 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]"])
2356 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2357 self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
2358 self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
2359 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])))
2360 bary=m.computeCellCenterOfMass()
2361 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]"])
2362 self.assertTrue(bary.isEqual(baryExp,1e-12))
2364 c=m.convertToCartesian()
2365 c.checkConsistencyLight()
2366 self.assertEqual([1.1,0,3],c.getTime())
2367 self.assertEqual("ms",c.getTimeUnit())
2368 self.assertEqual(3,c.getMeshDimension())
2369 self.assertEqual(3,c.getSpaceDimension())
2370 arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
2371 self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
2372 arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
2373 self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
2374 arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
2375 self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
2376 self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
2378 a,b=m.getCellsContainingPoints(baryExp,1e-12)
2379 self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
2380 self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
2381 for a,b in enumerate(baryExp):
2382 self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
2385 m.translate([1.,2.,4.])
2386 self.assertEqual((3,2,4),m.getNodeStruct())
2387 self.assertEqual((2.5,5.5,6.5),m.getOrigin())
2388 self.assertEqual((0.5,0.25,1.),m.getDXYZ())
2389 m.scale([0.,1.,3.],2.)
2390 self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
2391 self.assertEqual((3,2,4),m.getNodeStruct())
2392 self.assertEqual((5.,10.,10.),m.getOrigin())
2393 self.assertEqual((1.,0.5,2.),m.getDXYZ())
2395 f=m.getMeasureField(False)
2396 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
2397 f2.setName("MeasureOfMesh_mesh")
2398 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
2400 m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
2401 self.assertEqual((2,2,3),m3.getNodeStruct())
2402 self.assertEqual((6.,10.,12.),m3.getOrigin())
2403 self.assertEqual((1.,0.5,2.),m3.getDXYZ())
2404 # now playing with 3D surf
2405 m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
2406 self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
2407 self.assertEqual(3,m4.getSpaceDimension())
2408 self.assertEqual(2,m4.getMeshDimension())
2409 self.assertEqual(12,m4.getNumberOfNodes())
2410 self.assertEqual(6,m4.getNumberOfCells())
2411 mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
2412 mu.checkConsistency()
2413 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2414 self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
2415 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]"])
2416 self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
2417 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])))
2420 def testSwig1GetValuesAsTuple1(self):
2422 self.assertEqual(d.getValues(),[])
2423 self.assertEqual(d.getValuesAsTuple(),[])
2424 d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
2425 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.])
2426 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.)])
2428 self.assertEqual(d.getValues(),[])
2429 self.assertEqual(d.getValuesAsTuple(),[])
2430 d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
2431 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])
2432 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)])
2435 def testSwig2AMR1(self):
2436 self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
2437 self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
2439 amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
2440 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2441 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
2442 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
2443 self.assertEqual(0,amr.getNumberOfPatches())
2444 self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
2445 self.assertEqual(2,amr.getSpaceDimension())
2446 amr.addPatch([(1,2),(0,1)],[4,4])
2447 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2448 self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
2449 self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
2450 self.assertEqual(1,amr.getNumberOfPatches())
2451 self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
2452 self.assertEqual(2,amr.getSpaceDimension())
2453 amr[0].addPatch([(2,3),(1,3)],[3,2])
2454 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2455 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2456 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2457 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2458 self.assertEqual(1,amr.getNumberOfPatches())
2459 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2460 self.assertEqual(2,amr.getSpaceDimension())
2461 amr[0].addPatch([(0,2),(3,4)],[3,2])
2462 self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
2463 self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
2464 self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
2465 self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
2466 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2467 self.assertEqual(2,amr.getSpaceDimension())
2469 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2470 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2471 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2472 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2473 self.assertEqual(1,amr.getNumberOfPatches())
2474 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2475 self.assertEqual(2,amr.getSpaceDimension())
2478 def testSwig2NonRegressionTestPAL1164(self):
2479 """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
2480 xarr=DataArrayDouble(3,1)
2482 cmesh=MEDCouplingCMesh()
2483 cmesh.setCoords(xarr,xarr,xarr)
2484 mesh=cmesh.buildUnstructured()
2485 f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
2486 f.setName("MyField")
2487 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2488 self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
2489 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2490 f.applyLin(2.,0.,0)# here it is OK !
2491 self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
2493 self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
2496 def testSwig2StructurizeMe1(self):
2497 arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
2498 arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
2499 arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
2500 c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
2501 c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
2502 u=c.buildUnstructured()
2503 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])
2504 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])
2506 u.renumberNodes(np,len(np))
2507 u=MEDCoupling1SGTUMesh(u)
2509 e,d,f=u.structurizeMe()
2510 self.assertTrue(c.isEqual(e,1e-12))
2511 self.assertTrue(d.isEqual(cp))
2512 self.assertTrue(f.isEqual(np))
2515 def testSwig2DenseMatrix1(self):
2516 m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
2517 self.assertEqual(m0.getNumberOfRows(),2)
2518 self.assertEqual(m0.getNumberOfCols(),3)
2519 self.assertEqual(m0.getNbOfElems(),6)
2520 ref=m0.getData().getHiddenCppPointer()
2522 self.assertTrue(m0.isEqual(m00,1e-12))
2523 m00.getData().setIJ(0,0,2.1)
2524 self.assertTrue(not m0.isEqual(m00,1e-12))
2525 m00.getData().setIJ(0,0,2.)
2526 self.assertTrue(m0.isEqual(m00,1e-12))
2527 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2529 m000=m0*DataArrayDouble([5,9,3])
2530 self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
2533 self.assertTrue(not m0.isEqual(m00,1e-12))
2534 self.assertEqual(m0.getNumberOfRows(),3)
2535 self.assertEqual(m0.getNumberOfCols(),2)
2536 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2537 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2539 self.assertTrue(m0.isEqual(m00,1e-12))
2540 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2541 self.assertEqual(m0.getNumberOfRows(),2)
2542 self.assertEqual(m0.getNumberOfCols(),3)
2543 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2544 #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
2546 self.assertEqual(m1.getNumberOfRows(),2)
2547 self.assertEqual(m1.getNumberOfCols(),3)
2548 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2549 m11=m0.deepCopy() ; m11+=m1
2550 self.assertEqual(m11.getNumberOfRows(),2)
2551 self.assertEqual(m11.getNumberOfCols(),3)
2552 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2554 self.assertEqual(m11.getNumberOfRows(),2)
2555 self.assertEqual(m11.getNumberOfCols(),3)
2556 self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
2558 self.assertEqual(m11.getNumberOfRows(),2)
2559 self.assertEqual(m11.getNumberOfCols(),3)
2560 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2562 self.assertEqual(m1.getNumberOfRows(),2)
2563 self.assertEqual(m1.getNumberOfCols(),3)
2564 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2566 self.assertEqual(m1.getNumberOfRows(),3)
2567 self.assertEqual(m1.getNumberOfCols(),2)
2568 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
2569 #m1np=m0np.transpose()
2571 self.assertEqual(m2.getNumberOfRows(),2)
2572 self.assertEqual(m2.getNumberOfCols(),2)
2573 self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
2576 def testSwig2AMR2(self):
2577 """ 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."""
2578 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2579 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2580 MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
2581 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))
2583 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2584 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2585 MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
2586 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))
2588 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2589 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2590 MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
2591 self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
2594 def testSwig2AMR3(self):
2595 """ Test spread of coarse IMesh instance into a fine one, with a factor."""
2596 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2597 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2598 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
2599 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))
2601 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2602 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2603 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
2604 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))
2605 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()
2606 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()
2608 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2609 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2610 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
2611 self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
2614 def testSwig2AMR4(self):
2615 """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."""
2616 im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
2617 b=im.computeCellCenterOfMass() ; b-=[1.,1.] ; b=b.magnitude()
2618 ids=b.findIdsInRange(0.4,0.7)
2619 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
2620 # f.write("test.vti")
2621 amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
2622 arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
2623 bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
2624 amr.createPatchesFromCriterion(bso,arr2,[2,2])
2625 m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
2626 self.assertEqual(12,amr.getNumberOfPatches())
2627 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)]]
2628 for i,bltr in enumerate(exp0):
2629 self.assertEqual(amr[i].getBLTRRange(),bltr)
2631 self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
2633 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
2634 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
2635 self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
2636 m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
2637 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
2638 self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
2641 def testSwig2AMR5(self):
2642 """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
2644 coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
2645 fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
2646 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
2647 self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
2649 MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
2650 self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
2652 coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
2653 fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
2654 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
2655 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))
2656 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2658 fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
2659 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
2660 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
2661 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2662 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.])
2663 self.assertTrue(coarse.isEqual(coarseExp,1e-12))
2664 self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
2665 self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
2668 def testSwig2AMR6(self):
2669 """ 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."""
2670 amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
2671 da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
2672 amr.addPatch([(1,4),(2,4)],[4,4])
2673 amr.addPatch([(0,1),(0,1)],[4,4])
2674 amr.addPatch([(4,5),(3,4)],[4,4])
2675 amr.addPatch([(4,5),(1,3)],[4,4])
2676 amr.addPatch([(0,1),(1,4)],[4,4])
2677 da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
2678 da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
2679 da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
2680 da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
2681 da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
2682 self.assertEqual(5,amr.getNumberOfPatches())
2683 l=[da0,da1,da2,da3,da4]
2684 lCpy=[elt.deepCopy() for elt in l]
2685 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2686 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2687 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2688 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2690 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2691 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2692 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2693 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkConsistencyLight()
2694 f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkConsistencyLight()
2695 f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkConsistencyLight()
2697 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])
2698 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])
2699 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2700 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2701 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2702 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2704 g0=amr.retrieveGridsAt(0)
2705 self.assertEqual(1,len(g0))
2706 self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
2707 g1=amr.retrieveGridsAt(1)
2708 self.assertEqual(5,len(g1))
2710 self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
2714 def testSwig2AMR7(self):
2715 """Idem testSwig2AMR6 except that we are in 1D"""
2716 amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
2717 da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
2718 amr.addPatch([(1,4)],[4])
2719 amr.addPatch([(0,1)],[4])
2720 da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
2721 da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
2722 self.assertEqual(2,amr.getNumberOfPatches())
2724 lCpy=[elt.deepCopy() for elt in l]
2725 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2726 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2727 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2728 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2730 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2731 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2732 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2734 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])
2735 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])
2736 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2737 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2738 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2739 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2742 def testSwig2AMR8(self):
2743 """This test checks 'basic' operations for ghost update."""
2745 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2746 amr.addPatch([(1,4),(2,4)],[4,4])
2747 amr.addPatch([(4,5),(3,5)],[4,4])
2748 amr.addPatch([(0,1),(4,6)],[4,4])
2749 amr[0].addPatch([(10,12),(5,8)],[2,2])
2750 amr[1].addPatch([(0,1),(0,5)],[2,2])
2751 amr[2].addPatch([(3,4),(0,3)],[2,2])
2752 m=amr.buildMeshFromPatchEnvelop()
2753 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
2754 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))
2755 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2756 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2758 d=att.getFieldOn(amr,"Field")
2759 self.assertEqual(56,d.getNumberOfTuples())
2760 self.assertEqual(1,d.getNumberOfComponents())
2762 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2763 self.assertEqual(140,d0.getNumberOfTuples())
2764 self.assertEqual(1,d0.getNumberOfComponents())
2766 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2767 self.assertEqual(60,d1.getNumberOfTuples())
2768 self.assertEqual(1,d1.getNumberOfComponents())
2770 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2771 self.assertEqual(60,d2.getNumberOfTuples())
2772 self.assertEqual(1,d2.getNumberOfComponents())
2774 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2775 self.assertEqual(48,d00.getNumberOfTuples())
2776 self.assertEqual(1,d00.getNumberOfComponents())
2777 d00.iota() ; d00+=0.5
2778 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2779 self.assertEqual(48,d10.getNumberOfTuples())
2780 self.assertEqual(1,d10.getNumberOfComponents())
2781 d10.iota() ; d10+=0.6
2782 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2783 self.assertEqual(32,d20.getNumberOfTuples())
2784 self.assertEqual(1,d20.getNumberOfComponents())
2785 d20.iota() ; d20+=0.7
2786 f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
2787 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])
2788 arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
2789 self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
2790 m=MEDCoupling1SGTUMesh(f.getMesh())
2791 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])))
2792 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))
2793 # the test is here ! To be called after iteration with no remesh
2794 att.synchronizeAllGhostZones()
2795 f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkConsistencyLight()
2796 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))
2797 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2798 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2799 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2800 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2801 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2802 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2803 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))
2804 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))
2805 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))
2806 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))
2807 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))
2808 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))
2809 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))
2812 def testSwig2AMR9(self):
2813 """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
2815 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2816 amr.addPatch([(1,4),(2,4)],[4,4])
2817 amr.addPatch([(4,5),(3,5)],[4,4])
2818 amr.addPatch([(0,1),(4,6)],[4,4])
2819 amr[0].addPatch([(10,12),(5,8)],[2,2])
2820 amr[1].addPatch([(0,1),(0,5)],[2,2])
2821 amr[2].addPatch([(3,4),(0,3)],[2,2])
2822 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2823 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2825 d=att.getFieldOn(amr,"Field")
2826 self.assertEqual(90,d.getNumberOfTuples())
2827 self.assertEqual(1,d.getNumberOfComponents())
2829 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2830 self.assertEqual(192,d0.getNumberOfTuples())
2831 self.assertEqual(1,d0.getNumberOfComponents())
2833 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2834 self.assertEqual(96,d1.getNumberOfTuples())
2835 self.assertEqual(1,d1.getNumberOfComponents())
2837 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2838 self.assertEqual(96,d2.getNumberOfTuples())
2839 self.assertEqual(1,d2.getNumberOfComponents())
2841 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2842 self.assertEqual(80,d00.getNumberOfTuples())
2843 self.assertEqual(1,d00.getNumberOfComponents())
2844 d00.iota() ; d00+=0.5
2845 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2846 self.assertEqual(84,d10.getNumberOfTuples())
2847 self.assertEqual(1,d10.getNumberOfComponents())
2848 d10.iota() ; d10+=0.6
2849 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2850 self.assertEqual(60,d20.getNumberOfTuples())
2851 self.assertEqual(1,d20.getNumberOfComponents())
2852 d20.iota() ; d20+=0.7
2853 # the test is here ! To be called after iteration with no remesh
2854 att.synchronizeAllGhostZones()
2855 f=att.buildCellFieldOnWithGhost(amr,"Field")
2856 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2857 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2858 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2859 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2860 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2861 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2862 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))
2863 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))
2864 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))
2865 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))
2866 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))
2867 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))
2868 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
2869 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
2870 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
2871 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
2872 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
2873 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])))
2876 def testSwig2AMR10(self):
2877 """ 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."""
2879 amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
2880 amr.addPatch([(3,8),(0,3)],[2,2])
2881 amr[0].addPatch([(0,10),(3,6)],[3,3])
2882 amr[0].addPatch([(2,6),(0,3)],[3,3])
2883 amr[0].addPatch([(6,10),(2,3)],[3,3])
2884 amr.addPatch([(3,8),(3,6)],[2,2])
2885 amr[1].addPatch([(0,4),(0,6)],[3,3])
2886 amr[1].addPatch([(7,10),(0,4)],[3,3])
2887 amr[1].addPatch([(4,7),(0,3)],[3,3])
2888 amr[1].addPatch([(4,7),(3,6)],[3,3])
2889 amr.addPatch([(0,3),(6,10)],[2,2])
2890 self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
2891 self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
2892 self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
2893 self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
2894 da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
2895 MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
2896 self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
2897 att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
2898 att.spillNatures([IntensiveMaximum])
2900 yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
2901 yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
2902 yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
2903 yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
2904 yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
2905 yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
2906 yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
2907 yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
2908 yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
2909 yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
2910 yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
2911 att2=att.deepCopy() ; att3=att2.deepCopy() ; att4=att3.deepCopy() ; att5=att4.deepCopy() ; att6=att5.deepCopy()
2913 att.synchronizeFineToCoarseBetween(2,1)
2915 for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
2916 self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2918 for pos in [(0,),(1,)]:
2919 self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2921 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))
2922 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))
2925 att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
2926 ### 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.
2927 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])
2928 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
2929 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])
2930 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
2931 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])
2932 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
2933 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)]:
2934 vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
2935 l=vals.getNumberOfTuples()
2936 exps=DataArrayDouble(l) ; exps.iota(iot)
2937 self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
2941 att3.synchronizeCoarseToFineBetween(1,2)
2943 for pos in [(),(0,),(1,),(2,)]:
2944 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2946 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])
2947 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
2948 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])
2949 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
2950 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])
2951 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
2952 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])
2953 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
2954 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])
2955 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
2956 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])
2957 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
2958 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])
2959 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
2962 att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
2963 for pos in [(),(0,),(1,),(2,)]:
2964 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2966 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])
2967 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
2968 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]])
2969 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
2970 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])
2971 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
2972 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])
2973 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
2974 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])
2975 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
2976 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])
2977 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
2978 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])
2979 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
2982 att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
2983 for pos in [(),(0,),(1,),(2,)]:
2984 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2986 att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
2987 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])
2988 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
2989 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])
2990 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
2991 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])
2992 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
2993 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])
2994 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
2995 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])
2996 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
2997 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])
2998 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
2999 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])
3000 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
3003 def testSwig2AMR11(self):
3004 """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
3005 coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
3006 fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
3007 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3008 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.])
3009 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.])
3010 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.])
3011 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.])
3012 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.])
3013 exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
3014 self.assertTrue(fine.isEqual(exp,1e-12))
3018 MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
3019 amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
3020 amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
3021 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3023 exp1=DataArrayDouble(990) ; exp1.iota(0.5)
3024 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])
3025 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.])
3027 self.assertTrue(coarse.isEqual(exp1,1e-12))
3029 MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
3030 exp2=DataArrayDouble(990) ; exp2.iota(0.5)
3032 self.assertTrue(coarse.isEqual(exp2,1e-12))
3034 coarse.iota(0.5) ; fine.iota(0.1)
3035 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3037 coarse.iota(0.5) ; fine.iota(0.1)
3038 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
3039 exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
3040 self.assertTrue(fine[:240].isEqual(exp00,1e-12))
3041 exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
3042 self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
3043 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))
3046 def testSwig2AMR12(self):
3047 """ This test check the MEDCouplingAMRAttribute.projectTo method."""
3048 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3049 amr0.addPatch([(3,8),(0,3)],[2,2])
3050 amr0.addPatch([(3,8),(3,6)],[2,2])
3051 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3053 att0.getFieldOn(amr0,"YY").iota(0.01)
3054 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3055 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3056 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3057 amr1.addPatch([(2,5),(1,4)],[2,2])
3058 att1=att0.projectTo(amr1)
3059 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
3060 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))
3062 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3063 amr0.addPatch([(2,5),(2,7)],[2,2])
3064 amr0.addPatch([(5,8),(2,7)],[2,2])
3065 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3067 att0.getFieldOn(amr0,"YY").iota(0.01)
3068 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3069 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3070 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3071 amr1.addPatch([(3,6),(2,7)],[2,2])
3072 amr1.addPatch([(6,9),(2,7)],[2,2])
3073 att1=att0.projectTo(amr1)
3074 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
3075 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))
3076 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))
3079 def testSwig2AMR13(self):
3080 """ non regression test"""
3081 for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
3082 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3083 amr.addPatch([(1,3),(0,2)],fact)
3084 amr.addPatch([(1,3),(3,4)],fact)
3085 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3087 att.getFieldOn(amr,"YY").iota(0.1)
3088 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3089 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3090 att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
3091 exp=DataArrayDouble(64) ; exp.iota(0.1)
3092 self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
3093 exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
3094 self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
3095 exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
3096 self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
3100 def testSwig2AMR14(self):
3101 """ non regression linked to VTHB write."""
3102 fact=[2,2] ; fact2=[3,3]
3103 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3104 amr.addPatch([(1,3),(0,2)],fact)
3105 amr.addPatch([(1,3),(3,4)],fact)
3106 amr[0].addPatch([(1,3),(1,3)],fact2)
3107 amr[1].addPatch([(1,3),(1,2)],fact2)
3108 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3110 att.getFieldOn(amr,"YY").iota(0.1)
3111 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3112 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3113 att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
3114 att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
3115 self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
3116 self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
3117 self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
3118 self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
3121 def testOrderConsecutiveCells1D1(self):
3122 """A line in several unconnected pieces:"""
3123 m2 = MEDCouplingUMesh.New("bla", 1)
3124 c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
3125 NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
3126 NORM_SEG2,11,12,NORM_SEG2,12,13,
3128 cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
3129 coords2 = DataArrayDouble([float(i) for i in range(32)], 16, 2)
3130 m2.setCoords(coords2);
3131 m2.setConnectivity(c, cI);
3132 m2.checkConsistency(1.0e-8);
3135 m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
3136 res = m2.orderConsecutiveCells1D()
3137 expRes = [0,3,6,8,1,4,2,7,5]
3138 self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
3139 self.assertEqual(expRes, res.getValues())
3141 # A closed line (should also work)
3142 m3 = MEDCouplingUMesh.New("bla3", 1)
3143 conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
3144 coord3 = coords2[0:5]
3148 m3.setCoords(coord3)
3149 m3.setConnectivity(conn3A, cI)
3150 m3.checkConsistency(1.0e-8)
3151 res2 = m3.orderConsecutiveCells1D()
3153 self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
3154 self.assertEqual(expRes2, res2.getValues())
3157 def testDADApplyFuncOnThis1(self):
3158 d=DataArrayDouble(5) ; d.iota(0.)
3159 d.applyFuncOnThis("2*x+1")
3160 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
3161 d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
3162 d.applyFuncOnThis("2*x+1")
3163 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
3164 d.applyFuncOnThis("1+2*3")
3165 self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
3168 def testSwig2PointSetComputeFetchedNodeIds1(self):
3169 arr=DataArrayDouble(6) ; arr.iota()
3170 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3171 m=m.buildUnstructured()
3172 m0=m[[0,1,5,6,25,26,30,31,124]]
3173 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])
3174 self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
3175 self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3176 self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
3177 m0.convertAllToPoly()
3178 self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
3179 self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3182 def testSwig2PartDefinition1(self):
3183 pd=PartDefinition.New(5,22,3)
3184 self.assertTrue(isinstance(pd,SlicePartDefinition))
3185 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3186 self.assertEqual(pd.getNumberOfElems(),6)
3187 self.assertEqual(pd.getEffectiveStop(),23)
3188 pd=PartDefinition.New(5,23,3)
3189 self.assertTrue(isinstance(pd,SlicePartDefinition))
3190 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3191 self.assertEqual(pd.getNumberOfElems(),6)
3192 self.assertEqual(pd.getEffectiveStop(),23)
3193 self.assertEqual(pd.getSlice(),slice(5,23,3))
3194 pd=PartDefinition.New(5,22,1)
3195 self.assertTrue(isinstance(pd,SlicePartDefinition))
3196 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3197 self.assertEqual(pd.getNumberOfElems(),17)
3198 self.assertEqual(pd.getEffectiveStop(),22)
3199 pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
3200 self.assertTrue(isinstance(pd,SlicePartDefinition))
3201 self.assertEqual(pd.getNumberOfElems(),8)
3202 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
3203 self.assertEqual(pd.getEffectiveStop(),29)
3204 pd=SlicePartDefinition(5,22,1)
3205 self.assertTrue(isinstance(pd,SlicePartDefinition))
3206 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3207 self.assertEqual(pd.getNumberOfElems(),17)
3208 self.assertEqual(pd.getEffectiveStop(),22)
3209 d=DataArrayInt([2,4,5,6,10])
3210 pd=PartDefinition.New(d)
3211 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3212 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3213 pd=DataArrayPartDefinition(d)
3214 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3215 pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
3216 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3217 self.assertEqual(pd.getNumberOfElems(),8)
3218 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
3221 def testSwig2SortEachPairToMakeALinkedList1(self):
3222 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)])
3223 d.sortEachPairToMakeALinkedList()
3224 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)])))
3225 d=DataArrayInt([(0,2),(1,2),(1,3)])
3226 d.sortEachPairToMakeALinkedList()
3227 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3228 d=DataArrayInt([(0,2),(1,2),(3,1)])
3229 d.sortEachPairToMakeALinkedList()
3230 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3231 d=DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])
3232 d.sortEachPairToMakeALinkedList()
3233 self.assertTrue(d.isEqual(DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])))
3236 def testSwig2DAIIsRange(self):
3237 d=DataArrayInt([2,6,10])
3240 self.assertEqual(b,slice(2,11,4))
3241 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3243 d=DataArrayInt([2,7,10])
3245 self.assertTrue(not a)
3246 self.assertTrue(b is None)
3248 d=DataArrayInt([22,17,12])
3251 self.assertEqual(b,slice(22,11,-5))
3252 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3254 d=DataArrayInt([22,16,12])
3256 self.assertTrue(not a)
3257 self.assertTrue(b is None)
3259 d=DataArrayInt([33])
3262 self.assertEqual(b,slice(33,34,1))
3263 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3268 self.assertEqual(b,slice(0,0,1))
3269 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3271 d=DataArrayInt([2,6,10,2])
3273 self.assertTrue(not a)
3274 self.assertTrue(b is None)
3277 def testSwig2PartDefinitionComposeWith1(self):
3278 f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
3279 g=PartDefinition.New(4,14,1)
3281 self.assertTrue(g2.isEqual(g)[0])
3283 self.assertTrue(isinstance(h,DataArrayPartDefinition))
3284 self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3285 f2=f.tryToSimplify()
3286 g2=g.tryToSimplify()
3287 self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
3288 self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
3289 p=PartDefinition.New(DataArrayInt([2,6,10]))
3290 p2=p.tryToSimplify()
3291 self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
3292 self.assertTrue(isinstance(p2,SlicePartDefinition))
3293 self.assertEqual(p2.getSlice(),slice(2,11,4))
3294 self.assertTrue(p2.isEqual(SlicePartDefinition(2,11,4))[0])
3295 self.assertTrue(p2.isEqual(p2.deepCopy())[0])
3296 self.assertTrue(not p2.isEqual(SlicePartDefinition(1,11,4))[0])
3297 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,10,4))[0])
3298 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,11,3))[0])
3301 def testSwig2DAIGetIdsStrictlyNegative1(self):
3302 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3303 self.assertTrue(d.findIdsStrictlyNegative().isEqual(DataArrayInt([1,2,6])))
3306 def testSwig2DAIReplaceOneValByInThis1(self):
3307 d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
3308 d.changeValue(-5,900)
3309 self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
3312 def testSwig2DAIGetMinMaxValues1(self):
3313 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3314 a,b=d.getMinMaxValues()
3315 self.assertEqual(a,-7)
3316 self.assertEqual(b,99)
3319 def testSwig2DAIBuildUniqueNotSorted1(self):
3320 d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
3321 self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
3324 def testSwig2UMeshChangeOrientationOfCells1(self):
3325 """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
3326 m=MEDCouplingUMesh("mesh",1)
3327 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])
3328 cI=DataArrayInt([0,3,6,10,14,17,22,27])
3329 m.setConnectivity(c,cI)
3330 m.changeOrientationOfCells()
3331 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])))
3332 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3334 m=MEDCouplingUMesh("mesh",2)
3335 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])
3336 cI=DataArrayInt([0,4,9,15,22,31,42])
3337 m.setConnectivity(c,cI)
3338 m.changeOrientationOfCells()
3339 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])))
3340 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3343 def testSwig2StructuredMeshCellLocation1(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),(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)]
3351 self.assertEqual(24,m.getNumberOfCells())
3352 for i in range(m.getNumberOfCells()):
3353 li.append(m.getLocationFromCellId(i))
3355 self.assertEqual(liExp3D,li)
3356 self.assertRaises(InterpKernelException,m.getLocationFromCellId,24)
3357 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-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),(0,1),(1,1),(2,1),(3,1),(0,2),(1,2),(2,2),(3,2)]
3364 self.assertEqual(12,m.getNumberOfCells())
3365 for i in range(m.getNumberOfCells()):
3366 li.append(m.getLocationFromCellId(i))
3368 self.assertEqual(liExp2D,li)
3369 self.assertRaises(InterpKernelException,m.getLocationFromCellId,12)
3370 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3372 arrX=DataArrayDouble(5) ; arrX.iota()
3373 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3374 self.assertEqual(4,m.getNumberOfCells())
3375 for i in range(m.getNumberOfCells()):
3376 self.assertEqual((i,),m.getLocationFromCellId(i))
3378 self.assertRaises(InterpKernelException,m.getLocationFromCellId,4)
3379 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3382 def testSwig2StructuredMeshNodeLocation1(self):
3384 arrX=DataArrayDouble(5) ; arrX.iota()
3385 arrY=DataArrayDouble(4) ; arrY.iota()
3386 arrZ=DataArrayDouble(3) ; arrZ.iota()
3387 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3389 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)]
3390 self.assertEqual(60,m.getNumberOfNodes())
3391 for i in range(m.getNumberOfNodes()):
3392 li.append(m.getLocationFromNodeId(i))
3394 self.assertEqual(liExp3D,li)
3395 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,60)
3396 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3398 arrX=DataArrayDouble(5) ; arrX.iota()
3399 arrY=DataArrayDouble(4) ; arrY.iota()
3400 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3402 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)]
3403 self.assertEqual(20,m.getNumberOfNodes())
3404 for i in range(m.getNumberOfNodes()):
3405 li.append(m.getLocationFromNodeId(i))
3407 self.assertEqual(liExp2D,li)
3408 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,20)
3409 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3411 arrX=DataArrayDouble(5) ; arrX.iota()
3412 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3413 self.assertEqual(5,m.getNumberOfNodes())
3414 for i in range(m.getNumberOfNodes()):
3415 self.assertEqual((i,),m.getLocationFromNodeId(i))
3417 self.assertRaises(InterpKernelException,m.getLocationFromCellId,5)
3418 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3421 def testSwig2DataArrayPrintNotTooLong1(self):
3422 """ Now that DataArrayDouble and DataArrayInt and pickelized they can appear in YACS ports. Avoid to have too heavy string representation of them."""
3423 d=DataArrayDouble(2000) ; d.iota() ; d.rearrange(2)
3424 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3425 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3426 self.assertEqual(st1,st2)
3428 d=DataArrayDouble(2002) ; d.iota() ; d.rearrange(2)
3429 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3430 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3431 self.assertEqual(st1,st2)
3432 self.assertIn(len(st2), list(range(0, 1000))) # no more than 1000 characters
3433 ## Now for DataArrayInt
3434 d=DataArrayInt(2000) ; d.iota() ; d.rearrange(2)
3435 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3436 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3437 self.assertEqual(st1,st2)
3439 d=DataArrayInt(2002) ; d.iota() ; d.rearrange(2)
3440 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3441 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3442 self.assertEqual(st1,st2)
3443 self.assertIn(len(st2), list(range(0, 1000))) # no more than 1000 characters
3446 def testExtrudedMeshWithoutZipCoords1(self):
3447 """This test checks that MEDCouplingUMesh.buildExtrudedMesh do not perform a zipCoords."""
3448 arr=DataArrayDouble([(0.,0.),(1.,0.),(2.,0.),(3.,0.)])
3449 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(arr)
3451 m.insertNextCell(NORM_SEG2,[1,2])
3452 arr1D=DataArrayDouble([(0.,0.),(0.,1.5),(0.,2.)])
3453 m1D=MEDCouplingUMesh("mesh1D",1) ; m1D.setCoords(arr1D)
3455 m1D.insertNextCell(NORM_SEG2,[0,1])
3456 m1D.insertNextCell(NORM_SEG2,[1,2])
3457 m2D=m.buildExtrudedMesh(m1D,0)
3458 self.assertEqual(m.getCoords().getHiddenCppPointer(),m2D.getCoords().getHiddenCppPointer())
3459 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)])
3460 self.assertTrue(m.getCoords().isEqual(coo,1e-12))
3461 self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([4,1,2,6,5,4,5,6,10,9])))
3462 self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10])))
3465 def testPointSetAreAllNodesFetched1(self):
3466 m=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
3467 m.setCoords(arr,arr)
3468 m=m.buildUnstructured()
3469 self.assertTrue(m.areAllNodesFetched())
3471 self.assertTrue(not m2.areAllNodesFetched())
3473 self.assertTrue(m2.areAllNodesFetched())
3476 def testMEDCouplingPointSetComputeDiameterField1(self):
3477 arrX=DataArrayDouble([0.,1.1,1.7,2.1])
3478 arrY=DataArrayDouble([0.,0.7,0.8,1.9])
3479 arrZ=DataArrayDouble([0.,1.3,2.1,2.4])
3480 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
3481 f=m.computeDiameterField()
3482 f.checkConsistencyLight()
3483 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])
3484 self.assertTrue(exp.isEqual(f.getArray(),1e-12))
3487 m2.simplexize(PLANAR_FACE_5)
3488 m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
3489 f=m3.computeDiameterField()
3490 f.checkConsistencyLight()
3491 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])
3492 self.assertTrue(exp2.isEqual(f.getArray(),1e-12))
3493 # TRI3 - spacedim = 2
3494 coo=DataArrayDouble([(1,1),(5,1.9),(2.1,3)])
3495 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3496 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3497 m.setNodalConnectivity(DataArrayInt(c))
3498 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3499 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3500 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3501 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3502 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3503 # TRI3 - spacedim = 3
3504 coo=DataArrayDouble([(1.3198537928820775,1.0991902391274959,-0.028645697595823361),(5.2486835106806335,2.2234012799688281,0.30368935050077939),(2.2973688139447361,3.1572023778066649,0.10937756365410012)])
3505 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3506 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3507 m.setNodalConnectivity(DataArrayInt(c))
3508 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3509 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3510 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3511 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3512 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3513 # QUAD4 - spacedim = 2
3514 coo=DataArrayDouble([(0,2),(2,0),(6,4),(4,9)])
3515 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3517 for delta in range(4):
3518 c = [(elt + delta) % 4 for elt in range(4)]
3519 m.setNodalConnectivity(DataArrayInt(c))
3520 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3521 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3522 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3523 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3524 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3526 m.setNodalConnectivity(DataArrayInt(c))
3527 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3528 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3529 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3530 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3531 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3532 # QUAD4 - spacedim = 3
3533 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)])
3534 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3535 for delta in range(4):
3536 c = [(elt + delta) % 4 for elt in range(4)]
3537 m.setNodalConnectivity(DataArrayInt(c))
3538 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3539 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3540 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3541 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3542 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3544 m.setNodalConnectivity(DataArrayInt(c))
3545 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3546 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3547 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3548 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3549 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3551 # 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)
3552 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)])
3553 m=MEDCoupling1SGTUMesh("mesh",NORM_PENTA6) ; m.setCoords(coo)
3554 exp4=2.5041256256889888
3555 self.assertAlmostEqual(exp4,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3556 for delta in range(3):
3557 c = [(elt + delta) % 3 for elt in range(3)]
3558 c+=[elt+3 for elt in c]
3559 m.setNodalConnectivity(DataArrayInt(c))
3560 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3561 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3562 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3564 m.setNodalConnectivity(DataArrayInt(c))
3565 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3566 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3567 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3569 # 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)
3570 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)])
3571 m=MEDCoupling1SGTUMesh("mesh",NORM_HEXA8) ; m.setCoords(coo)
3572 exp5=2.5366409441884215
3573 self.assertAlmostEqual(exp5,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3574 for delta in range(4):
3575 c = [(elt + delta) % 4 for elt in range(4)]
3576 c+=[elt+4 for elt in c]
3577 m.setNodalConnectivity(DataArrayInt(c))
3578 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3579 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3580 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3582 m.setNodalConnectivity(DataArrayInt(c))
3583 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3584 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3585 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3586 # PYRA5 (1) 5th node is further
3587 # 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)
3588 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)])
3589 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3590 exp6=2.1558368027391386
3591 self.assertAlmostEqual(exp6,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3592 for delta in range(4):
3593 c = [(elt + delta) % 4 for elt in range(4)]
3595 m.setNodalConnectivity(DataArrayInt(c))
3596 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp6,12)
3597 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3598 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp6,12)
3600 # PYRA5 (2) 5th node is closer
3601 # 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)
3602 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)])
3603 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3604 exp7=1.4413563787228953
3605 self.assertAlmostEqual(exp7,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3606 for delta in range(4):
3607 c = [(elt + delta) % 4 for elt in range(4)]
3609 m.setNodalConnectivity(DataArrayInt(c))
3610 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp7,12)
3611 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3612 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp7,12)
3615 # 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)
3616 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)])
3617 m=MEDCoupling1SGTUMesh("mesh",NORM_TETRA4) ; m.setCoords(coo)
3618 exp8=1.7131322579364157
3619 self.assertAlmostEqual(exp8,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3620 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]]:
3622 m.setNodalConnectivity(DataArrayInt([(elt+i)%4 for elt in c]))
3623 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp8,12)
3624 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3625 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp8,12)
3630 def testMEDCouplingSkyLineArray(self):
3631 index = DataArrayInt([ 0, 3, 5, 6, 6 ])
3632 value = DataArrayInt([ 1, 2, 3, 2, 3, 3 ])
3634 sla0 = MEDCouplingSkyLineArray()
3635 self.assertEqual( -1, sla0.getNumberOf() )
3636 self.assertEqual( 0, sla0.getLength() )
3637 sla0.set( index, value )
3638 self.assertTrue( index.isEqual( sla0.getIndexArray() ))
3639 self.assertTrue( value.isEqual( sla0.getValuesArray() ))
3640 self.assertEqual( 4, sla0.getNumberOf() )
3641 self.assertEqual( 6, sla0.getLength() )
3643 sla1 = MEDCouplingSkyLineArray( index, value )
3644 self.assertTrue( index.isEqual( sla1.getIndexArray() ))
3645 self.assertTrue( value.isEqual( sla1.getValuesArray() ))
3646 self.assertEqual( 4, sla1.getNumberOf() )
3647 self.assertEqual( 6, sla1.getLength() )
3649 sla2 = MEDCouplingSkyLineArray( sla1 )
3650 self.assertTrue( index.isEqual( sla2.getIndexArray() ))
3651 self.assertTrue( value.isEqual( sla2.getValuesArray() ))
3652 self.assertEqual( 4, sla2.getNumberOf() )
3653 self.assertEqual( 6, sla2.getLength() )
3655 indexVec = ivec(); indexVec.reserve( len( index ))
3656 for i in index: indexVec.push_back( i[0] )
3657 valueVec = ivec(); valueVec.reserve( len( value ))
3658 for i in value: valueVec.push_back( i[0] )
3659 sla3 = MEDCouplingSkyLineArray( indexVec, valueVec )
3660 self.assertTrue( index.isEqual( sla3.getIndexArray() ))
3661 self.assertTrue( value.isEqual( sla3.getValuesArray() ))
3662 self.assertEqual( 4, sla3.getNumberOf() )
3663 self.assertEqual( 6, sla3.getLength() )
3667 def testMEDCouplingSkyLineArrayThreeLevels(self):
3668 # [[28,1,4]] , [[2,35,8], [9,10,1,12]]
3669 superi = DataArrayInt([ 0,1,3 ])
3670 index = DataArrayInt ([ 0,3,6,10 ])
3671 value = DataArrayInt ([ 28,1,4,2,35,8,9,10,1,12 ])
3673 sla0 = MEDCouplingSkyLineArray()
3674 self.assertEqual( -1, sla0.getSuperNumberOf() )
3675 self.assertEqual( -1, sla0.getNumberOf() )
3676 self.assertEqual( 0, sla0.getLength() )
3677 sla0.set3( superi.deepCopy(), index.deepCopy(), value.deepCopy() )
3678 self.assertTrue( superi.isEqual( sla0.getSuperIndexArray() ))
3680 pack = sla0.getSimplePackSafe(2)
3681 self.assertEqual([9,10,1,12], pack)
3682 ids = sla0.findPackIds([0,1], [9,10,1,12])
3683 self.assertEqual([-1,1], ids)
3685 sla0.deletePack(1, 1)
3686 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3687 self.assertEqual([28,1,4,2,35,8], val.getValues())
3688 self.assertEqual([0,3,6], idx.getValues())
3689 self.assertEqual([0,1,2], si.getValues())
3691 sla0.pushBackPack(0, [3,2,1,0])
3692 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3693 self.assertEqual([0,2,3], si.getValues())
3694 self.assertEqual([0,3,7,10], idx.getValues())
3695 self.assertEqual([28,1,4,3,2,1,0, 2,35,8], val.getValues())
3697 # Build connectivity from POLYHED connectivity
3699 c = [NORM_POLYHED, 1,2,3,-1, 2,3,4,-1, 3,4,5,-1, 4,5,6,
3700 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]
3701 sla0 = MEDCouplingSkyLineArray.BuildFromPolyhedronConn(DataArrayInt(c), DataArrayInt(cI))
3702 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3703 self.assertEqual([0,4,9], si.getValues())
3704 self.assertEqual([0,3,6,9,12,16,20,24,28,32], idx.getValues())
3705 self.assertEqual([1,2,3, 2,3,4, 3,4,5, 4,5,6,
3706 7,8,9,10, 9,10,11,12, 3,4,5,6, 5,6,7,8, 9,10,11,12], val.getValues())
3707 c1, cI1 = sla0.convertToPolyhedronConn()
3708 self.assertEqual(c1.getValues(), c)
3709 self.assertEqual(cI1.getValues(), cI)
3712 def testMEDCouplingSkyLineArrayThreeLevels2(self):
3714 siRef = [0, 9, 16, 22]
3715 idx = [0,4,8,12,16,20,23,26,29, 32,36,40,44,48,52, 56,60,64,68,72,76,80]
3716 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,
3717 9,1,3,10, 11,12,7,5, 9,11,5,1, 1,5,7,3, 3,7,12,10, 10,12,11,9,
3718 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3719 idxRef = [0,4,8,12,16,20,23,26,29,32,36,40,44,48,52,55,58, 62, 66, 70, 74, 78, 82 ]
3720 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,
3721 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,
3722 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3723 sla0 = MEDCouplingSkyLineArray()
3724 sla0.set3( DataArrayInt(si), DataArrayInt(idx), DataArrayInt(c) )
3725 ids = sla0.findPackIds([1], [1,5,7,3])
3726 sla0.deletePack(1, ids[0])
3727 sla0.pushBackPack(1, [3,7,8])
3728 sla0.pushBackPack(1, [7,5,8])
3729 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3730 self.assertEqual(siRef, si.getValues())
3731 self.assertEqual(idxRef, idx.getValues())
3732 self.assertEqual(cRef, val.getValues())
3734 idxRef2 = [0,4,8,12,16,20,23,26,29,32,36,40,42,46,50,53,56, 60, 64, 68, 72, 76, 80 ]
3735 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,
3736 9,1,3,10, 11,12,7,5, 300,300, 3,7,12,10, 10,12,11,9, 3,7,8, 7,5,8,
3737 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3738 sla0.replacePack(1,2, [300,300])
3739 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3740 self.assertEqual(siRef, si.getValues())
3741 self.assertEqual(idxRef2, idx.getValues())
3742 self.assertEqual(cRef2, val.getValues())
3744 sla0.replacePack(1,2, [9,11,5,1])
3745 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3746 self.assertEqual(siRef, si.getValues())
3747 self.assertEqual(idxRef, idx.getValues())
3748 self.assertEqual(cRef, val.getValues())
3750 sla0.replaceSimplePack(11, [300,300]) # 11 is the abs index of pack (superIdx=1,idx=2)
3751 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3752 self.assertEqual(siRef, si.getValues())
3753 self.assertEqual(idxRef2, idx.getValues())
3754 self.assertEqual(cRef2, val.getValues())
3756 sla0.replaceSimplePack(11, [9,11,5,1]) # 11 is the abs index of pack (superIdx=1,idx=2)
3757 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3758 self.assertEqual(siRef, si.getValues())
3759 self.assertEqual(idxRef, idx.getValues())
3760 self.assertEqual(cRef, val.getValues())
3763 def testMEDCouplingUMeshgenerateGraph(self):
3764 # cartesian mesh 3x3
3765 arr=DataArrayDouble(4) ; arr.iota()
3766 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
3767 m=c.buildUnstructured()
3768 graph = m.generateGraph()
3781 self.assertEqual(valRef,list(graph.getValuesArray().getValues()));
3783 indRef=[0, 3, 7, 10, 14, 19, 23, 26, 30, 33]
3784 self.assertEqual(indRef,list(graph.getIndexArray().getValues()));
3787 def testSwig2MEDCouplingCurveLinearReprQuick1(self):
3788 """Non regression test. Error in m.__str__ when m is a MEDCouplingCurveLinear with spaceDim != meshDim."""
3789 arr=DataArrayDouble(12) ; arr.iota() ; arr.rearrange(2)
3790 m=MEDCouplingCurveLinearMesh()
3792 m.setNodeGridStructure([3,2])
3793 m.checkConsistencyLight()
3794 self.assertEqual(m.getMeshDimension(),2)
3795 self.assertEqual(m.getSpaceDimension(),2)
3796 self.assertTrue(not "mismatch" in m.__str__())
3797 self.assertTrue(not "mismatch" in m.__repr__())
3799 arr=DataArrayDouble(18) ; arr.iota() ; arr.rearrange(3)
3801 self.assertEqual(m.getMeshDimension(),2)
3802 self.assertEqual(m.getSpaceDimension(),3)
3803 self.assertTrue(not "mismatch" in m.__str__())
3804 self.assertTrue(not "mismatch" in m.__repr__())# bug was here !
3807 def testSwig2BugComputeOffsets1(self):
3808 """Non regression test. computeOffsetsFull on empty array must return 0."""
3810 d.computeOffsetsFull()
3811 self.assertTrue(d.isEqual(DataArrayInt([0,3])))
3814 self.assertTrue(d.isEqual(DataArrayInt([])))
3816 d.computeOffsetsFull()
3817 self.assertTrue(d.isEqual(DataArrayInt([0]))) # <- bug was here
3820 def testSwig2Cartesianize1(self):
3821 """Test of engine of cartesianize mechanism in medcoupling"""
3823 arr=DataArrayDouble([(3,0.2),(2,1.6)]) ; arr.setInfoOnComponents(["A","BB"])
3824 arr2=arr.cartesianize(AX_CYL)
3825 arr2_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836),(-0.05839904460257763,1.9991472060830102)]) ; arr2_exp.setInfoOnComponents(["A","BB"])
3826 self.assertTrue(arr2_exp.isEqual(arr2,1e-14))
3828 arr3=arr.cartesianize(AX_SPHER)
3829 self.assertTrue(arr2_exp.isEqual(arr3,1e-14))
3831 arr=DataArrayDouble([(3,0.2,7.1),(2,1.6,12.3)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3832 arr4=arr.cartesianize(AX_CYL)
3833 arr4_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836,7.1),(-0.05839904460257763,1.9991472060830102,12.3)]) ; arr4_exp.setInfoOnComponents(["A","BB","CCC"])
3834 self.assertTrue(arr4_exp.isEqual(arr4,1e-14))
3836 arr=DataArrayDouble([(3,0.2,0.5),(2,1.3,5.8)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3837 arr5=arr.cartesianize(AX_SPHER)
3838 arr5_exp=DataArrayDouble([(0.5230462208645272,0.2857414527616764,2.940199733523725),(1.706499157790973,-0.8953424658735863,0.5349976572491747)]) ; arr5_exp.setInfoOnComponents(["A","BB","CCC"])
3839 self.assertTrue(arr5_exp.isEqual(arr5,1e-14))
3841 m=MEDCouplingCMesh() ; m.setName("aa") ; m.setDescription("bbb") ; m.setTime(4.125,5,6) ; m.setTimeUnit("ms")
3842 arrX=DataArrayDouble([0,1,2]) ; arrX.setInfoOnComponent(0,"ccc")
3843 arrY=DataArrayDouble([3,4,5,6]) ; arrY.setInfoOnComponent(0,"dddd")
3844 m.setCoords(arrX,arrY)
3845 m2=m.buildCurveLinear()
3847 self.assertTrue(isinstance(m2,MEDCouplingCurveLinearMesh))
3848 self.assertEqual(m2.getName(),"aa")
3849 self.assertEqual(m2.getDescription(),"bbb")
3850 self.assertEqual(m2.getTime(),[4.125,5,6])
3851 self.assertEqual(m2.getTimeUnit(),"ms")
3852 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"])
3853 self.assertTrue(m2.getCoords().isEqual(m2c_exp,1e-14))
3854 self.assertEqual(m2.getNodeGridStructure(),(3,4))
3857 def testRemoveIdsFromIndexedArrays1(self):
3858 arr=DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,504,505,601,602])
3859 arrI=DataArrayInt([0,3,7,8,8,13,15])
3860 # case where all elts in inputs are in
3861 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3862 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([501,502],arr2,arrI2))
3863 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,503,504,505,601,602])))
3864 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,11,13])))
3865 # case where part of elts in inputs are in
3866 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3867 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([504,507],arr2,arrI2))
3868 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,505,601,602])))
3869 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,12,14])))
3870 # case where no elts in inputs are in
3871 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3872 self.assertTrue(not MEDCouplingUMesh.RemoveIdsFromIndexedArrays([1,5,701],arr2,arrI2))
3873 self.assertTrue(arr2.isEqual(arr))
3874 self.assertTrue(arrI2.isEqual(arrI))
3877 def testFieldIntIsOnStage1(self):
3878 """ My first test with field int."""
3879 m=MEDCouplingCMesh()
3881 arrX=DataArrayDouble([0,1,2,3])
3882 m.setCoords(arrX,arrX)
3883 f=MEDCouplingFieldInt(ON_CELLS)
3885 arr=DataArrayInt32(8) ; arr.iota() ;f.setArray(arr)
3886 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
3887 arr=DataArrayInt32(9) ; arr.iota() ;f.setArray(arr)
3888 f.checkConsistencyLight()
3890 self.assertEqual(f.getTimeUnit(),"ms")
3893 self.assertEqual(b,5)
3894 self.assertEqual(c,6)
3895 self.assertEqual(a,3.2,12)
3898 def testNoThrowOn1DGTU2UOnNullCells(self):
3899 """ Non regression test : no throw when trying to convert 1DGTUMesh to UMesh on an empty mesh"""
3900 m=MEDCoupling1DGTUMesh("",NORM_POLYGON) ; m.setCoords(DataArrayDouble([],0,3))
3901 m.setNodalConnectivity(DataArrayInt([]),DataArrayInt([0]))
3902 m=m.buildUnstructured()
3905 def testExplodeMeshIntoMicroEdges1(self):
3906 """ test for new functionality MEDCouplingUMesh.explodeMeshIntoMicroEdges"""
3907 m=MEDCouplingUMesh("mesh",2)
3908 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)
3911 # here a mix of quadratic, linear cells. Non conform but conform considering micro edges
3912 m.insertNextCell(NORM_TRI6,[0,4,1,7,8,9])
3913 m.insertNextCell(NORM_TRI6,[1,5,2,10,11,12])
3914 m.insertNextCell(NORM_TRI6,[5,1,4,10,8,13])
3915 m.insertNextCell(NORM_TRI3,[3,4,7])
3916 m.insertNextCell(NORM_TRI3,[3,7,0])
3917 m.insertNextCell(NORM_TRI3,[6,2,11])
3918 m.insertNextCell(NORM_TRI3,[6,11,5])
3919 m.insertNextCell(NORM_TRI3,[6,5,13])
3920 m.insertNextCell(NORM_TRI3,[6,13,4])
3921 edges,d,di,rd,rdi=m.explodeMeshIntoMicroEdges() # <- new method
3922 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])))
3923 self.assertEqual(edges.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer())
3924 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])))
3925 self.assertTrue(di.isEqual(DataArrayInt([0,6,12,18,21,24,27,30,33,36])))
3926 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])))
3927 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])))
3930 def testFieldIntIsOnStage2(self):
3931 """ Very important test to check that isEqual of MEDCouplingFieldInt is OK !"""
3932 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3933 m1=m1.buildUnstructured() ; m1.setName("mesh")
3934 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setMesh(m1)
3935 arr1=DataArrayInt32([(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"])
3936 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
3938 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3939 m2=m2.buildUnstructured() ; m2.setName("mesh")
3940 f2=MEDCouplingFieldInt(ON_CELLS) ; f2.setMesh(m2)
3941 arr2=DataArrayInt32([(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"])
3942 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
3944 self.assertTrue(f1.isEqual(f2,1e-12,0))
3946 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3947 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0))
3949 self.assertTrue(f1.isEqual(f2,1e-12,0))
3952 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3954 self.assertTrue(f1.isEqual(f2,1e-12,0))
3956 f1.getArray().setInfoOnComponents(["aa","bbbb"])
3957 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3958 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0))
3959 f1.getArray().setInfoOnComponents(["aa","bbb"])
3960 self.assertTrue(f1.isEqual(f2,1e-12,0))
3963 self.assertTrue(f1.isEqual(f3,1e-12,0))
3965 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
3966 f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
3967 arr4=DataArrayInt32([(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"])
3968 f4.setArray(arr4) ; f4.setName("f1")
3969 self.assertEqual(f1.isEqual(f4,1e-12,0),expected)
3973 def testDADSymmetry1(self):
3974 arr=DataArrayDouble([2,3,4],1,3)
3975 res=arr.symmetry3DPlane([0.,0.,0.],[0.,0.,2.])
3976 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-4],1,3),1e-14))
3978 res=arr.symmetry3DPlane([-1000,100,-1],[0.,0.,2.])
3979 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-6],1,3),1e-14))
3981 res=arr.symmetry3DPlane([0,0,0],[1.,0.,0.])
3982 self.assertTrue(res.isEqual(DataArrayDouble([-2,3,4],1,3),1e-14))
3984 res=arr.symmetry3DPlane([0,0,0],[0.,1.,0.])
3985 self.assertTrue(res.isEqual(DataArrayDouble([2,-3,4],1,3),1e-14))
3987 res=arr.symmetry3DPlane([0,0,0],[-1.,1.,0.])
3988 self.assertTrue(res.isEqual(DataArrayDouble([3,2,4],1,3),1e-14))
3991 a=DataArrayDouble(DataArrayDouble.GiveBaseForPlane(plane))
3992 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[1]).magnitude()[0],0.,13)
3993 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[2]).magnitude()[0],0.,13)
3994 self.assertAlmostEqual(DataArrayDouble.Dot(a[1],a[2]).magnitude()[0],0.,13)
3995 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]])
3996 m=MEDCouplingUMesh("",2) ; m.setCoords(coo) ; m.allocateCells()
3997 m.insertNextCell(NORM_QUAD4,[0,1,2,3])
3998 d,_=m.distanceToPoint(arr)
3999 res=arr.symmetry3DPlane([0.,0.,0.],plane) #
4000 d2,_=m.distanceToPoint(res)
4001 self.assertAlmostEqual(abs(d-d2),0.,12)
4002 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[0])[0],0.,12)
4003 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[1])[0],0.,12)
4004 self.assertAlmostEqual((res-arr).magnitude()[0]-2*d,0.,12)
4005 self.assertTrue(res.isEqual(DataArrayDouble([2.666666666666667,3.5333333333333333,3.0666666666666666],1,3),1e-12))
4008 def testExtrudedMeshBuildUnstructured1(self):
4009 """ 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"""
4010 arr=DataArrayDouble(11) ; arr.iota()
4011 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
4012 m=m.buildUnstructured()
4013 faces=MEDCouplingCMesh() ; faces.setCoords(arr,arr)
4014 faces=faces.buildUnstructured()
4015 faces.setCoords(m.getCoords())
4016 em=MEDCouplingMappedExtrudedMesh(m,faces,0)
4017 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12))
4018 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
4019 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
4022 def testExtrudedMeshFromCMesh1(self):
4023 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
4024 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ)
4025 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
4026 self.assertTrue(ex.buildUnstructured().isEqual(mesh3D.buildUnstructured(),1e-12))
4029 def testCylSpherPolarCartFiesta(self):
4030 """Test to check new capabilities from to cyl spher polar cart conversions"""
4031 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)])
4032 self.assertTrue(da0.fromCartToCyl().fromCylToCart().isEqual(da0,1e-12))
4033 self.assertTrue(da0.fromCartToSpher().fromSpherToCart().isEqual(da0,1e-12))
4035 self.assertTrue(da1.fromCartToPolar().fromPolarToCart().isEqual(da1,1e-12))
4041 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)])
4042 da4=da0.fromCartToCylGiven(da2,pt,vect)
4043 self.assertTrue(da4.isEqual(expected,1e-12))
4045 m=MEDCouplingUMesh.Build0DMeshFromCoords(da2)
4046 self.assertEqual(m.getDirectAccessOfCoordsArrIfInStructure().getHiddenCppPointer(),da2.getHiddenCppPointer())
4047 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setArray(da0)
4048 f=f0.computeVectorFieldCyl(pt,vect)
4049 f.checkConsistencyLight()
4050 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
4051 self.assertTrue(f.getArray().isEqual(expected,1e-12))
4054 def testDAIIndicesOfSubPart(self):
4055 a=DataArrayInt([9,10,0,6,4,11,3,8])
4056 b=DataArrayInt([6,0,11,8])
4057 c=a.indicesOfSubPart(b)
4058 self.assertTrue(c.isEqual(DataArrayInt([3,2,5,7])))
4060 d=DataArrayInt([9,10,0,6,4,11,0,8])
4061 self.assertRaises(InterpKernelException,d.indicesOfSubPart,b) # 0 appears twice in the d array
4062 f=DataArrayInt([6,0,11,8,12])
4063 self.assertRaises(InterpKernelException,a.indicesOfSubPart,f) # 12 in f does not exist in a
4066 def testDACirPermAndRev1(self):
4067 d=DataArrayInt([1,2,3,4,5,6])
4068 d2=d.deepCopy() ; d2.circularPermutation(1)
4069 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4070 d2=d.deepCopy() ; d2.circularPermutation()
4071 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4072 d2=d.deepCopy() ; d2.circularPermutation(2)
4073 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4074 d2=d.deepCopy() ; d2.circularPermutation(3)
4075 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4076 d2=d.deepCopy() ; d2.circularPermutation(4)
4077 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4078 d2=d.deepCopy() ; d2.circularPermutation(5)
4079 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4080 d2=d.deepCopy() ; d2.circularPermutation(6)
4081 self.assertTrue(d2.isEqual(d))
4082 d2=d.deepCopy() ; d2.circularPermutation(7)
4083 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4084 d2=d.deepCopy() ; d2.circularPermutation(-1)
4085 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4086 d2=d.deepCopy() ; d2.circularPermutation(-2)
4087 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4088 d2=d.deepCopy() ; d2.circularPermutation(-3)
4089 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4090 d2=d.deepCopy() ; d2.circularPermutation(-4)
4091 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4092 d2=d.deepCopy() ; d2.circularPermutation(-5)
4093 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4094 d2=d.deepCopy() ; d2.circularPermutation(-6)
4095 self.assertTrue(d2.isEqual(d))
4096 d2=d.deepCopy() ; d2.circularPermutation(-7)
4097 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4099 d=DataArrayInt([1,2,3,4,5,6],2,3)
4100 d2=d.deepCopy() ; d2.circularPermutationPerTuple(0)
4101 self.assertTrue(d2.isEqual(d))
4102 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4103 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4104 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4105 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4106 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4107 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4108 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4109 self.assertTrue(d2.isEqual(d))
4110 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4111 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4112 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4113 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4114 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4115 self.assertTrue(d2.isEqual(d))
4116 d.setInfoOnComponents(["a","b","c"])
4117 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4118 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4119 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4120 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4121 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4122 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4123 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4124 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4125 d2=d.deepCopy() ; d2.circularPermutationPerTuple(4)
4126 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4127 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4128 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4129 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4130 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4131 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4132 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4133 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-4)
4134 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4136 d2=d.deepCopy() ; d2.reversePerTuple()
4137 d3Exp=DataArrayInt([3,2,1,6,5,4],2,3) ; d3Exp.setInfoOnComponents(["c","b","a"])
4138 self.assertTrue(d3Exp.isEqual(d2))
4141 def testDAExplodeComponents1(self):
4142 d=DataArrayDouble([(1,2),(3,4),(5,6)])
4144 d.setInfoOnComponents(["a","b"])
4145 d2=d.explodeComponents()
4146 self.assertEqual(len(d2),2)
4148 d3=DataArrayDouble([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4149 self.assertTrue(d3.isEqual(d2[0],1e-14))
4150 d4=DataArrayDouble([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4151 self.assertTrue(d4.isEqual(d2[1],1e-14))
4153 d=DataArrayInt([(1,2),(3,4),(5,6)])
4155 d.setInfoOnComponents(["a","b"])
4156 d2=d.explodeComponents()
4157 self.assertEqual(len(d2),2)
4159 d3=DataArrayInt([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4160 self.assertTrue(d3.isEqual(d2[0]))
4161 d4=DataArrayInt([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4162 self.assertTrue(d4.isEqual(d2[1]))
4165 def testVoronoi2D_1(self):
4166 """ Check of voronize on 2D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4167 tmp=MEDCouplingCMesh("mesh")
4168 arr=DataArrayDouble(5) ; arr.iota()
4169 tmp.setCoords(arr,arr)
4170 tmp=tmp.build1SGTUnstructured()
4171 conn=tmp.getNodalConnectivity()
4173 conn.reversePerTuple()
4174 conn.circularPermutationPerTuple(2)
4176 coo=tmp.getCoords().deepCopy()
4177 coo.circularPermutationPerTuple(2) ; coo*=0.1
4179 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4181 coo2.circularPermutationPerTuple(2)
4182 tmp.getCoords()[:]+=coo2*coo
4184 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4185 field.setName("MyFieldPG") ; field.setMesh(tmp)
4186 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])
4187 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4189 field.checkConsistencyLight()
4191 fieldOnCell=field.voronoize(1e-12) # hot point
4192 fieldOnCell.checkConsistencyLight()
4193 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),112)
4194 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),256)
4195 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4196 meaRef=field.getMesh().getMeasureField(True).getArray()
4197 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4198 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4199 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4201 mea2=mea.sumPerTuple()
4202 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4205 def testVoronoi2D_2(self):
4206 """More aggressive 2D test. No warping here. To check data"""
4207 tmp=MEDCouplingCMesh("mesh")
4208 arr=DataArrayDouble([-1.,1.])
4209 tmp.setCoords(arr,arr)
4210 tmp=tmp.buildUnstructured()
4211 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4212 field.setName("MyFieldPG") ; field.setMesh(tmp)
4213 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])
4214 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4216 field.checkConsistencyLight()
4218 fieldOnCell=field.voronoize(1e-12) # hot point
4219 fieldOnCell.checkConsistencyLight()
4220 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4221 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),16)
4222 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4223 meaRef=DataArrayDouble([0.65,0.4710714285714285,0.59875,0.68,0.73875,0.4,0.46142857142857235])
4224 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4225 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4226 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4227 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4229 gsPt=field.getLocalizationOfDiscr()
4230 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4231 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4232 self.assertTrue(b.isIota(8))
4234 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
4237 def testVoronoi3D_1(self):
4238 """ Check of voronize on 3D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4239 tmp=MEDCouplingCMesh("mesh")
4240 arr=DataArrayDouble(5) ; arr.iota()
4241 tmp.setCoords(arr,arr)
4242 tmp=tmp.build1SGTUnstructured()
4243 conn=tmp.getNodalConnectivity()
4245 conn.reversePerTuple()
4246 conn.circularPermutationPerTuple(2)
4248 coo=tmp.getCoords().deepCopy()
4249 coo.circularPermutationPerTuple(2) ; coo*=0.1
4251 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4253 coo2.circularPermutationPerTuple(2)
4254 tmp.getCoords()[:]+=coo2*coo
4256 tmp.changeSpaceDimension(3,0.)
4258 arrZ=DataArrayDouble(5) ; arrZ.iota()
4259 mz=MEDCouplingCMesh() ; mz.setCoords(arrZ) ; mz=mz.buildUnstructured()
4260 mz.changeSpaceDimension(3,0.)
4261 mz.getCoords().circularPermutationPerTuple(1)
4262 tmp=tmp.buildUnstructured().buildExtrudedMesh(mz,0)
4264 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4265 field.setName("MyFieldPG") ; field.setMesh(tmp)
4266 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])
4267 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4269 field.checkConsistencyLight()
4271 fieldOnCell=field.voronoize(1e-12) # hot point
4272 fieldOnCell.checkConsistencyLight()
4273 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4274 meaRef=field.getMesh().getMeasureField(True).getArray()
4275 mea=fieldOnCell.getMesh().getMeasureField(False).getArray()
4276 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4277 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4279 mea2=mea.sumPerTuple()
4283 self.assertEqual(len(delta.findIdsNotInRange(0,1e-2)),0) # 1e-2 because hexa8 are warped !
4286 def testVoronoi3D_2(self):
4287 """More aggressive 3D test. No warping here. To check data"""
4288 tmp=MEDCouplingCMesh("mesh")
4289 arr=DataArrayDouble([-1.,1.])
4290 tmp.setCoords(arr,arr,arr)
4291 tmp=tmp.buildUnstructured()
4292 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4293 field.setName("MyFieldPG") ; field.setMesh(tmp)
4294 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])
4295 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4297 field.checkConsistencyLight()
4299 fieldOnCell=field.voronoize(1e-12) # hot point
4300 fieldOnCell.checkConsistencyLight()
4301 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4302 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),34)
4303 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4304 meaRef=DataArrayDouble([1.3,0.9421428571428572,1.1975,1.36,1.4775,0.8,0.922857142857143])
4305 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4306 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4307 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4308 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4310 gsPt=field.getLocalizationOfDiscr()
4311 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4312 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4313 self.assertTrue(b.isIota(8))
4315 self.assertEqual(fieldOnCell.getMesh().buildDescendingConnectivity()[0].getNumberOfCells(),2*7+21)
4318 def testVoronoi3D_8(self):
4319 """More aggressive 3D test. Bug EDF 15094"""
4320 mesh = MEDCouplingUMesh("myMeshForAnthony",3)
4321 coords = [2.20449946892035, 0.0015302058397972198, -0.014025000000000001, 2.20449522028465, 0.00459061457029268, -0.0109750000232271, 2.20449946892035, 0.0015302058397972198, -0.0125000000116135, 2.20577243296484, 0.00153108944037966, -0.0137555135576553, 2.20517315768831, 0.0045920262990614006, -0.010764118475206199, 2.2054749202977, 0.0015308829283677198, -0.012259816016430801, 2.20449787568164, 0.00306041094231961, -0.0125000000116135, 2.20449787568164, 0.00306041094231961, -0.011737500017420301, 2.20449946892035, 0.0015302058397972198, -0.0132625000058068, 2.20513595094259, 0.0015306476400884401, -0.0138902567788277, 2.20483418898648, 0.0045913204346770395, -0.0108695592492167, 2.20498719460902, 0.00153054438408247, -0.0123799080140222, 2.20547332635401, 0.0030617651191343705, -0.012259816016430801, 2.20532457012796, 0.00306155860717217, -0.0115119672458185, 2.20562367663127, 0.0015309861843736902, -0.013007664787043, 2.20582504233773, 0.0045933837758852306, -0.010139577890770399, 2.20642582267143, 0.004594634833691141, -0.009125379014333041, 2.20612543250458, 0.00459400930478819, -0.00963247845255172, 2.2069524110381, 0.004595731395029229, -0.00776049693994639, 2.20668911685476, 0.004595183114360191, -0.00844293797713971, 2.20832419990944, 0.0076643330146060895, -0.0108392857142857, 2.20832419990944, 0.0076643330146060895, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.0108392857142857, 2.2062381754171, 0.00459424407928538, -0.00868052596233734, 2.20832419990944, 0.0076643330146060895, -0.00975535714285714, 2.20768462042811, 0.00766211325442122, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.00975535714285714, 2.20768462042811, 0.00766211325442122, -0.0108392857142857, 2.20737554490036, 0.00612882358882901, -0.009982332364309381, 2.20763883863969, 0.00612955462931014, -0.00821596275568748, 2.2066421405633703, 0.00612678727660696, -0.00867597726688296, 2.20643557437203, 0.006126213741329251, -0.0104894318025281, 2.2065952932276, 0.00459498773715731, -0.00822051145114186, 2.20603160887741, 0.00459381392758531, -0.00941005192655387]
4322 da = DataArrayDouble.New(coords,35,3)
4324 mesh.allocateCells()
4325 mesh.insertNextCell(NORM_PENTA15, [0, 2, 1, 3, 5, 4, 8, 7, 6, 14, 13, 12, 9, 11, 10])
4326 mesh.insertNextCell(NORM_HEXA20, [20, 23, 22, 21, 16, 15, 24, 18, 28, 27, 26, 25, 17, 34, 33, 19, 29, 32, 31, 30])
4328 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4330 f.setName("myFieldForAnthony")
4331 f.setGaussLocalizationOnCells([0],[-1, 1, 0, -1, 0, 0, -1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, -1, 0.5, 0, -1, 0, 0.5, -1, 0.5, 0.5, 1, 0.5, 0, 1, 0, 0.5, 1, 0.5, 0.5, 0, 1, 0, 0, 0, 0, 0, 0, 1],[-0.774597, 0.333333, 0.333333, -0.774597, 0.470142, 0.470142, -0.774597, 0.0597159, 0.470142, -0.774597, 0.470142, 0.0597159, -0.774597, 0.101287, 0.101287, -0.774597, 0.797427, 0.101287, -0.774597, 0.101287, 0.797427, 0, 0.333333, 0.333333, 0, 0.470142, 0.470142, 0, 0.0597159, 0.470142, 0, 0.470142, 0.0597159, 0, 0.101287, 0.101287, 0, 0.797427, 0.101287, 0, 0.101287, 0.797427, 0.774597, 0.333333, 0.333333, 0.774597, 0.470142, 0.470142, 0.774597, 0.0597159, 0.470142, 0.774597, 0.470142, 0.0597159, 0.774597, 0.101287, 0.101287, 0.774597, 0.797427, 0.101287, 0.774597, 0.101287, 0.797427],[0.0625, 0.0367762, 0.0367762, 0.0367762, 0.0349831, 0.0349831, 0.0349831, 0.1, 0.0588418, 0.0588418, 0.0588418, 0.055973, 0.055973, 0.055973, 0.0625, 0.0367762, 0.0367762, 0.0367762, 0.0349831, 0.0349831, 0.0349831])
4332 f.setGaussLocalizationOnCells([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, -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.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],[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])
4333 arr = DataArrayDouble(48, 3)
4334 arr[:, 0] = list(range(48))
4335 arr[:, 1] = 100 + arr[:, 0]
4336 arr[:, 2] = 200 + arr[:, 0]
4338 fieldOnCell=f.voronoize(1e-12) # hot point
4339 fieldOnCell.checkConsistencyLight()
4340 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),48)
4341 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),127)
4342 meaRef=f.getMesh().getMeasureField(True).getArray(); meaRef.rearrange(2); meaRef2 = meaRef.sumPerTuple()
4343 mea=fieldOnCell.getMesh().getMeasureField(True).getArray(); mea.rearrange(48); mea2 = mea.sumPerTuple()
4344 self.assertTrue(mea2.isEqual(meaRef2,1e-9))
4347 def testVoronoi3DSurf_1(self):
4348 tmp=MEDCouplingCMesh("mesh")
4349 arr=DataArrayDouble(5) ; arr.iota()
4350 tmp.setCoords(arr,arr)
4351 tmp=tmp.build1SGTUnstructured()
4352 conn=tmp.getNodalConnectivity()
4354 conn.reversePerTuple()
4355 conn.circularPermutationPerTuple(2)
4357 coo=tmp.getCoords().deepCopy()
4358 coo.circularPermutationPerTuple(2) ; coo*=0.1
4360 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4362 coo2.circularPermutationPerTuple(2)
4363 tmp.getCoords()[:]+=coo2*coo
4365 tmp.changeSpaceDimension(3,0.) # force 3D surf
4366 tmp.rotate([0,0,0],[1,0,0],pi/3) # force 3D surf
4368 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4369 field.setName("MyFieldPG") ; field.setMesh(tmp)
4370 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])
4371 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4373 field.checkConsistencyLight()
4375 fieldOnCell=field.voronoize(1e-12);
4376 fieldOnCell.checkConsistencyLight()
4377 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4378 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),2)
4379 self.assertEqual(field.getMesh().getSpaceDimension(),fieldOnCell.getMesh().getSpaceDimension())
4380 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4381 meaRef=field.getMesh().getMeasureField(True).getArray()
4382 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4383 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4384 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4386 mea2=mea.sumPerTuple()
4387 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4390 def testVoronoi1D_1(self):
4391 tmp=MEDCouplingCMesh("mesh")
4392 arr=DataArrayDouble(5) ; arr.iota()
4394 tmp=tmp.build1SGTUnstructured()
4396 tmp.changeSpaceDimension(2,0.)
4397 tmp.getCoords()[:,1]=pi/(len(arr)-1)*tmp.getCoords()[:,0]
4398 tmp.getCoords()[:,0]=1.
4399 tmp.setCoords(tmp.getCoords().fromPolarToCart())
4400 tmp.changeSpaceDimension(3,1.)
4402 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4403 field.setName("MyFieldPG") ; field.setMesh(tmp)
4404 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])
4405 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4407 field.checkConsistencyLight()
4409 fieldOnCell=field.voronoize(1e-12);
4410 fieldOnCell.checkConsistencyLight()
4411 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4412 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),1)
4413 assert(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4414 meaRef=field.getMesh().getMeasureField(True).getArray()
4415 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4416 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4417 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),6)
4419 mea2=mea.sumPerTuple()
4420 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4423 def testFieldDoubleConvertToLinear1(self):
4424 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)
4425 da.setInfoOnComponents(["g","h"])
4426 m=MEDCouplingUMesh("mesh",2)
4429 m.insertNextCell(NORM_TRI6,[0,1,13,4,9,7])
4430 m.insertNextCell(NORM_TRI6,[1,2,14,5,10,9])
4431 m.insertNextCell(NORM_QUAD8,[2,3,17,15,6,12,16,11])
4432 refPtr=m.getHiddenCppPointer()
4433 f=MEDCouplingFieldDouble(ON_NODES)
4436 arr=DataArrayDouble(18*2) ; arr.iota()
4438 arr.setInfoOnComponents(["bb","ccc"])
4441 f.checkConsistencyLight()
4443 f1=f.convertQuadraticCellsToLinear()
4444 self.assertTrue(f.getMesh().getHiddenCppPointer(),refPtr)
4445 self.assertTrue(f1.getMesh().getHiddenCppPointer()!=refPtr)
4446 f1.checkConsistencyLight()
4447 self.assertEqual(f1.getName(),"aa")
4448 self.assertEqual(f1.getTypeOfField(),ON_NODES)
4449 da0=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(0,1),(1,1),(2,1),(3,1)])
4450 da0.setInfoOnComponents(["g","h"])
4451 self.assertTrue(f1.getMesh().getCoords().isEqual(da0,1e-12))
4452 self.assertTrue(f1.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4453 self.assertTrue(f1.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4454 da2=DataArrayDouble([(0,1),(2,3),(4,5),(6,7),(26,27),(28,29),(30,31),(34,35)])
4455 da2.setInfoOnComponents(["bb","ccc"])
4456 self.assertTrue(f1.getArray().isEqual(da2,1e-12))
4457 self.assertEqual(f1.getTime(),[0.5,2,3])
4459 f2=MEDCouplingFieldDouble(ON_CELLS)
4462 arr=DataArrayDouble(3*2) ; arr.iota()
4464 arr.setInfoOnComponents(["bb","ccc"])
4467 f2.checkConsistencyLight()
4468 f3=f2.convertQuadraticCellsToLinear()
4469 self.assertEqual(f2.getMesh().getHiddenCppPointer(),refPtr)
4470 f3.checkConsistencyLight()
4471 self.assertTrue(f3.getMesh().getHiddenCppPointer()!=refPtr)
4472 self.assertTrue(f3.getMesh().getCoords().isEqual(da0,1e-12))
4473 self.assertTrue(f3.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4474 self.assertTrue(f3.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4475 self.assertEqual(f2.getArray().getHiddenCppPointer(),f3.getArray().getHiddenCppPointer())
4476 self.assertEqual(f3.getTime(),[0.5,2,3])
4479 def testBuild1DMeshFromCoords1(self):
4480 da=DataArrayDouble([(3,4),(5,6),(7,8)])
4483 m=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4484 m.checkConsistencyLight()
4485 self.assertEqual(da0.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
4486 self.assertTrue(da.isEqual(da0,1e-12))
4487 self.assertEqual(m.getName(),da.getName())
4488 self.assertEqual(m.getMeshDimension(),1)
4489 self.assertTrue(isinstance(m,MEDCouplingUMesh))
4490 m1=MEDCoupling1SGTUMesh(m)
4491 m1.checkConsistencyLight()
4492 self.assertTrue(m1.getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2])))
4495 m2=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4496 m2.checkConsistencyLight()
4497 self.assertEqual(da0.getHiddenCppPointer(),m2.getCoords().getHiddenCppPointer())
4498 self.assertEqual(m2.getName(),"Mesh")
4501 def testVoronoi3D_3(self):
4502 """Non regression test to check MEDCouplingUMesh::clipSingle3DCellByPlane"""
4503 coo=DataArrayDouble([0.,1.,0.,0.,0.,0.,0.,0.,1.,1.,0.,0.],4,3)
4504 m=MEDCouplingUMesh("mesh",3)
4505 m.setCoords(coo) ; m.allocateCells()
4506 m.insertNextCell(NORM_TETRA4,[0,2,3,1])
4507 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4508 f.setMesh(m) ; f.setName("field")
4509 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])
4510 f.setArray(DataArrayDouble([0,1,2,3]))
4511 f3=f.voronoize(1e-12)
4512 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4513 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4514 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4517 def testVoronoi3D_4(self):
4518 """Idem testVoronoi3D_3 except that here quadratic cells are considered"""
4519 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)
4520 m=MEDCouplingUMesh("mesh",3)
4521 m.setCoords(coo) ; m.allocateCells()
4522 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4523 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4524 f.setMesh(m) ; f.setName("field")
4525 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])
4526 f.setArray(DataArrayDouble([0,1,2,3]))
4527 f3=f.voronoize(1e-12)
4528 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4529 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4530 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4533 def testVoronoi3D_5(self):
4534 """ Cell 0 of Barreau_Elga_V11.rmed and sslv07b.rmed. HEXA8 cut regularly into 8 parts"""
4535 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)])
4536 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4537 m.insertNextCell(NORM_HEXA8,[0,2,6,4,1,3,7,5])
4538 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4539 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])
4540 arr=DataArrayDouble(8) ; arr.iota() ; f.setArray(arr)
4541 f.checkConsistencyLight()
4543 vol=f.getMesh().getMeasureField(False).getIJ(0,0)
4544 f2=f.voronoize(1e-12)
4545 f2.checkConsistencyLight()
4546 self.assertEqual(f2.getNumberOfTuples(),8)
4548 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isUniform(volRef,1e-12))
4551 def testVoronoi3D_6(self):
4552 """ Cell 0 of brokenshire.med (and pace.med). TETRA10 split into 4 parts"""
4553 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)])
4554 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4555 m.insertNextCell(NORM_TETRA10,[2,0,1,3,5,4,7,9,6,8])
4556 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4557 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])
4558 arr=DataArrayDouble(4) ; arr.iota() ; f.setArray(arr)
4559 f.checkConsistencyLight()
4560 f2=f.voronoize(1e-12)
4561 f2.checkConsistencyLight()
4562 self.assertEqual(f2.getNumberOfTuples(),4)
4563 arr=f2.getMesh().getMeasureField(False).getArray()
4564 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(DataArrayDouble([378.0546928833331, 318.42621348333586, 318.4262134833361, 318.4262134833278]),1e-6))
4567 def testVoronoi3D_7(self):
4568 """ sslv07a.rmed. HEXA20 split into 27 parts """
4569 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)])
4570 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4571 m.insertNextCell(NORM_HEXA20,[0,3,5,2,8,14,12,10,4,7,6,1,15,13,11,9,16,19,18,17])
4572 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4573 f.setGaussLocalizationOnType(NORM_HEXA20,
4574 [-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],
4575 [-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],
4576 [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])
4577 arr=DataArrayDouble(27) ; arr.iota() ; f.setArray(arr)
4578 f.checkConsistencyLight()
4579 f2=f.voronoize(1e-12)
4580 a=0.007187820185770747 ; b=0.0090870678008658 ; c=0.011488156225861077 ; d=0.014523687548277797
4581 ref=DataArrayDouble(27) ; ref[::2]=a ; ref[1::2]=b
4582 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
4584 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-7))
4587 def testConvertQuadToLin4Gauss_1(self):
4588 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)
4589 m=MEDCouplingUMesh("mesh",3)
4590 m.setCoords(coo) ; m.allocateCells()
4591 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4592 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4593 f.setMesh(m) ; f.setName("field")
4594 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]
4595 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]
4596 cccc=[0.041667,0.041667,0.041667,0.041667]
4597 f.setGaussLocalizationOnType(NORM_TETRA10,aaaa,bbbb,cccc)
4598 f.setArray(DataArrayDouble([0,1,2,3]))
4601 mcpy=m.deepCopy() ; mcpy.convertQuadraticCellsToLinear() ; mcpy.zipCoords()
4603 f2=f.convertQuadraticCellsToLinear()
4604 f2.checkConsistencyLight()
4605 self.assertTrue(f2.getMesh().isEqual(mcpy,1e-12))
4606 self.assertTrue(f2.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4607 self.assertEqual(f2.getNbOfGaussLocalization(),1)
4608 gl=f2.getGaussLocalization(0)
4609 self.assertEqual(gl.getType(),NORM_TETRA4)
4610 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))
4611 self.assertTrue(DataArrayDouble(gl.getGaussCoords()).isEqual(DataArrayDouble(bbbb),1e-12))
4612 self.assertTrue(DataArrayDouble(gl.getWeights()).isEqual(DataArrayDouble(cccc),1e-12))
4613 self.assertEqual(f2.getName(),"field")
4614 self.assertEqual(f2.getTime(),[1.,2,3])
4617 def testDADCumSum1(self):
4618 d=DataArrayDouble([3.,2.,4.,5.])
4619 self.assertTrue(d.cumSum().isEqual(DataArrayDouble([0.,3.,5.,9.,14.]),1e-12))
4620 d2=DataArrayDouble([])
4621 self.assertTrue(d2.cumSum().isEqual(DataArrayDouble([0.]),1e-12))
4623 self.assertRaises(InterpKernelException,d.cumSum)
4626 def testDAIFromLinkedListOfPairToList1(self):
4627 d=DataArrayInt([(5,7),(7,3),(3,12),(12,17)])
4628 zeRes=DataArrayInt([5,7,3,12,17])
4629 self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
4631 self.assertRaises(InterpKernelException,d.fromLinkedListOfPairToList)
4633 self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
4634 d2=DataArrayInt([(5,7)])
4635 self.assertTrue(d2.fromLinkedListOfPairToList().isEqual(DataArrayInt([5,7])))
4636 d3=DataArrayInt([(5,7),(7,3),(4,12),(12,17)])
4637 self.assertRaises(InterpKernelException,d3.fromLinkedListOfPairToList) # not a linked list of pair
4638 d4=DataArrayInt([(5,7),(7,3),(12,3),(12,17)])
4639 self.assertRaises(InterpKernelException,d4.fromLinkedListOfPairToList) # not a linked list of pair, but can be repaired !
4640 d4.sortEachPairToMakeALinkedList()
4641 self.assertTrue(d4.fromLinkedListOfPairToList().isEqual(zeRes))
4644 def testUMeshExplodeIntoEdges1(self):
4645 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured()
4646 self.assertEqual(m.getMeshDimension(),3)
4647 a0,a1,a2,a3,a4=m.explodeIntoEdges()
4648 b0,b1,b2,b3,b4=m.explode3DMeshTo1D()
4649 self.assertTrue(a0.isEqual(b0,1e-12))
4650 self.assertTrue(a1.isEqual(b1)) ; self.assertTrue(a2.isEqual(b2)) ; self.assertTrue(a3.isEqual(b3)) ; self.assertTrue(a4.isEqual(b4))
4652 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4653 self.assertEqual(m.getMeshDimension(),2)
4654 a0,a1,a2,a3,a4=m.explodeIntoEdges()
4655 b0,b1,b2,b3,b4=m.buildDescendingConnectivity()
4656 self.assertTrue(a0.isEqual(b0,1e-12))
4657 self.assertTrue(a1.isEqual(b1)) ; self.assertTrue(a2.isEqual(b2)) ; self.assertTrue(a3.isEqual(b3)) ; self.assertTrue(a4.isEqual(b4))
4660 def testUMeshComputeEnlargedNeighborsOfNodes(self):
4661 m=MEDCouplingCMesh() ; arr=DataArrayDouble(4) ; arr.iota() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4662 a,b=m.computeEnlargedNeighborsOfNodes()
4663 aExp=DataArrayInt([1,4,5,0,2,4,5,6,1,3,5,6,7,2,6,7,0,1,5,8,9,0,1,2,4,6,8,9,10,1,2,3,5,7,9,10,11,2,3,6,10,11,4,5,9,12,13,4,5,6,8,10,12,13,14,5,6,7,9,11,13,14,15,6,7,10,14,15,8,9,13,8,9,10,12,14,9,10,11,13,15,10,11,14])
4664 bExp=DataArrayInt([0,3,8,13,16,21,29,37,42,47,55,63,68,71,76,81,84])
4665 self.assertTrue(a.isEqual(aExp))
4666 self.assertTrue(b.isEqual(bExp))
4668 c,d=m2.computeEnlargedNeighborsOfNodes()
4669 cExp=DataArrayInt([2,5,6,1,3,5,6,7,2,6,7,5,8,9,1,2,4,6,8,9,1,2,3,5,7,2,3,6,4,5,9,4,5,8])
4670 dExp=DataArrayInt([0,0,3,8,11,14,20,25,28,31,34,34,34,34,34,34,34])
4671 self.assertTrue(c.isEqual(cExp))
4672 self.assertTrue(d.isEqual(dExp))
4675 def testDAIfindIdsExt1(self):
4676 d=DataArrayInt([4,6,-2,3,7,0,10])
4677 self.assertTrue(d.findIdsGreaterOrEqualTo(3).isEqual(DataArrayInt([0,1,3,4,6])))
4678 self.assertTrue(d.findIdsGreaterThan(3).isEqual(DataArrayInt([0,1,4,6])))
4679 self.assertTrue(d.findIdsLowerThan(3).isEqual(DataArrayInt([2,5])))
4680 self.assertTrue(d.findIdsLowerOrEqualTo(3).isEqual(DataArrayInt([2,3,5])))
4683 def testDAFacto1(self):
4684 """Test focused of new wrapped methods for MEDCouplingFieldInt thanks to code factorization."""
4685 d=DataArrayDouble(7) ; d.iota()
4686 m=MEDCouplingUMesh.Build1DMeshFromCoords(d)
4687 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(m) ; arr=DataArrayInt32(6) ; arr.iota() ; f.setArray(arr) ; f.checkConsistencyLight()
4688 f_0=f[::2] # test is here
4689 self.assertTrue(f_0.getArray().isEqual(DataArrayInt32([0,2,4])))
4690 self.assertTrue(f_0.getMesh().isEqual(m[[0,2,4]],1e-12))
4692 f2=MEDCouplingFieldInt(ON_NODES) ; f2.setMesh(m) ; arr=DataArrayInt32(7) ; arr.iota() ; f2.setArray(arr) ; f2.checkConsistencyLight()
4693 f_1=f2[::2] # test is here
4694 self.assertTrue(f_1.getArray().isEqual(DataArrayInt32([0,1,2,3,4,5])))
4695 m_1=m[[0,2,4]] ; m_1.zipCoords()
4696 self.assertTrue(f_1.getMesh().isEqual(m_1,1e-12))
4699 def testFieldFloatIsOnStage1(self):
4700 """ My first test with field int."""
4701 m=MEDCouplingCMesh()
4703 arrX=DataArrayDouble([0,1,2,3])
4704 m.setCoords(arrX,arrX)
4705 f=MEDCouplingFieldFloat(ON_CELLS)
4707 arr=DataArrayFloat(8) ; arr.iota() ;f.setArray(arr)
4708 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
4709 arr=DataArrayFloat(9) ; arr.iota() ;f.setArray(arr)
4710 f.checkConsistencyLight()
4712 self.assertEqual(f.getTimeUnit(),"ms")
4715 self.assertEqual(b,5)
4716 self.assertEqual(c,6)
4717 self.assertEqual(a,3.2,12)
4720 def testFieldFloatIsOnStage2(self):
4721 """ Very important test to check that isEqual of MEDCouplingFieldFloat is OK !"""
4722 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4723 m1=m1.buildUnstructured() ; m1.setName("mesh")
4724 f1=MEDCouplingFieldFloat(ON_CELLS) ; f1.setMesh(m1)
4725 arr1=DataArrayFloat([(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"])
4726 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
4728 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4729 m2=m2.buildUnstructured() ; m2.setName("mesh")
4730 f2=MEDCouplingFieldFloat(ON_CELLS) ; f2.setMesh(m2)
4731 arr2=DataArrayFloat([(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"])
4732 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
4734 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4736 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4737 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4739 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4742 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4744 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4746 f1.getArray().setInfoOnComponents(["aa","bbbb"])
4747 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4748 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4749 f1.getArray().setInfoOnComponents(["aa","bbb"])
4750 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4753 self.assertTrue(f1.isEqual(f3,1e-12,0.))
4755 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
4756 f4=MEDCouplingFieldFloat(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
4757 arr4=DataArrayFloat([(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"])
4758 f4.setArray(arr4) ; f4.setName("f1")
4759 self.assertEqual(f1.isEqual(f4,1e-12,0.),expected)
4763 def testLTGTDAD1(self):
4764 d=DataArrayDouble(10) ; d.iota()
4765 self.assertTrue(d.findIdsLowerThan(0).empty())
4766 self.assertTrue(d.findIdsLowerThan(1).isEqual(DataArrayInt([0])))
4768 self.assertTrue(d.findIdsStrictlyNegative().isEqual(DataArrayInt([0,1,2,3,4])))
4769 self.assertTrue(d.findIdsGreaterThan(0.).isEqual(DataArrayInt([6,7,8,9])))
4770 self.assertTrue(d.convertToFloatArr().isEqual(DataArrayFloat([-5,-4,-3,-2,-1,0,1,2,3,4]),1e-7))
4771 self.assertTrue(d.convertToFloatArr().convertToDblArr().isEqual(d,1e-12))
4774 def testMapII1(self):
4775 """ Test optimized maps for renumbering. Typical usage local to global in parallel mode"""
4776 d=DataArrayInt([1003,1007])
4777 m=d.invertArrayN2O2O2NOptimized()
4778 d2=DataArrayInt([1003,1003,1007,1003,1007])
4779 d2.transformWithIndArr(m)
4780 self.assertTrue(d2.isEqual(DataArrayInt([0,0,1,0,1])))
4783 def testDAICheckUniformAndGuess1(self):
4784 d=DataArrayInt([3,3],1,2)
4785 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non single compo
4787 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# empty
4789 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non allocated
4790 d=DataArrayInt([3,3,3])
4791 self.assertEqual(3,d.checkUniformAndGuess())
4793 self.assertEqual(7,d.checkUniformAndGuess())
4794 d=DataArrayInt([3,4,3])
4795 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non uniform
4798 def testUMComputePlaneEquationOf3DFaces1(self):
4799 """ Consequence of an invalid traduction of matrix inversion transposition."""
4800 m=MEDCoupling1SGTUMesh("msh",NORM_QUAD4)
4801 m.setCoords(DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(0,2,0),(1,2,0),(2,2,0),(0,4,0),(1,4,0),(2,4,0),(0,0,3),(1,0,3),(2,0,3),(0,2,3),(1,2,3),(2,2,3),(0,4,3),(1,4,3),(2,4,3)]))
4802 m.setNodalConnectivity(DataArrayInt([0,1,4,3,9,12,13,10,0,9,10,1,1,10,13,4,4,13,12,3,3,12,9,0,1,2,5,4,10,13,14,11,1,10,11,2,2,11,14,5,5,14,13,4,3,4,7,6,12,15,16,13,4,13,16,7,7,16,15,6,6,15,12,3,4,5,8,7,13,16,17,14,5,14,17,8,8,17,16,7]))
4803 m=m.buildUnstructured()
4804 ref=DataArrayDouble([(0,0,1,0),(0,0,1,-3),(0,1,0,0),(1,0,0,-1),(0,1,0,-2),(1,0,0,0),(0,0,1,0),(0,0,1,-3),(0,1,0,0),(1,0,0,-2),(0,1,0,-2),(0,0,1,0),(0,0,1,-3),(1,0,0,-1),(0,1,0,-4),(1,0,0,0),(0,0,1,0),(0,0,1,-3),(1,0,0,-2),(0,1,0,-4)])
4805 res=m.computePlaneEquationOf3DFaces()
4806 self.assertTrue(res.isEqual(ref,1e-12))
4809 def testBugInComputationOfEqOfPlane1(self):
4810 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)
4811 m=MEDCouplingUMesh("",2)
4814 m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
4815 self.assertTrue(m.computePlaneEquationOf3DFaces().isEqual(DataArrayDouble([0,1,0,-1],1,4),1e-12))
4818 def testSimplifyPolyhedra(self):
4819 mesh = MEDCouplingUMesh('mesh', 3)
4820 coo = DataArrayDouble([(-0.01225,-0.0212176,0.02),(-0.00634107,-0.0236652,0.02),(1.50019e-18,-0.0245,0.02),(0.00634107,-0.0236652,0.02),(0.01225,-0.0212176,0.02),(-0.0153864,-0.02665,0),(-0.00714085,-0.02665,0),(1.63184e-18,-0.02665,0),(0.00714085,-0.02665,0),(0.0153864,-0.02665,0),(-0.00714085,-0.02665,0.0101475),(1.63184e-18,-0.02665,0.013145),(0.00714085,-0.02665,0.0101475),(-0.013,-0.0225167,0.02),(-0.0067293,-0.0251141,0.02),(1.59204e-18,-0.026,0.02),(0.0067293,-0.0251141,0.02),(0.013,-0.0225167,0.02),(-0.0161658,-0.028,0),(-0.00750258,-0.028,0),(1.71451e-18,-0.028,0),(0.00750258,-0.028,0),(0.0161658,-0.028,0),(-0.00750258,-0.028,0.0105625),(1.71451e-18,-0.028,0.0136825),(0.00750258,-0.028,0.0105625)])
4822 c = DataArrayInt([31, 13, 14, 15, 16, 17, 4, 3, 2, 1, 0, -1, 18, 5, 6, 7, 8, 9, 22, 21, 20, 19, -1, 19, 23, 18, -1, 23, 14, 13, 18, -1, 20, 24, 23, 19, -1, 24, 15, 14, 23, -1, 21, 25, 24, 20, -1, 25, 16, 15, 24, -1, 22, 25, 21, -1, 22, 17, 16, 25, -1, 9, 4, 17, 22, -1, 8, 12, 9, -1, 12, 3, 4, 9, -1, 7, 11, 12, 8, -1, 11, 2, 3, 12, -1, 6, 10, 11, 7, -1, 10, 1, 2, 11, -1, 5, 10, 6, -1, 5, 0, 1, 10, -1, 18, 13, 0, 5])
4823 cI = DataArrayInt([0, 108])
4824 mesh.setConnectivity(c, cI)
4825 mesh.simplifyPolyhedra(1.0e-8)
4826 c, cI = mesh.getNodalConnectivity(), mesh.getNodalConnectivityIndex()
4827 tgt_c = DataArrayInt([31, 23, 18, 19, 20, 21, 22, 25, 24, -1, 12, 9, 8, 7, 6, 5, 10, 11, -1, 13, 14, 15, 16, 17, 4, 3, 2, 1, 0, -1, 18, 5, 6, 7, 8, 9, 22, 21, 20, 19, -1, 23, 14, 13, 18, -1, 24, 15, 14, 23, -1, 25, 16, 15, 24, -1, 22, 17, 16, 25, -1, 9, 4, 17, 22, -1, 12, 3, 4, 9, -1, 11, 2, 3, 12, -1, 10, 1, 2, 11, -1, 5, 0, 1, 10, -1, 18, 13, 0, 5])
4828 tgt_cI = DataArrayInt([0, 90])
4829 self.assertEqual(c.getValues(), tgt_c.getValues())
4830 self.assertEqual(cI.getValues(), tgt_cI.getValues())
4833 def testColinearizeEdges(self):
4834 mesh = MEDCouplingUMesh('mesh', 3)
4835 coo = DataArrayDouble([(0,0,0), (1,0,0), (2,0,0), (3,0,0),
4836 (0,0,3), (1,0,3), (2,0,3), (3,0,3),
4840 c = DataArrayInt([NORM_POLYHED, 0,1,2,3,7,6,5,4,-1, # front
4841 9,8,10,11, -1, # back
4842 0,4,10,8, -1, # left
4843 3,7,11,9, -1, # right
4844 0,1,2,3,9,8,-1, # bottom
4847 cI = DataArrayInt([0, c.getNumberOfTuples()])
4848 mesh.setConnectivity(c, cI)
4849 mesh.colinearizeEdges(1.0e-8)
4850 c, cI = mesh.getNodalConnectivity(), mesh.getNodalConnectivityIndex()
4851 tgt_c = DataArrayInt([NORM_POLYHED, 0, 3, 7, 4, -1, 9, 8, 10, 11, -1, 0, 4, 10, 8, -1, 3, 7, 11, 9, -1, 0, 3, 9, 8, -1, 4, 7, 11, 10])
4852 tgt_cI = DataArrayInt([0, 30])
4853 self.assertEqual(c.getValues(), tgt_c.getValues())
4854 self.assertEqual(cI.getValues(), tgt_cI.getValues())
4858 if __name__ == '__main__':