1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2016 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 from MEDCoupling import *
22 from math import pi,e,sqrt,cos,sin
23 from datetime import datetime
24 from MEDCouplingDataForTest import MEDCouplingDataForTest
25 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
27 class MEDCouplingBasicsTest5(unittest.TestCase):
28 def testSwig2FieldDoubleBuildSubPartRange1(self):
30 m=MEDCouplingDataForTest.build2DTargetMesh_1()
31 f=MEDCouplingFieldDouble(ON_CELLS)
33 arr = DataArrayDouble(5, 2) ; arr[:, 0] = list(range(7, 12)) ; arr[:, 1] = 100 + arr[:, 0]
35 f.checkConsistencyLight()
37 ff.checkConsistencyLight()
38 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
39 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
40 self.assertTrue(2,ff.getMesh().getNumberOfCells())
41 self.assertTrue(ff.getArray().isEqual(arr[[1,3]],1e-12))
43 a,b=f.buildSubMeshDataRange(2,5,1)
44 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
45 self.assertEqual(b,slice(2,5,1))
47 ff.checkConsistencyLight()
48 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
49 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
50 self.assertTrue(3,ff.getMesh().getNumberOfCells())
51 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4]],1e-12))
54 ff.checkConsistencyLight()
55 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
56 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
57 self.assertTrue(3,ff.getMesh().getNumberOfCells())
58 self.assertTrue(ff.getArray().isEqual(arr[[3,2,1]],1e-12))
59 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[3,2,1],1],1e-12))
61 f=MEDCouplingFieldDouble(ON_NODES)
63 arr = DataArrayDouble(9, 2) ; arr[:, 0] = list(range(7, 16)) ; arr[:, 1] = 100 + arr[:, 0]
65 f.checkConsistencyLight()
67 ff.checkConsistencyLight()
68 self.assertTrue((m.buildPartOfMySelf([1,3],False)).isEqual(ff.getMesh(),1e-12))
69 self.assertTrue(6,ff.getMesh().getNumberOfNodes())
70 self.assertTrue(2,ff.getMesh().getNumberOfCells())
71 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,6,7]],1e-12))
73 m2=m.buildPartRange(2,5,1)
74 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(m2,1e-12))
75 m2,b=m.buildPartRangeAndReduceNodes(2,5,1)
76 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(m2,1e-12))
77 self.assertTrue(b.isEqual(DataArrayInt([-1,-1,0,1,2,3,4,5,6])))
78 a,b=f.buildSubMeshDataRange(2,5,1)
79 self.assertTrue(m.buildPartOfMySelf([2,3,4],False).isEqual(a,1e-12))
80 self.assertTrue(b.isEqual(DataArrayInt([2,3,4,5,6,7,8])))
82 ff.checkConsistencyLight()
83 self.assertTrue((m.buildPartOfMySelf([2,3,4],False)).isEqual(ff.getMesh(),1e-12))
84 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
85 self.assertTrue(3,ff.getMesh().getNumberOfCells())
86 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,6,7,8]],1e-12))
89 ff.checkConsistencyLight()
90 self.assertTrue((m.buildPartOfMySelf([3,2,1],False)).isEqual(ff.getMesh(),1e-12))
91 self.assertTrue(7,ff.getMesh().getNumberOfNodes())
92 self.assertTrue(3,ff.getMesh().getNumberOfCells())
93 self.assertTrue(ff.getArray().isEqual(arr[[1,2,3,4,5,6,7]],1e-12))
94 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[1,2,3,4,5,6,7],1],1e-12))
96 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
98 arr = DataArrayDouble(18, 2) ; arr[:, 0] = list(range(7, 25)) ; arr[:, 1] = 100 + arr[:, 0]
100 f.checkConsistencyLight()
102 ff.checkConsistencyLight()
103 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
104 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
105 self.assertTrue(2,ff.getMesh().getNumberOfCells())
106 self.assertTrue(ff.getArray().isEqual(arr[[4,5,6,10,11,12,13]],1e-12))
108 a,b=f.buildSubMeshDataRange(2,5,1)
109 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
110 self.assertEqual(b,slice(7,18,1))
112 ff.checkConsistencyLight()
113 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
114 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
115 self.assertTrue(3,ff.getMesh().getNumberOfCells())
116 self.assertTrue(ff.getArray().isEqual(arr[[7,8,9,10,11,12,13,14,15,16,17]],1e-12))
119 ff.checkConsistencyLight()
120 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
121 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
122 self.assertTrue(3,ff.getMesh().getNumberOfCells())
123 self.assertTrue(ff.getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6]],1e-12))
124 self.assertTrue(f[-2:0:-1,1].getArray().isEqual(arr[[10,11,12,13,7,8,9,4,5,6],1],1e-12))
126 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
128 f.setGaussLocalizationOnCells([0,4],[0,0,1,0,1,1,1,0],[1.1,1.1,2.2,2.2],[0.2,0.8]);
129 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]);
130 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]);
131 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]);
132 arr = DataArrayDouble(16, 2) ; arr[:, 0] = list(range(7, 23)) ; arr[:, 1] = 100 + arr[:, 0]
134 f.checkConsistencyLight()
136 ff.checkConsistencyLight()
137 self.assertTrue((m.buildPartOfMySelf([1,3],True)).isEqual(ff.getMesh(),1e-12))
138 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
139 self.assertTrue(2,ff.getMesh().getNumberOfCells())
140 self.assertTrue(ff.getArray().isEqual(arr[[2,3,4,5,11,12,13]],1e-12))
142 a,b=f.buildSubMeshDataRange(2,5,1)
143 self.assertTrue(m.buildPartOfMySelf([2,3,4],True).isEqual(a,1e-12))
144 self.assertEqual(b,slice(6,16,1))
146 ff.checkConsistencyLight()
147 self.assertTrue((m.buildPartOfMySelf([2,3,4],True)).isEqual(ff.getMesh(),1e-12))
148 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
149 self.assertTrue(3,ff.getMesh().getNumberOfCells())
150 self.assertTrue(ff.getArray().isEqual(arr[[6,7,8,9,10,11,12,13,14,15]],1e-12))
153 ff.checkConsistencyLight()
154 self.assertTrue((m.buildPartOfMySelf([3,2,1],True)).isEqual(ff.getMesh(),1e-12))
155 self.assertTrue(9,ff.getMesh().getNumberOfNodes())
156 self.assertTrue(3,ff.getMesh().getNumberOfCells())
157 self.assertTrue(ff.getArray().isEqual(arr[[11,12,13,6,7,8,9,10,2,3,4,5]],1e-12))
158 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))
161 def testSwig2FieldDoubleApplyFuncBug1(self):
162 f=MEDCouplingFieldDouble(ON_CELLS)
163 f.setMesh(MEDCouplingDataForTest.build2DTargetMesh_1())
165 f.checkConsistencyLight()
166 self.assertEqual(3,f.getArray().getNumberOfComponents())
167 f.getArray().rearrange(1)
168 self.assertTrue(f.getArray().isUniform(700.,1e-10))
169 f.getArray().rearrange(3)
170 f.checkConsistencyLight()
172 f.checkConsistencyLight()
173 self.assertEqual(4,f.getArray().getNumberOfComponents())
174 f.getArray().rearrange(1)
175 self.assertTrue(f.getArray().isUniform(800.,1e-10))
176 f.getArray().rearrange(4)
177 f.checkConsistencyLight()
180 def testSwig2ComputeTupleIdsNearTupleBug1(self):
181 coords=[1.1,0.0, 1.1,0.0 ];
182 coordsArr=DataArrayDouble(coords,2,2);
183 mesh=MEDCouplingUMesh();
184 mesh.setCoords(coordsArr);
186 c,cI=mesh.getNodeIdsNearPoints(points,0.00185);
187 self.assertTrue(c.isEqual(DataArrayInt([])))
188 self.assertTrue(cI.isEqual(DataArrayInt([0,0])))
189 c,cI=mesh.getNodeIdsNearPoints(points,0.00200000000000001);
190 self.assertTrue(c.isEqual(DataArrayInt([0,1])))
191 self.assertTrue(cI.isEqual(DataArrayInt([0,2])))
194 def testSwig2NonRegressionBugChangeUnderlyingWithZeroCells(self):
195 coords1=[0.,1.,2.,3.]
196 coords2=[2.,1.,0.,3.] #0 <==> #2
198 mesh1=MEDCouplingUMesh.New();
199 coordsArr=DataArrayDouble.New(coords1,4,1);
200 mesh1.setCoords(coordsArr);
201 mesh1.setMeshDimension(0);
202 mesh1.allocateCells(0);
203 mesh1.finishInsertingCells();
205 mesh2=mesh1.deepCopy();
206 coordsArr=DataArrayDouble.New(coords2,4,1);
207 mesh2.setCoords(coordsArr);
208 field = mesh1.fillFromAnalytic(ON_NODES,1,"x")
209 field.checkConsistencyLight()
211 field.changeUnderlyingMesh( mesh2, levOfCheck, 1e-13, 0 )
212 self.assertTrue( field.getArray().getValues() == coords2 )
215 def testSwig2UMeshDistanceToMesh2(self):
218 arr=DataArrayDouble(sz+1) ; arr.iota() ; arr/=sz
219 m.setCoords(arr,arr,arr)
220 m=m.buildUnstructured()
224 d=2*(c-[0.5,0.5,0.5])+[0.5,0.5,0.5]
225 time_deb = datetime.now()
227 a,b=m1.distanceToPoints(d)
228 #print 'time spent in distanceToPoints %s ' %str(datetime.now() - time_deb)
229 time_deb = datetime.now()
230 a1=DataArrayDouble(len(d))
231 b1=DataArrayInt(len(d))
232 m1s = [m1[i] for i in range(m1.getNumberOfCells())]
233 for j,pt in enumerate(d):
236 for i,miter in enumerate(m1s):
237 e,f=miter.distanceToPoint(pt)
238 self.assertEqual(0,f)
246 #print 'time spent in naive distanceToPoints %s ' %str(datetime.now() - time_deb)
247 self.assertTrue(a.isEqual(a1,1e-12))
248 self.assertTrue(b.isEqual(b1))
249 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))
250 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])))
253 def testSwig2NonRegressionBugDistance1(self):
254 pt=DataArrayDouble([(8.8452994616207476,3.1547005383792515,3.1547005383792515)])
255 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)])
256 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])
257 m=MEDCouplingUMesh("mesh",2)
261 m.insertNextCell(NORM_QUAD4,conn[4*i:4*i+4])
264 m0=m[3] ; m0.zipCoords()
265 expectedDist=0.8452994616207476
266 a,b=m0.distanceToPoint(pt)
267 self.assertAlmostEqual(expectedDist,a,14)
268 self.assertEqual(0,b)
270 a,b=m.distanceToPoint(pt)
271 self.assertAlmostEqual(expectedDist,a,14)
272 self.assertEqual(3,b)
274 fd=MEDCouplingFieldDiscretization.New(ON_CELLS)
275 self.assertEqual(24,fd.getNumberOfTuples(m))
276 fd=MEDCouplingFieldDiscretization.New(ON_NODES)
277 self.assertEqual(26,fd.getNumberOfTuples(m))
280 def testSwig2AreaBarySeg3Quad8Tri6QPolyg(self):
281 #QUAD8 representing a circle of center zeBary and radius zeRadius
284 d=DataArrayDouble(8,2)
286 d[:,1]=[87,-100,-170,110,5,-130,175,95] # angle in degree
287 d[:,1]*=pi/180. # angle in radian
288 d=d.fromPolarToCart()
290 m = MEDCouplingUMesh("quad8", 2) ; m.allocateCells() ; m.insertNextCell(NORM_QUAD8, list(range(8))) ; m.setCoords(d)
291 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
292 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
293 tri32D=m.buildDescendingConnectivity()[0][0] ; tri32D.zipCoords()
294 # spaceDim=3 QUAD8 becomes QUAD4 ... for the moment
295 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
297 m2.convertQuadraticCellsToLinear()
298 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
299 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
300 #TRI6 representing a circle of center zeBary and radius zeRadius
303 d=DataArrayDouble(6,2)
305 d[:,1]=[87,-100,110,5,175,95] # angle in degree
306 d[:,1]*=pi/180. # angle in radian
307 d=d.fromPolarToCart()
309 m = MEDCouplingUMesh("tri6", 2) ; m.allocateCells() ; m.insertNextCell(NORM_TRI6, list(range(6))) ; m.setCoords(d)
310 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
311 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
312 # spaceDim=3 TRI6 becomes TRI3 ... for the moment
313 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
315 m2.convertQuadraticCellsToLinear()
316 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
317 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
318 # QPOLYG representing a circle of center zeBary and radius zeRadius
321 d=DataArrayDouble(10,2)
323 d[:,1]=[87,-80,-100,-170,110,5,-90,-130,175,95] # angle in degree
324 d[:,1]*=pi/180. # angle in radian
325 d=d.fromPolarToCart()
327 m = MEDCouplingUMesh("qpolyg", 2) ; m.allocateCells() ; m.insertNextCell(NORM_QPOLYG, list(range(10))) ; m.setCoords(d)
328 self.assertTrue(m.computeCellCenterOfMass().isEqual(DataArrayDouble(zeBary,1,2),1e-13))
329 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),pi*zeRadius*zeRadius,12)
330 # spaceDim=3 QPOLYG becomes POLYG ... for the moment
331 m.setCoords(m.getCoords().changeNbOfComponents(3,0.))
333 m2.convertQuadraticCellsToLinear() ; m2.checkConsistency()
334 self.assertTrue(m2.getAllGeoTypes()==[NORM_POLYGON] and m2.getNodalConnectivity().getValues()==[5,0,1,2,3,4])
335 self.assertAlmostEqual(float(m.getMeasureField(False).getArray()),float(m2.getMeasureField(False).getArray()),12)
336 self.assertTrue(m.computeCellCenterOfMass().isEqual(m2.computeCellCenterOfMass(),1e-13))
338 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),(87+100)*pi/180*zeRadius,13)
339 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)
340 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(exp,1e-12))
341 # spaceDim=3 TRI3 becomes TRI2 ... for the moment
342 tri32D.changeSpaceDimension(3)
343 tri2=tri32D.deepCopy() ; tri2.convertQuadraticCellsToLinear()
344 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),float(tri2.getMeasureField(False).getArray()),13)
345 self.assertTrue(tri32D.computeCellCenterOfMass().isEqual(tri2.computeCellCenterOfMass(),1e-12))
346 tri32D.changeSpaceDimension(1)
347 self.assertAlmostEqual(float(tri32D.getMeasureField(False).getArray()),-0.67795240172962323,12)
350 # this bug 5/6/2013 is swig specific
351 def testSwigNonRegressionBugRotate3D1(self):
352 m=MEDCouplingUMesh.New()
353 dataArray=DataArrayDouble.New(100,3)
355 dataArray[0]=[0.,1,3]
356 m.setCoords(dataArray[0])
358 m.rotate([0.,0.,3.],[1.,0.,0.],0.5*pi)
359 self.assertTrue(m.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
361 d1=DataArrayDouble([0.,0.,3.],1,3) ; d2=DataArrayDouble([1.,0.,0.],1,3)
362 pts=[[0.,0.,3.],[(0.,0.,3.)],DataArrayDouble([0.,0.,3.],1,3),list(d1)[0]]
363 vec=[[1.,0.,0.],[(1.,0.,0.)],DataArrayDouble([1.,0.,0.],1,3),list(d2)[0]]
367 m2.rotate(p,v,0.5*pi)
368 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble([0.,0.,4.],1,3),1e-15))
372 def testSwig2DataArrayCount1(self):
374 self.assertEqual(0,d.getNumberOfTuples())
375 self.assertEqual(1,d.getNumberOfComponents())
376 self.assertEqual(0,d.count(0))
377 self.assertEqual(0,d.count(1))
378 self.assertEqual(0,d.count(-1))
379 d=DataArrayInt([2,1,-2,-3,2,0,0,7,2,-2,3,0])
380 self.assertEqual(12,d.getNumberOfTuples())
381 self.assertEqual(1,d.getNumberOfComponents())
382 self.assertEqual(3,d.count(0))
383 self.assertEqual(1,d.count(1))
384 self.assertEqual(0,d.count(-1))
385 self.assertEqual(2,d.count(-2))
386 self.assertEqual(3,d.count(2))
387 e=d.getDifferentValues()
390 f.pushBackSilent(d.count(int(it)))
392 self.assertEqual(12,f.accumulate()[0])
395 d=DataArrayDouble([])
396 self.assertEqual(0,d.getNumberOfTuples())
397 self.assertEqual(1,d.getNumberOfComponents())
398 self.assertEqual(0,d.count(0,eps))
399 self.assertEqual(0,d.count(1,eps))
400 self.assertEqual(0,d.count(-1,eps))
401 d=DataArrayDouble([2,1,-2,-3,2,0,eps/10,7,2+eps/10,-2,3,0])
402 self.assertEqual(12,d.getNumberOfTuples())
403 self.assertEqual(1,d.getNumberOfComponents())
404 self.assertEqual(3,d.count(0,eps))
405 self.assertEqual(1,d.count(1,eps))
406 self.assertEqual(0,d.count(-1,eps))
407 self.assertEqual(2,d.count(-2,eps))
408 self.assertEqual(3,d.count(2,eps))
409 self.assertEqual(3,d.count(2,eps))
410 self.assertEqual(2,d.count(2,eps/100))
411 e=d.getDifferentValues(eps)
414 f.pushBackSilent(d.count(float(it),eps))
416 self.assertEqual(12,f.accumulate()[0])
419 def testSwig2DataArrayGetSlice1(self):
421 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),16)
422 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),16)
423 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,1))
424 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,1))
425 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,1))
426 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,1))
429 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),8)
430 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),8)
431 self.assertEqual(DataArray.GetSlice(s,0,4),slice(2,6,2))
432 self.assertEqual(DataArray.GetSlice(s,1,4),slice(6,10,2))
433 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,14,2))
434 self.assertEqual(DataArray.GetSlice(s,3,4),slice(14,18,2))
437 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,1))
438 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,1))
439 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,1))
440 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,1))# 18 not 17
443 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
444 self.assertEqual(DataArray.GetNumberOfItemGivenBES(s),9)
445 self.assertEqual(DataArray.GetSlice(s,0,4),slice(1,5,2))
446 self.assertEqual(DataArray.GetSlice(s,1,4),slice(5,9,2))
447 self.assertEqual(DataArray.GetSlice(s,2,4),slice(9,13,2))
448 self.assertEqual(DataArray.GetSlice(s,3,4),slice(13,18,2))# 18 not 17
451 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
452 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
453 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
454 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-1))
457 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
458 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
459 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
460 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,2,-2))
463 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-1))
464 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-1))
465 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-1))
466 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-1))# 1 not 2
469 self.assertEqual(DataArray.GetNumberOfItemGivenBESRelative(s),9)
470 self.assertRaises(InterpKernelException,DataArray.GetNumberOfItemGivenBES,s)
471 self.assertEqual(sum([DataArray.GetNumberOfItemGivenBESRelative(DataArray.GetSlice(s, i, 4)) for i in range(4)]), DataArray.GetNumberOfItemGivenBESRelative(s))
472 self.assertEqual(DataArray.GetSlice(s,0,4),slice(18,14,-2))
473 self.assertEqual(DataArray.GetSlice(s,1,4),slice(14,10,-2))
474 self.assertEqual(DataArray.GetSlice(s,2,4),slice(10,6,-2))
475 self.assertEqual(DataArray.GetSlice(s,3,4),slice(6,1,-2))# 1 not 2
476 self.assertRaises(InterpKernelException,DataArray.GetSlice,slice(0,None,2),0,4)
478 d=DataArrayInt.Range(0,18,1)
480 self.assertEqual(d.getNumberOfItemGivenBES(s),16)
481 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),16)
482 self.assertEqual(d.getSlice(s,0,4),slice(2,6,1))
483 self.assertEqual(d.getSlice(s,1,4),slice(6,10,1))
484 self.assertEqual(d.getSlice(s,2,4),slice(10,14,1))
485 self.assertEqual(d.getSlice(s,3,4),slice(14,18,1))
487 d=DataArrayInt.Range(0,18,1)
489 self.assertEqual(d.getSlice(s,0,4),slice(2,5,1))
490 self.assertEqual(d.getSlice(s,1,4),slice(5,8,1))
491 self.assertEqual(d.getSlice(s,2,4),slice(8,11,1))
492 self.assertEqual(d.getSlice(s,3,4),slice(11,16,1))
494 d=DataArrayInt.Range(0,18,1)
496 self.assertEqual(d.getSlice(s,0,4),slice(0,4,1))
497 self.assertEqual(d.getSlice(s,1,4),slice(4,8,1))
498 self.assertEqual(d.getSlice(s,2,4),slice(8,12,1))
499 self.assertEqual(d.getSlice(s,3,4),slice(12,18,1))
501 d=DataArrayInt.Range(0,18,1)
503 self.assertRaises(InterpKernelException,d.getNumberOfItemGivenBES,s)
504 self.assertEqual(d.getNumberOfItemGivenBESRelative(s),8)
505 self.assertEqual(d.getSlice(s,0,4),slice(17,13,-2))
506 self.assertEqual(d.getSlice(s,1,4),slice(13,9,-2))
507 self.assertEqual(d.getSlice(s,2,4),slice(9,5,-2))
508 self.assertEqual(d.getSlice(s,3,4),slice(5,2,-2))
511 def testSwig2AccumulatePerChunk1(self):
512 arr=DataArrayDouble(11) ; arr.iota()
513 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
514 m=m.buildUnstructured()
515 m0=m[::2] ; ids0=m0.simplexize(0) ; m1=m[1::2]
516 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m0,m1) ; m.setName("mesh")
517 m.checkConsecutiveCellTypesForMEDFileFrmt()
519 formula="7-sqrt((x-5.)*(x-5.)+(y-5.)*(y-5.))"
520 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
521 f.fillFromAnalytic(1,formula)
522 f.setName("Field1") ; f.setTime(1.1,1,-1)
523 f.checkConsistencyLight()
526 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr
527 arr2=DataArrayDouble(len(arr),2) ; arr2[:,0]=arr ; arr2[:,1]=2*arr
529 f.checkConsistencyLight()
530 # here the compact code to obviously put field on cell to nodes
531 rn,rni=f.getMesh().getReverseNodalConnectivity()
532 arr2=f.getArray()[rn]
533 arr4=arr2.accumulatePerChunck(rni)
534 nbOfCellsSharingNodes=rni.deltaShiftIndex()
535 arr4/=nbOfCellsSharingNodes.convertToDblArr()
537 maxNbCSN=nbOfCellsSharingNodes.getMaxValue()[0]
538 arr3=DataArrayDouble(f.getMesh().getNumberOfNodes(),f.getArray().getNumberOfComponents()) ; arr3[:]=0.
539 for i in range(1, maxNbCSN + 1):
540 ids=nbOfCellsSharingNodes.findIdsEqual(i)
544 rni2=rni[ids] ; rni2+=j
545 arr3[ids]+=arr2[rni2]
549 fNode=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; fNode.setMesh(m)
550 fNode.setName("Field1Node") ; fNode.setTime(1.1,1,-1)
551 fNode.setArray(arr3) ; fNode.checkConsistencyLight()
552 self.assertTrue(arr3.isEqual(arr4,1e-12))
554 d=DataArrayInt.Range(0,20,1)
555 self.assertTrue(d.accumulatePerChunck([2,4,12]).isEqual(DataArrayInt([5,60])))
557 a=DataArrayDouble(12) ; a.iota() ; a.rearrange(3)
558 b=DataArrayDouble(12) ; b.iota(20) ; b.rearrange(3)
560 self.assertEqual(len(a[ids]),0)
561 self.assertEqual(len(b[ids]),0)
562 a2=a.deepCopy() ; a2[ids]+=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
563 a2=a.deepCopy() ; a2[ids]*=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
564 a2=a.deepCopy() ; a2[ids]/=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
565 a2=a.deepCopy() ; a2[ids]-=b[ids] ; self.assertTrue(a2.isEqual(a,1e-15))
568 def testSwig2CheckAndPreparePermutation1(self):
569 a=DataArrayInt([10003,9999999,5,67])
570 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([2,3,0,1])))
571 a=DataArrayInt([10003,-9999999,5,67])
572 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([3,0,1,2])))
574 self.assertTrue(a.checkAndPreparePermutation().isEqual(DataArrayInt([])))
577 self.assertTrue(a.isEqual(DataArrayInt([])))
580 def testSwig21SGTUMesh1(self):
581 m=MEDCoupling1GTUMesh.New("m",NORM_PENTA6)
582 m.__repr__() ; m.__str__()
583 self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh))
584 m.setCoords(DataArrayDouble(20,3))
586 m.__repr__() ; m.__str__()
587 m.insertNextCell([0,1,2,5,7,2])
588 self.assertEqual(1,m.getNumberOfCells())
589 self.assertTrue(DataArrayInt([6]).isEqual(m.computeNbOfNodesPerCell()))
590 self.assertTrue(DataArrayInt([5]).isEqual(m.computeNbOfFacesPerCell()))
591 m.__repr__() ; m.__str__()
592 m.checkConsistencyLight()
595 cm=MEDCouplingCMesh() ; cm.setName("m")
596 arr0=DataArrayDouble(6) ; arr0.iota()
597 arr1=DataArrayDouble([0,1])
598 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured()
600 m=MEDCoupling1SGTUMesh("m",NORM_QUAD4)
601 mem_m=m.getHeapMemorySize()
603 self.assertIn(m.getHeapMemorySize() - mem_m, list(range(5 * 4 * 4, 5 * 4 * 4 + 32)))
604 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
605 m.setCoords(um.getCoords())
606 m.insertNextCell([1,0,6,7])
607 self.assertEqual(1,m.getNumberOfCells())
608 m.insertNextCell([2,1,7,8])
609 m.insertNextCell([3,2,8,9])
610 m.insertNextCell([4,3,9,10])
611 m.insertNextCell([5,4,10,11])
612 self.assertEqual(5,m.getNumberOfCells())
613 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7])
614 self.assertRaises(InterpKernelException,m.insertNextCell,[0,6,7,1,2])
615 self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20)
616 f=m.getMeasureField(False)
617 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
618 self.assertTrue(f.getArray().isUniform(1,1e-14))
619 self.assertEqual(m.getType(),10)
620 self.assertEqual(m.getCellModelEnum(),NORM_QUAD4)
621 mo=MEDCoupling1SGTUMesh("m",NORM_QUAD4) ; mo.setCoords(m.getCoords())
622 mo.setNodalConnectivity(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11]))
623 self.assertTrue(m.isEqual(mo,1e-12))
625 mo2=MEDCoupling1SGTUMesh.Merge1SGTUMeshesOnSameCoords([m[[0,1]],m[[2]],m[[3,4]]])
626 mo2.setName(m.getName())
627 self.assertTrue(m.isEqual(mo2,1e-12))
629 mp0=m[[0]] ; mp0.zipCoords() ; mp1=m[2] ; mp1.zipCoords() ; mp2=m[4] ; mp2.zipCoords()
630 mo3=MEDCoupling1SGTUMesh.Merge1SGTUMeshes([mp0,mp1,mp2])
631 self.assertTrue(isinstance(mo3,MEDCoupling1SGTUMesh))
632 mo3.setName(m.getName())
633 m_ref=m[(0,2,4)] ; m_ref.zipCoords()
634 m_ref.tryToShareSameCoordsPermute(mo3,1e-12)
635 self.assertTrue(m_ref.isEqual(mo3,1e-12))
637 m1=um.buildDescendingConnectivity()[0]
638 ids=m1.getCellIdsFullyIncludedInNodeIds(DataArrayInt.Range(0,12,1))
640 m1c=m1.convertIntoSingleGeoTypeMesh()
641 self.assertTrue(isinstance(m1c,MEDCoupling1SGTUMesh))
642 self.assertEqual(m1c.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
643 m1c.checkConsistency()
644 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])))
645 self.assertEqual(20,m1c.getNodalConnectivityLength())
646 self.assertTrue(m.isEqual(m1c,1e-12))
647 m.getNodalConnectivity().setIJ(1,0,1)
648 self.assertTrue(not m.isEqual(m1c,1e-12))
649 m.getNodalConnectivity().setIJ(1,0,0)
650 self.assertTrue(m.isEqual(m1c,1e-12))
651 m1c.setCoords(m.getCoords().deepCopy())
652 self.assertTrue(m.isEqual(m1c,1e-12))
653 m1c.getCoords().setIJ(0,1,0.1)
654 self.assertTrue(not m.isEqual(m1c,1e-12))
655 m1c.getCoords().setIJ(0,1,0)
656 self.assertTrue(m.isEqual(m1c,1e-12))
657 m1c.getCoords().setInfoOnComponent(1,"X")
658 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
659 m.getCoords().setInfoOnComponent(1,"X")
660 self.assertTrue(m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
662 self.assertTrue(not m.isEqual(m1c,1e-12) and m.isEqualWithoutConsideringStr(m1c,1e-12))
664 m.checkConsistencyLight() ; m.checkConsistency() ; m.checkConsistency()
665 self.assertEqual(m.getMeshDimension(),2)
666 self.assertTrue(m.giveCellsWithType(NORM_QUAD4).isEqual(DataArrayInt([0,1,2,3,4])))
667 self.assertTrue(m.giveCellsWithType(NORM_TRI3).isEqual(DataArrayInt([])))
668 self.assertEqual(m.getNumberOfCellsWithType(NORM_QUAD4),5)
669 self.assertEqual(m.getNumberOfCellsWithType(NORM_TRI3),0)
670 self.assertEqual(m.getTypeOfCell(3),NORM_QUAD4)
671 self.assertRaises(InterpKernelException,m.getTypeOfCell,5)
672 self.assertEqual(m.getAllGeoTypes(),[NORM_QUAD4])
673 self.assertEqual(m.getDistributionOfTypes(),[[NORM_QUAD4,5,-1]])
675 pfl1=DataArrayInt([1,3,4])
676 a,b,c=m.splitProfilePerType(pfl1)
677 d,e,f=m.buildUnstructured().splitProfilePerType(pfl1)
678 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())
679 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
681 pfl2=DataArrayInt([0,1,2,3])
682 a,b,c=m.splitProfilePerType(pfl2)
683 d,e,f=m.buildUnstructured().splitProfilePerType(pfl2)
684 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())
685 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and len(c)==1 and c[0].isEqual(f[0]))
687 pfl3=DataArrayInt([0,1,2,3,4])
688 a,b,c=m.splitProfilePerType(pfl3)
689 d,e,f=m.buildUnstructured().splitProfilePerType(pfl3)
690 self.assertTrue(a==[[4,5,-1]] and len(b)==1 and b[0].isEqual(DataArrayInt([0,1,2,3,4])) and c==[])
691 self.assertTrue(a==d and len(b)==1 and b[0].isEqual(e[0]) and c==[])
693 invalidPfl=DataArrayInt([1,2,3,4,5])
694 self.assertRaises(InterpKernelException,m.splitProfilePerType,invalidPfl)
695 self.assertRaises(InterpKernelException,m.buildUnstructured().splitProfilePerType,invalidPfl)
697 pfl1=DataArrayInt([1,2,3])
698 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
699 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,3,0],[pfl1])
700 self.assertTrue(a.isEqual(b) and pfl1.getHiddenCppPointer(),a.getHiddenCppPointer())
702 pfl2=DataArrayInt([0,1,2,3])
703 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
704 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl2])
705 self.assertTrue(a.isEqual(b) and pfl2.getHiddenCppPointer()==a.getHiddenCppPointer())
707 pfl3=DataArrayInt([0,1,2,3,4])
708 a=m.checkTypeConsistencyAndContig([NORM_QUAD4,4,0],[pfl3])
709 b=m.buildUnstructured().checkTypeConsistencyAndContig([NORM_QUAD4,5,0],[pfl3])
710 self.assertTrue(a.isEqual(b) and pfl3.getHiddenCppPointer()==a.getHiddenCppPointer())
712 invalidPfl=DataArrayInt([1,2,3,4,5])
713 self.assertRaises(InterpKernelException,m.checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
714 self.assertRaises(InterpKernelException,m.buildUnstructured().checkTypeConsistencyAndContig,[NORM_QUAD4,5,0],[invalidPfl])
716 self.assertTrue(DataArrayInt([4,4,4,4,4]).isEqual(m.computeNbOfNodesPerCell()))
718 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8])
720 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))
722 ref=m.getCoords().getHiddenCppPointer()
723 mcpy=m.deepCopy() ; mcpy.insertNextCell([1,0,6,7])
724 c=m.getNodalConnectivity().deepCopy()
725 o2n=DataArrayInt([2,0,1,4,3])
726 m.renumberCells(o2n,False)
727 c.rearrange(4) ; c.renumberInPlace(o2n) ; c.rearrange(1)
728 self.assertTrue(c.isEqual(m.getNodalConnectivity()))
729 self.assertEqual(ref,m.getCoords().getHiddenCppPointer())
730 m2=mcpy.mergeMyselfWith(m)
731 self.assertTrue(isinstance(m2,MEDCoupling1SGTUMesh))
732 self.assertEqual(11,m2.getNumberOfCells())
733 self.assertEqual(48,m2.getNumberOfNodes())
734 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.Aggregate([m.getCoords(),m.getCoords()]),1e-12))
735 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])))
737 mu=m.buildUnstructured()
738 mu.checkConsistency()
739 self.assertEqual(mu.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
740 self.assertEqual(2,mu.getMeshDimension())
741 self.assertEqual([NORM_QUAD4],mu.getAllGeoTypes())
742 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])))
743 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25])))
746 mcpy2=m.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
747 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
748 self.assertTrue(ids.isEqual(ids2))
749 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
750 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
752 um1=um.convertIntoSingleGeoTypeMesh()
753 self.assertEqual(8,um1.getNumberOfNodesPerCell())
754 for typ in [PLANAR_FACE_5,PLANAR_FACE_6]:
755 mcpy2=um1.deepCopy() ; umcpy2=mcpy2.buildUnstructured()
756 ids=mcpy2.simplexize(typ) ; ids2=umcpy2.simplexize(typ)
757 self.assertTrue(ids.isEqual(ids2))
758 mcpy3=umcpy2.convertIntoSingleGeoTypeMesh()
759 self.assertTrue(mcpy2.isEqual(mcpy3,1e-14))
762 self.assertRaises(InterpKernelException,mcpy.mergeMyselfWithOnSameCoords,m)
763 mcpy.tryToShareSameCoords(m,1e-14)
764 m3=mcpy.mergeMyselfWithOnSameCoords(m)
765 self.assertTrue(isinstance(m3,MEDCoupling1SGTUMesh))
766 self.assertEqual(11,m3.getNumberOfCells())
767 self.assertEqual(24,m3.getNumberOfNodes())
768 self.assertEqual(m3.getCoords().getHiddenCppPointer(),mcpy.getCoords().getHiddenCppPointer())
769 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])))
771 ref=mcpy.getCoords().deepCopy()
772 c3=mcpy.getNodalConnectivity()[:]
773 mcpy.getNodalConnectivity().setIJ(int(c3.findIdsEqual(11)),0,24)
774 c2=DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()[11:]])
776 mcpy.checkConsistency()
777 a,b=mcpy.getNodeIdsInUse()
778 self.assertEqual(12,b)
779 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])))
780 ids=mcpy.zipCoordsTraducer()
781 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])))
782 self.assertTrue(mcpy.getCoords().isEqual(ref[:12],1e-12))
783 self.assertTrue(mcpy.getNodalConnectivity().isEqual(c3))
784 mcpy.checkConsistency()
786 m4=mcpy[DataArrayInt([0,3,4])]
787 m5=mcpy.buildPartOfMySelfKeepCoords(DataArrayInt([0,3,4]))
788 self.assertTrue(isinstance(m4,MEDCoupling1SGTUMesh))
789 self.assertTrue(m4.isEqual(m5,-1e-14))# < 0 not a bug it proves that coordinates pointer are equal
790 self.assertTrue(m4.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,4,3,9,10,5,4,10,11])))
792 self.assertTrue(isinstance(m6,MEDCoupling1SGTUMesh))
793 self.assertTrue(m6.getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,3,2,8,9,5,4,10,11])))
795 mcpy.setCoords(DataArrayDouble.Aggregate([mcpy.getCoords(),mcpy.getCoords()]))
796 mcpy.checkConsistency()
798 mcppy=mcpy.deepCopyConnectivityOnly()
799 self.assertTrue(mcppy.isEqual(mcpy,1e-12))
800 self.assertTrue(mcppy.getCoords().getHiddenCppPointer()==mcpy.getCoords().getHiddenCppPointer())
801 self.assertTrue(mcppy.getNodalConnectivity().isEqual(mcpy.getNodalConnectivity()))
802 self.assertTrue(mcppy.getNodalConnectivity().getHiddenCppPointer()!=mcpy.getNodalConnectivity().getHiddenCppPointer())
804 a,b=mcpy.getReverseNodalConnectivity()
805 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])))
806 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])))
807 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],False).isEqual(DataArrayInt([0,1,5])))
808 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,5])))
809 self.assertTrue(mcpy.getCellsInBoundingBox([(0,1),(0,1),(0,1)],1e-12).isEqual(DataArrayInt([0,1,5])))
810 f=mcpy.buildOrthogonalField()
811 self.assertEqual(f.getMesh().getHiddenCppPointer(),mcpy.getHiddenCppPointer())
812 self.assertTrue(f.getArray().isEqual(DataArrayDouble(6*[(0,0,-1)]),1e-12))
813 mcpy.changeSpaceDimension(2)
814 self.assertEqual(1,mcpy.getCellContainingPoint([1.5,0.5],1e-12))
816 self.assertTrue(mcpy.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([0,1,5])))
818 mcpy2=mcpy.deepCopy()
819 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
820 mcpy.checkFastEquivalWith(mcpy2,1e-12)
821 mcpy2.renumberCells([0,2,4,3,1,5])
822 mcpy.checkFastEquivalWith(mcpy2,1e-12)
823 self.assertEqual([None,None],mcpy.checkGeoEquivalWith(mcpy2,1,1e-12))#fast equal
824 mcpy2.renumberCells([0,2,4,3,1,5])
825 mcpy2.renumberCells([1,3,5,0,2,4])
826 self.assertRaises(InterpKernelException,mcpy.checkFastEquivalWith,mcpy2,1e-12)
827 self.assertRaises(InterpKernelException,mcpy.checkGeoEquivalWith,mcpy2,1,1e-12)#fast equal
830 def testSwig21DGTUMesh1(self):
831 a0=DataArrayInt([0,2,3,5,6,8])
832 a1=DataArrayInt([0,4,7,11,14,18,21,25])
833 a2=DataArrayInt([0,1,4,5])
834 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])))
835 self.assertEqual(a1[3:].front(),11)
836 self.assertEqual(a1[4:].convertToDblArr().front(),14.)
837 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])
838 d,e=MEDCouplingUMesh.ExtractFromIndexedArraysSlice(1,5,2,a1c,a1)
839 self.assertTrue(d.isEqual(DataArrayInt([8,11,0,1,5,2])))
840 self.assertTrue(e.isEqual(DataArrayInt([0,3,6])))
842 m=MEDCouplingDataForTest.build2DTargetMesh_1()[0,3,4]
843 ref=DataArrayInt([0,3,4,1,6,7,4,3,7,8,5,4])
844 self.assertTrue(m.convertNodalConnectivityToStaticGeoTypeMesh().isEqual(ref))
845 d,e=m.convertNodalConnectivityToDynamicGeoTypeMesh()
846 self.assertTrue(d.isEqual(ref))
847 self.assertTrue(e.isEqual(DataArrayInt.Range(0,13,4)))
848 self.assertTrue(m.fillCellIdsToKeepFromNodeIds(DataArrayInt([6,7]),False).isEqual(DataArrayInt([1,2])))
850 m=MEDCoupling1GTUMesh.New("m",NORM_POLYHED)
851 self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh))
852 m.__repr__() ; m.__str__()
853 m.setCoords(DataArrayDouble(20,3))
855 m.__repr__() ; m.__str__()
856 m.insertNextCell([0,1,2,5,7,2,-1,1,3])
857 self.assertEqual(1,m.getNumberOfCells())
858 self.assertTrue(DataArrayInt([8]).isEqual(m.computeNbOfNodesPerCell()))
859 self.assertTrue(DataArrayInt([2]).isEqual(m.computeNbOfFacesPerCell()))
860 m.__repr__() ; m.__str__()
861 m.checkConsistencyLight()
864 cm=MEDCouplingCMesh() ; cm.setName("m")
865 arr0=DataArrayDouble(6) ; arr0.iota()
866 arr1=DataArrayDouble([0,1])
867 cm.setCoords(arr0,arr1,arr1) ; um=cm.buildUnstructured() ; um.convertAllToPoly()
868 um2=um.deepCopyConnectivityOnly()
869 self.assertTrue(um2.isEqual(um,1e-12))
870 self.assertEqual(um2.getCoords().getHiddenCppPointer(),um.getCoords().getHiddenCppPointer())
871 self.assertTrue(um2.getNodalConnectivity().isEqual(um.getNodalConnectivity()))
872 self.assertTrue(um2.getNodalConnectivity().getHiddenCppPointer()!=um.getNodalConnectivity().getHiddenCppPointer())
873 self.assertTrue(um2.getNodalConnectivityIndex().isEqual(um.getNodalConnectivityIndex()))
874 self.assertTrue(um2.getNodalConnectivityIndex().getHiddenCppPointer()!=um.getNodalConnectivityIndex().getHiddenCppPointer())
876 self.assertRaises(InterpKernelException,MEDCoupling1SGTUMesh.New,"m",NORM_POLYHED)
877 m=MEDCoupling1DGTUMesh("m",NORM_POLYHED)
879 self.assertEqual(15,m.getNodalConnectivity().getNbOfElemAllocated())
880 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
881 m.setCoords(um.getCoords())
882 m.insertNextCell([1,0,6,7,-1,7,6,1])
883 self.assertEqual(1,m.getNumberOfCells())
884 m.insertNextCell([2,1,7,8,-1,2,1,-1,8,-1,7])
885 m.insertNextCell([3,2,8,9])
886 m.insertNextCell([4,3,9,10,-1,5,3,9])
887 m.insertNextCell([5,4,10,11,-1,11,10,-1,5])
888 m.checkConsistencyLight()
890 self.assertEqual(5,m.getNumberOfCells())
891 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40])))
892 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])))
895 self.assertTrue(m.isEqual(m4,1e-12))
896 m4.getNodalConnectivity().setIJ(2,0,5)
897 self.assertTrue(not m.isEqual(m4,1e-12))
898 m4.getNodalConnectivity().setIJ(2,0,6)
899 self.assertTrue(m.isEqual(m4,1e-12))
900 m4.getNodalConnectivityIndex().setIJ(2,0,21)
901 self.assertTrue(not m.isEqual(m4,1e-12))
902 m4.getNodalConnectivityIndex().setIJ(2,0,19)
903 self.assertTrue(m.isEqual(m4,1e-12))
904 m4.getCoords().setIJ(10,1,1.1)
905 self.assertTrue(not m.isEqual(m4,1e-12))
906 m4.getCoords().setIJ(10,1,1.)
907 self.assertTrue(m.isEqual(m4,1e-12))
908 m4.getNodalConnectivity().pushBackSilent(7)
909 self.assertTrue(not m.isEqual(m4,1e-12))
910 self.assertEqual(7,m4.getNodalConnectivity().popBackSilent())
911 self.assertTrue(m.isEqual(m4,1e-12))
913 self.assertTrue(not m.isEqual(m4,1e-12))
915 self.assertTrue(m.isEqual(m4,1e-12))
917 self.assertEqual(6,m.getNodalConnectivityIndex().getNbOfElemAllocated())
918 self.assertEqual(60,m.getNodalConnectivity().getNbOfElemAllocated())
919 self.assertTrue(m.computeNbOfNodesPerCell().isEqual(DataArrayInt([7,8,4,7,7])))
920 self.assertTrue(m.computeNbOfFacesPerCell().isEqual(DataArrayInt([2,4,1,2,3])))
921 self.assertEqual(m.getNodeIdsOfCell(1),[2,1,7,8,-1,2,1,-1,8,-1,7])
922 f=m.computeIsoBarycenterOfNodesPerCell()
923 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))
924 mu0=m.buildUnstructured()
927 m3=m.deepCopyConnectivityOnly()
928 self.assertTrue(m3.isEqual(m,1e-12))
929 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
930 self.assertTrue(m3.getNodalConnectivity().getHiddenCppPointer()!=m.getNodalConnectivity().getHiddenCppPointer())
931 self.assertTrue(m3.getNodalConnectivity().isEqual(m.getNodalConnectivity()))
932 self.assertTrue(m3.getNodalConnectivityIndex().getHiddenCppPointer()!=m.getNodalConnectivityIndex().getHiddenCppPointer())
933 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(m.getNodalConnectivityIndex()))
935 mu0.renumberCells(o2n)
936 self.assertTrue(mu0.isEqual(m.buildUnstructured(),1e-12))
937 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,12,23,32,40])))
938 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])))
940 mcpy0=m.buildUnstructured()
941 self.assertTrue(isinstance(mcpy0,MEDCouplingUMesh))
942 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])))
943 self.assertTrue(mcpy0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,14,26,36,45])))
944 self.assertEqual(mcpy0.getAllGeoTypes(),[NORM_POLYHED])
945 mcpy0.checkConsistencyLight()
946 mcpy0.checkConsistency()
947 mcpy1=mcpy0.convertIntoSingleGeoTypeMesh()
948 self.assertTrue(mcpy1.isEqual(m,1e-12))
950 m_mrg=MEDCoupling1DGTUMesh.Merge1DGTUMeshes([m2,m,m2])
951 self.assertTrue(m_mrg.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
952 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])))
953 m_mrg2=MEDCoupling1DGTUMesh.Merge1DGTUMeshesOnSameCoords([m3,m,m3])
954 self.assertTrue(m_mrg2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,8,19,23,31,40,44,52,63,72,80,88,99,103,111,120])))
955 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])))
956 a,b=m_mrg2.getReverseNodalConnectivity()
957 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])))
958 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])))
959 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([7],False).isEqual(DataArrayInt([0,1,6,7,10,11])))
960 self.assertTrue(m_mrg2.fillCellIdsToKeepFromNodeIds([0,1,6,7],True).isEqual(DataArrayInt([0,6,10])))
962 self.assertTrue(m_mrg2.isPacked())
963 self.assertEqual(120,m_mrg2.getNodalConnectivityIndex().popBackSilent())
964 self.assertEqual(m_mrg2.getNumberOfCells(),14)
965 m_mrg2.checkConsistency()
966 self.assertTrue(not m_mrg2.isPacked())
967 m_mrg4,b=m_mrg2.copyWithNodalConnectivityPacked()
968 self.assertTrue(not b)
969 m_mrg4.checkConsistency()
970 self.assertEqual(m_mrg4.getNumberOfCells(),14)
971 self.assertTrue(m_mrg4.getNodalConnectivityIndex().isEqual(m_mrg2.getNodalConnectivityIndex()))
972 self.assertEqual(len(m_mrg4.getNodalConnectivity()),111)
973 self.assertEqual(len(m_mrg2.getNodalConnectivity()),120)
974 self.assertTrue(m_mrg4.getNodalConnectivity().isEqual(m_mrg2.getNodalConnectivity()[:111]))
977 m1=m_mrg2[[5,6,7,8,9]]
979 self.assertTrue(m1.isEqualWithoutConsideringStr(m,1e-12))
980 a,b=m.checkGeoEquivalWith(m0,12,1e-12)
981 self.assertTrue(a.isEqual(DataArrayInt(o2n)))
982 self.assertTrue(b is None)
985 def testSwig2DADAreIncludedInMe1(self):
986 a=DataArrayDouble(30) ; a.iota() ; a.rearrange(3)
987 p=DataArrayInt([5,2,1,9])
988 b,c=a.areIncludedInMe(a[p],1e-12)
990 self.assertTrue(c.isEqual(p))
993 b,c=a.areIncludedInMe(d,1e-12)
994 self.assertTrue(not b)
995 self.assertTrue(c.isEqual(DataArrayInt([5,2,1,10])))
998 def testSwig2DADesallocate1(self):
999 d=DataArrayDouble([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1000 self.assertTrue(d.isAllocated())
1002 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1003 ref=d.getHeapMemorySize()
1005 self.assertEqual(ref-d.getHeapMemorySize(),6*8)
1006 self.assertTrue(not d.isAllocated())
1007 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1008 self.assertRaises(InterpKernelException,d.checkAllocated)
1010 d=DataArrayInt([(1,2),(6,7),(6,8)]) ; d.setInfoOnComponents(["aa","bbb"])
1011 self.assertTrue(d.isAllocated())
1013 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1014 ref=d.getHeapMemorySize()
1016 self.assertEqual(ref-d.getHeapMemorySize(),6*4)
1017 self.assertTrue(not d.isAllocated())
1018 self.assertEqual(d.getInfoOnComponents(),["aa","bbb"])
1019 self.assertRaises(InterpKernelException,d.checkAllocated)
1022 def testSwig2IsPartStructured1(self):
1024 d10=DataArrayInt([2,3,4,5,6,7,8,9,10,11])
1025 a,b=MEDCouplingStructuredMesh.IsPartStructured(d10,[13])
1026 self.assertTrue(a) ; self.assertEqual(b,[(2,12)])
1027 d11=DataArrayInt([2,3,4,5,6,7,8,10,9,11])
1028 a,b=MEDCouplingStructuredMesh.IsPartStructured(d11,[13])
1029 self.assertTrue(not a)
1030 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d10,[11])
1033 d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
1034 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1035 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
1036 self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
1037 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
1038 self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
1039 self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
1040 self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
1041 d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
1042 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1043 self.assertTrue(not a)
1044 d20=DataArrayInt([1,2,3,4,11,12,13,15,21,22,23,24])
1045 a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
1046 self.assertTrue(not a)
1047 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])
1048 a,b=MEDCouplingStructuredMesh.IsPartStructured(d21,st)
1049 self.assertTrue(a) ; self.assertEqual(b,[(0,10),(0,4)])
1050 d22=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44])
1051 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d22,st)
1052 a,b=MEDCouplingStructuredMesh.IsPartStructured(d22,[10,5])
1053 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,5)])
1055 d30=DataArrayInt([11,12,13,14,21,22,23,24,51,52,53,54,61,62,63,64])
1056 a,b=MEDCouplingStructuredMesh.IsPartStructured(d30,[10,4,2])
1057 self.assertTrue(a) ; self.assertEqual(b,[(1,5),(1,3),(0,2)])
1058 d31=DataArrayInt([11,12,13,14,21,22,24,23,51,52,53,54,61,62,63,64])
1059 a,b=MEDCouplingStructuredMesh.IsPartStructured(d31,[10,4,2])
1060 self.assertTrue(not a)
1061 self.assertRaises(InterpKernelException,MEDCouplingStructuredMesh.IsPartStructured,d30,[10,4,1])
1064 def testSwig2PartStructured1(self):
1065 c=MEDCouplingCMesh() ; c.setName("toto")
1066 arr0=DataArrayDouble(10); arr0.iota()
1067 arr1=DataArrayDouble(4) ; arr1.iota(3)
1068 c.setCoords(arr0,arr1)
1069 self.assertEqual(c.getNodeGridStructure(),(10,4))
1070 self.assertEqual(c.getCellGridStructure(),(9,3))
1071 d20=DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])
1072 self.assertEqual(27,c.getNumberOfCells())
1073 self.assertEqual(40,c.getNumberOfNodes())
1074 self.assertEqual(2,c.getMeshDimension())
1075 c.checkConsistencyLight()
1077 arr2=MEDCouplingStructuredMesh.BuildExplicitIdsFrom([9,3],[(1,5),(0,3)])
1078 self.assertTrue(arr2.isEqual(DataArrayInt([1,2,3,4,10,11,12,13,19,20,21,22])))
1080 c2=c.buildStructuredSubPart([(1,5),(0,3)])
1081 c2.checkConsistencyLight()
1082 self.assertTrue(isinstance(c2,MEDCouplingCMesh))
1083 self.assertEqual(12,c2.getNumberOfCells())
1084 self.assertEqual(20,c2.getNumberOfNodes())
1085 self.assertEqual(2,c2.getMeshDimension())
1086 self.assertEqual("toto",c2.getName())
1087 self.assertTrue(c2.getCoordsAt(0).isEqual(DataArrayDouble([1.,2.,3.,4.,5.]),1e-12))
1088 self.assertTrue(c2.getCoordsAt(1).isEqual(DataArrayDouble([3.,4.,5.,6.]),1e-12))
1090 a,b=c.buildPartAndReduceNodes(d20)
1091 a.checkConsistencyLight()
1092 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])
1093 self.assertTrue(exp2.isEqual(b))
1094 self.assertTrue(isinstance(a,MEDCouplingCMesh))
1095 self.assertTrue(a.buildUnstructured().isEqual(c.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1097 c2=MEDCouplingCurveLinearMesh() ; c2.setName("toto")
1098 c2.setCoords(c.buildUnstructured().getCoords())
1099 c2.setNodeGridStructure([10,4])
1100 c2.checkConsistencyLight()
1101 a,b=c2.buildPartAndReduceNodes(d20)
1102 a.checkConsistencyLight()
1103 self.assertTrue(exp2.isEqual(b))
1104 self.assertTrue(isinstance(a,MEDCouplingCurveLinearMesh))
1105 self.assertTrue(a.buildUnstructured().isEqual(c2.buildUnstructured().buildPartAndReduceNodes(d20)[0],1e-12))
1108 def testSwig2FindPermutationFromFirstToSecond1(self):
1109 ids1=DataArrayInt([3,1,103,4,6,10,-7,205])
1110 ids2=DataArrayInt([-7,1,205,10,6,3,103,4])
1111 ids3=DataArrayInt.FindPermutationFromFirstToSecond(ids1,ids2)
1112 self.assertTrue(ids3.isEqual(DataArrayInt([5,1,6,7,4,3,0,2])))
1113 ids2ToTest=ids1.renumber(ids3)
1114 self.assertTrue(ids2ToTest.isEqual(ids2))
1115 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103]))
1116 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,2]))
1117 self.assertRaises(InterpKernelException,DataArrayInt.FindPermutationFromFirstToSecond,DataArrayInt([3,1,103]),DataArrayInt([1,103,1]))
1118 self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecond(DataArrayInt([]),DataArrayInt([])).empty())
1121 def testSwig2BugStructuredMeshGetNodeIdsOfCell1(self):
1122 m=MEDCouplingCMesh("mesh")
1123 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
1124 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
1125 m.setCoords(coordsX,coordsY)
1126 self.assertEqual([2,3,8,7],m.getNodeIdsOfCell(2))
1127 self.assertEqual([3,4,9,8],m.getNodeIdsOfCell(3))
1128 self.assertEqual([7,8,13,12],m.getNodeIdsOfCell(6))
1129 self.assertEqual([8,9,14,13],m.getNodeIdsOfCell(7))
1132 def testSwig2ThrowOnDAIInvertN2O2ON2(self):
1133 p1=DataArrayInt([3,5,8])
1134 p2=DataArrayInt([0,3,4,5,6,7,8,9,10])
1135 p1.transformWithIndArr(p2.invertArrayN2O2O2N(11))
1136 self.assertTrue(p1.isEqual(DataArrayInt([1,3,6])))
1137 self.assertTrue(p2.invertArrayN2O2O2N(11).isEqual(DataArrayInt([0,-1,-1,1,2,3,4,5,6,7,8])))
1138 self.assertRaises(InterpKernelException,p2.invertArrayN2O2O2N,10)
1141 def testSwig2ComputeEffectiveNbOfNodesPerCell1(self):
1142 coords=DataArrayDouble([ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
1143 0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
1144 0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
1145 0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
1146 -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
1147 -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
1148 0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
1149 0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
1150 -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
1151 0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
1152 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
1153 -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
1154 -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
1155 -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
1156 -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
1157 -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
1158 0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
1159 0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
1160 0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
1161 -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
1162 -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
1163 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
1164 -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
1165 0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
1166 0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
1167 0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
1168 -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
1169 -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
1170 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
1171 0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
1172 -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
1173 0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
1174 0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
1175 0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
1176 -0.0372812069535 , -0.286740286332 , 0.00963701291166 ], 69, 3)
1177 connN = [ #polyhedron 0
1178 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
1179 , 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
1180 , 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
1181 , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
1183 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
1184 , 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
1185 , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
1186 , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
1188 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
1189 , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
1191 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
1192 , 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
1193 , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
1194 , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
1195 meshN=MEDCouplingUMesh.New()
1196 meshN.setName("ForBary")
1197 meshN.setMeshDimension(3) ; meshN.setCoords(coords)
1198 meshN.allocateCells(4)
1199 meshN.insertNextCell(NORM_POLYHED,113,connN);
1200 meshN.insertNextCell(NORM_POLYHED,99,connN[113:])
1201 meshN.insertNextCell(NORM_POLYHED,43,connN[212:])
1202 meshN.insertNextCell(NORM_POLYHED,92,connN[255:])
1203 d=meshN.computeEffectiveNbOfNodesPerCell()
1204 e=meshN.computeNbOfNodesPerCell()
1205 self.assertTrue(d.isEqual(DataArrayInt([32,28,12,26])))
1206 self.assertTrue(e.isEqual(DataArrayInt([96,84,36,78])))
1207 m0=MEDCoupling1DGTUMesh(meshN)
1208 c=MEDCouplingCMesh()
1209 arr=DataArrayDouble(3) ; arr.iota(10)
1210 c.setCoords(arr,arr,arr)
1211 m10=c.buildUnstructured()
1212 m11=c.build1SGTUnstructured()
1213 m12=MEDCoupling1SGTUMesh.New(m10)
1214 self.assertTrue(m12.isEqual(m11,1e-12))
1215 m12.setCoords(m0.getCoords()) # m12 is not OK geometrically but the aim of the test is only connectivity values
1216 m3=MEDCoupling1GTUMesh.AggregateOnSameCoordsToUMesh([m12,m0])
1217 m3.checkConsistencyLight()
1218 self.assertEqual(m3.getCoords().getHiddenCppPointer(),m12.getCoords().getHiddenCppPointer())
1219 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])))
1220 self.assertTrue(m3.getNodalConnectivityIndex().isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,186,286,330,423])))
1223 def testSwig2Tetrahedrize1(self):
1224 d=DataArrayInt([0,3,6,10,14,20])
1225 d2=d.buildExplicitArrOfSliceOnScaledArr(slice(0,5,2))
1226 self.assertTrue(d2.isEqual(DataArrayInt([0,0,0, 2,2,2,2, 4,4,4,4,4,4])))
1227 m=MEDCouplingUMesh("Penta6",3)
1228 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"])
1230 m.insertNextCell(NORM_PENTA6,[1,2,0,4,5,3])
1231 st=m.getCoords().getHiddenCppPointer()
1232 c,a,b=m.tetrahedrize(PLANAR_FACE_5)
1233 c.checkConsistency()
1234 self.assertTrue(a.isEqual(DataArrayInt([0,0,0])))
1235 self.assertEqual(0,b)
1236 self.assertEqual(m.getCoords().getHiddenCppPointer(),c.getCoords().getHiddenCppPointer())
1237 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([1,2,0,4,4,3,5,0,5,0,2,4])))
1240 m2=MEDCouplingUMesh("octa12",3)
1241 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)
1242 m2.setCoords(coords)
1244 m2.insertNextCell(NORM_HEXGP12,[3,2,1,0,5,4,9,8,7,6,11,10])
1245 c,a,b=m2.tetrahedrize(PLANAR_FACE_5)
1246 c.checkConsistency()
1247 self.assertTrue(a.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0])))
1248 self.assertEqual(0,b)
1249 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1250 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])))
1253 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"])
1254 m3=MEDCouplingUMesh("hexa8",3)
1255 m3.setCoords(coords)
1257 m3.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1258 st=m3.getCoords().getHiddenCppPointer()
1259 c,a,b=m3.tetrahedrize(PLANAR_FACE_5)
1260 c.checkConsistency()
1261 a.isEqual(DataArrayInt([0,0,0,0,0]))
1262 self.assertEqual(0,b)
1263 self.assertEqual(m3.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1264 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])))
1266 m4=MEDCouplingUMesh("hexa8",3)
1267 m4.setCoords(coords)
1269 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1270 c,a,b=m4.tetrahedrize(PLANAR_FACE_6)
1271 c.checkConsistency()
1272 a.isEqual(DataArrayInt([0,0,0,0,0,0]))
1273 self.assertEqual(0,b)
1274 self.assertEqual(c.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1275 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])))
1277 m4=MEDCouplingUMesh("hexa8",3)
1278 m4.setCoords(coords)
1280 m4.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1281 st=m4.getCoords().getHiddenCppPointer()
1282 c,a,b=m4.tetrahedrize(GENERAL_24)
1283 c.checkConsistency()
1284 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]))
1285 self.assertEqual(7,b)
1286 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1287 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1288 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])))
1289 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)
1290 m4CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1291 self.assertTrue(c.getCoords().isEqual(m4CoordsExp,1e-12))
1292 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1294 m6=MEDCouplingUMesh("hexa8",3)
1295 m6.setCoords(coords)
1297 m6.insertNextCell(NORM_HEXA8,[3,2,1,0,7,6,5,4])
1298 st=m6.getCoords().getHiddenCppPointer()
1299 c,a,b=m6.tetrahedrize(GENERAL_48)
1300 c.checkConsistency()
1301 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]))
1302 self.assertEqual(19,b)
1303 self.assertTrue(c.getCoords().getHiddenCppPointer()!=coords.getHiddenCppPointer())
1304 self.assertTrue(c.getCoords()[:8].isEqual(coords,0))
1305 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])))
1306 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)
1307 m6CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1308 self.assertTrue(c.getCoords().isEqual(m6CoordsExp,1e-12))
1309 self.assertAlmostEqual(2.,c.getMeasureField(False).accumulate()[0],12)
1311 m7=MEDCouplingUMesh("polyhed",3)
1312 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"])
1313 m7.setCoords(coords)
1315 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])
1316 c,a,b=m7.tetrahedrize(PLANAR_FACE_5)
1317 c.checkConsistency()
1318 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])))
1319 self.assertEqual(9,b)
1320 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])))
1321 self.assertAlmostEqual(5.196152422706635,c.getMeasureField(False).accumulate()[0],12)
1322 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)
1323 m7CoordsExp.setInfoOnComponents(["X","YY","ZZZ"])
1324 self.assertTrue(c.getCoords().isEqual(m7CoordsExp,1e-12))
1327 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"])
1328 m8=MEDCouplingUMesh("pyra5",3)
1329 m8.setCoords(coords)
1331 m8.insertNextCell(NORM_PYRA5,[3,2,1,0,7])
1332 st=m8.getCoords().getHiddenCppPointer()
1333 c,a,b=m8.tetrahedrize(PLANAR_FACE_5)
1334 self.assertEqual(m8.getCoords().getHiddenCppPointer(),coords.getHiddenCppPointer())
1335 c.checkConsistency()
1336 self.assertTrue(a.isEqual(DataArrayInt([0,0])))
1337 self.assertEqual(0,b)
1338 self.assertTrue(c.getNodalConnectivity().isEqual(DataArrayInt([3,2,1,7,3,1,0,7])))
1339 self.assertAlmostEqual(0.6666666666666667,c.getMeasureField(False).accumulate()[0],12)
1342 def testDualMesh3D1(self):
1343 arr=DataArrayDouble(2) ; arr.iota()
1344 c=MEDCouplingCMesh() ; c.setCoords(arr,arr,arr)
1345 m=c.buildUnstructured()
1346 t=m.tetrahedrize(PLANAR_FACE_5)[0]
1347 d=t.computeDualMesh()
1348 self.assertTrue(d.getNodalConnectivityIndex().isEqual(DataArrayInt([0,29,118,207,236,325,354,383,472])))
1349 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])))
1350 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))
1351 self.assertAlmostEqual(1.,d.getMeasureField(False).accumulate()[0],1e-13)
1354 def testDualMesh2D1(self):
1355 arr=DataArrayDouble(5) ; arr.iota()
1356 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
1357 m=c.buildUnstructured()
1359 t=MEDCoupling1SGTUMesh(m)
1360 d=t.computeDualMesh()
1361 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])))
1362 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])))
1363 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))
1364 self.assertAlmostEqual(16.,d.getMeasureField(False).accumulate()[0],1e-13)
1367 def testSwig2LoadBalanceBBox1(self):
1368 arr=DataArrayDouble(5) ; arr.iota()
1369 t=MEDCouplingCMesh() ; t.setCoords(arr,arr)
1370 arr=DataArrayDouble(16) ; arr.iota() ; arr*=2./15
1371 s=MEDCouplingCMesh() ; s.setCoords(arr,arr[:]) ; s.translate([2.,1.])
1373 s1=s.build1SGTUnstructured()
1374 t1=t.build1SGTUnstructured()
1375 w=MEDCouplingPointSet.ComputeNbOfInteractionsWithSrcCells(s1,t1,1e-12)
1376 wExp=DataArrayInt([0,0,0,0,0,0,64,64,0,0,64,64,0,0,0,0])
1377 self.assertTrue(w.isEqual(wExp))
1378 slcs=w.splitInBalancedSlices(4)
1379 self.assertEqual(len(slcs),4)
1380 self.assertEqual(slcs,[slice(0,7,1),slice(7,8,1),slice(8,11,1),slice(11,16,1)])
1381 bbs=s1.getBoundingBoxForBBTree()
1382 bbt=t1.getBoundingBoxForBBTree()
1383 self.assertTrue(bbt.computeNbOfInteractionsWith(bbs,1e-12).isEqual(wExp))
1386 def testKrSpatialDiscretization2(self):
1387 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)
1388 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)
1389 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)
1390 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])
1391 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])
1393 nbOfInputPoints=100;
1394 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
1395 mesh=MEDCoupling1SGTUMesh.New("aMesh",NORM_POINT1);
1396 mesh.setCoords(srcPointCoordsXY);
1398 f.setArray(srcFieldValsOnPoints);
1399 f.checkConsistencyLight();
1401 res0=f.getValueOn([-0.5,-0.5]);
1402 self.assertAlmostEqual(targetFieldValsExpected.getIJ(0,0),res0[0],10)
1404 valuesToTest=f.getValueOnMulti(targetPointCoordsXY);
1405 self.assertEqual(196,valuesToTest.getNumberOfTuples());
1406 self.assertEqual(1,valuesToTest.getNumberOfComponents());
1408 self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
1410 fd=f.getDiscretization()
1412 self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
1413 coeffs,isDrift=fd.computeVectorOfCoefficients(mesh,srcFieldValsOnPoints)
1414 self.assertEqual(3,isDrift)
1415 self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
1417 pts3=[-0.5,-0.5,-0.5,-0.35,-0.35,-0.2]
1418 mesh.setCoords(srcPointCoordsXY[:4])
1419 m,nbCols=fd.computeEvaluationMatrixOnGivenPts(mesh,pts3)
1420 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))
1421 if MEDCouplingHasNumPyBindings():
1423 m0=m.toNumPyArray() ; m0=m0.reshape(3,nbCols) ; m0=np.matrix(m0)
1424 srcFieldValsOnPoints2=DataArrayDouble(4,2) ; srcFieldValsOnPoints2[:,0]=srcFieldValsOnPoints[:4] ; srcFieldValsOnPoints2[:,1]=2*srcFieldValsOnPoints[:4]
1425 n0=srcFieldValsOnPoints2.toNumPyArray() ; n0=n0.reshape(4,2) ; n0=np.matrix(n0)
1427 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME) ; f.setMesh(mesh) ; f.setArray(srcFieldValsOnPoints2) ; f.checkConsistencyLight()
1428 self.assertTrue(DataArrayDouble(np.array((m0*n0))).isEqual(f.getValueOnMulti(pts3),1e-14))
1433 # test the when input slice is all the same object is return by MEDCouplingMesh.buildPartRange
1434 def testSwig2MeshPartSlice1(self):
1435 a=DataArrayDouble(4) ; a.iota()
1436 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m=c.buildUnstructured()
1437 fc0=c.getMeasureField(False) ; fc1=fc0[:] ; fc2=fc0*fc1 ; fc2.setName(fc0.getName())
1438 self.assertEqual(fc0.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1439 self.assertEqual(fc2.getMesh().getHiddenCppPointer(),fc1.getMesh().getHiddenCppPointer())
1440 self.assertTrue(fc2.isEqual(fc1,1e-12,1e-12))
1442 fm0=m.getMeasureField(False) ; fm1=fm0[:] ; fm2=fm0*fm1 ; fm2.setName(fm0.getName())
1443 self.assertEqual(fm0.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1444 self.assertEqual(fm2.getMesh().getHiddenCppPointer(),fm1.getMesh().getHiddenCppPointer())
1445 self.assertTrue(fm2.isEqual(fm1,1e-12,1e-12))
1448 # test the correct behaviour when attempting to aggregate two fields whose mesh is null
1449 def testSwig2MergeFieldsOnFieldsHavingNoMesh(self):
1450 a=DataArrayDouble(4) ; a.iota() ; a*=1.5
1451 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; f1=c.getMeasureField(False)
1452 f1.setMesh(None) ; f2=f1.deepCopy() ; f2*=2
1453 f3=MEDCouplingFieldDouble.MergeFields(f1,f2)
1454 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])
1455 self.assertTrue(f3.getArray().isEqual(daExp,1e-12))
1456 self.assertEqual(f3.getTypeOfField(),ON_CELLS)
1457 self.assertEqual(f3.getMesh(),None)
1458 f4=MEDCouplingFieldDouble.MergeFields([f1,f2])
1459 self.assertTrue(f4.getArray().isEqual(daExp,1e-12))
1460 self.assertEqual(f4.getTypeOfField(),ON_CELLS)
1461 self.assertEqual(f4.getMesh(),None)
1464 # test a simple node to cell conversion of a field
1465 def testSwig2NodeToCellDiscretization1(self):
1466 f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
1467 a1=DataArrayDouble(4) ; a1.iota()
1468 a2=DataArrayDouble(3) ; a2.iota()
1469 m=MEDCouplingCMesh() ; m.setCoords(a1,a2)
1471 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]"])
1472 f.setArray(arr) ; f.setName("toto")
1474 f2=f.nodeToCellDiscretization()
1475 self.assertEqual(ON_CELLS,f2.getTypeOfField())
1476 self.assertEqual("toto",f2.getName())
1477 self.assertEqual([1.1,2,3],f2.getTime())
1478 self.assertEqual(["aa [km]","bbb [kJ]"],f2.getArray().getInfoOnComponents())
1479 self.assertEqual(6,f2.getArray().getNumberOfTuples())
1480 self.assertEqual(f.getMesh().getHiddenCppPointer(),f2.getMesh().getHiddenCppPointer())
1481 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]"])
1482 self.assertTrue(f2.getArray().isEqual(exp,1e-13))
1485 def testSwig2MeshOrientCorrectly2DCells1(self):
1486 m=MEDCouplingUMesh("mesh",2)
1487 coo=DataArrayDouble([1.,0.,0.5,-0.1,0.,1.,0.,0.,0.07,0.5,0.59,0.5],6,2)
1490 m.insertNextCell(NORM_TRI6,[3,0,2,1,5,4])
1491 m.insertNextCell(NORM_QPOLYG,[3,0,2,1,5,4])
1492 self.assertTrue(DataArrayDouble([-0.58093333350930543,-0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1493 m.changeSpaceDimension(3)
1494 m.orientCorrectly2DCells([0.,0.,-1.],False)
1496 m.checkConsistencyLight()
1497 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([6,3,2,0,4,5,1, 32,3,2,0,4,5,1])))
1498 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14])))
1499 m.changeSpaceDimension(2)
1500 self.assertTrue(DataArrayDouble([0.58093333350930543,0.58093333350930543]).isEqual(m.getMeasureField(False).getArray(),1e-12))
1503 def testSwig2Hexa8HavingFacesWarped1(self):
1504 """ 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
1505 intersected with src the sum of intersection volume is greater than the volume of the trg cell.
1506 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
1509 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)
1510 src=MEDCouplingUMesh("TBmesh3D",3) ; src.setCoords(srcCoo)
1512 src.insertNextCell(NORM_HEXA8,[0,1,4,3,8,9,12,11])
1513 src.insertNextCell(NORM_HEXA8,[1,2,5,4,9,10,13,12])
1514 src.insertNextCell(NORM_HEXA8,[4,5,7,6,12,13,15,14])
1515 src.insertNextCell(NORM_HEXA8,[8,9,12,11,16,17,20,19])
1516 src.insertNextCell(NORM_HEXA8,[9,10,13,12,17,18,21,20])
1517 src.checkConsistency()
1518 # trg is useless here but I keep it in case of MEDCouplingRemapper were expected to do something about warped NORM_HEXA8
1519 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)
1520 trg=MEDCouplingUMesh("MESH",3) ; trg.setCoords(trgCoo)
1522 trg.insertNextCell(NORM_HEXA8,[0,1,3,2,4,5,7,6])
1524 srcFace=src.buildDescendingConnectivity()[0]
1525 conn=MEDCoupling1SGTUMesh(srcFace).getNodalConnectivity() ; conn.rearrange(4)
1526 eqFaces=srcFace.computePlaneEquationOf3DFaces()
1528 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
1529 lambd=-e/(eqFaces[:,:3]**2).sumPerTuple()
1530 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
1531 shouldBeZero=(pts*eqFaces[:,:-1]).sumPerTuple()+eqFaces[:,3]# this line is useless only to be sure that pts are on the plane.
1532 check=(pts-srcFace.getCoords()[conn[:,nodeIdInCell]]).magnitude() # check contains the distance of the last point to its plane
1533 idsToTest=check.findIdsNotInRange(0.,1e-10)
1534 self.assertTrue(idsToTest.isEqual(DataArrayInt([17,18,19,20,22,23,24])))
1535 idsToTest2=idsToTest.findIdsNotInRange(18,22)
1536 self.assertTrue(idsToTest2.isEqual(DataArrayInt([0,4,5,6])))
1537 idsToTest2.rearrange(2)
1538 self.assertTrue(idsToTest2.sumPerTuple().isEqual(DataArrayInt([4,11])))
1541 def testSwig2SortHexa8EachOther1(self):
1543 testing MEDCoupling1SGTUMesh.sortHexa8EachOther method
1545 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)])
1546 m1=MEDCouplingUMesh("m1",3) ; m1.setCoords(coords1)
1547 m1.allocateCells() ; m1.insertNextCell(NORM_HEXA8,[7,1,3,0,6,4,2,5])
1548 m1.checkConsistencyLight()
1550 m2=m1.deepCopy() ; m2.setName("m2")
1552 trs=[[0.,0.,-1.],[0.,0.,1.],[1.,0.,0.],[0.,-1.,0.],[-1.,0.,0.],[0.,1.,0.]]
1553 for i,t in enumerate(trs):
1555 j2=(j//16) ; j1=((j%16)//4) ; j0=(j%4)
1557 m11.rotate([0.,0.,0.],[0.,0.,1.],float(j0)*pi/2)
1558 m11.rotate([0.,0.,0.],[0.,1.,0.],float(j1)*pi/2)
1559 m11.rotate([0.,0.,0.],[1.,0.,0.],float(j2)*pi/2)
1562 m=MEDCouplingUMesh.MergeUMeshes(m2,m11)
1564 self.assertEqual(12,m.getNumberOfNodes())
1565 m=MEDCoupling1SGTUMesh(m)
1566 m.sortHexa8EachOther()
1567 tmp0=m.buildUnstructured().tetrahedrize(PLANAR_FACE_6)[0].buildUnstructured()
1568 self.assertEqual(20,tmp0.computeSkin().getNumberOfCells())
1573 def testSwig2normMinComputeAbs1(self):
1574 d=DataArrayDouble([4,-5,2,6.1,-7.33,1,-1,3e2,0.07,-0.009,-6,-1e30],4,3)
1575 d.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1577 dExp=d.deepCopy() ; dExp.abs()
1578 self.assertTrue(dExp.isEqual(d0,1e-12))
1579 e=d0-DataArrayDouble([4,5,2,6.1,7.33,1,1,3e2,0.07,0.009,6,1e30],4,3)
1580 self.assertAlmostEqual(0.,e.normMin(),13)
1581 self.assertAlmostEqual(0.009,d.normMin(),13)
1583 di=DataArrayInt([3,-12,5,6,14,16,-23,100,23,-1,0,-6],4,3)
1584 di.setInfoOnComponents(["XX [m]","YYY [km]","ABSJJ [MW]"])
1586 diExp=di.deepCopy() ; diExp.abs()
1587 self.assertTrue(diExp.isEqual(d0i))
1588 self.assertEqual([3,12,5,6,14,16,23,100,23,1,0,6],d0i.getValues())
1591 def testSwig2GetCellsContainingPointsForNonConvexPolygon1(self):
1592 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)
1593 m=MEDCouplingUMesh("Intersect2D",2) ; m.setCoords(coo) ; m.allocateCells()
1594 m.insertNextCell(NORM_POLYGON,[6,3,4,5])
1595 m.insertNextCell(NORM_POLYGON,[4,0,1,2,6,5])
1596 m.checkConsistency()
1598 self.assertTrue(m.getCellsContainingPoint((0.4,-0.4),1e-12).isEqual(DataArrayInt([0])))
1599 self.assertTrue(m.getCellsContainingPoint((-0.4,-0.4),1e-12).isEqual(DataArrayInt([1])))
1600 self.assertTrue(m.getCellsContainingPoint((0.,-0.4),1e-12).isEqual(DataArrayInt([0,1])))
1603 def testSwig2GetCellsContainingPointsForNonConvexPolygon2(self):
1604 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)
1605 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1606 m.insertNextCell(NORM_QPOLYG,[8,5,4,9])
1607 m.insertNextCell(NORM_QPOLYG,[5,8,4,10])
1608 m.insertNextCell(NORM_QPOLYG,[16,8,5,15,21,9,22,17])
1609 m.insertNextCell(NORM_QPOLYG,[15,1,2,3,16,20,6,7,19,17])
1610 m.insertNextCell(NORM_QPOLYG,[15,5,8,16,22,10,21,18])
1611 m.insertNextCell(NORM_QPOLYG,[16,3,0,1,15,19,11,12,20,18])
1612 m.checkConsistency()
1613 self.assertTrue(m.getCellsContainingPoint([0.,0.27],1e-12).isEqual(DataArrayInt([2])))
1616 def testSwig2DAIGetIdsEqualTuple1(self):
1617 da=DataArrayInt([0,7,1,2,4,1,2,1,1,2,0,1,2,1,5,1,1,2],9,2)
1618 self.assertTrue(da.findIdsEqualTuple([1,2]).isEqual(DataArrayInt([1,4,8])))
1619 self.assertTrue(da.findIdsEqualTuple((1,2)).isEqual(DataArrayInt([1,4,8])))
1620 self.assertTrue(da.findIdsEqualTuple(DataArrayInt([1,2])).isEqual(DataArrayInt([1,4,8])))
1622 self.assertRaises(InterpKernelException,da.findIdsEqualTuple,[1,2])# mismatch nb of compo (3) and nb of elts in input tuple (2)
1623 self.assertTrue(da.findIdsEqualTuple([2,0,1]).isEqual(DataArrayInt([3])))
1624 self.assertTrue(da.findIdsEqualTuple([2,0,7]).isEqual(DataArrayInt([])))
1626 self.assertTrue(da.findIdsEqualTuple(2).isEqual(DataArrayInt([3,6,9,12,17])))
1627 self.assertTrue(da.findIdsEqualTuple(2).isEqual(da.findIdsEqual(2)))
1630 def testSwig2GaussNEStaticInfo1(self):
1631 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetWeightArrayFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.16666666666666666]),1e-12))
1632 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetRefCoordsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.,0.,1.,0.,0.,1.]),1e-12))
1633 self.assertTrue(DataArrayDouble(MEDCouplingFieldDiscretizationGaussNE.GetLocsFromGeometricType(NORM_TRI3)).isEqual(DataArrayDouble([0.16666666666666666,0.16666666666666666,0.6666666666666667,0.16666666666666666,0.16666666666666666,0.6666666666666667]),1e-12))
1636 def testSwigReverseNodalConnOnStructuredMesh(self):
1638 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
1639 c.setCoordsAt(0,arr)
1640 rn,rni=c.getReverseNodalConnectivity()
1641 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1642 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1643 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1644 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1646 c=MEDCouplingCMesh() ; arr=DataArrayDouble(1) ; arr.iota()
1647 c.setCoordsAt(0,arr)
1648 rn,rni=c.getReverseNodalConnectivity()
1649 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1650 self.assertTrue(rn.isEqual(DataArrayInt([0])))
1651 self.assertTrue(rni.isEqual(DataArrayInt([0,1])))
1652 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1654 c=MEDCouplingCMesh() ; arr=DataArrayDouble(0) ; arr.iota()
1655 c.setCoordsAt(0,arr)
1656 rn,rni=c.getReverseNodalConnectivity()
1657 rn.isEqual(DataArrayInt([]))
1658 rni.isEqual(DataArrayInt([0]))
1660 c=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; arr2=DataArrayDouble(4) ; arr.iota()
1661 c.setCoords(arr,arr2)
1662 rn,rni=c.getReverseNodalConnectivity()
1663 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1664 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])))
1665 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])))
1666 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1668 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1669 c.setCoords(arr,arr2)
1670 rn,rni=c.getReverseNodalConnectivity()
1671 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1672 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1674 c=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota() ; arr2=DataArrayDouble(1) ; arr.iota()
1675 c.setCoords(arr2,arr)
1676 rn,rni=c.getReverseNodalConnectivity()
1677 self.assertTrue(rn.isEqual(DataArrayInt([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8])))
1678 self.assertTrue(rni.isEqual(DataArrayInt([0,1,3,5,7,9,11,13,15,17,18])))
1680 c=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(3) ; arr1.iota() ; arr2=DataArrayDouble(4) ; arr2.iota()
1681 c.setCoords(arr0,arr1,arr2)
1682 rn,rni=c.getReverseNodalConnectivity()
1683 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])))
1684 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])))
1685 rn2,rni2=c.buildUnstructured().getReverseNodalConnectivity()
1686 self.assertTrue(rn.isEqual(rn2)) ; self.assertTrue(rni.isEqual(rni2))
1689 def testSwig2CellToNodeDiscretization1(self):
1690 m=MEDCouplingCMesh() ; arr0=DataArrayDouble(5) ; arr0.iota() ; arr1=DataArrayDouble(4) ; arr1.iota() ; m.setCoords(arr0,arr1)
1691 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setTime(1.1,5,6)
1692 arr=DataArrayDouble(12) ; arr.iota()
1693 arr=DataArrayDouble.Meld(arr,arr+100.) ; arr.setInfoOnComponents(["aaa","bbb"])
1695 f.checkConsistencyLight()
1697 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.])
1698 ref=DataArrayDouble.Meld(ref,ref+100.) ; ref.setInfoOnComponents(["aaa","bbb"])
1699 f2=f.cellToNodeDiscretization()
1700 f2.checkConsistencyLight()
1701 self.assertEqual(f2.getTime()[1:],[5,6])
1702 self.assertAlmostEqual(f2.getTime()[0],1.1,15)
1703 self.assertEqual(f2.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
1704 self.assertTrue(f2.getArray().isEqual(ref,1e-12))
1705 rn,rni=m.getReverseNodalConnectivity()
1706 rni2=(rni.deltaShiftIndex()).convertToDblArr()
1707 arr2=(f.getArray()[rn]).accumulatePerChunck(rni)/rni2
1708 self.assertTrue(f2.getArray().isEqual(arr2,1e-12))
1711 u=m.buildUnstructured() ; f.setMesh(u) ; del m
1712 f3=f.cellToNodeDiscretization()
1713 f3.checkConsistencyLight()
1714 self.assertEqual(f3.getTime()[1:],[5,6])
1715 self.assertAlmostEqual(f3.getTime()[0],1.1,15)
1716 self.assertEqual(f3.getMesh().getHiddenCppPointer(),u.getHiddenCppPointer())
1717 self.assertTrue(f3.getArray().isEqual(ref,1e-12))
1720 def testSwig2GetMeshSpaceDimensionCMesh1(self):
1721 c=MEDCouplingCMesh()
1722 arr0=DataArrayDouble([0,1,2])
1723 arr1=DataArrayDouble([0])
1724 c.setCoords(arr0,arr0,arr0)
1725 self.assertEqual(c.getMeshDimension(),3)
1726 self.assertEqual(c.getSpaceDimension(),3)
1728 c.setCoords(arr0,arr0,arr1)
1729 self.assertEqual(c.getMeshDimension(),2)
1730 self.assertEqual(c.getSpaceDimension(),3)
1732 c.setCoords(arr0,arr0)
1733 self.assertEqual(c.getMeshDimension(),2)
1734 self.assertEqual(c.getSpaceDimension(),2)
1736 c.setCoords(arr0,arr1)
1737 self.assertEqual(c.getMeshDimension(),1)
1738 self.assertEqual(c.getSpaceDimension(),2)
1741 self.assertEqual(c.getMeshDimension(),1)
1742 self.assertEqual(c.getSpaceDimension(),1)
1745 self.assertEqual(c.getMeshDimension(),0)
1746 self.assertEqual(c.getSpaceDimension(),1)
1749 def testSwig2BuildSpreadZonesWithPolyOnQPolyg1(self):
1752 m=MEDCouplingCMesh()
1753 arr1=DataArrayDouble(nx) ; arr1.iota()
1754 arr2=DataArrayDouble(ny) ; arr2.iota()
1755 m.setCoords(arr1,arr2)
1756 m=m.buildUnstructured()
1757 da=DataArrayInt.Range(nx-1,(nx-1)*(ny-1),nx)
1758 m2=m[da] ; m2.simplexize(0)
1759 dan=da.buildComplement(m.getNumberOfCells())
1761 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1763 m.convertLinearCellsToQuadratic()
1764 m1=m[::2] ; m2=m[1::2] ; m2.convertAllToPoly()
1765 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
1766 p=m.buildSpreadZonesWithPoly()
1767 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])))
1768 self.assertTrue(p.getNodalConnectivityIndex().isEqual(DataArrayInt([0,41])))
1769 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))
1772 def testSwigExtendedSlice1(self):
1773 d=DataArrayInt([5,6,7])
1774 self.assertTrue(d[2:].isEqual(DataArrayInt([7])))
1775 self.assertTrue(d[3:].isEqual(DataArrayInt([])))
1778 except InterpKernelException as e:
1779 self.assertTrue(True)
1781 self.assertTrue(False)
1783 d=DataArrayInt([5,6,7,8])
1784 self.assertEqual(d[-1],8)
1785 self.assertEqual(d[-4],5)
1788 except InterpKernelException as e:
1789 self.assertTrue(True)
1791 self.assertTrue(False)
1793 self.assertTrue(d[2::-1].isEqual(DataArrayInt([7,6,5])))
1794 self.assertTrue(d[0::-1].isEqual(DataArrayInt([5])))
1795 self.assertTrue(d[-1::-1].isEqual(DataArrayInt([8,7,6,5])))
1796 self.assertTrue(d[-3::-1].isEqual(DataArrayInt([6,5])))
1797 self.assertTrue(d[-5::-1].isEqual(DataArrayInt([])))
1800 except InterpKernelException as e:
1801 self.assertTrue(True)
1803 self.assertTrue(False)
1806 self.assertTrue(d[0:].isEqual(DataArrayInt([])))
1808 d=DataArrayDouble([5,6,7])
1809 self.assertTrue(d[2:].isEqual(DataArrayDouble([7]),1e-12))
1810 self.assertTrue(d[3:].isEqual(DataArrayDouble([]),1e-12))
1813 except InterpKernelException as e:
1814 self.assertTrue(True)
1816 self.assertTrue(False)
1818 d=DataArrayDouble([5,6,7,8])
1819 self.assertAlmostEqual(d[-1],8.,12)
1820 self.assertAlmostEqual(d[-4],5.,12)
1823 except InterpKernelException as e:
1824 self.assertTrue(True)
1826 self.assertTrue(False)
1828 self.assertTrue(d[2::-1].isEqual(DataArrayDouble([7,6,5]),1e-12))
1829 self.assertTrue(d[0::-1].isEqual(DataArrayDouble([5]),1e-12))
1830 self.assertTrue(d[-1::-1].isEqual(DataArrayDouble([8,7,6,5]),1e-12))
1831 self.assertTrue(d[-3::-1].isEqual(DataArrayDouble([6,5]),1e-12))
1832 self.assertTrue(d[-5::-1].isEqual(DataArrayDouble([]),1e-12))
1835 except InterpKernelException as e:
1836 self.assertTrue(True)
1838 self.assertTrue(False)
1840 d=DataArrayDouble([])
1841 self.assertTrue(d[0:].isEqual(DataArrayDouble([]),1e-12))
1844 def testSwig2Hexa27GP1(self):
1845 """ This test focused on shape functions of hexa27.
1847 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.]])
1848 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1850 # the cell description is exactly those described in the description of HEXA27 in MED file 3.0.7 documentation
1851 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])
1852 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.]
1853 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]
1854 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]
1855 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1857 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1858 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1859 fGauss.setArray(arr)
1860 arrOfDisc=fGauss.getLocalizationOfDiscr()
1862 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))
1866 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
1867 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1868 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1871 def testSwig2Pyra13GP1(self):
1872 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.]])
1873 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
1875 # the cell description is exactly those described in the description of PYRA13 in MED file 3.0.7 documentation
1876 m.insertNextCell(NORM_PYRA13,[0,1,2,3,4,5,6,7,8,9,10,11,12])
1877 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]
1878 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]
1879 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]
1880 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1882 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1883 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1884 fGauss.setArray(arr)
1885 arrOfDisc=fGauss.getLocalizationOfDiscr()
1887 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))
1890 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. !
1891 fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
1892 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1893 self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity arount 0.,0.,1. !
1896 def testSwig2Tri7GP1(self):
1897 coo=DataArrayDouble([[0,0],[0,2],[2,0],[0,1],[1,1],[1,0],[0.6666666666666667,0.6666666666666667]])
1898 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
1900 # the cell description is exactly those described in the description of TRI7 in MED file 3.0.7 documentation
1901 m.insertNextCell(NORM_TRI7, list(range(7)))
1902 refCoords=[0.,0.,1.,0.,0.,1.,0.5,0.,0.5,0.5,0.,0.5,0.3333333333333333,0.3333333333333333]
1903 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]
1904 weights=[0.062969590272413,0.062969590272413,0.062969590272413,0.066197076394253,0.066197076394253,0.066197076394253,0.1125]
1905 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
1907 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1908 arr=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arr.iota()
1909 fGauss.setArray(arr)
1910 arrOfDisc=fGauss.getLocalizationOfDiscr()
1911 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))
1914 gaussCoords=refCoords
1915 fGauss.setGaussLocalizationOnType(NORM_TRI7,refCoords,gaussCoords,weights)
1916 arrOfDisc2=fGauss.getLocalizationOfDiscr()
1917 self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
1920 def testSwig2StructuredDesc1(self):
1921 c=MEDCouplingCMesh()
1922 arr0=DataArrayDouble(3) ; arr0.iota()
1923 arr1=DataArrayDouble(4) ; arr1.iota()
1924 arr2=DataArrayDouble(5) ; arr2.iota()
1925 c.setCoords(arr0,arr1,arr2)
1927 self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
1928 m=c.build1SGTSubLevelMesh()
1929 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])))
1930 self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
1932 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])))
1935 def testSwig2Colinearize2D1(self):
1936 coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
1938 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1939 m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
1940 refPtr=m.getCoords().getHiddenCppPointer()
1941 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1942 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1943 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1944 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1945 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1946 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1947 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1948 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1950 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1951 m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
1952 refPtr=m.getCoords().getHiddenCppPointer()
1953 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1954 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1955 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
1956 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1958 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1959 m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
1960 refPtr=m.getCoords().getHiddenCppPointer()
1961 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1962 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1963 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
1964 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1966 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
1967 m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
1968 refPtr=m.getCoords().getHiddenCppPointer()
1969 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1970 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1971 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
1972 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
1974 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)])
1975 coo2.setInfoOnComponents(["aa","bbbb"])
1976 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1977 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1978 refPtr=m.getCoords().getHiddenCppPointer()
1979 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1980 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
1981 self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
1982 refPtr=m.getCoords().getHiddenCppPointer()
1983 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
1984 self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
1985 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1986 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1987 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
1988 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
1989 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
1990 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
1991 # mix of quadratic and linear inside a QPOLYG cell
1992 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)])
1993 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
1994 m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
1995 refPtr=m.getCoords().getHiddenCppPointer()
1996 self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
1997 self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
1998 self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
1999 self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
2000 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
2001 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
2004 def testSwig2BoundingBoxForBBTree1(self):
2005 """ 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 !
2007 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)
2008 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2010 m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
2011 m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
2012 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))
2015 def testSwig2CartBuildUnstructuredOnExoticCases1(self):
2016 """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
2019 m=MEDCouplingCMesh()
2020 arrX=DataArrayDouble(3) ; arrX.iota()
2021 arrY=DataArrayDouble(4) ; arrY.iota()
2022 arrZ=DataArrayDouble(1) ; arrZ.iota()
2023 m.setCoords(arrX,arrY,arrZ)
2024 self.assertEqual(2,m.getMeshDimension())
2025 self.assertEqual(3,m.getSpaceDimension())
2026 mu=m.buildUnstructured()
2027 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])))
2028 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2029 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)])
2030 self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
2032 m=MEDCouplingCMesh()
2033 arrX=DataArrayDouble(3) ; arrX.iota()
2034 arrY=DataArrayDouble(1) ; arrY.iota()
2035 arrZ=DataArrayDouble(4) ; arrZ.iota()
2036 m.setCoords(arrX,arrY,arrZ)
2037 self.assertEqual(2,m.getMeshDimension())
2038 self.assertEqual(3,m.getSpaceDimension())
2039 mu=m.buildUnstructured()
2040 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])))
2041 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2042 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)])
2043 self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
2045 m=MEDCouplingCMesh()
2046 arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
2047 arrY=DataArrayDouble(3) ; arrY.iota()
2048 arrZ=DataArrayDouble(4) ; arrZ.iota()
2049 m.setCoords(arrX,arrY,arrZ)
2050 self.assertEqual(2,m.getMeshDimension())
2051 self.assertEqual(3,m.getSpaceDimension())
2052 mu=m.buildUnstructured()
2053 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])))
2054 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
2055 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)])
2056 self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
2058 m=MEDCouplingCMesh()
2059 arrX=DataArrayDouble(3) ; arrX.iota()
2060 arrY=DataArrayDouble(1) ; arrY.iota(7)
2061 arrZ=DataArrayDouble(1) ; arrZ.iota(8)
2062 m.setCoords(arrX,arrY,arrZ)
2063 self.assertEqual(1,m.getMeshDimension())
2064 self.assertEqual(3,m.getSpaceDimension())
2065 mu=m.buildUnstructured()
2066 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2067 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2068 coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
2069 self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
2071 m=MEDCouplingCMesh()
2072 arrX=DataArrayDouble(1) ; arrX.iota(7)
2073 arrY=DataArrayDouble(1) ; arrY.iota(8)
2074 arrZ=DataArrayDouble(3) ; arrZ.iota()
2075 m.setCoords(arrX,arrY,arrZ)
2076 self.assertEqual(1,m.getMeshDimension())
2077 self.assertEqual(3,m.getSpaceDimension())
2078 mu=m.buildUnstructured()
2079 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2080 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2081 coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
2082 self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
2084 m=MEDCouplingCMesh()
2085 arrX=DataArrayDouble(3) ; arrX.iota()
2086 arrY=DataArrayDouble(1) ; arrY.iota(7)
2087 m.setCoords(arrX,arrY)
2088 self.assertEqual(1,m.getMeshDimension())
2089 self.assertEqual(2,m.getSpaceDimension())
2090 mu=m.buildUnstructured()
2091 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2092 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2093 coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
2094 self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
2096 m=MEDCouplingCMesh()
2097 arrX=DataArrayDouble(1) ; arrX.iota(7)
2098 arrY=DataArrayDouble(3) ; arrY.iota()
2099 m.setCoords(arrX,arrY)
2100 self.assertEqual(1,m.getMeshDimension())
2101 self.assertEqual(2,m.getSpaceDimension())
2102 mu=m.buildUnstructured()
2103 self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
2104 self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2105 coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
2106 self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
2109 def testSwig2Colinearize2D2(self):
2110 """ simple non regression test but that has revealed a bug"""
2111 coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
2112 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
2113 m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
2114 m.checkConsistency()
2115 refPtr=m.getCoords().getHiddenCppPointer()
2117 m.colinearize2D(1e-12)
2118 m.checkConsistency()
2119 self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
2120 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([NORM_POLYGON,0,2,3,4])))
2121 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
2124 def testSwig2Colinearize2D3(self):
2125 """ colinearize was too aggressive, potentially producing cells with one edge """
2126 # Flat polygon with 3 edges - nothing should happen (min number of edges for a linear polyg)
2127 coo = DataArrayDouble([0.0,0.0, 2.0,0.0, 1.5,0.0, 1.0,0.0, 0.5,0.0], 5,2)
2128 m = MEDCouplingUMesh("m", 2)
2129 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2], [0,4]] ]
2130 m.setCoords(coo); m.setConnectivity(c, cI)
2131 m.colinearize2D(1e-10)
2132 m.checkConsistency()
2133 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2134 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2136 # Flat quad polygon, 2 edges - nothing should happen (min number of edges for a quad polyg)
2137 m = MEDCouplingUMesh("m", 2)
2138 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1, 2,3], [0,5]] ]
2139 m.setCoords(coo); m.setConnectivity(c, cI)
2140 m.colinearize2D(1e-10)
2141 m.checkConsistency()
2142 self.assertEqual(c.getValues(), m.getNodalConnectivity().getValues())
2143 self.assertEqual(cI.getValues(), m.getNodalConnectivityIndex().getValues())
2145 # Flat polygon, 4 edges - one reduction should happen
2146 m = MEDCouplingUMesh("m", 2)
2147 c, cI = [DataArrayInt(l) for l in [[NORM_POLYGON, 0,1,2,3], [0,5]] ]
2148 m.setCoords(coo); m.setConnectivity(c, cI)
2149 m.colinearize2D(1e-10)
2150 m.checkConsistency()
2151 self.assertEqual([NORM_POLYGON, 3,1,2], m.getNodalConnectivity().getValues())
2152 self.assertEqual([0,4], m.getNodalConnectivityIndex().getValues())
2154 # Flat quad polygon, 3 edges - one reduction expected
2155 m = MEDCouplingUMesh("m", 2)
2156 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 0,1,3, 3,2,4], [0,7]] ]
2157 m.setCoords(coo); m.setConnectivity(c, cI)
2158 m.colinearize2D(1e-10)
2159 m.checkConsistency()
2160 self.assertEqual([NORM_QPOLYG, 3,1, 5,2], m.getNodalConnectivity().getValues())
2161 self.assertTrue( m.getCoords()[5].isEqual( DataArrayDouble([(1.5,0.0)]), 1.0e-12 ) )
2162 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2164 # Now an actual (neutronic) case: circle made of 4 SEG3. Should be reduced to 2 SEG3
2165 m = MEDCouplingDataForTest.buildCircle2(0.0, 0.0, 1.0)
2166 c, cI = [DataArrayInt(l) for l in [[NORM_QPOLYG, 7,5,3,1, 6,4,2,0], [0,9]] ]
2167 m.colinearize2D(1e-10)
2168 m.checkConsistency()
2169 self.assertEqual([NORM_QPOLYG, 3,5, 8,4], m.getNodalConnectivity().getValues())
2170 self.assertTrue( m.getCoords()[8].isEqual( DataArrayDouble([(1.0,0.0)]), 1.0e-12 ) )
2171 self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues())
2173 def testSwig2CheckAndPreparePermutation2(self):
2174 a=DataArrayInt([10003,9999999,5,67])
2175 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
2176 a=DataArrayInt([10003,-9999999,5,67])
2177 self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
2179 self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
2182 def testSwig2ComputeNeighborsOfNodes1(self):
2183 arrX=DataArrayDouble(3) ; arrX.iota()
2184 arrY=DataArrayDouble(4) ; arrY.iota()
2185 arrZ=DataArrayDouble(5) ; arrZ.iota()
2186 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
2188 a,b=m.computeNeighborsOfNodes()
2189 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])))
2190 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])))
2192 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
2193 a,b=m.computeNeighborsOfNodes()
2194 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])))
2195 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2197 m=m.buildDescendingConnectivity()[0]
2198 a,b=m.computeNeighborsOfNodes()
2199 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])))
2200 self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
2203 def testSwigBugOnUnpackingTuplesInDataArray1(self):
2204 inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2207 self.assertRaises(StopIteration,r.__getitem__,4)
2208 self.assertEqual(len(r),3)
2211 self.assertEqual(len(r),3)
2214 self.assertEqual(len(r),3)
2217 self.assertEqual(len(r),3)
2219 self.assertTrue(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
2221 inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
2224 self.assertRaises(StopIteration,r.__getitem__,4)
2225 self.assertEqual(len(r),3)
2228 self.assertEqual(len(r),3)
2231 self.assertEqual(len(r),3)
2234 self.assertEqual(len(r),3)
2236 self.assertTrue(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
2239 def testSwig2IMesh1(self):
2240 """ 1st test of image grid mesh.
2242 m=MEDCouplingIMesh()
2243 self.assertEqual(m.getSpaceDimension(),-1)
2244 self.assertEqual(1,len(m.__repr__().split("\n")))
2245 self.assertEqual(6,len(m.__str__().split("\n")))
2246 self.assertRaises(InterpKernelException,m.getNodeStruct)
2247 self.assertRaises(InterpKernelException,m.getOrigin)
2248 self.assertRaises(InterpKernelException,m.getDXYZ)
2249 m.setSpaceDimension(3)
2250 self.assertEqual(9,len(m.__str__().split("\n")))
2251 self.assertEqual(4,len(m.__repr__().split("\n")))
2252 self.assertEqual((0,0,0),m.getNodeStruct())
2253 self.assertEqual((0.,0.,0.),m.getOrigin())
2254 self.assertEqual((0.,0.,0.),m.getDXYZ())
2255 self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
2256 m.setNodeStruct([3,4,2])
2257 self.assertEqual((3,4,2),m.getNodeStruct())
2258 m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
2259 self.assertEqual((1.5,2.5,3.5),m.getOrigin())
2260 m.setDXYZ((0.5,1.,0.25))
2261 self.assertEqual((0.5,1.,0.25),m.getDXYZ())
2262 for it in DataArrayDouble([(1.5,2.5,3.5)]):
2263 m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
2265 self.assertEqual(3,m.getSpaceDimension())
2266 self.assertEqual((3,4,2),m2.getNodeStruct())
2267 self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
2268 self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
2269 self.assertEqual(24,m2.getNumberOfNodes())
2270 self.assertEqual(6,m2.getNumberOfCells())
2271 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2273 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2275 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2277 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2279 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2281 self.assertTrue(not m.isEqual(m2,1e-12))
2283 self.assertTrue(m.isEqual(m2,1e-12))
2285 self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2286 m2.setTimeUnit("ms")
2287 self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
2289 m2.setNodeStruct([3,2,4])
2290 self.assertTrue(not m.isEqual(m2,1e-12))
2291 m.setNodeStruct([3,2,4])
2292 self.assertTrue(m.isEqual(m2,1e-12))
2293 m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
2294 self.assertTrue(not m.isEqual(m2,1e-12))
2295 m2.setOrigin([1.5,3.5,2.5])
2296 self.assertTrue(m.isEqual(m2,1e-12))
2297 m.setDXYZ((0.5,0.25,1.))
2298 self.assertTrue(not m.isEqual(m2,1e-12))
2299 m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
2300 self.assertTrue(m.isEqual(m2,1e-12))
2302 self.assertTrue(m2bis.isEqual(m2,1e-12))
2304 self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
2305 m2bis.refineWithFactor([3,3,3])
2306 self.assertEqual(162,m2bis.getNumberOfCells())
2307 self.assertEqual((7,4,10),m2bis.getNodeStruct())
2308 self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
2309 self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
2311 self.assertEqual(3,m.getMeshDimension())
2312 self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
2313 mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
2314 mu.checkConsistency()
2315 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]"])
2316 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2317 self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
2318 self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
2319 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])))
2320 bary=m.computeCellCenterOfMass()
2321 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]"])
2322 self.assertTrue(bary.isEqual(baryExp,1e-12))
2324 c=m.convertToCartesian()
2325 c.checkConsistencyLight()
2326 self.assertEqual([1.1,0,3],c.getTime())
2327 self.assertEqual("ms",c.getTimeUnit())
2328 self.assertEqual(3,c.getMeshDimension())
2329 self.assertEqual(3,c.getSpaceDimension())
2330 arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
2331 self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
2332 arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
2333 self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
2334 arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
2335 self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
2336 self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
2338 a,b=m.getCellsContainingPoints(baryExp,1e-12)
2339 self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
2340 self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
2341 for a,b in enumerate(baryExp):
2342 self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
2345 m.translate([1.,2.,4.])
2346 self.assertEqual((3,2,4),m.getNodeStruct())
2347 self.assertEqual((2.5,5.5,6.5),m.getOrigin())
2348 self.assertEqual((0.5,0.25,1.),m.getDXYZ())
2349 m.scale([0.,1.,3.],2.)
2350 self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
2351 self.assertEqual((3,2,4),m.getNodeStruct())
2352 self.assertEqual((5.,10.,10.),m.getOrigin())
2353 self.assertEqual((1.,0.5,2.),m.getDXYZ())
2355 f=m.getMeasureField(False)
2356 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
2357 f2.setName("MeasureOfMesh_mesh")
2358 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
2360 m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
2361 self.assertEqual((2,2,3),m3.getNodeStruct())
2362 self.assertEqual((6.,10.,12.),m3.getOrigin())
2363 self.assertEqual((1.,0.5,2.),m3.getDXYZ())
2364 # now playing with 3D surf
2365 m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
2366 self.assertEqual([(1.5,2.5),(2.5,3.5),(3.5,4.25)],m4.getBoundingBox())
2367 self.assertEqual(3,m4.getSpaceDimension())
2368 self.assertEqual(2,m4.getMeshDimension())
2369 self.assertEqual(12,m4.getNumberOfNodes())
2370 self.assertEqual(6,m4.getNumberOfCells())
2371 mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
2372 mu.checkConsistency()
2373 self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
2374 self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
2375 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]"])
2376 self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
2377 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])))
2380 def testSwig1GetValuesAsTuple1(self):
2382 self.assertEqual(d.getValues(),[])
2383 self.assertEqual(d.getValuesAsTuple(),[])
2384 d=DataArrayDouble(24) ; d.iota() ; d.rearrange(3)
2385 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.])
2386 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.)])
2388 self.assertEqual(d.getValues(),[])
2389 self.assertEqual(d.getValuesAsTuple(),[])
2390 d=DataArrayInt(24) ; d.iota() ; d.rearrange(3)
2391 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])
2392 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)])
2395 def testSwig2AMR1(self):
2396 self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
2397 self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
2399 amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
2400 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2401 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
2402 self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
2403 self.assertEqual(0,amr.getNumberOfPatches())
2404 self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
2405 self.assertEqual(2,amr.getSpaceDimension())
2406 amr.addPatch([(1,2),(0,1)],[4,4])
2407 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2408 self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
2409 self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
2410 self.assertEqual(1,amr.getNumberOfPatches())
2411 self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
2412 self.assertEqual(2,amr.getSpaceDimension())
2413 amr[0].addPatch([(2,3),(1,3)],[3,2])
2414 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2415 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2416 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2417 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2418 self.assertEqual(1,amr.getNumberOfPatches())
2419 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2420 self.assertEqual(2,amr.getSpaceDimension())
2421 amr[0].addPatch([(0,2),(3,4)],[3,2])
2422 self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
2423 self.assertEqual(44,amr.getNumberOfCellsRecursiveWithOverlap())
2424 self.assertEqual(39,amr.getNumberOfCellsRecursiveWithoutOverlap())
2425 self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
2426 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2427 self.assertEqual(2,amr.getSpaceDimension())
2429 self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
2430 self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
2431 self.assertEqual(32,amr.getNumberOfCellsRecursiveWithOverlap())
2432 self.assertEqual(29,amr.getNumberOfCellsRecursiveWithoutOverlap())
2433 self.assertEqual(1,amr.getNumberOfPatches())
2434 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2435 self.assertEqual(2,amr.getSpaceDimension())
2438 def testSwig2NonRegressionTestPAL1164(self):
2439 """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
2440 xarr=DataArrayDouble(3,1)
2442 cmesh=MEDCouplingCMesh()
2443 cmesh.setCoords(xarr,xarr,xarr)
2444 mesh=cmesh.buildUnstructured()
2445 f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
2446 f.setName("MyField")
2447 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2448 self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
2449 self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
2450 f.applyLin(2.,0.,0)# here it is OK !
2451 self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
2453 self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,147.]),1e-12))
2456 def testSwig2StructurizeMe1(self):
2457 arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
2458 arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
2459 arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
2460 c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
2461 c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
2462 u=c.buildUnstructured()
2463 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])
2464 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])
2466 u.renumberNodes(np,len(np))
2467 u=MEDCoupling1SGTUMesh(u)
2469 e,d,f=u.structurizeMe()
2470 self.assertTrue(c.isEqual(e,1e-12))
2471 self.assertTrue(d.isEqual(cp))
2472 self.assertTrue(f.isEqual(np))
2475 def testSwig2DenseMatrix1(self):
2476 m0=DenseMatrix(DataArrayDouble([2,3,4,5,1,6]),2,3)
2477 self.assertEqual(m0.getNumberOfRows(),2)
2478 self.assertEqual(m0.getNumberOfCols(),3)
2479 self.assertEqual(m0.getNbOfElems(),6)
2480 ref=m0.getData().getHiddenCppPointer()
2482 self.assertTrue(m0.isEqual(m00,1e-12))
2483 m00.getData().setIJ(0,0,2.1)
2484 self.assertTrue(not m0.isEqual(m00,1e-12))
2485 m00.getData().setIJ(0,0,2.)
2486 self.assertTrue(m0.isEqual(m00,1e-12))
2487 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2489 m000=m0*DataArrayDouble([5,9,3])
2490 self.assertTrue(m000.getData().isEqual(DataArrayDouble([49.,52.]),1e-12))
2493 self.assertTrue(not m0.isEqual(m00,1e-12))
2494 self.assertEqual(m0.getNumberOfRows(),3)
2495 self.assertEqual(m0.getNumberOfCols(),2)
2496 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2497 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2499 self.assertTrue(m0.isEqual(m00,1e-12))
2500 self.assertEqual(ref,m0.getData().getHiddenCppPointer())
2501 self.assertEqual(m0.getNumberOfRows(),2)
2502 self.assertEqual(m0.getNumberOfCols(),3)
2503 self.assertTrue(m0.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2504 #m0np=m0.getData().toNumPyArray() ; m0np=matrix(m0np.reshape(m0.getNumberOfRows(),m0.getNumberOfCols()))
2506 self.assertEqual(m1.getNumberOfRows(),2)
2507 self.assertEqual(m1.getNumberOfCols(),3)
2508 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2509 m11=m0.deepCopy() ; m11+=m1
2510 self.assertEqual(m11.getNumberOfRows(),2)
2511 self.assertEqual(m11.getNumberOfCols(),3)
2512 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2514 self.assertEqual(m11.getNumberOfRows(),2)
2515 self.assertEqual(m11.getNumberOfCols(),3)
2516 self.assertTrue(m11.getData().isEqual(DataArrayDouble([6,9,12,15,3,18]),1e-12))
2518 self.assertEqual(m11.getNumberOfRows(),2)
2519 self.assertEqual(m11.getNumberOfCols(),3)
2520 self.assertTrue(m11.getData().isEqual(DataArrayDouble([4,6,8,10,2,12]),1e-12))
2522 self.assertEqual(m1.getNumberOfRows(),2)
2523 self.assertEqual(m1.getNumberOfCols(),3)
2524 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,3,4,5,1,6]),1e-12))
2526 self.assertEqual(m1.getNumberOfRows(),3)
2527 self.assertEqual(m1.getNumberOfCols(),2)
2528 self.assertTrue(m1.getData().isEqual(DataArrayDouble([2,5,3,1,4,6]),1e-12))
2529 #m1np=m0np.transpose()
2531 self.assertEqual(m2.getNumberOfRows(),2)
2532 self.assertEqual(m2.getNumberOfCols(),2)
2533 self.assertTrue(m2.getData().isEqual(DataArrayDouble([29,37,37,62]),1e-12))
2536 def testSwig2AMR2(self):
2537 """ 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."""
2538 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2539 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2540 MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
2541 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))
2543 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2544 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2545 MEDCouplingIMesh.CondenseFineToCoarse([5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4],coarse)
2546 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))
2548 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2549 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2550 MEDCouplingIMesh.CondenseFineToCoarse([5],fine,[(1,4)],[4],coarse)
2551 self.assertTrue(coarse.isEqual(DataArrayDouble([0,6,22,38,4]),1e-12))
2554 def testSwig2AMR3(self):
2555 """ Test spread of coarse IMesh instance into a fine one, with a factor."""
2556 coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
2557 fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
2558 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7],fine,[(1,4),(2,4)],[4,4])
2559 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))
2561 coarse=DataArrayDouble(175) ; coarse.iota(0) #X=5,Y=7,Z=5
2562 fine=DataArrayDouble(3*2*3*4*4*4) ; fine.iota(0) #X=3,Y=2,Z=3 refined by 4
2563 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5,7,5],fine,[(1,4),(2,4),(1,4)],[4,4,4])
2564 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))
2565 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()
2566 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()
2568 coarse=DataArrayDouble(5) ; coarse.iota(0) #X=5
2569 fine=DataArrayDouble(3*4) ; fine.iota(0) #X=3 refined by 4
2570 MEDCouplingIMesh.SpreadCoarseToFine(coarse,[5],fine,[(1,4)],[4])
2571 self.assertTrue(fine.isEqual(DataArrayDouble([1.,1.,1.,1.,2.,2.,2.,2.,3.,3.,3.,3.]),1e-12))
2574 def testSwig2AMR4(self):
2575 """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."""
2576 im=MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04])
2577 b=im.computeCellCenterOfMass() ; b-=[1.,1.] ; b=b.magnitude()
2578 ids=b.findIdsInRange(0.4,0.7)
2579 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(im) ; f.setName("toto") ; arr=DataArrayDouble(im.getNumberOfCells()) ; arr[:]=0. ; arr[ids]=1. ; f.setArray(arr)
2580 # f.write("test.vti")
2581 amr=MEDCouplingCartesianAMRMesh(MEDCouplingIMesh("mesh",2,[51,51],[0.,0.],[0.04,0.04]))
2582 arr2=DataArrayByte(im.getNumberOfCells()) ; arr2[:]=0 ; arr2[ids]=1
2583 bso=BoxSplittingOptions() ; bso.setEfficiencyGoal(0.5); bso.setEfficiencyThreshold(0.8) ; bso.setMaximumNbOfCellsInPatch(3000) ; bso.setMinimumPatchLength(6) ; bso.setMaximumPatchLength(11)
2584 amr.createPatchesFromCriterion(bso,arr2,[2,2])
2585 m=amr.getImageMesh() ; m=m.buildUnstructured() ; m.changeSpaceDimension(3,1.)
2586 self.assertEqual(12,amr.getNumberOfPatches())
2587 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)]]
2588 for i,bltr in enumerate(exp0):
2589 self.assertEqual(amr[i].getBLTRRange(),bltr)
2591 self.assertAlmostEqual(0.666666666667,amr[3].getMesh().getImageMesh().computeSquareness(),12)
2593 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceToGlobalOfCompactFrmt([(8,32),(4,17)],[(0,24),(2,12)]),[(8,32),(6,16)])
2594 self.assertEqual(MEDCouplingStructuredMesh.ChangeReferenceFromGlobalOfCompactFrmt([(8,32),(4,17)],[(8,32),(6,16)]),[(0,24),(2,12)])
2595 self.assertTrue(amr.getImageMesh().isEqual(im,1e-12))
2596 m=amr.getImageMesh().asSingleCell().build1SGTUnstructured()
2597 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3])))
2598 self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(DataArrayDouble([(0,0),(2,0),(0,2),(2,2)]),1e-12))
2601 def testSwig2AMR5(self):
2602 """ Idem testAMR3, test spread of coarse IMesh instance into a fine one, with a factor, but here ghost is used !"""
2604 coarse=DataArrayDouble(5+2) ; coarse.iota(-1) #X=5 with ghostLev=1
2605 fine=DataArrayDouble(3*4+2) ; fine.iota(1000) #X=3 refined by 4 with ghostLev=1
2606 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5],fine,[(1,4)],[4],1)
2607 self.assertTrue(fine.isEqual(DataArrayDouble([0,1,1,1,1,2,2,2,2,3,3,3,3,4]),1e-12))
2609 MEDCouplingIMesh.CondenseFineToCoarseGhost([5],fine,[(1,4)],[4],coarse,1)
2610 self.assertTrue(coarse.isEqual(DataArrayDouble([-1000.,-999.,4.,8.,12.,-995.,-994.]),1e-12))
2612 coarse=DataArrayDouble((5+2*1)*(7+2*1)) ; coarse.iota(0) #X=5,Y=7 with ghostLev=1
2613 fine=DataArrayDouble((3*4+2*1)*(2*4+2*1)) ; fine.iota(1000) #X=3,Y=2 refined by 4
2614 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[5,7],fine,[(1,4),(2,4)],[4,4],1)
2615 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))
2616 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2618 fine2=DataArrayDouble.Meld(fine,3*fine) ; coarse2=DataArrayDouble.Meld(coarse,3*coarse)
2619 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine,[(1,4),(2,4)],[4,4],coarse,1)
2620 MEDCouplingIMesh.CondenseFineToCoarseGhost([5,7],fine2,[(1,4),(2,4)],[4,4],coarse2,1)
2621 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(MEDCouplingIMesh("",2,DataArrayInt([8,10]),[0.,0.],DataArrayDouble((1.,1.)))) ; f.setArray(coarse) ; f.setName("tutu") ; f.checkConsistencyLight()
2622 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.])
2623 self.assertTrue(coarse.isEqual(coarseExp,1e-12))
2624 self.assertTrue(coarse2[:,0].isEqual(coarseExp,1e-12))
2625 self.assertTrue(coarse2[:,1].isEqual(3*coarseExp,1e-12))
2628 def testSwig2AMR6(self):
2629 """ 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."""
2630 amr=MEDCouplingCartesianAMRMesh("",2,[6,6],[0,0],[1,1])
2631 da=DataArrayDouble((5+2)*(5+2)) ; da.iota() ; da+=0.9
2632 amr.addPatch([(1,4),(2,4)],[4,4])
2633 amr.addPatch([(0,1),(0,1)],[4,4])
2634 amr.addPatch([(4,5),(3,4)],[4,4])
2635 amr.addPatch([(4,5),(1,3)],[4,4])
2636 amr.addPatch([(0,1),(1,4)],[4,4])
2637 da0=DataArrayDouble((3*4+2)*(2*4+2)) ; da0.iota() ; da0[:]+=0.2
2638 da1=DataArrayDouble((1*4+2)*(1*4+2)) ; da1.iota() ; da1[:]+=0.4
2639 da2=DataArrayDouble((1*4+2)*(1*4+2)) ; da2.iota() ; da2[:]+=0.6
2640 da3=DataArrayDouble((1*4+2)*(2*4+2)) ; da3.iota() ; da3[:]+=0.7
2641 da4=DataArrayDouble((1*4+2)*(3*4+2)) ; da4.iota() ; da4[:]+=0.8
2642 self.assertEqual(5,amr.getNumberOfPatches())
2643 l=[da0,da1,da2,da3,da4]
2644 lCpy=[elt.deepCopy() for elt in l]
2645 l2=[DataArrayDouble.Meld(elt,3*elt) for elt in l]
2646 amr.fillCellFieldOnPatchGhostAdv(0,da,1,l,False)
2647 amr.fillCellFieldOnPatchGhostAdv(0,DataArrayDouble.Meld(da,3*da),1,l2,False)
2648 amr.fillCellFieldOnPatchOnlyOnGhostZone(0,da,lCpy[0],1)
2650 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(amr.getImageMesh().buildWithGhost(1)) ; f.setArray(da) ; f.setName("all")
2651 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setMesh(amr[0].getMesh().getImageMesh().buildWithGhost(1)) ; f0.setArray(da0) ; f0.setName("p0") ; f0.checkConsistencyLight()
2652 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(amr[1].getMesh().getImageMesh().buildWithGhost(1)) ; f1.setArray(da1) ; f1.setName("p1") ; f1.checkConsistencyLight()
2653 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(amr[2].getMesh().getImageMesh().buildWithGhost(1)) ; f2.setArray(da2) ; f2.setName("p2") ; f2.checkConsistencyLight()
2654 f3=MEDCouplingFieldDouble(ON_CELLS) ; f3.setMesh(amr[3].getMesh().getImageMesh().buildWithGhost(1)) ; f3.setArray(da3) ; f3.setName("p3") ; f3.checkConsistencyLight()
2655 f4=MEDCouplingFieldDouble(ON_CELLS) ; f4.setMesh(amr[4].getMesh().getImageMesh().buildWithGhost(1)) ; f4.setArray(da4) ; f4.setName("p4") ; f4.checkConsistencyLight()
2657 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])
2658 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])
2659 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2660 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2661 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2662 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2664 g0=amr.retrieveGridsAt(0)
2665 self.assertEqual(1,len(g0))
2666 self.assertTrue(isinstance(g0[0],MEDCouplingCartesianAMRPatchGF))
2667 g1=amr.retrieveGridsAt(1)
2668 self.assertEqual(5,len(g1))
2670 self.assertTrue(isinstance(g1[i],MEDCouplingCartesianAMRPatch))
2674 def testSwig2AMR7(self):
2675 """Idem testSwig2AMR6 except that we are in 1D"""
2676 amr=MEDCouplingCartesianAMRMesh("",1,[6],[0],[1])
2677 da=DataArrayDouble(5+2) ; da.iota() ; da+=0.9
2678 amr.addPatch([(1,4)],[4])
2679 amr.addPatch([(0,1)],[4])
2680 da0=DataArrayDouble(3*4+2) ; da0.iota() ; da0[:]+=0.2
2681 da1=DataArrayDouble(1*4+2) ; da1.iota() ; da1[:]+=0.4
2682 self.assertEqual(2,amr.getNumberOfPatches())
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()
2694 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])
2695 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])
2696 self.assertTrue(da0.isEqual(da0Exp,1e-12))
2697 self.assertTrue(l2[0][:,0].isEqual(da0Exp,1e-12))
2698 self.assertTrue(l2[0][:,1].isEqual(3*da0Exp,1e-12))
2699 self.assertTrue(lCpy[0].isEqual(da0Exp2,1e-12))
2702 def testSwig2AMR8(self):
2703 """This test checks 'basic' operations for ghost update."""
2705 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2706 amr.addPatch([(1,4),(2,4)],[4,4])
2707 amr.addPatch([(4,5),(3,5)],[4,4])
2708 amr.addPatch([(0,1),(4,6)],[4,4])
2709 amr[0].addPatch([(10,12),(5,8)],[2,2])
2710 amr[1].addPatch([(0,1),(0,5)],[2,2])
2711 amr[2].addPatch([(3,4),(0,3)],[2,2])
2712 m=amr.buildMeshFromPatchEnvelop()
2713 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,9,8,10,11])))
2714 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))
2715 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2716 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2718 d=att.getFieldOn(amr,"Field")
2719 self.assertEqual(56,d.getNumberOfTuples())
2720 self.assertEqual(1,d.getNumberOfComponents())
2722 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2723 self.assertEqual(140,d0.getNumberOfTuples())
2724 self.assertEqual(1,d0.getNumberOfComponents())
2726 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2727 self.assertEqual(60,d1.getNumberOfTuples())
2728 self.assertEqual(1,d1.getNumberOfComponents())
2730 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2731 self.assertEqual(60,d2.getNumberOfTuples())
2732 self.assertEqual(1,d2.getNumberOfComponents())
2734 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2735 self.assertEqual(48,d00.getNumberOfTuples())
2736 self.assertEqual(1,d00.getNumberOfComponents())
2737 d00.iota() ; d00+=0.5
2738 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2739 self.assertEqual(48,d10.getNumberOfTuples())
2740 self.assertEqual(1,d10.getNumberOfComponents())
2741 d10.iota() ; d10+=0.6
2742 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2743 self.assertEqual(32,d20.getNumberOfTuples())
2744 self.assertEqual(1,d20.getNumberOfComponents())
2745 d20.iota() ; d20+=0.7
2746 f=att.buildCellFieldOnRecurseWithoutOverlapWithoutGhost(amr,"Field")
2747 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])
2748 arrExp.setName("Field") ; arrExp.setInfoOnComponents(["X"])
2749 self.assertTrue(f.getArray().isEqual(arrExp,1e-12))
2750 m=MEDCoupling1SGTUMesh(f.getMesh())
2751 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])))
2752 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))
2753 # the test is here ! To be called after iteration with no remesh
2754 att.synchronizeAllGhostZones()
2755 f=att.buildCellFieldOnWithGhost(amr,"Field") ; f.checkConsistencyLight()
2756 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))
2757 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2758 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2759 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2760 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2761 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2762 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2763 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))
2764 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))
2765 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))
2766 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))
2767 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))
2768 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))
2769 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))
2772 def testSwig2AMR9(self):
2773 """ Equivalent to testSwig2AMR8 except that here the ghost level is 2 !"""
2775 amr=MEDCouplingCartesianAMRMesh("",2,[6,7],[0,0],[1,1])
2776 amr.addPatch([(1,4),(2,4)],[4,4])
2777 amr.addPatch([(4,5),(3,5)],[4,4])
2778 amr.addPatch([(0,1),(4,6)],[4,4])
2779 amr[0].addPatch([(10,12),(5,8)],[2,2])
2780 amr[1].addPatch([(0,1),(0,5)],[2,2])
2781 amr[2].addPatch([(3,4),(0,3)],[2,2])
2782 self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
2783 att=MEDCouplingAMRAttribute(amr,[("Field",["X"])],ghostSz)
2785 d=att.getFieldOn(amr,"Field")
2786 self.assertEqual(90,d.getNumberOfTuples())
2787 self.assertEqual(1,d.getNumberOfComponents())
2789 d0=att.getFieldOn(amr[0].getMesh(),"Field")
2790 self.assertEqual(192,d0.getNumberOfTuples())
2791 self.assertEqual(1,d0.getNumberOfComponents())
2793 d1=att.getFieldOn(amr[1].getMesh(),"Field")
2794 self.assertEqual(96,d1.getNumberOfTuples())
2795 self.assertEqual(1,d1.getNumberOfComponents())
2797 d2=att.getFieldOn(amr[2].getMesh(),"Field")
2798 self.assertEqual(96,d2.getNumberOfTuples())
2799 self.assertEqual(1,d2.getNumberOfComponents())
2801 d00=att.getFieldOn(amr[0][0].getMesh(),"Field")
2802 self.assertEqual(80,d00.getNumberOfTuples())
2803 self.assertEqual(1,d00.getNumberOfComponents())
2804 d00.iota() ; d00+=0.5
2805 d10=att.getFieldOn(amr[1][0].getMesh(),"Field")
2806 self.assertEqual(84,d10.getNumberOfTuples())
2807 self.assertEqual(1,d10.getNumberOfComponents())
2808 d10.iota() ; d10+=0.6
2809 d20=att.getFieldOn(amr[2][0].getMesh(),"Field")
2810 self.assertEqual(60,d20.getNumberOfTuples())
2811 self.assertEqual(1,d20.getNumberOfComponents())
2812 d20.iota() ; d20+=0.7
2813 # the test is here ! To be called after iteration with no remesh
2814 att.synchronizeAllGhostZones()
2815 f=att.buildCellFieldOnWithGhost(amr,"Field")
2816 f0=att.buildCellFieldOnWithGhost(amr[0].getMesh(),"Field")
2817 f1=att.buildCellFieldOnWithGhost(amr[1].getMesh(),"Field")
2818 f2=att.buildCellFieldOnWithGhost(amr[2].getMesh(),"Field")
2819 f00=att.buildCellFieldOnWithGhost(amr[0][0].getMesh(),"Field")
2820 f10=att.buildCellFieldOnWithGhost(amr[1][0].getMesh(),"Field")
2821 f20=att.buildCellFieldOnWithGhost(amr[2][0].getMesh(),"Field")
2822 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))
2823 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))
2824 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))
2825 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))
2826 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))
2827 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))
2828 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],1).isEqual(DataArrayInt([0,4])))
2829 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([3],2).isEqual(DataArrayInt([0,1,5,6])))
2830 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],1).isEqual(DataArrayInt([0,6,49,55])))
2831 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6],2).isEqual(DataArrayInt([0,8,10,16,73,79,81,89])))
2832 self.assertTrue(MEDCouplingStructuredMesh.ComputeCornersGhost([5,6,3],1).isEqual(DataArrayInt([0,6,49,55,224,230,273,279])))
2833 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])))
2836 def testSwig2AMR10(self):
2837 """ 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."""
2839 amr=MEDCouplingCartesianAMRMesh("",2,[11,11],[0,0],[0.1,0.1])
2840 amr.addPatch([(3,8),(0,3)],[2,2])
2841 amr[0].addPatch([(0,10),(3,6)],[3,3])
2842 amr[0].addPatch([(2,6),(0,3)],[3,3])
2843 amr[0].addPatch([(6,10),(2,3)],[3,3])
2844 amr.addPatch([(3,8),(3,6)],[2,2])
2845 amr[1].addPatch([(0,4),(0,6)],[3,3])
2846 amr[1].addPatch([(7,10),(0,4)],[3,3])
2847 amr[1].addPatch([(4,7),(0,3)],[3,3])
2848 amr[1].addPatch([(4,7),(3,6)],[3,3])
2849 amr.addPatch([(0,3),(6,10)],[2,2])
2850 self.assertEqual(([(30,39),(27,36)],[6,6]),amr[1][3].getMesh().positionRelativeToGodFather())
2851 self.assertEqual(([(6,16),(6,12)],[2,2]),amr[1].getMesh().positionRelativeToGodFather())
2852 self.assertTrue(not MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(6,16),(6,12)]))
2853 self.assertTrue(MEDCouplingStructuredMesh.AreRangesIntersect([(30,39),(27,36)],[(28,32),(35,37)]))
2854 da=DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.])
2855 MEDCouplingStructuredMesh.AssignPartOfFieldOfDoubleUsing([3,4],da,[(1,3),(2,3)],DataArrayDouble([7.7,8.8]))
2856 self.assertTrue(da.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.7,8.8,9.,10.,11.]),1e-12))
2857 att=MEDCouplingAMRAttribute(amr,[("YY",1)],szGhost)
2858 att.spillNatures([IntensiveMaximum])
2860 yy=att.getFieldOn(amr,"YY") ; yy.iota(0.01)
2861 yy=att.getFieldOn(amr[0].getMesh(),"YY") ; yy.iota(0.02)
2862 yy=att.getFieldOn(amr[1].getMesh(),"YY") ; yy.iota(0.03)
2863 yy=att.getFieldOn(amr[0][0].getMesh(),"YY") ; yy.iota(0.04)
2864 yy=att.getFieldOn(amr[0][1].getMesh(),"YY") ; yy.iota(0.05)
2865 yy=att.getFieldOn(amr[0][2].getMesh(),"YY") ; yy.iota(0.06)
2866 yy=att.getFieldOn(amr[1][0].getMesh(),"YY") ; yy.iota(0.07)
2867 yy=att.getFieldOn(amr[1][1].getMesh(),"YY") ; yy.iota(0.08)
2868 yy=att.getFieldOn(amr[1][2].getMesh(),"YY") ; yy.iota(0.09)
2869 yy=att.getFieldOn(amr[1][3].getMesh(),"YY") ; yy.iota(0.10)
2870 yy=att.getFieldOn(amr[2].getMesh(),"YY") ; yy.iota(0.11)
2871 att2=att.deepCopy() ; att3=att2.deepCopy() ; att4=att3.deepCopy() ; att5=att4.deepCopy() ; att6=att5.deepCopy()
2873 att.synchronizeFineToCoarseBetween(2,1)
2875 for pos in [(),(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(1,3)]:
2876 self.assertTrue(att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2878 for pos in [(0,),(1,)]:
2879 self.assertTrue(not att.getFieldOn(att.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2881 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))
2882 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))
2885 att2.synchronizeAllGhostZonesOfDirectChidrenOf(att2.getMyGodFather())
2886 ### 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.
2887 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])
2888 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((2,)),"YY").isEqualWithoutConsideringStr(exp2,1e-12))
2889 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])
2890 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((1,)),"YY").isEqualWithoutConsideringStr(exp3,1e-12))
2891 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])
2892 self.assertTrue(att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition((0,)),"YY").isEqualWithoutConsideringStr(exp4,1e-12))
2893 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)]:
2894 vals=att2.getFieldOn(att2.getMyGodFather().getMeshAtPosition(pos),"YY")
2895 l=vals.getNumberOfTuples()
2896 exps=DataArrayDouble(l) ; exps.iota(iot)
2897 self.assertTrue(vals.isEqualWithoutConsideringStr(exps,1e-12))
2901 att3.synchronizeCoarseToFineBetween(1,2)
2903 for pos in [(),(0,),(1,),(2,)]:
2904 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2906 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])
2907 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp5,1e-12))
2908 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])
2909 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp6,1e-12))
2910 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])
2911 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp7,1e-12))
2912 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])
2913 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp8,1e-12))
2914 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])
2915 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp9,1e-12))
2916 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])
2917 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp10,1e-12))
2918 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])
2919 self.assertTrue(att3.getFieldOn(att3.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp11,1e-12))
2922 att4.synchronizeAllGhostZonesAtASpecifiedLevel(2)
2923 for pos in [(),(0,),(1,),(2,)]:
2924 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2926 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])
2927 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp12,1e-12))
2928 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]])
2929 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp13,1e-12))
2930 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])
2931 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp14,1e-12))
2932 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])
2933 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp15,1e-12))
2934 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])
2935 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp16,1e-12))
2936 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])
2937 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp17,1e-12))
2938 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])
2939 self.assertTrue(att4.getFieldOn(att4.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp18,1e-12))
2942 att5.synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(2)
2943 for pos in [(),(0,),(1,),(2,)]:
2944 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition(pos),"YY").isEqual(att6.getFieldOn(att6.getMyGodFather().getMeshAtPosition(pos),"YY"),1e-12))
2946 att5.buildCellFieldOnWithGhost(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY")
2947 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])
2948 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,0)),"YY").isEqualWithoutConsideringStr(exp19,1e-12))
2949 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])
2950 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,1)),"YY").isEqualWithoutConsideringStr(exp20,1e-12))
2951 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])
2952 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((0,2)),"YY").isEqualWithoutConsideringStr(exp21,1e-12))
2953 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])
2954 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,0)),"YY").isEqualWithoutConsideringStr(exp22,1e-12))
2955 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])
2956 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,1)),"YY").isEqualWithoutConsideringStr(exp23,1e-12))
2957 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])
2958 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,2)),"YY").isEqualWithoutConsideringStr(exp24,1e-12))
2959 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])
2960 self.assertTrue(att5.getFieldOn(att5.getMyGodFather().getMeshAtPosition((1,3)),"YY").isEqualWithoutConsideringStr(exp25,1e-12))
2963 def testSwig2AMR11(self):
2964 """ Some tests in 3D with CondenseFineToCoarseGhost and SpreadCoarseToFineGhost"""
2965 coarse=DataArrayDouble((6+4)*(7+4)*(5+4)) ; coarse.iota()
2966 fine=DataArrayDouble((4*2+4)*(2*3+4)*(3*4+4))
2967 MEDCouplingIMesh.SpreadCoarseToFineGhost(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
2968 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.])
2969 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.])
2970 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.])
2971 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.])
2972 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.])
2973 exp=DataArrayDouble.Aggregate([exp0,exp0,exp1,exp1,exp1,exp1,exp2,exp2,exp2,exp2,exp3,exp3,exp3,exp3,exp4,exp4])
2974 self.assertTrue(fine.isEqual(exp,1e-12))
2978 MEDCouplingIMesh.CondenseFineToCoarseGhost([6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],coarse,2)
2979 amr=MEDCouplingCartesianAMRMesh("mesh",3,[7,8,6],[0.,0.,0.],[1.,1.,1.])
2980 amr.addPatch([(1,5),(2,4),(1,4)],[2,3,4])
2981 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
2983 exp1=DataArrayDouble(990) ; exp1.iota(0.5)
2984 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])
2985 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.])
2987 self.assertTrue(coarse.isEqual(exp1,1e-12))
2989 MEDCouplingStructuredMesh.MultiplyPartOf([10,11,9],[(3,7),(4,6),(3,6)],1/24.,coarse)
2990 exp2=DataArrayDouble(990) ; exp2.iota(0.5)
2992 self.assertTrue(coarse.isEqual(exp2,1e-12))
2994 coarse.iota(0.5) ; fine.iota(0.1)
2995 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
2997 coarse.iota(0.5) ; fine.iota(0.1)
2998 MEDCouplingIMesh.SpreadCoarseToFineGhostZone(coarse,[6,7,5],fine,[(1,5),(2,4),(1,4)],[2,3,4],2)
2999 exp00=DataArrayDouble.Aggregate([exp0,exp0]) ; exp00+=0.5
3000 self.assertTrue(fine[:240].isEqual(exp00,1e-12))
3001 exp44=DataArrayDouble.Aggregate([exp4,exp4]) ; exp44+=0.5
3002 self.assertTrue(fine[-240:].isEqual(exp44,1e-12))
3003 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))
3006 def testSwig2AMR12(self):
3007 """ This test check the MEDCouplingAMRAttribute.projectTo method."""
3008 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3009 amr0.addPatch([(3,8),(0,3)],[2,2])
3010 amr0.addPatch([(3,8),(3,6)],[2,2])
3011 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3013 att0.getFieldOn(amr0,"YY").iota(0.01)
3014 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3015 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3016 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3017 amr1.addPatch([(2,5),(1,4)],[2,2])
3018 att1=att0.projectTo(amr1)
3019 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqualWithoutConsideringStr(att0.getFieldOn(amr0,"YY"),1e-12))
3020 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))
3022 amr0=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3023 amr0.addPatch([(2,5),(2,7)],[2,2])
3024 amr0.addPatch([(5,8),(2,7)],[2,2])
3025 att0=MEDCouplingAMRAttribute(amr0,[("YY",1)],2)
3027 att0.getFieldOn(amr0,"YY").iota(0.01)
3028 att0.getFieldOn(amr0[0].getMesh(),"YY").iota(0.02)
3029 att0.getFieldOn(amr0[1].getMesh(),"YY").iota(0.03)
3030 amr1=MEDCouplingCartesianAMRMesh("mesh",2,[11,11],[0.,0.],[1.,1.])
3031 amr1.addPatch([(3,6),(2,7)],[2,2])
3032 amr1.addPatch([(6,9),(2,7)],[2,2])
3033 att1=att0.projectTo(amr1)
3034 self.assertTrue(att1.getFieldOn(amr1,"YY").isEqual(att0.getFieldOn(amr0,"YY"),1e-12))
3035 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))
3036 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))
3039 def testSwig2AMR13(self):
3040 """ non regression test"""
3041 for fact,len1,len2 in [([2,2],64,48),([3,3],100,70),([4,4],144,96)]:
3042 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3043 amr.addPatch([(1,3),(0,2)],fact)
3044 amr.addPatch([(1,3),(3,4)],fact)
3045 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3047 att.getFieldOn(amr,"YY").iota(0.1)
3048 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3049 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3050 att.synchronizeAllGhostZonesOfDirectChidrenOf(amr)
3051 exp=DataArrayDouble(64) ; exp.iota(0.1)
3052 self.assertTrue(att.getFieldOn(amr,"YY").isEqualWithoutConsideringStr(exp,1e-12))
3053 exp0=DataArrayDouble(len1) ; exp0.iota(0.2)
3054 self.assertTrue(att.getFieldOn(amr[0].getMesh(),"YY").isEqualWithoutConsideringStr(exp0,1e-12))
3055 exp1=DataArrayDouble(len2) ; exp1.iota(0.3)
3056 self.assertTrue(att.getFieldOn(amr[1].getMesh(),"YY").isEqualWithoutConsideringStr(exp1,1e-12))
3060 def testSwig2AMR14(self):
3061 """ non regression linked to VTHB write."""
3062 fact=[2,2] ; fact2=[3,3]
3063 amr=MEDCouplingCartesianAMRMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
3064 amr.addPatch([(1,3),(0,2)],fact)
3065 amr.addPatch([(1,3),(3,4)],fact)
3066 amr[0].addPatch([(1,3),(1,3)],fact2)
3067 amr[1].addPatch([(1,3),(1,2)],fact2)
3068 att=MEDCouplingAMRAttribute(amr,[("YY",1)],2)
3070 att.getFieldOn(amr,"YY").iota(0.1)
3071 att.getFieldOn(amr[0].getMesh(),"YY").iota(0.2)
3072 att.getFieldOn(amr[1].getMesh(),"YY").iota(0.3)
3073 att.getFieldOn(amr[0][0].getMesh(),"YY").iota(0.4)
3074 att.getFieldOn(amr[1][0].getMesh(),"YY").iota(0.5)
3075 self.assertEqual(amr[0].getBLTRRangeRelativeToGF(),[(2,6),(0,4)])
3076 self.assertEqual(amr[1].getBLTRRangeRelativeToGF(),[(2,6),(6,8)])
3077 self.assertEqual(amr[0][0].getBLTRRangeRelativeToGF(),[(9,15),(3,9)])
3078 self.assertEqual(amr[1][0].getBLTRRangeRelativeToGF(),[(9,15),(21,24)])
3081 def testOrderConsecutiveCells1D1(self):
3082 """A line in several unconnected pieces:"""
3083 m2 = MEDCouplingUMesh.New("bla", 1)
3084 c = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,4,
3085 NORM_SEG3,5,7,6, NORM_SEG3,7,9,8, NORM_SEG2,9,10,
3086 NORM_SEG2,11,12,NORM_SEG2,12,13,
3088 cI = DataArrayInt([0,3,7,10,14,18,21,24,27,30])
3089 coords2 = DataArrayDouble([float(i) for i in range(32)], 16, 2)
3090 m2.setCoords(coords2);
3091 m2.setConnectivity(c, cI);
3092 m2.checkConsistency(1.0e-8);
3095 m2.renumberCells(DataArrayInt([0,3,6,8,1,4,7,5,2]), True);
3096 res = m2.orderConsecutiveCells1D()
3097 expRes = [0,3,6,8,1,4,2,7,5]
3098 self.assertEqual(m2.getNumberOfCells(),res.getNumberOfTuples())
3099 self.assertEqual(expRes, res.getValues())
3101 # A closed line (should also work)
3102 m3 = MEDCouplingUMesh.New("bla3", 1)
3103 conn3A = DataArrayInt([NORM_SEG2,0,1,NORM_SEG3,1,3,2, NORM_SEG2,3,0])
3104 coord3 = coords2[0:5]
3108 m3.setCoords(coord3)
3109 m3.setConnectivity(conn3A, cI)
3110 m3.checkConsistency(1.0e-8)
3111 res2 = m3.orderConsecutiveCells1D()
3113 self.assertEqual(m3.getNumberOfCells(),res2.getNumberOfTuples())
3114 self.assertEqual(expRes2, res2.getValues())
3117 def testDADApplyFuncOnThis1(self):
3118 d=DataArrayDouble(5) ; d.iota(0.)
3119 d.applyFuncOnThis("2*x+1")
3120 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.]),1e-12))
3121 d=DataArrayDouble(6) ; d.iota(0.) ; d.rearrange(2)
3122 d.applyFuncOnThis("2*x+1")
3123 self.assertTrue(d.isEqual(DataArrayDouble([1.,3.,5.,7.,9.,11.],3,2),1e-12))
3124 d.applyFuncOnThis("1+2*3")
3125 self.assertTrue(d.isEqual(DataArrayDouble([(7.,7.),(7.,7.),(7.,7.)]),1e-12))
3128 def testSwig2PointSetComputeFetchedNodeIds1(self):
3129 arr=DataArrayDouble(6) ; arr.iota()
3130 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3131 m=m.buildUnstructured()
3132 m0=m[[0,1,5,6,25,26,30,31,124]]
3133 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])
3134 self.assertTrue(m0.computeFetchedNodeIds().isEqual(ref))
3135 self.assertTrue(MEDCoupling1SGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3136 self.assertEqual(m0.getAllGeoTypes(),[NORM_HEXA8])
3137 m0.convertAllToPoly()
3138 self.assertEqual(m0.getAllGeoTypes(),[NORM_POLYHED])
3139 self.assertTrue(MEDCoupling1DGTUMesh(m0).computeFetchedNodeIds().isEqual(ref))
3142 def testSwig2PartDefinition1(self):
3143 pd=PartDefinition.New(5,22,3)
3144 self.assertTrue(isinstance(pd,SlicePartDefinition))
3145 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3146 self.assertEqual(pd.getNumberOfElems(),6)
3147 self.assertEqual(pd.getEffectiveStop(),23)
3148 pd=PartDefinition.New(5,23,3)
3149 self.assertTrue(isinstance(pd,SlicePartDefinition))
3150 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20])))
3151 self.assertEqual(pd.getNumberOfElems(),6)
3152 self.assertEqual(pd.getEffectiveStop(),23)
3153 self.assertEqual(pd.getSlice(),slice(5,23,3))
3154 pd=PartDefinition.New(5,22,1)
3155 self.assertTrue(isinstance(pd,SlicePartDefinition))
3156 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3157 self.assertEqual(pd.getNumberOfElems(),17)
3158 self.assertEqual(pd.getEffectiveStop(),22)
3159 pd=PartDefinition.New(5,23,3)+PartDefinition.New(23,27,3)
3160 self.assertTrue(isinstance(pd,SlicePartDefinition))
3161 self.assertEqual(pd.getNumberOfElems(),8)
3162 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,8,11,14,17,20,23,26])))
3163 self.assertEqual(pd.getEffectiveStop(),29)
3164 pd=SlicePartDefinition(5,22,1)
3165 self.assertTrue(isinstance(pd,SlicePartDefinition))
3166 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])))
3167 self.assertEqual(pd.getNumberOfElems(),17)
3168 self.assertEqual(pd.getEffectiveStop(),22)
3169 d=DataArrayInt([2,4,5,6,10])
3170 pd=PartDefinition.New(d)
3171 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3172 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3173 pd=DataArrayPartDefinition(d)
3174 self.assertEqual(pd.toDAI().getHiddenCppPointer(),d.getHiddenCppPointer())
3175 pd=DataArrayPartDefinition(d)+DataArrayPartDefinition(DataArrayInt([12,14,20]))
3176 self.assertTrue(isinstance(pd,DataArrayPartDefinition))
3177 self.assertEqual(pd.getNumberOfElems(),8)
3178 self.assertTrue(pd.toDAI().isEqual(DataArrayInt([2,4,5,6,10,12,14,20])))
3181 def testSwig2SortEachPairToMakeALinkedList1(self):
3182 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)])
3183 d.sortEachPairToMakeALinkedList()
3184 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)])))
3185 d=DataArrayInt([(0,2),(1,2),(1,3)])
3186 d.sortEachPairToMakeALinkedList()
3187 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3188 d=DataArrayInt([(0,2),(1,2),(3,1)])
3189 d.sortEachPairToMakeALinkedList()
3190 self.assertTrue(d.isEqual(DataArrayInt([(0,2),(2,1),(1,3)])))
3191 d=DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])
3192 d.sortEachPairToMakeALinkedList()
3193 self.assertTrue(d.isEqual(DataArrayInt([(8,6062),(6062,472),(472,6292),(6292,960)])))
3196 def testSwig2DAIIsRange(self):
3197 d=DataArrayInt([2,6,10])
3200 self.assertEqual(b,slice(2,11,4))
3201 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3203 d=DataArrayInt([2,7,10])
3205 self.assertTrue(not a)
3206 self.assertTrue(b is None)
3208 d=DataArrayInt([22,17,12])
3211 self.assertEqual(b,slice(22,11,-5))
3212 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3214 d=DataArrayInt([22,16,12])
3216 self.assertTrue(not a)
3217 self.assertTrue(b is None)
3219 d=DataArrayInt([33])
3222 self.assertEqual(b,slice(33,34,1))
3223 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3228 self.assertEqual(b,slice(0,0,1))
3229 self.assertTrue(DataArrayInt.Range(b.start,b.stop,b.step).isEqual(d))
3231 d=DataArrayInt([2,6,10,2])
3233 self.assertTrue(not a)
3234 self.assertTrue(b is None)
3237 def testSwig2PartDefinitionComposeWith1(self):
3238 f=PartDefinition.New(DataArrayInt([0,1,2,3,6,7,8,9]))
3239 g=PartDefinition.New(4,14,1)
3241 self.assertTrue(g2.isEqual(g)[0])
3243 self.assertTrue(isinstance(h,DataArrayPartDefinition))
3244 self.assertTrue(h.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3245 f2=f.tryToSimplify()
3246 g2=g.tryToSimplify()
3247 self.assertEqual(f2.getHiddenCppPointer(),f.getHiddenCppPointer())# same because no simplification due to content of array
3248 self.assertEqual(g2.getHiddenCppPointer(),g.getHiddenCppPointer())# same because no simplification linked to type of PartDef
3249 p=PartDefinition.New(DataArrayInt([2,6,10]))
3250 p2=p.tryToSimplify()
3251 self.assertNotEqual(p2.getHiddenCppPointer(),p.getHiddenCppPointer())
3252 self.assertTrue(isinstance(p2,SlicePartDefinition))
3253 self.assertEqual(p2.getSlice(),slice(2,11,4))
3254 self.assertTrue(p2.isEqual(SlicePartDefinition(2,11,4))[0])
3255 self.assertTrue(p2.isEqual(p2.deepCopy())[0])
3256 self.assertTrue(not p2.isEqual(SlicePartDefinition(1,11,4))[0])
3257 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,10,4))[0])
3258 self.assertTrue(not p2.isEqual(SlicePartDefinition(2,11,3))[0])
3261 def testSwig2DAIGetIdsStrictlyNegative1(self):
3262 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3263 self.assertTrue(d.findIdsStrictlyNegative().isEqual(DataArrayInt([1,2,6])))
3266 def testSwig2DAIReplaceOneValByInThis1(self):
3267 d=DataArrayInt([4,-5,-1,0,-5,99,-7,5])
3268 d.changeValue(-5,900)
3269 self.assertTrue(d.isEqual(DataArrayInt([4,900,-1,0,900,99,-7,5])))
3272 def testSwig2DAIGetMinMaxValues1(self):
3273 d=DataArrayInt([4,-5,-1,0,3,99,-7])
3274 a,b=d.getMinMaxValues()
3275 self.assertEqual(a,-7)
3276 self.assertEqual(b,99)
3279 def testSwig2DAIBuildUniqueNotSorted1(self):
3280 d=DataArrayInt([-5,3,2,-1,2,3,-6,4,2,-5,3,7])
3281 self.assertTrue(d.buildUniqueNotSorted().isEqual(DataArrayInt([-5,3,2,-1,-6,4,7])))
3284 def testSwig2UMeshChangeOrientationOfCells1(self):
3285 """ Here testing changeOrientationOfCell method on unstructured meshes lying on no coords."""
3286 m=MEDCouplingUMesh("mesh",1)
3287 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])
3288 cI=DataArrayInt([0,3,6,10,14,17,22,27])
3289 m.setConnectivity(c,cI)
3290 m.changeOrientationOfCells()
3291 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])))
3292 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3294 m=MEDCouplingUMesh("mesh",2)
3295 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])
3296 cI=DataArrayInt([0,4,9,15,22,31,42])
3297 m.setConnectivity(c,cI)
3298 m.changeOrientationOfCells()
3299 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])))
3300 self.assertTrue(m.getNodalConnectivityIndex().isEqual(cI))
3303 def testSwig2StructuredMeshCellLocation1(self):
3305 arrX=DataArrayDouble(5) ; arrX.iota()
3306 arrY=DataArrayDouble(4) ; arrY.iota()
3307 arrZ=DataArrayDouble(3) ; arrZ.iota()
3308 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3310 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)]
3311 self.assertEqual(24,m.getNumberOfCells())
3312 for i in range(m.getNumberOfCells()):
3313 li.append(m.getLocationFromCellId(i))
3315 self.assertEqual(liExp3D,li)
3316 self.assertRaises(InterpKernelException,m.getLocationFromCellId,24)
3317 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3319 arrX=DataArrayDouble(5) ; arrX.iota()
3320 arrY=DataArrayDouble(4) ; arrY.iota()
3321 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3323 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)]
3324 self.assertEqual(12,m.getNumberOfCells())
3325 for i in range(m.getNumberOfCells()):
3326 li.append(m.getLocationFromCellId(i))
3328 self.assertEqual(liExp2D,li)
3329 self.assertRaises(InterpKernelException,m.getLocationFromCellId,12)
3330 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3332 arrX=DataArrayDouble(5) ; arrX.iota()
3333 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3334 self.assertEqual(4,m.getNumberOfCells())
3335 for i in range(m.getNumberOfCells()):
3336 self.assertEqual((i,),m.getLocationFromCellId(i))
3338 self.assertRaises(InterpKernelException,m.getLocationFromCellId,4)
3339 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3342 def testSwig2StructuredMeshNodeLocation1(self):
3344 arrX=DataArrayDouble(5) ; arrX.iota()
3345 arrY=DataArrayDouble(4) ; arrY.iota()
3346 arrZ=DataArrayDouble(3) ; arrZ.iota()
3347 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ)
3349 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)]
3350 self.assertEqual(60,m.getNumberOfNodes())
3351 for i in range(m.getNumberOfNodes()):
3352 li.append(m.getLocationFromNodeId(i))
3354 self.assertEqual(liExp3D,li)
3355 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,60)
3356 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3358 arrX=DataArrayDouble(5) ; arrX.iota()
3359 arrY=DataArrayDouble(4) ; arrY.iota()
3360 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY)
3362 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)]
3363 self.assertEqual(20,m.getNumberOfNodes())
3364 for i in range(m.getNumberOfNodes()):
3365 li.append(m.getLocationFromNodeId(i))
3367 self.assertEqual(liExp2D,li)
3368 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,20)
3369 self.assertRaises(InterpKernelException,m.getLocationFromNodeId,-1)
3371 arrX=DataArrayDouble(5) ; arrX.iota()
3372 m=MEDCouplingCMesh() ; m.setCoords(arrX)
3373 self.assertEqual(5,m.getNumberOfNodes())
3374 for i in range(m.getNumberOfNodes()):
3375 self.assertEqual((i,),m.getLocationFromNodeId(i))
3377 self.assertRaises(InterpKernelException,m.getLocationFromCellId,5)
3378 self.assertRaises(InterpKernelException,m.getLocationFromCellId,-1)
3381 def testSwig2DataArrayPrintNotTooLong1(self):
3382 """ Now that DataArrayDouble and DataArrayInt and pickelized they can appear in YACS ports. Avoid to have too heavy string representation of them."""
3383 d=DataArrayDouble(2000) ; d.iota() ; d.rearrange(2)
3384 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3385 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3386 self.assertEqual(st1,st2)
3388 d=DataArrayDouble(2002) ; d.iota() ; d.rearrange(2)
3389 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3390 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3391 self.assertEqual(st1,st2)
3392 self.assertIn(len(st2), list(range(0, 1000))) # no more than 1000 characters
3393 ## Now for DataArrayInt
3394 d=DataArrayInt(2000) ; d.iota() ; d.rearrange(2)
3395 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3396 self.assertEqual(st0,st1) # 1000 tuples ( >=0 and <= 1000) -> str(d)==d.repr()
3397 self.assertEqual(st1,st2)
3399 d=DataArrayInt(2002) ; d.iota() ; d.rearrange(2)
3400 st0=d.repr() ; st1=str(d) ; st2=d.reprNotTooLong()
3401 self.assertNotEqual(st0,st1) # 1001 tuples ( > 1000) -> str(d)==d.reprNotTooLong()
3402 self.assertEqual(st1,st2)
3403 self.assertIn(len(st2), list(range(0, 1000))) # no more than 1000 characters
3406 def testExtrudedMeshWithoutZipCoords1(self):
3407 """This test checks that MEDCouplingUMesh.buildExtrudedMesh do not perform a zipCoords."""
3408 arr=DataArrayDouble([(0.,0.),(1.,0.),(2.,0.),(3.,0.)])
3409 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(arr)
3411 m.insertNextCell(NORM_SEG2,[1,2])
3412 arr1D=DataArrayDouble([(0.,0.),(0.,1.5),(0.,2.)])
3413 m1D=MEDCouplingUMesh("mesh1D",1) ; m1D.setCoords(arr1D)
3415 m1D.insertNextCell(NORM_SEG2,[0,1])
3416 m1D.insertNextCell(NORM_SEG2,[1,2])
3417 m2D=m.buildExtrudedMesh(m1D,0)
3418 self.assertEqual(m.getCoords().getHiddenCppPointer(),m2D.getCoords().getHiddenCppPointer())
3419 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)])
3420 self.assertTrue(m.getCoords().isEqual(coo,1e-12))
3421 self.assertTrue(m2D.getNodalConnectivity().isEqual(DataArrayInt([4,1,2,6,5,4,5,6,10,9])))
3422 self.assertTrue(m2D.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10])))
3425 def testPointSetAreAllNodesFetched1(self):
3426 m=MEDCouplingCMesh() ; arr=DataArrayDouble(10) ; arr.iota()
3427 m.setCoords(arr,arr)
3428 m=m.buildUnstructured()
3429 self.assertTrue(m.areAllNodesFetched())
3431 self.assertTrue(not m2.areAllNodesFetched())
3433 self.assertTrue(m2.areAllNodesFetched())
3436 def testMEDCouplingPointSetComputeDiameterField1(self):
3437 arrX=DataArrayDouble([0.,1.1,1.7,2.1])
3438 arrY=DataArrayDouble([0.,0.7,0.8,1.9])
3439 arrZ=DataArrayDouble([0.,1.3,2.1,2.4])
3440 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
3441 f=m.computeDiameterField()
3442 f.checkConsistencyLight()
3443 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])
3444 self.assertTrue(exp.isEqual(f.getArray(),1e-12))
3447 m2.simplexize(PLANAR_FACE_5)
3448 m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
3449 f=m3.computeDiameterField()
3450 f.checkConsistencyLight()
3451 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])
3452 self.assertTrue(exp2.isEqual(f.getArray(),1e-12))
3453 # TRI3 - spacedim = 2
3454 coo=DataArrayDouble([(1,1),(5,1.9),(2.1,3)])
3455 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3456 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3457 m.setNodalConnectivity(DataArrayInt(c))
3458 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3459 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3460 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3461 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3462 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3463 # TRI3 - spacedim = 3
3464 coo=DataArrayDouble([(1.3198537928820775,1.0991902391274959,-0.028645697595823361),(5.2486835106806335,2.2234012799688281,0.30368935050077939),(2.2973688139447361,3.1572023778066649,0.10937756365410012)])
3465 m=MEDCoupling1SGTUMesh("mesh",NORM_TRI3) ; m.setCoords(coo)
3466 for c in [[0,1,2],[0,2,1],[2,1,0]]:
3467 m.setNodalConnectivity(DataArrayInt(c))
3468 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],4.1,12)
3469 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3470 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],4.1,12)
3471 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3472 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],4.1,12)
3473 # QUAD4 - spacedim = 2
3474 coo=DataArrayDouble([(0,2),(2,0),(6,4),(4,9)])
3475 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3477 for delta in range(4):
3478 c = [(elt + delta) % 4 for elt in range(4)]
3479 m.setNodalConnectivity(DataArrayInt(c))
3480 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3481 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3482 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3483 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3484 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3486 m.setNodalConnectivity(DataArrayInt(c))
3487 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3488 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3489 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3490 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3491 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3492 # QUAD4 - spacedim = 3
3493 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)])
3494 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.setCoords(coo)
3495 for delta in range(4):
3496 c = [(elt + delta) % 4 for elt in range(4)]
3497 m.setNodalConnectivity(DataArrayInt(c))
3498 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3499 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3500 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3501 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3502 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3504 m.setNodalConnectivity(DataArrayInt(c))
3505 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp3,12)
3506 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3507 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp3,12)
3508 m3=m.buildUnstructured() ; m3.convertLinearCellsToQuadratic(1)
3509 self.assertAlmostEqual(m3.computeDiameterField().getArray()[0],exp3,12)
3511 # 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)
3512 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)])
3513 m=MEDCoupling1SGTUMesh("mesh",NORM_PENTA6) ; m.setCoords(coo)
3514 exp4=2.5041256256889888
3515 self.assertAlmostEqual(exp4,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3516 for delta in range(3):
3517 c = [(elt + delta) % 3 for elt in range(3)]
3518 c+=[elt+3 for elt in c]
3519 m.setNodalConnectivity(DataArrayInt(c))
3520 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3521 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3522 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3524 m.setNodalConnectivity(DataArrayInt(c))
3525 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp4,12)
3526 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3527 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp4,12)
3529 # 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)
3530 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)])
3531 m=MEDCoupling1SGTUMesh("mesh",NORM_HEXA8) ; m.setCoords(coo)
3532 exp5=2.5366409441884215
3533 self.assertAlmostEqual(exp5,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3534 for delta in range(4):
3535 c = [(elt + delta) % 4 for elt in range(4)]
3536 c+=[elt+4 for elt in c]
3537 m.setNodalConnectivity(DataArrayInt(c))
3538 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3539 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3540 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3542 m.setNodalConnectivity(DataArrayInt(c))
3543 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp5,12)
3544 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3545 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp5,12)
3546 # PYRA5 (1) 5th node is further
3547 # 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)
3548 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)])
3549 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3550 exp6=2.1558368027391386
3551 self.assertAlmostEqual(exp6,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3552 for delta in range(4):
3553 c = [(elt + delta) % 4 for elt in range(4)]
3555 m.setNodalConnectivity(DataArrayInt(c))
3556 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp6,12)
3557 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3558 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp6,12)
3560 # PYRA5 (2) 5th node is closer
3561 # 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)
3562 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)])
3563 m=MEDCoupling1SGTUMesh("mesh",NORM_PYRA5) ; m.setCoords(coo)
3564 exp7=1.4413563787228953
3565 self.assertAlmostEqual(exp7,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3566 for delta in range(4):
3567 c = [(elt + delta) % 4 for elt in range(4)]
3569 m.setNodalConnectivity(DataArrayInt(c))
3570 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp7,12)
3571 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3572 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp7,12)
3575 # 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)
3576 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)])
3577 m=MEDCoupling1SGTUMesh("mesh",NORM_TETRA4) ; m.setCoords(coo)
3578 exp8=1.7131322579364157
3579 self.assertAlmostEqual(exp8,coo.buildEuclidianDistanceDenseMatrix().getMaxValue()[0],12)# <- the definition of diameter
3580 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]]:
3582 m.setNodalConnectivity(DataArrayInt([(elt+i)%4 for elt in c]))
3583 self.assertAlmostEqual(m.computeDiameterField().getArray()[0],exp8,12)
3584 m2=m.buildUnstructured() ; m2.convertLinearCellsToQuadratic(0)
3585 self.assertAlmostEqual(m2.computeDiameterField().getArray()[0],exp8,12)
3590 def testMEDCouplingSkyLineArray(self):
3591 index = DataArrayInt([ 0, 3, 5, 6, 6 ])
3592 value = DataArrayInt([ 1, 2, 3, 2, 3, 3 ])
3594 sla0 = MEDCouplingSkyLineArray()
3595 self.assertEqual( -1, sla0.getNumberOf() )
3596 self.assertEqual( 0, sla0.getLength() )
3597 sla0.set( index, value )
3598 self.assertTrue( index.isEqual( sla0.getIndexArray() ))
3599 self.assertTrue( value.isEqual( sla0.getValuesArray() ))
3600 self.assertEqual( 4, sla0.getNumberOf() )
3601 self.assertEqual( 6, sla0.getLength() )
3603 sla1 = MEDCouplingSkyLineArray( index, value )
3604 self.assertTrue( index.isEqual( sla1.getIndexArray() ))
3605 self.assertTrue( value.isEqual( sla1.getValuesArray() ))
3606 self.assertEqual( 4, sla1.getNumberOf() )
3607 self.assertEqual( 6, sla1.getLength() )
3609 sla2 = MEDCouplingSkyLineArray( sla1 )
3610 self.assertTrue( index.isEqual( sla2.getIndexArray() ))
3611 self.assertTrue( value.isEqual( sla2.getValuesArray() ))
3612 self.assertEqual( 4, sla2.getNumberOf() )
3613 self.assertEqual( 6, sla2.getLength() )
3615 indexVec = ivec(); indexVec.reserve( len( index ))
3616 for i in index: indexVec.push_back( i[0] )
3617 valueVec = ivec(); valueVec.reserve( len( value ))
3618 for i in value: valueVec.push_back( i[0] )
3619 sla3 = MEDCouplingSkyLineArray( indexVec, valueVec )
3620 self.assertTrue( index.isEqual( sla3.getIndexArray() ))
3621 self.assertTrue( value.isEqual( sla3.getValuesArray() ))
3622 self.assertEqual( 4, sla3.getNumberOf() )
3623 self.assertEqual( 6, sla3.getLength() )
3627 def testMEDCouplingSkyLineArrayThreeLevels(self):
3628 # [[28,1,4]] , [[2,35,8], [9,10,1,12]]
3629 superi = DataArrayInt([ 0,1,3 ])
3630 index = DataArrayInt ([ 0,3,6,10 ])
3631 value = DataArrayInt ([ 28,1,4,2,35,8,9,10,1,12 ])
3633 sla0 = MEDCouplingSkyLineArray()
3634 self.assertEqual( -1, sla0.getSuperNumberOf() )
3635 self.assertEqual( -1, sla0.getNumberOf() )
3636 self.assertEqual( 0, sla0.getLength() )
3637 sla0.set3( superi.deepCopy(), index.deepCopy(), value.deepCopy() )
3638 self.assertTrue( superi.isEqual( sla0.getSuperIndexArray() ))
3640 pack = sla0.getSimplePackSafe(2)
3641 self.assertEqual([9,10,1,12], pack)
3642 ids = sla0.findPackIds([0,1], [9,10,1,12])
3643 self.assertEqual([-1,1], ids)
3645 sla0.deletePack(1, 1)
3646 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3647 self.assertEqual([28,1,4,2,35,8], val.getValues())
3648 self.assertEqual([0,3,6], idx.getValues())
3649 self.assertEqual([0,1,2], si.getValues())
3651 sla0.pushBackPack(0, [3,2,1,0])
3652 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3653 self.assertEqual([0,2,3], si.getValues())
3654 self.assertEqual([0,3,7,10], idx.getValues())
3655 self.assertEqual([28,1,4,3,2,1,0, 2,35,8], val.getValues())
3657 # Build connectivity from POLYHED connectivity
3659 c = [NORM_POLYHED, 1,2,3,-1, 2,3,4,-1, 3,4,5,-1, 4,5,6,
3660 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]
3661 sla0 = MEDCouplingSkyLineArray.BuildFromPolyhedronConn(DataArrayInt(c), DataArrayInt(cI))
3662 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3663 self.assertEqual([0,4,9], si.getValues())
3664 self.assertEqual([0,3,6,9,12,16,20,24,28,32], idx.getValues())
3665 self.assertEqual([1,2,3, 2,3,4, 3,4,5, 4,5,6,
3666 7,8,9,10, 9,10,11,12, 3,4,5,6, 5,6,7,8, 9,10,11,12], val.getValues())
3667 c1, cI1 = sla0.convertToPolyhedronConn()
3668 self.assertEqual(c1.getValues(), c)
3669 self.assertEqual(cI1.getValues(), cI)
3672 def testMEDCouplingSkyLineArrayThreeLevels2(self):
3674 siRef = [0, 9, 16, 22]
3675 idx = [0,4,8,12,16,20,23,26,29, 32,36,40,44,48,52, 56,60,64,68,72,76,80]
3676 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,
3677 9,1,3,10, 11,12,7,5, 9,11,5,1, 1,5,7,3, 3,7,12,10, 10,12,11,9,
3678 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3679 idxRef = [0,4,8,12,16,20,23,26,29,32,36,40,44,48,52,55,58, 62, 66, 70, 74, 78, 82 ]
3680 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,
3681 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,
3682 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3683 sla0 = MEDCouplingSkyLineArray()
3684 sla0.set3( DataArrayInt(si), DataArrayInt(idx), DataArrayInt(c) )
3685 ids = sla0.findPackIds([1], [1,5,7,3])
3686 sla0.deletePack(1, ids[0])
3687 sla0.pushBackPack(1, [3,7,8])
3688 sla0.pushBackPack(1, [7,5,8])
3689 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3690 self.assertEqual(siRef, si.getValues())
3691 self.assertEqual(idxRef, idx.getValues())
3692 self.assertEqual(cRef, val.getValues())
3694 idxRef2 = [0,4,8,12,16,20,23,26,29,32,36,40,42,46,50,53,56, 60, 64, 68, 72, 76, 80 ]
3695 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,
3696 9,1,3,10, 11,12,7,5, 300,300, 3,7,12,10, 10,12,11,9, 3,7,8, 7,5,8,
3697 11,5,7,12, 14,16,15,13, 11,14,13,5, 5,13,15,7, 7,15,16,12, 12,16,14,11]
3698 sla0.replacePack(1,2, [300,300])
3699 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3700 self.assertEqual(siRef, si.getValues())
3701 self.assertEqual(idxRef2, idx.getValues())
3702 self.assertEqual(cRef2, val.getValues())
3704 sla0.replacePack(1,2, [9,11,5,1])
3705 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3706 self.assertEqual(siRef, si.getValues())
3707 self.assertEqual(idxRef, idx.getValues())
3708 self.assertEqual(cRef, val.getValues())
3710 sla0.replaceSimplePack(11, [300,300]) # 11 is the abs index of pack (superIdx=1,idx=2)
3711 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3712 self.assertEqual(siRef, si.getValues())
3713 self.assertEqual(idxRef2, idx.getValues())
3714 self.assertEqual(cRef2, val.getValues())
3716 sla0.replaceSimplePack(11, [9,11,5,1]) # 11 is the abs index of pack (superIdx=1,idx=2)
3717 si, idx, val = sla0.getSuperIndexArray(), sla0.getIndexArray(), sla0.getValuesArray()
3718 self.assertEqual(siRef, si.getValues())
3719 self.assertEqual(idxRef, idx.getValues())
3720 self.assertEqual(cRef, val.getValues())
3723 def testMEDCouplingUMeshgenerateGraph(self):
3724 # cartesian mesh 3x3
3725 arr=DataArrayDouble(4) ; arr.iota()
3726 c=MEDCouplingCMesh() ; c.setCoords(arr,arr)
3727 m=c.buildUnstructured()
3728 graph = m.generateGraph()
3741 self.assertEqual(valRef,list(graph.getValuesArray().getValues()));
3743 indRef=[0, 3, 7, 10, 14, 19, 23, 26, 30, 33]
3744 self.assertEqual(indRef,list(graph.getIndexArray().getValues()));
3747 def testSwig2MEDCouplingCurveLinearReprQuick1(self):
3748 """Non regression test. Error in m.__str__ when m is a MEDCouplingCurveLinear with spaceDim != meshDim."""
3749 arr=DataArrayDouble(12) ; arr.iota() ; arr.rearrange(2)
3750 m=MEDCouplingCurveLinearMesh()
3752 m.setNodeGridStructure([3,2])
3753 m.checkConsistencyLight()
3754 self.assertEqual(m.getMeshDimension(),2)
3755 self.assertEqual(m.getSpaceDimension(),2)
3756 self.assertTrue(not "mismatch" in m.__str__())
3757 self.assertTrue(not "mismatch" in m.__repr__())
3759 arr=DataArrayDouble(18) ; arr.iota() ; arr.rearrange(3)
3761 self.assertEqual(m.getMeshDimension(),2)
3762 self.assertEqual(m.getSpaceDimension(),3)
3763 self.assertTrue(not "mismatch" in m.__str__())
3764 self.assertTrue(not "mismatch" in m.__repr__())# bug was here !
3767 def testSwig2BugComputeOffsets1(self):
3768 """Non regression test. computeOffsetsFull on empty array must return 0."""
3770 d.computeOffsetsFull()
3771 self.assertTrue(d.isEqual(DataArrayInt([0,3])))
3774 self.assertTrue(d.isEqual(DataArrayInt([])))
3776 d.computeOffsetsFull()
3777 self.assertTrue(d.isEqual(DataArrayInt([0]))) # <- bug was here
3780 def testSwig2Cartesianize1(self):
3781 """Test of engine of cartesianize mechanism in medcoupling"""
3783 arr=DataArrayDouble([(3,0.2),(2,1.6)]) ; arr.setInfoOnComponents(["A","BB"])
3784 arr2=arr.cartesianize(AX_CYL)
3785 arr2_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836),(-0.05839904460257763,1.9991472060830102)]) ; arr2_exp.setInfoOnComponents(["A","BB"])
3786 self.assertTrue(arr2_exp.isEqual(arr2,1e-14))
3788 arr3=arr.cartesianize(AX_SPHER)
3789 self.assertTrue(arr2_exp.isEqual(arr3,1e-14))
3791 arr=DataArrayDouble([(3,0.2,7.1),(2,1.6,12.3)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3792 arr4=arr.cartesianize(AX_CYL)
3793 arr4_exp=DataArrayDouble([(2.940199733523725,0.5960079923851836,7.1),(-0.05839904460257763,1.9991472060830102,12.3)]) ; arr4_exp.setInfoOnComponents(["A","BB","CCC"])
3794 self.assertTrue(arr4_exp.isEqual(arr4,1e-14))
3796 arr=DataArrayDouble([(3,0.2,0.5),(2,1.3,5.8)]) ; arr.setInfoOnComponents(["A","BB","CCC"])
3797 arr5=arr.cartesianize(AX_SPHER)
3798 arr5_exp=DataArrayDouble([(0.5230462208645272,0.2857414527616764,2.940199733523725),(1.706499157790973,-0.8953424658735863,0.5349976572491747)]) ; arr5_exp.setInfoOnComponents(["A","BB","CCC"])
3799 self.assertTrue(arr5_exp.isEqual(arr5,1e-14))
3801 m=MEDCouplingCMesh() ; m.setName("aa") ; m.setDescription("bbb") ; m.setTime(4.125,5,6) ; m.setTimeUnit("ms")
3802 arrX=DataArrayDouble([0,1,2]) ; arrX.setInfoOnComponent(0,"ccc")
3803 arrY=DataArrayDouble([3,4,5,6]) ; arrY.setInfoOnComponent(0,"dddd")
3804 m.setCoords(arrX,arrY)
3805 m2=m.buildCurveLinear()
3807 self.assertTrue(isinstance(m2,MEDCouplingCurveLinearMesh))
3808 self.assertEqual(m2.getName(),"aa")
3809 self.assertEqual(m2.getDescription(),"bbb")
3810 self.assertEqual(m2.getTime(),[4.125,5,6])
3811 self.assertEqual(m2.getTimeUnit(),"ms")
3812 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"])
3813 self.assertTrue(m2.getCoords().isEqual(m2c_exp,1e-14))
3814 self.assertEqual(m2.getNodeGridStructure(),(3,4))
3817 def testRemoveIdsFromIndexedArrays1(self):
3818 arr=DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,504,505,601,602])
3819 arrI=DataArrayInt([0,3,7,8,8,13,15])
3820 # case where all elts in inputs are in
3821 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3822 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([501,502],arr2,arrI2))
3823 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,503,504,505,601,602])))
3824 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,11,13])))
3825 # case where part of elts in inputs are in
3826 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3827 self.assertTrue(MEDCouplingUMesh.RemoveIdsFromIndexedArrays([504,507],arr2,arrI2))
3828 self.assertTrue(arr2.isEqual(DataArrayInt([101,102,103,201,202,203,204,301,501,502,503,505,601,602])))
3829 self.assertTrue(arrI2.isEqual(DataArrayInt([0,3,7,8,8,12,14])))
3830 # case where no elts in inputs are in
3831 arr2=arr.deepCopy() ; arrI2=arrI.deepCopy()
3832 self.assertTrue(not MEDCouplingUMesh.RemoveIdsFromIndexedArrays([1,5,701],arr2,arrI2))
3833 self.assertTrue(arr2.isEqual(arr))
3834 self.assertTrue(arrI2.isEqual(arrI))
3837 def testFieldIntIsOnStage1(self):
3838 """ My first test with field int."""
3839 m=MEDCouplingCMesh()
3841 arrX=DataArrayDouble([0,1,2,3])
3842 m.setCoords(arrX,arrX)
3843 f=MEDCouplingFieldInt(ON_CELLS)
3845 arr=DataArrayInt(8) ; arr.iota() ;f.setArray(arr)
3846 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
3847 arr=DataArrayInt(9) ; arr.iota() ;f.setArray(arr)
3848 f.checkConsistencyLight()
3850 self.assertEqual(f.getTimeUnit(),"ms")
3853 self.assertEqual(b,5)
3854 self.assertEqual(c,6)
3855 self.assertEqual(a,3.2,12)
3858 def testNoThrowOn1DGTU2UOnNullCells(self):
3859 """ Non regression test : no throw when trying to convert 1DGTUMesh to UMesh on an empty mesh"""
3860 m=MEDCoupling1DGTUMesh("",NORM_POLYGON) ; m.setCoords(DataArrayDouble([],0,3))
3861 m.setNodalConnectivity(DataArrayInt([]),DataArrayInt([0]))
3862 m=m.buildUnstructured()
3865 def testExplodeMeshIntoMicroEdges1(self):
3866 """ test for new functionality MEDCouplingUMesh.explodeMeshIntoMicroEdges"""
3867 m=MEDCouplingUMesh("mesh",2)
3868 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)
3871 # here a mix of quadratic, linear cells. Non conform but conform considering micro edges
3872 m.insertNextCell(NORM_TRI6,[0,4,1,7,8,9])
3873 m.insertNextCell(NORM_TRI6,[1,5,2,10,11,12])
3874 m.insertNextCell(NORM_TRI6,[5,1,4,10,8,13])
3875 m.insertNextCell(NORM_TRI3,[3,4,7])
3876 m.insertNextCell(NORM_TRI3,[3,7,0])
3877 m.insertNextCell(NORM_TRI3,[6,2,11])
3878 m.insertNextCell(NORM_TRI3,[6,11,5])
3879 m.insertNextCell(NORM_TRI3,[6,5,13])
3880 m.insertNextCell(NORM_TRI3,[6,13,4])
3881 edges,d,di,rd,rdi=m.explodeMeshIntoMicroEdges() # <- new method
3882 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])))
3883 self.assertEqual(edges.getCoords().getHiddenCppPointer(),coo.getHiddenCppPointer())
3884 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])))
3885 self.assertTrue(di.isEqual(DataArrayInt([0,6,12,18,21,24,27,30,33,36])))
3886 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])))
3887 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])))
3890 def testFieldIntIsOnStage2(self):
3891 """ Very important test to check that isEqual of MEDCouplingFieldInt is OK !"""
3892 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3893 m1=m1.buildUnstructured() ; m1.setName("mesh")
3894 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setMesh(m1)
3895 arr1=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr1.setInfoOnComponents(["aa","bbb"])
3896 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
3898 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
3899 m2=m2.buildUnstructured() ; m2.setName("mesh")
3900 f2=MEDCouplingFieldInt(ON_CELLS) ; f2.setMesh(m2)
3901 arr2=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr2.setInfoOnComponents(["aa","bbb"])
3902 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
3904 self.assertTrue(f1.isEqual(f2,1e-12,0))
3906 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3907 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0))
3909 self.assertTrue(f1.isEqual(f2,1e-12,0))
3912 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3914 self.assertTrue(f1.isEqual(f2,1e-12,0))
3916 f1.getArray().setInfoOnComponents(["aa","bbbb"])
3917 self.assertTrue(not f1.isEqual(f2,1e-12,0))
3918 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0))
3919 f1.getArray().setInfoOnComponents(["aa","bbb"])
3920 self.assertTrue(f1.isEqual(f2,1e-12,0))
3923 self.assertTrue(f1.isEqual(f3,1e-12,0))
3925 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
3926 f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
3927 arr4=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr4.setInfoOnComponents(["aa","bbb"])
3928 f4.setArray(arr4) ; f4.setName("f1")
3929 self.assertEqual(f1.isEqual(f4,1e-12,0),expected)
3933 def testDADSymmetry1(self):
3934 arr=DataArrayDouble([2,3,4],1,3)
3935 res=arr.symmetry3DPlane([0.,0.,0.],[0.,0.,2.])
3936 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-4],1,3),1e-14))
3938 res=arr.symmetry3DPlane([-1000,100,-1],[0.,0.,2.])
3939 self.assertTrue(res.isEqual(DataArrayDouble([2,3,-6],1,3),1e-14))
3941 res=arr.symmetry3DPlane([0,0,0],[1.,0.,0.])
3942 self.assertTrue(res.isEqual(DataArrayDouble([-2,3,4],1,3),1e-14))
3944 res=arr.symmetry3DPlane([0,0,0],[0.,1.,0.])
3945 self.assertTrue(res.isEqual(DataArrayDouble([2,-3,4],1,3),1e-14))
3947 res=arr.symmetry3DPlane([0,0,0],[-1.,1.,0.])
3948 self.assertTrue(res.isEqual(DataArrayDouble([3,2,4],1,3),1e-14))
3951 a=DataArrayDouble(DataArrayDouble.GiveBaseForPlane(plane))
3952 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[1]).magnitude()[0],0.,13)
3953 self.assertAlmostEqual(DataArrayDouble.Dot(a[0],a[2]).magnitude()[0],0.,13)
3954 self.assertAlmostEqual(DataArrayDouble.Dot(a[1],a[2]).magnitude()[0],0.,13)
3955 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]])
3956 m=MEDCouplingUMesh("",2) ; m.setCoords(coo) ; m.allocateCells()
3957 m.insertNextCell(NORM_QUAD4,[0,1,2,3])
3958 d,_=m.distanceToPoint(arr)
3959 res=arr.symmetry3DPlane([0.,0.,0.],plane) #
3960 d2,_=m.distanceToPoint(res)
3961 self.assertAlmostEqual(abs(d-d2),0.,12)
3962 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[0])[0],0.,12)
3963 self.assertAlmostEqual(DataArrayDouble.Dot(res-arr,a[1])[0],0.,12)
3964 self.assertAlmostEqual((res-arr).magnitude()[0]-2*d,0.,12)
3965 self.assertTrue(res.isEqual(DataArrayDouble([2.666666666666667,3.5333333333333333,3.0666666666666666],1,3),1e-12))
3968 def testExtrudedMeshBuildUnstructured1(self):
3969 """ 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"""
3970 arr=DataArrayDouble(11) ; arr.iota()
3971 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
3972 m=m.buildUnstructured()
3973 faces=MEDCouplingCMesh() ; faces.setCoords(arr,arr)
3974 faces=faces.buildUnstructured()
3975 faces.setCoords(m.getCoords())
3976 em=MEDCouplingMappedExtrudedMesh(m,faces,0)
3977 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12))
3978 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
3979 self.assertTrue(em.buildUnstructured().isEqual(m,1e-12)) # the bug was here ... buildUnstructured used to modify em ...
3982 def testExtrudedMeshFromCMesh1(self):
3983 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
3984 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ)
3985 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
3986 self.assertTrue(ex.buildUnstructured().isEqual(mesh3D.buildUnstructured(),1e-12))
3989 def testCylSpherPolarCartFiesta(self):
3990 """Test to check new capabilities from to cyl spher polar cart conversions"""
3991 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)])
3992 self.assertTrue(da0.fromCartToCyl().fromCylToCart().isEqual(da0,1e-12))
3993 self.assertTrue(da0.fromCartToSpher().fromSpherToCart().isEqual(da0,1e-12))
3995 self.assertTrue(da1.fromCartToPolar().fromPolarToCart().isEqual(da1,1e-12))
4001 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)])
4002 da4=da0.fromCartToCylGiven(da2,pt,vect)
4003 self.assertTrue(da4.isEqual(expected,1e-12))
4005 m=MEDCouplingUMesh.Build0DMeshFromCoords(da2)
4006 self.assertEqual(m.getDirectAccessOfCoordsArrIfInStructure().getHiddenCppPointer(),da2.getHiddenCppPointer())
4007 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setArray(da0)
4008 f=f0.computeVectorFieldCyl(pt,vect)
4009 f.checkConsistencyLight()
4010 self.assertEqual(f.getMesh().getHiddenCppPointer(),m.getHiddenCppPointer())
4011 self.assertTrue(f.getArray().isEqual(expected,1e-12))
4014 def testDAIIndicesOfSubPart(self):
4015 a=DataArrayInt([9,10,0,6,4,11,3,8])
4016 b=DataArrayInt([6,0,11,8])
4017 c=a.indicesOfSubPart(b)
4018 self.assertTrue(c.isEqual(DataArrayInt([3,2,5,7])))
4020 d=DataArrayInt([9,10,0,6,4,11,0,8])
4021 self.assertRaises(InterpKernelException,d.indicesOfSubPart,b) # 0 appears twice in the d array
4022 f=DataArrayInt([6,0,11,8,12])
4023 self.assertRaises(InterpKernelException,a.indicesOfSubPart,f) # 12 in f does not exist in a
4026 def testDACirPermAndRev1(self):
4027 d=DataArrayInt([1,2,3,4,5,6])
4028 d2=d.deepCopy() ; d2.circularPermutation(1)
4029 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4030 d2=d.deepCopy() ; d2.circularPermutation()
4031 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4032 d2=d.deepCopy() ; d2.circularPermutation(2)
4033 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4034 d2=d.deepCopy() ; d2.circularPermutation(3)
4035 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4036 d2=d.deepCopy() ; d2.circularPermutation(4)
4037 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4038 d2=d.deepCopy() ; d2.circularPermutation(5)
4039 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4040 d2=d.deepCopy() ; d2.circularPermutation(6)
4041 self.assertTrue(d2.isEqual(d))
4042 d2=d.deepCopy() ; d2.circularPermutation(7)
4043 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4044 d2=d.deepCopy() ; d2.circularPermutation(-1)
4045 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4046 d2=d.deepCopy() ; d2.circularPermutation(-2)
4047 self.assertTrue(d2.isEqual(DataArrayInt([5,6,1,2,3,4])))
4048 d2=d.deepCopy() ; d2.circularPermutation(-3)
4049 self.assertTrue(d2.isEqual(DataArrayInt([4,5,6,1,2,3])))
4050 d2=d.deepCopy() ; d2.circularPermutation(-4)
4051 self.assertTrue(d2.isEqual(DataArrayInt([3,4,5,6,1,2])))
4052 d2=d.deepCopy() ; d2.circularPermutation(-5)
4053 self.assertTrue(d2.isEqual(DataArrayInt([2,3,4,5,6,1])))
4054 d2=d.deepCopy() ; d2.circularPermutation(-6)
4055 self.assertTrue(d2.isEqual(d))
4056 d2=d.deepCopy() ; d2.circularPermutation(-7)
4057 self.assertTrue(d2.isEqual(DataArrayInt([6,1,2,3,4,5])))
4059 d=DataArrayInt([1,2,3,4,5,6],2,3)
4060 d2=d.deepCopy() ; d2.circularPermutationPerTuple(0)
4061 self.assertTrue(d2.isEqual(d))
4062 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4063 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4064 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4065 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4066 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4067 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4068 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4069 self.assertTrue(d2.isEqual(d))
4070 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4071 self.assertTrue(d2.isEqual(DataArrayInt([3,1,2,6,4,5],2,3)))
4072 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4073 self.assertTrue(d2.isEqual(DataArrayInt([2,3,1,5,6,4],2,3)))
4074 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4075 self.assertTrue(d2.isEqual(d))
4076 d.setInfoOnComponents(["a","b","c"])
4077 d2=d.deepCopy() ; d2.circularPermutationPerTuple(1)
4078 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4079 d2=d.deepCopy() ; d2.circularPermutationPerTuple()
4080 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4081 d2=d.deepCopy() ; d2.circularPermutationPerTuple(2)
4082 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4083 d2=d.deepCopy() ; d2.circularPermutationPerTuple(3)
4084 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4085 d2=d.deepCopy() ; d2.circularPermutationPerTuple(4)
4086 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4087 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-1)
4088 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4089 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-2)
4090 self.assertEqual(d2.getInfoOnComponents(),["b","c","a"])
4091 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-3)
4092 self.assertEqual(d2.getInfoOnComponents(),["a","b","c"])
4093 d2=d.deepCopy() ; d2.circularPermutationPerTuple(-4)
4094 self.assertEqual(d2.getInfoOnComponents(),["c","a","b"])
4096 d2=d.deepCopy() ; d2.reversePerTuple()
4097 d3Exp=DataArrayInt([3,2,1,6,5,4],2,3) ; d3Exp.setInfoOnComponents(["c","b","a"])
4098 self.assertTrue(d3Exp.isEqual(d2))
4101 def testDAExplodeComponents1(self):
4102 d=DataArrayDouble([(1,2),(3,4),(5,6)])
4104 d.setInfoOnComponents(["a","b"])
4105 d2=d.explodeComponents()
4106 self.assertEqual(len(d2),2)
4108 d3=DataArrayDouble([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4109 self.assertTrue(d3.isEqual(d2[0],1e-14))
4110 d4=DataArrayDouble([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4111 self.assertTrue(d4.isEqual(d2[1],1e-14))
4113 d=DataArrayInt([(1,2),(3,4),(5,6)])
4115 d.setInfoOnComponents(["a","b"])
4116 d2=d.explodeComponents()
4117 self.assertEqual(len(d2),2)
4119 d3=DataArrayInt([1,3,5]) ; d3.setName("toto") ; d3.setInfoOnComponents(["a"])
4120 self.assertTrue(d3.isEqual(d2[0]))
4121 d4=DataArrayInt([2,4,6]) ; d4.setName("toto") ; d4.setInfoOnComponents(["b"])
4122 self.assertTrue(d4.isEqual(d2[1]))
4125 def testVoronoi2D_1(self):
4126 """ Check of voronize on 2D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4127 tmp=MEDCouplingCMesh("mesh")
4128 arr=DataArrayDouble(5) ; arr.iota()
4129 tmp.setCoords(arr,arr)
4130 tmp=tmp.build1SGTUnstructured()
4131 conn=tmp.getNodalConnectivity()
4133 conn.reversePerTuple()
4134 conn.circularPermutationPerTuple(2)
4136 coo=tmp.getCoords().deepCopy()
4137 coo.circularPermutationPerTuple(2) ; coo*=0.1
4139 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4141 coo2.circularPermutationPerTuple(2)
4142 tmp.getCoords()[:]+=coo2*coo
4144 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4145 field.setName("MyFieldPG") ; field.setMesh(tmp)
4146 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])
4147 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4149 field.checkConsistencyLight()
4151 fieldOnCell=field.voronoize(1e-12) # hot point
4152 fieldOnCell.checkConsistencyLight()
4153 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),112)
4154 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),256)
4155 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4156 meaRef=field.getMesh().getMeasureField(True).getArray()
4157 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4158 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4159 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4161 mea2=mea.sumPerTuple()
4162 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4165 def testVoronoi2D_2(self):
4166 """More aggressive 2D test. No warping here. To check data"""
4167 tmp=MEDCouplingCMesh("mesh")
4168 arr=DataArrayDouble([-1.,1.])
4169 tmp.setCoords(arr,arr)
4170 tmp=tmp.buildUnstructured()
4171 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4172 field.setName("MyFieldPG") ; field.setMesh(tmp)
4173 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])
4174 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4176 field.checkConsistencyLight()
4178 fieldOnCell=field.voronoize(1e-12) # hot point
4179 fieldOnCell.checkConsistencyLight()
4180 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4181 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),16)
4182 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4183 meaRef=DataArrayDouble([0.65,0.4710714285714285,0.59875,0.68,0.73875,0.4,0.46142857142857235])
4184 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4185 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4186 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4187 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4189 gsPt=field.getLocalizationOfDiscr()
4190 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4191 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4192 self.assertTrue(b.isIota(8))
4194 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
4197 def testVoronoi3D_1(self):
4198 """ Check of voronize on 3D mesh method of MEDCouplingFieldDouble that converts field on Gauss Points to a field on cell"""
4199 tmp=MEDCouplingCMesh("mesh")
4200 arr=DataArrayDouble(5) ; arr.iota()
4201 tmp.setCoords(arr,arr)
4202 tmp=tmp.build1SGTUnstructured()
4203 conn=tmp.getNodalConnectivity()
4205 conn.reversePerTuple()
4206 conn.circularPermutationPerTuple(2)
4208 coo=tmp.getCoords().deepCopy()
4209 coo.circularPermutationPerTuple(2) ; coo*=0.1
4211 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4213 coo2.circularPermutationPerTuple(2)
4214 tmp.getCoords()[:]+=coo2*coo
4216 tmp.changeSpaceDimension(3,0.)
4218 arrZ=DataArrayDouble(5) ; arrZ.iota()
4219 mz=MEDCouplingCMesh() ; mz.setCoords(arrZ) ; mz=mz.buildUnstructured()
4220 mz.changeSpaceDimension(3,0.)
4221 mz.getCoords().circularPermutationPerTuple(1)
4222 tmp=tmp.buildUnstructured().buildExtrudedMesh(mz,0)
4224 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4225 field.setName("MyFieldPG") ; field.setMesh(tmp)
4226 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])
4227 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4229 field.checkConsistencyLight()
4231 fieldOnCell=field.voronoize(1e-12) # hot point
4232 fieldOnCell.checkConsistencyLight()
4233 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4234 meaRef=field.getMesh().getMeasureField(True).getArray()
4235 mea=fieldOnCell.getMesh().getMeasureField(False).getArray()
4236 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4237 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4239 mea2=mea.sumPerTuple()
4243 self.assertEqual(len(delta.findIdsNotInRange(0,1e-2)),0) # 1e-2 because hexa8 are warped !
4246 def testVoronoi3D_2(self):
4247 """More aggressive 3D test. No warping here. To check data"""
4248 tmp=MEDCouplingCMesh("mesh")
4249 arr=DataArrayDouble([-1.,1.])
4250 tmp.setCoords(arr,arr,arr)
4251 tmp=tmp.buildUnstructured()
4252 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4253 field.setName("MyFieldPG") ; field.setMesh(tmp)
4254 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])
4255 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4257 field.checkConsistencyLight()
4259 fieldOnCell=field.voronoize(1e-12) # hot point
4260 fieldOnCell.checkConsistencyLight()
4261 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),7)
4262 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),34)
4263 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4264 meaRef=DataArrayDouble([1.3,0.9421428571428572,1.1975,1.36,1.4775,0.8,0.922857142857143])
4265 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4266 self.assertTrue(mea.isEqual(meaRef,1e-12))# the first important test is here
4267 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4268 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4270 gsPt=field.getLocalizationOfDiscr()
4271 a,b=fieldOnCell.getMesh().getCellsContainingPoints(gsPt,1e-12)
4272 self.assertTrue(a.isIota(7))# the second important test is here ! Check that Gauss points are inside the associated cell in fieldOnCell !
4273 self.assertTrue(b.isIota(8))
4275 self.assertEqual(fieldOnCell.getMesh().buildDescendingConnectivity()[0].getNumberOfCells(),2*7+21)
4278 def testVoronoi3D_8(self):
4279 """More aggressive 3D test. Bug EDF 15094"""
4280 mesh = MEDCouplingUMesh("myMeshForAnthony",3)
4281 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]
4282 da = DataArrayDouble.New(coords,35,3)
4284 mesh.allocateCells()
4285 mesh.insertNextCell(NORM_PENTA15, [0, 2, 1, 3, 5, 4, 8, 7, 6, 14, 13, 12, 9, 11, 10])
4286 mesh.insertNextCell(NORM_HEXA20, [20, 23, 22, 21, 16, 15, 24, 18, 28, 27, 26, 25, 17, 34, 33, 19, 29, 32, 31, 30])
4288 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4290 f.setName("myFieldForAnthony")
4291 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])
4292 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])
4293 arr = DataArrayDouble(48, 3)
4294 arr[:, 0] = list(range(48))
4295 arr[:, 1] = 100 + arr[:, 0]
4296 arr[:, 2] = 200 + arr[:, 0]
4298 fieldOnCell=f.voronoize(1e-12) # hot point
4299 fieldOnCell.checkConsistencyLight()
4300 self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),48)
4301 self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),127)
4302 meaRef=f.getMesh().getMeasureField(True).getArray(); meaRef.rearrange(2); meaRef2 = meaRef.sumPerTuple()
4303 mea=fieldOnCell.getMesh().getMeasureField(True).getArray(); mea.rearrange(48); mea2 = mea.sumPerTuple()
4304 self.assertTrue(mea2.isEqual(meaRef2,1e-9))
4307 def testVoronoi3DSurf_1(self):
4308 tmp=MEDCouplingCMesh("mesh")
4309 arr=DataArrayDouble(5) ; arr.iota()
4310 tmp.setCoords(arr,arr)
4311 tmp=tmp.build1SGTUnstructured()
4312 conn=tmp.getNodalConnectivity()
4314 conn.reversePerTuple()
4315 conn.circularPermutationPerTuple(2)
4317 coo=tmp.getCoords().deepCopy()
4318 coo.circularPermutationPerTuple(2) ; coo*=0.1
4320 coo2=DataArrayDouble(len(tmp.getCoords())*tmp.getSpaceDimension()) ; coo2.iota() ; coo2.rearrange(tmp.getSpaceDimension())
4322 coo2.circularPermutationPerTuple(2)
4323 tmp.getCoords()[:]+=coo2*coo
4325 tmp.changeSpaceDimension(3,0.) # force 3D surf
4326 tmp.rotate([0,0,0],[1,0,0],pi/3) # force 3D surf
4328 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4329 field.setName("MyFieldPG") ; field.setMesh(tmp)
4330 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])
4331 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4333 field.checkConsistencyLight()
4335 fieldOnCell=field.voronoize(1e-12);
4336 fieldOnCell.checkConsistencyLight()
4337 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4338 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),2)
4339 self.assertEqual(field.getMesh().getSpaceDimension(),fieldOnCell.getMesh().getSpaceDimension())
4340 self.assertTrue(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4341 meaRef=field.getMesh().getMeasureField(True).getArray()
4342 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4343 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4344 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),7)
4346 mea2=mea.sumPerTuple()
4347 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4350 def testVoronoi1D_1(self):
4351 tmp=MEDCouplingCMesh("mesh")
4352 arr=DataArrayDouble(5) ; arr.iota()
4354 tmp=tmp.build1SGTUnstructured()
4356 tmp.changeSpaceDimension(2,0.)
4357 tmp.getCoords()[:,1]=pi/(len(arr)-1)*tmp.getCoords()[:,0]
4358 tmp.getCoords()[:,0]=1.
4359 tmp.setCoords(tmp.getCoords().fromPolarToCart())
4360 tmp.changeSpaceDimension(3,1.)
4362 field=MEDCouplingFieldDouble(ON_GAUSS_PT)
4363 field.setName("MyFieldPG") ; field.setMesh(tmp)
4364 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])
4365 arr=DataArrayDouble(field.getNumberOfTuplesExpected()) ; arr.iota()
4367 field.checkConsistencyLight()
4369 fieldOnCell=field.voronoize(1e-12);
4370 fieldOnCell.checkConsistencyLight()
4371 self.assertEqual(fieldOnCell.getMesh().getSpaceDimension(),3)
4372 self.assertEqual(fieldOnCell.getMesh().getMeshDimension(),1)
4373 assert(fieldOnCell.getArray().isEqual(field.getArray(),1e-12))
4374 meaRef=field.getMesh().getMeasureField(True).getArray()
4375 mea=fieldOnCell.getMesh().getMeasureField(True).getArray()
4376 self.assertEqual(field.getDiscretization().getNbOfGaussLocalization(),1)
4377 self.assertEqual(field.getDiscretization().getGaussLocalization(0).getNumberOfGaussPt(),6)
4379 mea2=mea.sumPerTuple()
4380 self.assertTrue(mea2.isEqual(meaRef,1e-12))
4383 def testFieldDoubleConvertToLinear1(self):
4384 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)
4385 da.setInfoOnComponents(["g","h"])
4386 m=MEDCouplingUMesh("mesh",2)
4389 m.insertNextCell(NORM_TRI6,[0,1,13,4,9,7])
4390 m.insertNextCell(NORM_TRI6,[1,2,14,5,10,9])
4391 m.insertNextCell(NORM_QUAD8,[2,3,17,15,6,12,16,11])
4392 refPtr=m.getHiddenCppPointer()
4393 f=MEDCouplingFieldDouble(ON_NODES)
4396 arr=DataArrayDouble(18*2) ; arr.iota()
4398 arr.setInfoOnComponents(["bb","ccc"])
4401 f.checkConsistencyLight()
4403 f1=f.convertQuadraticCellsToLinear()
4404 self.assertTrue(f.getMesh().getHiddenCppPointer(),refPtr)
4405 self.assertTrue(f1.getMesh().getHiddenCppPointer()!=refPtr)
4406 f1.checkConsistencyLight()
4407 self.assertEqual(f1.getName(),"aa")
4408 self.assertEqual(f1.getTypeOfField(),ON_NODES)
4409 da0=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(0,1),(1,1),(2,1),(3,1)])
4410 da0.setInfoOnComponents(["g","h"])
4411 self.assertTrue(f1.getMesh().getCoords().isEqual(da0,1e-12))
4412 self.assertTrue(f1.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4413 self.assertTrue(f1.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4414 da2=DataArrayDouble([(0,1),(2,3),(4,5),(6,7),(26,27),(28,29),(30,31),(34,35)])
4415 da2.setInfoOnComponents(["bb","ccc"])
4416 self.assertTrue(f1.getArray().isEqual(da2,1e-12))
4417 self.assertEqual(f1.getTime(),[0.5,2,3])
4419 f2=MEDCouplingFieldDouble(ON_CELLS)
4422 arr=DataArrayDouble(3*2) ; arr.iota()
4424 arr.setInfoOnComponents(["bb","ccc"])
4427 f2.checkConsistencyLight()
4428 f3=f2.convertQuadraticCellsToLinear()
4429 self.assertEqual(f2.getMesh().getHiddenCppPointer(),refPtr)
4430 f3.checkConsistencyLight()
4431 self.assertTrue(f3.getMesh().getHiddenCppPointer()!=refPtr)
4432 self.assertTrue(f3.getMesh().getCoords().isEqual(da0,1e-12))
4433 self.assertTrue(f3.getMesh().getNodalConnectivity().isEqual(DataArrayInt([3,0,1,4,3,1,2,5,4,2,3,7,6])))
4434 self.assertTrue(f3.getMesh().getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,13])))
4435 self.assertEqual(f2.getArray().getHiddenCppPointer(),f3.getArray().getHiddenCppPointer())
4436 self.assertEqual(f3.getTime(),[0.5,2,3])
4439 def testBuild1DMeshFromCoords1(self):
4440 da=DataArrayDouble([(3,4),(5,6),(7,8)])
4443 m=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4444 m.checkConsistencyLight()
4445 self.assertEqual(da0.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
4446 self.assertTrue(da.isEqual(da0,1e-12))
4447 self.assertEqual(m.getName(),da.getName())
4448 self.assertEqual(m.getMeshDimension(),1)
4449 self.assertTrue(isinstance(m,MEDCouplingUMesh))
4450 m1=MEDCoupling1SGTUMesh(m)
4451 m1.checkConsistencyLight()
4452 self.assertTrue(m1.getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2])))
4455 m2=MEDCouplingUMesh.Build1DMeshFromCoords(da0)
4456 m2.checkConsistencyLight()
4457 self.assertEqual(da0.getHiddenCppPointer(),m2.getCoords().getHiddenCppPointer())
4458 self.assertEqual(m2.getName(),"Mesh")
4461 def testVoronoi3D_3(self):
4462 """Non regression test to check MEDCouplingUMesh::clipSingle3DCellByPlane"""
4463 coo=DataArrayDouble([0.,1.,0.,0.,0.,0.,0.,0.,1.,1.,0.,0.],4,3)
4464 m=MEDCouplingUMesh("mesh",3)
4465 m.setCoords(coo) ; m.allocateCells()
4466 m.insertNextCell(NORM_TETRA4,[0,2,3,1])
4467 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4468 f.setMesh(m) ; f.setName("field")
4469 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])
4470 f.setArray(DataArrayDouble([0,1,2,3]))
4471 f3=f.voronoize(1e-12)
4472 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4473 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4474 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4477 def testVoronoi3D_4(self):
4478 """Idem testVoronoi3D_3 except that here quadratic cells are considered"""
4479 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)
4480 m=MEDCouplingUMesh("mesh",3)
4481 m.setCoords(coo) ; m.allocateCells()
4482 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4483 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4484 f.setMesh(m) ; f.setName("field")
4485 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])
4486 f.setArray(DataArrayDouble([0,1,2,3]))
4487 f3=f.voronoize(1e-12)
4488 ref=DataArrayDouble([0.047256836610416179,0.03980327668541684,0.039803276685416833,0.039803276685416833])
4489 self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
4490 self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4493 def testVoronoi3D_5(self):
4494 """ Cell 0 of Barreau_Elga_V11.rmed and sslv07b.rmed. HEXA8 cut regularly into 8 parts"""
4495 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)])
4496 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4497 m.insertNextCell(NORM_HEXA8,[0,2,6,4,1,3,7,5])
4498 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4499 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])
4500 arr=DataArrayDouble(8) ; arr.iota() ; f.setArray(arr)
4501 f.checkConsistencyLight()
4503 vol=f.getMesh().getMeasureField(False).getIJ(0,0)
4504 f2=f.voronoize(1e-12)
4505 f2.checkConsistencyLight()
4506 self.assertEqual(f2.getNumberOfTuples(),8)
4508 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isUniform(volRef,1e-12))
4511 def testVoronoi3D_6(self):
4512 """ Cell 0 of brokenshire.med (and pace.med). TETRA10 split into 4 parts"""
4513 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)])
4514 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4515 m.insertNextCell(NORM_TETRA10,[2,0,1,3,5,4,7,9,6,8])
4516 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4517 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])
4518 arr=DataArrayDouble(4) ; arr.iota() ; f.setArray(arr)
4519 f.checkConsistencyLight()
4520 f2=f.voronoize(1e-12)
4521 f2.checkConsistencyLight()
4522 self.assertEqual(f2.getNumberOfTuples(),4)
4523 arr=f2.getMesh().getMeasureField(False).getArray()
4524 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(DataArrayDouble([378.0546928833331, 318.42621348333586, 318.4262134833361, 318.4262134833278]),1e-6))
4527 def testVoronoi3D_7(self):
4528 """ sslv07a.rmed. HEXA20 split into 27 parts """
4529 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)])
4530 m=MEDCouplingUMesh("",3) ; m.setCoords(coo) ; m.allocateCells()
4531 m.insertNextCell(NORM_HEXA20,[0,3,5,2,8,14,12,10,4,7,6,1,15,13,11,9,16,19,18,17])
4532 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setMesh(m)
4533 f.setGaussLocalizationOnType(NORM_HEXA20,
4534 [-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],
4535 [-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],
4536 [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])
4537 arr=DataArrayDouble(27) ; arr.iota() ; f.setArray(arr)
4538 f.checkConsistencyLight()
4539 f2=f.voronoize(1e-12)
4540 a=0.007187820185770747 ; b=0.0090870678008658 ; c=0.011488156225861077 ; d=0.014523687548277797
4541 ref=DataArrayDouble(27) ; ref[::2]=a ; ref[1::2]=b
4542 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
4544 self.assertTrue(f2.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-7))
4547 def testConvertQuadToLin4Gauss_1(self):
4548 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)
4549 m=MEDCouplingUMesh("mesh",3)
4550 m.setCoords(coo) ; m.allocateCells()
4551 m.insertNextCell(NORM_TETRA10,[0,1,2,3,4,5,6,7,8,9])
4552 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
4553 f.setMesh(m) ; f.setName("field")
4554 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]
4555 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]
4556 cccc=[0.041667,0.041667,0.041667,0.041667]
4557 f.setGaussLocalizationOnType(NORM_TETRA10,aaaa,bbbb,cccc)
4558 f.setArray(DataArrayDouble([0,1,2,3]))
4561 mcpy=m.deepCopy() ; mcpy.convertQuadraticCellsToLinear() ; mcpy.zipCoords()
4563 f2=f.convertQuadraticCellsToLinear()
4564 f2.checkConsistencyLight()
4565 self.assertTrue(f2.getMesh().isEqual(mcpy,1e-12))
4566 self.assertTrue(f2.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
4567 self.assertEqual(f2.getNbOfGaussLocalization(),1)
4568 gl=f2.getGaussLocalization(0)
4569 self.assertEqual(gl.getType(),NORM_TETRA4)
4570 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))
4571 self.assertTrue(DataArrayDouble(gl.getGaussCoords()).isEqual(DataArrayDouble(bbbb),1e-12))
4572 self.assertTrue(DataArrayDouble(gl.getWeights()).isEqual(DataArrayDouble(cccc),1e-12))
4573 self.assertEqual(f2.getName(),"field")
4574 self.assertEqual(f2.getTime(),[1.,2,3])
4577 def testDADCumSum1(self):
4578 d=DataArrayDouble([3.,2.,4.,5.])
4579 self.assertTrue(d.cumSum().isEqual(DataArrayDouble([0.,3.,5.,9.,14.]),1e-12))
4580 d2=DataArrayDouble([])
4581 self.assertTrue(d2.cumSum().isEqual(DataArrayDouble([0.]),1e-12))
4583 self.assertRaises(InterpKernelException,d.cumSum)
4586 def testDAIFromLinkedListOfPairToList1(self):
4587 d=DataArrayInt([(5,7),(7,3),(3,12),(12,17)])
4588 zeRes=DataArrayInt([5,7,3,12,17])
4589 self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
4591 self.assertRaises(InterpKernelException,d.fromLinkedListOfPairToList)
4593 self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
4594 d2=DataArrayInt([(5,7)])
4595 self.assertTrue(d2.fromLinkedListOfPairToList().isEqual(DataArrayInt([5,7])))
4596 d3=DataArrayInt([(5,7),(7,3),(4,12),(12,17)])
4597 self.assertRaises(InterpKernelException,d3.fromLinkedListOfPairToList) # not a linked list of pair
4598 d4=DataArrayInt([(5,7),(7,3),(12,3),(12,17)])
4599 self.assertRaises(InterpKernelException,d4.fromLinkedListOfPairToList) # not a linked list of pair, but can be repaired !
4600 d4.sortEachPairToMakeALinkedList()
4601 self.assertTrue(d4.fromLinkedListOfPairToList().isEqual(zeRes))
4604 def testUMeshExplodeIntoEdges1(self):
4605 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured()
4606 self.assertEqual(m.getMeshDimension(),3)
4607 a0,a1,a2,a3,a4=m.explodeIntoEdges()
4608 b0,b1,b2,b3,b4=m.explode3DMeshTo1D()
4609 self.assertTrue(a0.isEqual(b0,1e-12))
4610 self.assertTrue(a1.isEqual(b1)) ; self.assertTrue(a2.isEqual(b2)) ; self.assertTrue(a3.isEqual(b3)) ; self.assertTrue(a4.isEqual(b4))
4612 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4613 self.assertEqual(m.getMeshDimension(),2)
4614 a0,a1,a2,a3,a4=m.explodeIntoEdges()
4615 b0,b1,b2,b3,b4=m.buildDescendingConnectivity()
4616 self.assertTrue(a0.isEqual(b0,1e-12))
4617 self.assertTrue(a1.isEqual(b1)) ; self.assertTrue(a2.isEqual(b2)) ; self.assertTrue(a3.isEqual(b3)) ; self.assertTrue(a4.isEqual(b4))
4620 def testUMeshComputeEnlargedNeighborsOfNodes(self):
4621 m=MEDCouplingCMesh() ; arr=DataArrayDouble(4) ; arr.iota() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4622 a,b=m.computeEnlargedNeighborsOfNodes()
4623 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])
4624 bExp=DataArrayInt([0,3,8,13,16,21,29,37,42,47,55,63,68,71,76,81,84])
4625 self.assertTrue(a.isEqual(aExp))
4626 self.assertTrue(b.isEqual(bExp))
4628 c,d=m2.computeEnlargedNeighborsOfNodes()
4629 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])
4630 dExp=DataArrayInt([0,0,3,8,11,14,20,25,28,31,34,34,34,34,34,34,34])
4631 self.assertTrue(c.isEqual(cExp))
4632 self.assertTrue(d.isEqual(dExp))
4635 def testDAIfindIdsExt1(self):
4636 d=DataArrayInt([4,6,-2,3,7,0,10])
4637 self.assertTrue(d.findIdsGreaterOrEqualTo(3).isEqual(DataArrayInt([0,1,3,4,6])))
4638 self.assertTrue(d.findIdsGreaterThan(3).isEqual(DataArrayInt([0,1,4,6])))
4639 self.assertTrue(d.findIdsLowerThan(3).isEqual(DataArrayInt([2,5])))
4640 self.assertTrue(d.findIdsLowerOrEqualTo(3).isEqual(DataArrayInt([2,3,5])))
4643 def testDAFacto1(self):
4644 """Test focused of new wrapped methods for MEDCouplingFieldInt thanks to code factorization."""
4645 d=DataArrayDouble(7) ; d.iota()
4646 m=MEDCouplingUMesh.Build1DMeshFromCoords(d)
4647 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(m) ; arr=DataArrayInt(6) ; arr.iota() ; f.setArray(arr) ; f.checkConsistencyLight()
4648 f_0=f[::2] # test is here
4649 self.assertTrue(f_0.getArray().isEqual(DataArrayInt([0,2,4])))
4650 self.assertTrue(f_0.getMesh().isEqual(m[[0,2,4]],1e-12))
4652 f2=MEDCouplingFieldInt(ON_NODES) ; f2.setMesh(m) ; arr=DataArrayInt(7) ; arr.iota() ; f2.setArray(arr) ; f2.checkConsistencyLight()
4653 f_1=f2[::2] # test is here
4654 self.assertTrue(f_1.getArray().isEqual(DataArrayInt([0,1,2,3,4,5])))
4655 m_1=m[[0,2,4]] ; m_1.zipCoords()
4656 self.assertTrue(f_1.getMesh().isEqual(m_1,1e-12))
4659 def testFieldFloatIsOnStage1(self):
4660 """ My first test with field int."""
4661 m=MEDCouplingCMesh()
4663 arrX=DataArrayDouble([0,1,2,3])
4664 m.setCoords(arrX,arrX)
4665 f=MEDCouplingFieldFloat(ON_CELLS)
4667 arr=DataArrayFloat(8) ; arr.iota() ;f.setArray(arr)
4668 self.assertRaises(InterpKernelException,f.checkConsistencyLight)
4669 arr=DataArrayFloat(9) ; arr.iota() ;f.setArray(arr)
4670 f.checkConsistencyLight()
4672 self.assertEqual(f.getTimeUnit(),"ms")
4675 self.assertEqual(b,5)
4676 self.assertEqual(c,6)
4677 self.assertEqual(a,3.2,12)
4680 def testFieldFloatIsOnStage2(self):
4681 """ Very important test to check that isEqual of MEDCouplingFieldFloat is OK !"""
4682 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4683 m1=m1.buildUnstructured() ; m1.setName("mesh")
4684 f1=MEDCouplingFieldFloat(ON_CELLS) ; f1.setMesh(m1)
4685 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"])
4686 f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4)
4688 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4]))
4689 m2=m2.buildUnstructured() ; m2.setName("mesh")
4690 f2=MEDCouplingFieldFloat(ON_CELLS) ; f2.setMesh(m2)
4691 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"])
4692 f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
4694 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4696 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4697 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4699 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4702 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4704 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4706 f1.getArray().setInfoOnComponents(["aa","bbbb"])
4707 self.assertTrue(not f1.isEqual(f2,1e-12,0.))
4708 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
4709 f1.getArray().setInfoOnComponents(["aa","bbb"])
4710 self.assertTrue(f1.isEqual(f2,1e-12,0.))
4713 self.assertTrue(f1.isEqual(f3,1e-12,0.))
4715 for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
4716 f4=MEDCouplingFieldFloat(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
4717 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"])
4718 f4.setArray(arr4) ; f4.setName("f1")
4719 self.assertEqual(f1.isEqual(f4,1e-12,0.),expected)
4723 def testLTGTDAD1(self):
4724 d=DataArrayDouble(10) ; d.iota()
4725 self.assertTrue(d.findIdsLowerThan(0).empty())
4726 self.assertTrue(d.findIdsLowerThan(1).isEqual(DataArrayInt([0])))
4728 self.assertTrue(d.findIdsStrictlyNegative().isEqual(DataArrayInt([0,1,2,3,4])))
4729 self.assertTrue(d.findIdsGreaterThan(0.).isEqual(DataArrayInt([6,7,8,9])))
4730 self.assertTrue(d.convertToFloatArr().isEqual(DataArrayFloat([-5,-4,-3,-2,-1,0,1,2,3,4]),1e-7))
4731 self.assertTrue(d.convertToFloatArr().convertToDblArr().isEqual(d,1e-12))
4734 def testMapII1(self):
4735 """ Test optimized maps for renumbering. Typical usage local to global in parallel mode"""
4736 d=DataArrayInt([1003,1007])
4737 m=d.invertArrayN2O2O2NOptimized()
4738 d2=DataArrayInt([1003,1003,1007,1003,1007])
4739 d2.transformWithIndArr(m)
4740 self.assertTrue(d2.isEqual(DataArrayInt([0,0,1,0,1])))
4743 def testDAICheckUniformAndGuess1(self):
4744 d=DataArrayInt([3,3],1,2)
4745 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non single compo
4747 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# empty
4749 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non allocated
4750 d=DataArrayInt([3,3,3])
4751 self.assertEqual(3,d.checkUniformAndGuess())
4753 self.assertEqual(7,d.checkUniformAndGuess())
4754 d=DataArrayInt([3,4,3])
4755 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non uniform
4758 def testUMComputePlaneEquationOf3DFaces1(self):
4759 """ Consequence of an invalid traduction of matrix inversion transposition."""
4760 m=MEDCoupling1SGTUMesh("msh",NORM_QUAD4)
4761 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)]))
4762 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]))
4763 m=m.buildUnstructured()
4764 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)])
4765 res=m.computePlaneEquationOf3DFaces()
4766 self.assertTrue(res.isEqual(ref,1e-12))
4769 def testBugInComputationOfEqOfPlane1(self):
4770 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)
4771 m=MEDCouplingUMesh("",2)
4774 m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
4775 self.assertTrue(m.computePlaneEquationOf3DFaces().isEqual(DataArrayDouble([0,1,0,-1],1,4),1e-12))
4778 def testSimplifyPolyhedra(self):
4779 mesh = MEDCouplingUMesh('mesh', 3)
4780 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)])
4782 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])
4783 cI = DataArrayInt([0, 108])
4784 mesh.setConnectivity(c, cI)
4785 mesh.simplifyPolyhedra(1.0e-8)
4786 c, cI = mesh.getNodalConnectivity(), mesh.getNodalConnectivityIndex()
4787 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])
4788 tgt_cI = DataArrayInt([0, 90])
4789 self.assertEqual(c.getValues(), tgt_c.getValues())
4790 self.assertEqual(cI.getValues(), tgt_cI.getValues())
4795 if __name__ == '__main__':