1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2012 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.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 from MEDCoupling import *
23 from math import pi,e,sqrt,cos,sin
24 from MEDCouplingDataForTest import MEDCouplingDataForTest
26 class MEDCouplingBasicsTest(unittest.TestCase):
28 arr=DataArrayDouble.New()
29 arr.setValues([12.,11.,10.,9.,8.,7.,6.,5.,4.,3.,2.,1.],3,4)
30 arr.setInfoOnComponent(0,"ggg");
31 arr.setInfoOnComponent(1,"hhhh");
32 arr.setInfoOnComponent(2,"jj");
33 arr.setInfoOnComponent(3,"kkkkkk");
34 arr2=arr.convertToIntArr();
35 arr3=arr2.convertToDblArr();
36 self.assertTrue(arr.isEqual(arr3,1e-14))
40 arr1=DataArrayInt.New();
41 arr1Ref=[0,10,1,11,2,12,3,13,4,14,5,15,6,16]
42 arr1.setValues(arr1Ref,7,2);
43 self.assertEqual(7,arr1.getNumberOfTuples());
44 self.assertEqual(2,arr1.getNumberOfComponents());
45 self.assertEqual(arr1Ref,list(arr1.getValues()));
47 self.assertEqual(4,arr2.getNumberOfTuples());
48 self.assertEqual(2,arr2.getNumberOfComponents());
49 self.assertEqual(arr1Ref[6:],list(arr2.getValues()));
50 arr3=arr1.substr(2,5);
51 self.assertEqual(3,arr3.getNumberOfTuples());
52 self.assertEqual(2,arr3.getNumberOfComponents());
53 self.assertEqual(arr1Ref[4:10],list(arr3.getValues()));
55 arr4=DataArrayDouble.New();
56 arr4Ref=[0.8,10.8,1.9,11.9,2.1,12.1,3.2,13.2,4.3,14.3,5.4,15.4,6.5,16.5]
57 arr4.setValues(arr4Ref,7,2);
58 self.assertEqual(7,arr4.getNumberOfTuples());
59 self.assertEqual(2,arr4.getNumberOfComponents());
62 self.assertTrue(abs(arr4Ref[i]-tmp[i])<1e-14);
65 self.assertEqual(4,arr5.getNumberOfTuples());
66 self.assertEqual(2,arr5.getNumberOfComponents());
69 self.assertTrue(abs(arr4Ref[6+i]-tmp[i])<1e-14);
71 arr6=arr4.substr(2,5);
72 self.assertEqual(3,arr6.getNumberOfTuples());
73 self.assertEqual(2,arr6.getNumberOfComponents());
76 self.assertTrue(abs(arr4Ref[4+i]-tmp[i])<1e-14);
81 tab4=[1, 2, 8, 7, 2, 3, 9, 8, 3,
82 4, 10, 9, 4, 5, 11, 10, 5,
83 0, 6, 11, 0, 1, 7, 6 ]
86 coords=[ 0.024155, 0.04183768725682622, -0.305, 0.04831000000000001, -1.015761910347357e-17,
87 -0.305, 0.09662000000000001, -1.832979297858306e-18, -0.305, 0.120775, 0.04183768725682623,
88 -0.305, 0.09662000000000001, 0.08367537451365245, -0.305, 0.04831000000000001, 0.08367537451365246,
89 -0.305, 0.024155, 0.04183768725682622, -0.2863, 0.04831000000000001, -1.015761910347357e-17, -0.2863,
90 0.09662000000000001, -1.832979297858306e-18, -0.2863, 0.120775, 0.04183768725682623, -0.2863, 0.09662000000000001,
91 0.08367537451365245, -0.2863, 0.04831000000000001, 0.08367537451365246, -0.2863 ]
92 mesh=MEDCouplingUMesh.New()
93 mesh.setMeshDimension(2)
94 mesh.allocateCells(8);
96 self.assertTrue(mesh.getName()=="mesh1")
97 for i in range(nbOfCells):
98 mesh.insertNextCell(NORM_QUAD4,4,tab4[4*i:4*(i+1)]);
100 mesh.finishInsertingCells()
101 self.assertTrue(mesh.getNumberOfCells()==nbOfCells)
102 self.assertTrue(mesh.getNodalConnectivity().getNbOfElems()==30)
103 self.assertTrue(mesh.getNodalConnectivityIndex().getNbOfElems()==nbOfCells+1)
104 myCoords=DataArrayDouble.New()
105 myCoords.setValues(coords,nbOfNodes,3);
106 self.assertTrue(myCoords.getIJ(3,2)==-0.305)
107 mesh.setCoords(myCoords);
108 mesh.checkCoherency();
109 self.assertTrue(mesh.getAllTypes()==[4])
110 myFalseConn=DataArrayInt.New()
111 myFalseConn.setValues(tab4,6,4)
112 self.assertTrue(myFalseConn.getIJ(1,1)==3)
114 field=MEDCouplingFieldDouble.New(ON_CELLS)
116 field.setNature(Integral)
117 myCoords=DataArrayDouble.New()
119 for i in range(nbOfCells*9):
120 sampleTab.append(float(i))
121 myCoords.setValues(sampleTab,nbOfCells,9);
122 field.setArray(myCoords)
123 self.assertTrue(3==mesh.getSpaceDimension())
124 field.checkCoherency()
125 mesh2=mesh.clone(False)
126 mesh3=mesh.clone(True)
129 ## deep full recursively copy of field -> both field and mesh underneath copied
130 field2=field.clone(True)
131 field2.setMesh(field.getMesh().clone(True))
132 mesh3=mesh.clone(True)
133 field3=mesh3.fillFromAnalytic(ON_CELLS,2,"x*IVec+(y+z)*JVec")
134 field3.applyFunc("u*u*u+cos(u)")
137 def testMeshPointsCloud(self):
138 targetCoords=[-0.3,-0.3,0.5, 0.2,-0.3,1., 0.7,-0.3,1.5,
139 -0.3,0.2,0.5, 0.2,0.2,1., 0.7,0.2,1.5, -0.3,0.7,0.5, 0.2,0.7,1., 0.7,0.7,1.5]
140 targetMesh=MEDCouplingUMesh.New();
141 targetMesh.setMeshDimension(0);
142 targetMesh.allocateCells(8);
143 targetMesh.insertNextCell(NORM_POINT1,1,[0]);
144 targetMesh.insertNextCell(NORM_POINT1,1,[1]);
145 targetMesh.insertNextCell(NORM_POINT1,1,[2]);
146 targetMesh.insertNextCell(NORM_POINT1,1,[3]);
147 targetMesh.insertNextCell(NORM_POINT1,1,[4]);
148 targetMesh.insertNextCell(NORM_POINT1,1,[5]);
149 targetMesh.insertNextCell(NORM_POINT1,1,[7]);
150 targetMesh.insertNextCell(NORM_POINT1,1,[6]);
151 targetMesh.finishInsertingCells();
152 myCoords=DataArrayDouble.New();
153 myCoords.setValues(targetCoords,9,3);
154 targetMesh.setCoords(myCoords);
155 self.assertEqual(targetMesh.getSpaceDimension(),3)
156 self.assertEqual(targetMesh.getNumberOfCells(),8)
157 self.assertEqual(targetMesh.getNumberOfNodes(),9)
158 self.assertEqual(targetMesh.getMeshDimension(),0)
161 def testMeshM1D(self):
162 meshM1D=MEDCouplingUMesh.New();
163 self.assertRaises(InterpKernelException,meshM1D.getMeshDimension);
164 self.assertRaises(InterpKernelException,meshM1D.getNumberOfNodes);
165 self.assertRaises(InterpKernelException,meshM1D.getNumberOfCells);
166 self.assertRaises(InterpKernelException,meshM1D.setMeshDimension,-2)
167 self.assertRaises(InterpKernelException,meshM1D.setMeshDimension,-10)
168 meshM1D.setMeshDimension(-1);
169 meshM1D.checkCoherency();
170 self.assertEqual(meshM1D.getMeshDimension(),-1);
171 self.assertEqual(meshM1D.getNumberOfCells(),1);
172 self.assertRaises(InterpKernelException,meshM1D.getNumberOfNodes);
173 self.assertRaises(InterpKernelException,meshM1D.getSpaceDimension);
174 cpy=meshM1D.clone(True);
175 self.assertTrue(cpy.isEqual(meshM1D,1e-12));
176 fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
177 fieldOnCells.setMesh(meshM1D);
178 array=DataArrayDouble.New();
179 array.setValues(6*[7.],1,6);
180 fieldOnCells.setArray(array);
181 fieldOnCells.checkCoherency();
184 def testDeepCopy(self):
185 array=DataArrayDouble.New();
186 array.setValues(5*3*[7.],5,3);
187 self.assertEqual(array.getIJ(3,2),7.);
188 array2=array.deepCpy();
189 self.assertEqual(array2.getIJ(3,2),7.)
191 array3=DataArrayInt.New();
192 array3.setValues(5*3*[17],5,3);
193 self.assertEqual(array3.getIJ(3,2),17);
194 array4=array3.deepCpy();
195 self.assertEqual(array4.getIJ(3,2),17);
198 def testRevNodal(self):
199 mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
200 revNodal,revNodalIndx=mesh.getReverseNodalConnectivity();
201 revNodalExpected=[0,0,1,1,2,0,3,0,1,2,3,4,2,4,3,3,4,4];
202 revNodalIndexExpected=[0,1,3,5,7,12,14,15,17,18];
203 self.assertEqual(revNodal.getNbOfElems(),18)
204 self.assertEqual(revNodalIndx.getNbOfElems(),10)
205 self.assertEqual(list(revNodal.getValues()),revNodalExpected)
206 self.assertEqual(list(revNodalIndx.getValues()),revNodalIndexExpected)
209 def testConvertToPolyTypes(self):
210 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
212 mesh.convertToPolyTypes(elts);
213 mesh.checkCoherency();
214 self.assertEqual(5,mesh.getNumberOfCells());
215 self.assertEqual(23,mesh.getNodalConnectivity().getNumberOfTuples());
216 expected1=[4, 0, 3, 4, 1, 5, 1, 4, 2, 3, 4, 5, 2, 5, 6, 7, 4, 3, 4, 7, 8, 5, 4]
217 self.assertEqual(expected1,list(mesh.getNodalConnectivity().getValues()));
219 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
220 mesh.convertToPolyTypes(elts);
221 mesh.checkCoherency();
222 self.assertEqual(8,mesh.getNumberOfCells());
223 self.assertEqual(114,mesh.getNodalConnectivity().getNumberOfTuples());
224 mesh.convertToPolyTypes(elts);
225 mesh.checkCoherency();
226 self.assertEqual(8,mesh.getNumberOfCells());
227 self.assertEqual(114,mesh.getNodalConnectivity().getNumberOfTuples());
230 def testDescConn2D(self):
231 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
232 desc=DataArrayInt.New();
233 descIndx=DataArrayInt.New();
234 revDesc=DataArrayInt.New();
235 revDescIndx=DataArrayInt.New();
236 mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
237 mesh2.checkCoherency();
238 self.assertEqual(1,mesh2.getMeshDimension());
239 self.assertEqual(13,mesh2.getNumberOfCells());
240 self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
241 self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
242 self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
243 self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
244 expected1=[0,1,2,3, 2,4,5, 6,7,4, 8,9,1,10, 11,12,6,9];
245 self.assertEqual(expected1,list(desc.getValues()));
246 expected2=[0,4,7,10,14,18];
247 self.assertEqual(expected2,list(descIndx.getValues()));
248 expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18];
249 self.assertEqual(expected3,list(revDescIndx.getValues()));
250 expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4];
251 self.assertEqual(expected4,list(revDesc.getValues()));
252 conn=mesh2.getNodalConnectivity();
253 connIndex=mesh2.getNodalConnectivityIndex();
254 expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39];
255 self.assertEqual(expected5,list(connIndex.getValues()));
256 expected6=[1, 0, 3, 1, 3, 4, 1, 4, 1, 1, 1, 0, 1, 4, 2, 1, 2, 1, 1, 4, 5, 1, 5, 2, 1, 6, 7, 1, 7, 4, 1, 3, 6, 1, 7, 8, 1, 8, 5];
257 self.assertEqual(expected6,list(conn.getValues()));
260 mesh.convertToPolyTypes(eltsV);
261 mesh.checkCoherency();
263 desc=DataArrayInt.New();
264 descIndx=DataArrayInt.New();
265 revDesc=DataArrayInt.New();
266 revDescIndx=DataArrayInt.New();
268 mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
269 mesh2.checkCoherency();
270 self.assertEqual(1,mesh2.getMeshDimension());
271 self.assertEqual(13,mesh2.getNumberOfCells());
272 self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
273 self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
274 self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
275 self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
276 self.assertEqual(expected1,list(desc.getValues()));
277 self.assertEqual(expected2,list(descIndx.getValues()));
278 self.assertEqual(expected3,list(revDescIndx.getValues()));
279 self.assertEqual(expected4,list(revDesc.getValues()));
280 conn=mesh2.getNodalConnectivity();
281 connIndex=mesh2.getNodalConnectivityIndex();
282 self.assertEqual(expected5,list(connIndex.getValues()));
283 self.assertEqual(expected6,list(conn.getValues()));
286 def testDescConn3D(self):
287 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
288 desc=DataArrayInt.New();
289 descIndx=DataArrayInt.New();
290 revDesc=DataArrayInt.New();
291 revDescIndx=DataArrayInt.New();
293 mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
294 mesh2.checkCoherency();
295 self.assertEqual(2,mesh2.getMeshDimension());
296 self.assertEqual(36,mesh2.getNumberOfCells());
297 self.assertEqual(37,revDescIndx.getNbOfElems()); self.assertEqual(37,revDescIndx.getNumberOfTuples());
298 self.assertEqual(9,descIndx.getNbOfElems()); self.assertEqual(9,descIndx.getNumberOfTuples());
299 self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
300 self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
301 expected1=[0, 6, 12, 18, 24, 30, 36, 42, 48]
302 expected2=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 11, 12, 4, 13, 14, 15, 16, 17, 10, 18, 19, 13, 1, 20, 21, 22, 23, 24, 7, 25, 26, 27, 28, 22, 12, 29, 23, 30, 31, 32, 17, 33, 28, 34, 35, 30]
303 expected3=[0, 1, 3, 4, 6, 8, 9, 10, 12, 13, 14, 16, 17, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48]
304 expected4=[0, 0, 4, 0, 0, 1, 0, 2, 0, 1, 1, 5, 1, 1, 1, 3, 2, 2, 6, 2, 3, 2, 2, 3, 3, 7, 3, 3, 4, 4, 4, 5, 4, 6, 4, 5, 5, 5, 5, 7, 6, 6, 7, 6, 6, 7, 7, 7]
305 expected5=[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180]
306 expected6=[4, 0, 1, 4, 3, 4, 9, 12, 13, 10, 4, 0, 9, 10, 1, 4, 1, 10, 13, 4, 4, 4, 13, 12, 3, 4, 3, 12, 9, 0, 4, 1, 2, 5, 4, 4, 10, 13, 14, 11, 4, 1, 10, 11, 2, 4, 2, 11, 14,
307 5, 4, 5, 14, 13, 4, 4, 3, 4, 7, 6, 4, 12, 15, 16, 13, 4, 4, 13, 16, 7, 4, 7, 16, 15, 6, 4, 6, 15, 12, 3, 4, 4, 5, 8, 7, 4, 13, 16, 17, 14, 4, 5, 14, 17, 8, 4, 8,
308 17, 16, 7, 4, 18, 21, 22, 19, 4, 9, 18, 19, 10, 4, 10, 19, 22, 13, 4, 13, 22, 21, 12, 4, 12, 21, 18, 9, 4, 19, 22, 23, 20, 4, 10, 19, 20, 11, 4, 11, 20, 23, 14, 4,
309 14, 23, 22, 13, 4, 21, 24, 25, 22, 4, 13, 22, 25, 16, 4, 16, 25, 24, 15, 4, 15, 24, 21, 12, 4, 22, 25, 26, 23, 4, 14, 23, 26, 17, 4, 17, 26, 25, 16]
310 expected7=[4, 0, 1, 4, 3, 4, 9, 12, 13, 10, 4, 0, 9, 10, 1, 4, 1, 10, 13, 4, 4, 4, 13, 12, 3, 4, 3, 12, 9, 0, 5, 1, 2, 5, 4, 5, 10, 13, 14, 11, 5, 1, 10, 11, 2, 5, 2, 11, 14,
311 5, 5, 5, 14, 13, 4, 4, 3, 4, 7, 6, 4, 12, 15, 16, 13, 4, 4, 13, 16, 7, 4, 7, 16, 15, 6, 4, 6, 15, 12, 3, 5, 4, 5, 8, 7, 5, 13, 16, 17, 14, 5, 5, 14, 17, 8, 5, 8,
312 17, 16, 7, 4, 18, 21, 22, 19, 4, 9, 18, 19, 10, 4, 10, 19, 22, 13, 4, 13, 22, 21, 12, 4, 12, 21, 18, 9, 4, 19, 22, 23, 20, 4, 10, 19, 20, 11, 4, 11, 20, 23, 14, 4,
313 14, 23, 22, 13, 4, 21, 24, 25, 22, 4, 13, 22, 25, 16, 4, 16, 25, 24, 15, 4, 15, 24, 21, 12, 4, 22, 25, 26, 23, 4, 14, 23, 26, 17, 4, 17, 26, 25, 16]
315 self.assertEqual(expected1,list(descIndx.getValues()));
316 self.assertEqual(expected2,list(desc.getValues()));
317 self.assertEqual(expected3,list(revDescIndx.getValues()));
318 self.assertEqual(expected4,list(revDesc.getValues()));
319 self.assertEqual(expected5,list(mesh2.getNodalConnectivityIndex().getValues()));
320 self.assertEqual(expected6,list(mesh2.getNodalConnectivity().getValues()));
323 mesh.convertToPolyTypes(eltsV);
324 mesh.checkCoherency();
325 desc=DataArrayInt.New();
326 descIndx=DataArrayInt.New();
327 revDesc=DataArrayInt.New();
328 revDescIndx=DataArrayInt.New();
329 mesh2=mesh.buildDescendingConnectivity(desc,descIndx,revDesc,revDescIndx);
330 mesh2.checkCoherency();
331 self.assertEqual(2,mesh2.getMeshDimension());
332 self.assertEqual(36,mesh2.getNumberOfCells());
333 self.assertEqual(37,revDescIndx.getNbOfElems()); self.assertEqual(37,revDescIndx.getNumberOfTuples());
334 self.assertEqual(9,descIndx.getNbOfElems()); self.assertEqual(9,descIndx.getNumberOfTuples());
335 self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
336 self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
337 self.assertEqual(expected1,list(descIndx.getValues()));
338 self.assertEqual(expected2,list(desc.getValues()));
339 self.assertEqual(expected3,list(revDescIndx.getValues()));
340 self.assertEqual(expected4,list(revDesc.getValues()));
341 self.assertEqual(expected5,list(mesh2.getNodalConnectivityIndex().getValues()));
342 self.assertEqual(expected7,list(mesh2.getNodalConnectivity().getValues()));
345 def testFindBoundaryNodes(self):
346 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
347 boundaryNodes=mesh.findBoundaryNodes();
348 expected1=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
349 self.assertEqual(expected1,boundaryNodes.getValues());
352 def testBoundaryMesh(self):
353 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
354 mesh2=mesh.buildBoundaryMesh(False);
355 self.assertEqual(24,mesh2.getNumberOfCells());
356 self.assertEqual(26,mesh2.getNumberOfNodes());
359 def testBuildPartOfMySelf(self):
360 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
361 mesh.setName("Toto");
365 subMesh=mesh.buildPart(tab1)
366 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
367 subMesh=mesh.buildPartOfMySelf(tab1,True);
368 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
369 name=subMesh.getName();
370 self.assertEqual(2,len(mesh.getAllTypes()));
371 self.assertEqual(NORM_TRI3,mesh.getAllTypes()[0]);
372 self.assertEqual(NORM_QUAD4,mesh.getAllTypes()[1]);
373 self.assertEqual(1,len(subMesh.getAllTypes()));
374 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[0]);
375 self.assertEqual(name,"Toto");
376 self.assertEqual(2,subMesh.getNumberOfCells());
377 subConn=[4,0,3,4,1,4,7,8,5,4];
378 subConnIndex=[0,5,10];
379 self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
380 self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
381 self.assertEqual(subConn[0:10],list(subMesh.getNodalConnectivity().getValues()));
382 self.assertEqual(subConnIndex[0:3],list(subMesh.getNodalConnectivityIndex().getValues()));
384 subMesh=mesh.buildPartOfMySelf(tab2[0:3],True);
385 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh));
386 name=subMesh.getName();
387 self.assertEqual(2,len(subMesh.getAllTypes()));
388 self.assertEqual(NORM_TRI3,subMesh.getAllTypes()[0]);
389 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[1]);
390 self.assertEqual(name,"Toto");
391 self.assertEqual(3,subMesh.getNumberOfCells());
392 subConn2=[4,0,3,4,1,3,4,5,2,4,6,7,4,3]
393 subConnIndex2=[0,5,9,14]
394 self.assertEqual(14,subMesh.getNodalConnectivity().getNbOfElems());
395 self.assertEqual(4,subMesh.getNodalConnectivityIndex().getNbOfElems());
396 self.assertEqual(subConn2[0:14],list(subMesh.getNodalConnectivity().getValues()));
397 self.assertEqual(subConnIndex2[0:4],list(subMesh.getNodalConnectivityIndex().getValues()));
398 dd=DataArrayInt.New()
402 subMesh=subMesh.buildPartOfMySelf(dd,True);
403 self.assertEqual("coucou",subMesh.getName());
406 def testBuildPartOfMySelfNode(self):
407 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
409 subMesh=mesh.buildPartOfMySelfNode(tab1[0:4],True);
410 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
411 self.assertEqual(1,len(subMesh.getAllTypes()));
412 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[0]);
413 self.assertEqual(1,subMesh.getNumberOfCells());
414 self.assertEqual(5,subMesh.getNodalConnectivity().getNbOfElems());
415 self.assertEqual(2,subMesh.getNodalConnectivityIndex().getNbOfElems());
418 self.assertEqual(subConn[0:5],list(subMesh.getNodalConnectivity().getValues()));
419 self.assertEqual(subConnIndex[0:2],list(subMesh.getNodalConnectivityIndex().getValues()));
421 ddd=DataArrayInt.New()
422 ddd.setValues(tab1[0:2],2,1)
424 subMesh=mesh.buildPartOfMySelfNode(ddd,False);
425 self.assertEqual("ddd",subMesh.getName())
426 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
427 self.assertEqual(2,len(subMesh.getAllTypes()));
428 self.assertEqual(NORM_TRI3,subMesh.getAllTypes()[0]);
429 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[1]);
430 self.assertEqual(3,subMesh.getNumberOfCells());
431 self.assertEqual(14,subMesh.getNodalConnectivity().getNbOfElems());
432 self.assertEqual(4,subMesh.getNodalConnectivityIndex().getNbOfElems());
433 subConn2=[3,4,5,2,4,6,7,4,3,4,7,8,5,4]
434 subConnIndex2=[0,4,9,14]
435 self.assertEqual(subConn2[0:14],list(subMesh.getNodalConnectivity().getValues()));
436 self.assertEqual(subConnIndex2[0:4],list(subMesh.getNodalConnectivityIndex().getValues()));
437 #testing the case where length of tab2 is greater than max number of node per cell.
439 subMesh=mesh.buildPartOfMySelfNode(tab2[0:7],True);
440 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
441 self.assertEqual(2,len(subMesh.getAllTypes()));
442 self.assertEqual(NORM_TRI3,subMesh.getAllTypes()[0]);
443 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[1]);
444 self.assertEqual(3,subMesh.getNumberOfCells());
447 def testZipCoords(self):
448 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
449 self.assertEqual(2,len(mesh.getAllTypes()));
450 self.assertEqual(2,mesh.getSpaceDimension());
451 self.assertEqual(9,mesh.getNumberOfNodes());
452 self.assertEqual(5,mesh.getNumberOfCells());
453 oldConn=mesh.getNodalConnectivity().getValues()[0:mesh.getNodalConnectivity().getNbOfElems()];
454 oldConnIndex=mesh.getNodalConnectivityIndex().getValues()[0:mesh.getNumberOfCells()+1]
455 oldCoords=mesh.getCoords();
457 self.assertEqual(2,len(mesh.getAllTypes()));
458 self.assertEqual(2,mesh.getSpaceDimension());
459 self.assertEqual(9,mesh.getNumberOfNodes());
460 self.assertEqual(5,mesh.getNumberOfCells());
461 self.assertEqual(mesh.getCoords().getValues()[0:2*9],oldCoords.getValues());
462 self.assertEqual(list(oldConn),list(mesh.getNodalConnectivity().getValues()));
463 self.assertEqual(list(oldConnIndex),list(mesh.getNodalConnectivityIndex().getValues()));
466 subMesh=mesh.buildPartOfMySelf(tab1,True);
467 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
468 traducer=subMesh.zipCoordsTraducer();
469 expectedTraducer=[0, 1, -1, 2, 3, 4, -1, 5, 6]
470 self.assertEqual(expectedTraducer,list(traducer.getValues()));
471 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[0]);
472 self.assertEqual(2,subMesh.getNumberOfCells());
473 subConn=[4,0,2,3,1,4,5,6,4,3]
474 subConnIndex=[0,5,10]
475 self.assertEqual(7,subMesh.getNumberOfNodes());
476 self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
477 self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
478 self.assertEqual(subConn,list(subMesh.getNodalConnectivity().getValues()));
479 self.assertEqual(subConnIndex,list(subMesh.getNodalConnectivityIndex().getValues()));
481 subMesh=mesh.buildPartOfMySelf(tab1,False);
482 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
483 self.assertEqual(NORM_QUAD4,subMesh.getAllTypes()[0]);
484 self.assertEqual(2,subMesh.getNumberOfCells());
485 self.assertEqual(7,subMesh.getNumberOfNodes());
486 self.assertEqual(10,subMesh.getNodalConnectivity().getNbOfElems());
487 self.assertEqual(3,subMesh.getNodalConnectivityIndex().getNbOfElems());
488 self.assertEqual(subConn,list(subMesh.getNodalConnectivity().getValues()));
489 self.assertEqual(subConnIndex,list(subMesh.getNodalConnectivityIndex().getValues()));
492 def testZipConnectivity(self):
493 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
494 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
496 m3=m2.buildPartOfMySelf(cells1,True);
497 self.assertTrue(isinstance(m3,MEDCouplingUMesh))
498 m4=MEDCouplingDataForTest.build2DSourceMesh_1();
499 m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
500 m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
502 self.assertEqual(10,m6.getNumberOfCells());
503 self.assertEqual(22,m6.getNumberOfNodes());
504 (arr,areNodesMerged,newNbOfNodes)=m6.mergeNodes(1e-13);
505 self.assertTrue(areNodesMerged);
506 self.assertEqual(10,m6.getNumberOfCells());
507 self.assertEqual(9,m6.getNumberOfNodes());
509 arr=m6.zipConnectivityTraducer(0);
510 self.assertEqual(7,m6.getNumberOfCells());
512 arr=m6.zipConnectivityTraducer(0);
513 self.assertTrue(m7.isEqual(m6,1e-12));
514 self.assertEqual(7,m6.getNumberOfCells());
517 def testEqualMesh(self):
518 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
519 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
521 self.assertTrue(mesh1.isEqual(mesh1,1e-12));
523 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
524 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
525 pt=mesh2.getCoords().getValues();
527 mesh2.getCoords().setIJ(0,1,5.999);
528 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
529 self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
530 mesh2.getCoords().setIJ(0,1,tmp);
531 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
532 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
534 pt2=mesh1.getNodalConnectivity().getValues();
535 mesh1.getNodalConnectivity().setIJ(5,0,int(pt2[5])+1);
536 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
537 self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
538 mesh1.getNodalConnectivity().setIJ(5,0,int(pt2[5]));
539 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
540 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
542 pt2=mesh1.getNodalConnectivityIndex().getValues();
543 mesh1.getNodalConnectivityIndex().setIJ(1,0,int(pt2[1]+1));
544 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
545 self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
546 mesh1.getNodalConnectivityIndex().setIJ(1,0,int(pt2[1]));
547 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
548 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
550 tmp3=mesh1.getName();
551 mesh1.setName("lllll");
552 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
553 self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
555 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
556 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
558 tmp3=mesh2.getCoords().getInfoOnComponent(1);
559 mesh2.getCoords().setInfoOnComponent(1,"kkkkkk");
560 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
561 self.assertTrue(not mesh2.isEqual(mesh1,1e-12));
562 mesh2.getCoords().setInfoOnComponent(1,tmp3);
563 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
564 self.assertTrue(mesh2.isEqual(mesh1,1e-12));
567 def testEqualFieldDouble(self):
568 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
569 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
571 fieldOnCells1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
572 fieldOnCells1.setMesh(mesh1);
573 fieldOnCells2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
574 fieldOnCells2.setMesh(mesh2);
576 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
577 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
579 fieldOnNodes1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
580 self.assertTrue(not fieldOnCells1.isEqual(fieldOnNodes1,1e-12,1e-15));
581 self.assertTrue(not fieldOnNodes1.isEqual(fieldOnCells1,1e-12,1e-15));
583 fieldOnCells2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
584 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
585 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
586 fieldOnCells1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
587 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
588 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
589 fieldOnCells1.setTime(4.,6,7);
590 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
591 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
592 fieldOnCells2.setTime(4.,6,7);
593 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
594 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
595 fieldOnCells1.setName("Power");
596 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
597 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
598 fieldOnCells2.setName("Power");
599 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
600 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
602 fieldOnCells1.setMesh(mesh1);
603 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
604 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
605 fieldOnCells2.setMesh(mesh1);
606 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
607 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
608 arr=DataArrayDouble.New();
610 arr.setValues(mesh1.getNumberOfCells()*3*[6.],mesh1.getNumberOfCells(),3);
611 fieldOnCells1.setArray(arr);
612 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
613 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
614 fieldOnCells2.setArray(arr);
615 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
616 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
619 fieldOnCells2.setArray(arr2);
620 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
621 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
623 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
624 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
626 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
627 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
628 arr2.setName("popo2");
629 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
630 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
632 arr2.setName("popo");
633 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
634 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
636 arr2.setInfoOnComponent(2,"jjj");
637 self.assertTrue(not fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
638 self.assertTrue(not fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
639 arr.setInfoOnComponent(2,"jjj");
640 self.assertTrue(fieldOnCells1.isEqual(fieldOnCells2,1e-12,1e-15));
641 self.assertTrue(fieldOnCells2.isEqual(fieldOnCells1,1e-12,1e-15));
644 def testNatureChecking(self):
645 field=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
646 field.setNature(Integral);
647 field.setNature(ConservativeVolumic);
648 field.setNature(IntegralGlobConstraint);
649 field=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
650 field.setNature(ConservativeVolumic);
651 self.assertRaises(InterpKernelException,field.setNature,Integral);
652 self.assertRaises(InterpKernelException,field.setNature,IntegralGlobConstraint);
655 def testBuildSubMeshData(self):
656 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1()
657 #check buildSubMesh on field on cells
658 fieldCells=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
659 fieldCells.setMesh(targetMesh);
661 ret1,di=fieldCells.buildSubMeshData(elts);
662 self.assertTrue(isinstance(ret1,MEDCouplingUMesh))
663 self.assertEqual(3,ret1.getNumberOfCells());
664 self.assertEqual(9,ret1.getNumberOfNodes());
665 self.assertEqual(3,di.getNumberOfTuples());
666 self.assertEqual(1,di.getNumberOfComponents());
667 toCheck=di.getValues();
668 self.assertTrue(elts,toCheck);
669 #check buildSubMesh on field on nodes
670 fieldNodes=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
671 fieldNodes.setMesh(targetMesh);
672 ret2,di=fieldNodes.buildSubMeshData(elts);
673 self.assertTrue(isinstance(ret2,MEDCouplingUMesh))
674 self.assertEqual(3,ret2.getNumberOfCells());
675 self.assertEqual(6,ret2.getNumberOfNodes());
676 self.assertEqual(6,di.getNumberOfTuples());
677 self.assertEqual(1,di.getNumberOfComponents());
678 toCheck=di.getValues();
679 expected=[1,2,4,5,7,8]
680 self.assertEqual(expected,list(toCheck));
683 def testExtrudedMesh1(self):
684 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
685 ext=MEDCouplingExtrudedMesh.New(mesh3D,mesh2D,1);
686 self.assertEqual(18,ext.getNumberOfCells());
687 self.assertEqual(60,ext.getNumberOfNodes());
688 ids3D=ext.getMesh3DIds();
689 ids3DExpected=[5,4,3,2,1,0, 11,10,9,8,7,6, 17,16,15,14,13,12]
690 self.assertEqual(18,ids3D.getNumberOfTuples());
691 self.assertEqual(1,ids3D.getNumberOfComponents());
692 self.assertEqual(ids3DExpected,list(ids3D.getValues()));
693 mesh1D=ext.getMesh1D();
694 self.assertEqual(4,mesh1D.getNumberOfNodes());
695 self.assertEqual(3,mesh1D.getNumberOfCells());
696 mesh1DExpected=[0.66666666666666663, 1.4583333333333333, 0, 0.66666666666666663,
697 1.4583333333333333, 1, 0.66666666666666663, 1.4583333333333333,
698 2, 0.66666666666666663, 1.4583333333333333, 3]
699 mesh1DCoords=mesh1D.getCoords();
700 self.assertEqual(4,mesh1DCoords.getNumberOfTuples());
701 self.assertEqual(3,mesh1DCoords.getNumberOfComponents());
702 self.assertEqual(mesh1DExpected,mesh1DCoords.getValues());
703 conn1D=mesh1D.getNodalConnectivity();
704 self.assertEqual(9,conn1D.getNumberOfTuples());
705 self.assertEqual(1,conn1D.getNumberOfComponents());
706 conn1DExpected=[1,0,1,1,1,2,1,2,3]
707 self.assertEqual(conn1DExpected,list(conn1D.getValues()));
710 def testExtrudedMesh3(self):
711 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
712 m1.changeSpaceDimension(3);
713 m2=MEDCouplingDataForTest.buildCU1DMesh_U();
714 m2.changeSpaceDimension(3);
717 m2.rotate(center,vector,-pi/2.);
718 m3=m1.buildExtrudedMesh(m2,0);
720 m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
721 self.assertEqual(15,m4.getNumberOfCells());
722 self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
723 self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
724 m3DIds=m4.getMesh3DIds().getValues();
725 self.assertEqual(range(15),list(m3DIds));
726 #some random in cells to check that extrusion alg find it correctly
727 expected1=[1,3,2,0,6,5,7,10,11,8,12,9,14,13,4]
728 m3.renumberCells(expected1,False);
729 m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
730 self.assertEqual(15,m4.getNumberOfCells());
731 self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
732 self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
733 m3DIds=m4.getMesh3DIds().getValues();
734 self.assertEqual(expected1,list(m3DIds));
735 #play with polygons and polyedrons
737 m1.convertToPolyTypes(cells);
738 m3=m1.buildExtrudedMesh(m2,0);
739 self.assertEqual(NORM_HEXA8,m3.getTypeOfCell(0));
740 self.assertEqual(NORM_PENTA6,m3.getTypeOfCell(1));
741 self.assertEqual(NORM_POLYHED,m3.getTypeOfCell(2));
742 self.assertEqual(NORM_POLYHED,m3.getTypeOfCell(3));
743 self.assertEqual(NORM_HEXA8,m3.getTypeOfCell(4));
744 m3.renumberCells(expected1,False);
745 m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
746 self.assertEqual(15,m4.getNumberOfCells());
747 self.assertEqual(5,m4.getMesh2D().getNumberOfCells());
748 self.assertEqual(3,m4.getMesh1D().getNumberOfCells());
749 m3DIds=m4.getMesh3DIds().getValues();
750 self.assertEqual(expected1,list(m3DIds));
753 def testExtrudedMesh4(self):
754 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
756 m1.convertToPolyTypes(cells);
757 m1.changeSpaceDimension(3);
758 m2=MEDCouplingDataForTest.buildCU1DMesh_U();
759 m2.changeSpaceDimension(3);
762 m2.rotate(center,vector,-pi/2.);
763 m3=m1.buildExtrudedMesh(m2,0);
764 expected1=[1,3,2,0,6,5,7,10,11,8,12,9,14,13,4]
765 rexpected1=[3, 0, 2, 1, 14, 5, 4, 6, 9, 11, 7, 8, 10, 13, 12]
766 m3.renumberCells(expected1,False);
767 m4=MEDCouplingExtrudedMesh.New(m3,m1,0);
768 self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(0));
769 self.assertEqual(NORM_HEXA8,m4.getTypeOfCell(1));
770 self.assertEqual(NORM_POLYHED,m4.getTypeOfCell(2));
771 self.assertEqual(NORM_PENTA6,m4.getTypeOfCell(7));
772 f=m4.getMeasureField(True);
774 self.assertEqual(15,arr.getNumberOfTuples());
775 self.assertEqual(1,arr.getNumberOfComponents());
776 arrPtr=arr.getValues();
777 expected2=[0.075,0.0375,0.0375,0.075,0.075,
778 0.1125,0.05625,0.05625,0.1125,0.1125,
779 0.0625,0.03125,0.03125,0.0625,0.0625]
781 self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],16);
783 m5=m4.build3DUnstructuredMesh();
784 self.assertTrue(m5.isEqual(m3,1e-12));
785 f=m5.getMeasureField(True);
787 self.assertTrue(isinstance(f.getMesh(),MEDCouplingExtrudedMesh))
789 arrPtr=arr.getValues();
791 self.assertAlmostEqual(expected2[rexpected1[i]],arrPtr[i],15);
795 def testFindCommonNodes(self):
796 targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
797 comm,commI=targetMesh.findCommonNodes(1e-10,-1);
798 self.assertEqual(1,commI.getNumberOfTuples());
799 self.assertEqual(0,comm.getNumberOfTuples());
800 o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
801 self.assertEqual(27,newNbOfNodes);
802 self.assertEqual(27,o2n.getNumberOfTuples());
804 self.assertEqual(o2nExp1,list(o2n.getValues()));
806 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
807 self.assertEqual(31,targetMesh.getNumberOfNodes());
808 comm,commI=targetMesh.findCommonNodes(1e-10);# testing default parameter
809 self.assertEqual(3,commI.getNumberOfTuples());
810 self.assertEqual(6,comm.getNumberOfTuples());
811 commExpected=[1,27,28,29,23,30]
812 commIExpected=[0,4,6]
813 self.assertEqual(commExpected,list(comm.getValues()));
814 self.assertEqual(commIExpected,list(commI.getValues()));
815 o2n,newNbOfNodes=targetMesh.buildNewNumberingFromCommonNodesFormat(comm,commI);
816 self.assertEqual(31,o2n.getNumberOfTuples());
817 self.assertEqual(27,newNbOfNodes);
818 o2nExp2=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
819 21,22,23,24,25,26,1,1,1,23]
820 self.assertEqual(o2nExp2,list(o2n.getValues()));
822 targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
823 time=targetMesh.getTimeOfThis();
824 o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
825 targetMesh.updateTime();
826 self.assertEqual(time,targetMesh.getTimeOfThis());
827 self.assertTrue(not areNodesMerged);
829 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
830 time=targetMesh.getTimeOfThis();
831 o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
832 targetMesh.updateTime();
833 self.assertTrue(time!=targetMesh.getTimeOfThis());
834 self.assertTrue(areNodesMerged);
835 connExp=[18,0,1,4,3,9,10,13,12, 18,1,2,5,4,10,11,14,13, 18,3,4,7,6,12,13,16,15,
836 18,4,5,8,7,13,14,17,16,
837 18,9,10,13,12,18,19,22,21, 18,10,11,14,13,19,20,23,22, 18,12,13,16,15,21,22,25,24,
838 18,13,14,17,16,22,23,26,25]
839 self.assertEqual(72,targetMesh.getNodalConnectivity().getNumberOfTuples());
840 self.assertEqual(connExp,list(targetMesh.getNodalConnectivity().getValues()));
841 self.assertEqual(27,targetMesh.getCoords().getNumberOfTuples());
842 coordsExp=[ 0., 0., 0., 50., 0., 0. , 200., 0., 0. , 0., 50., 0., 50., 50., 0. ,
843 200., 50., 0., 0., 200., 0., 50., 200., 0. , 200., 200., 0. ,
844 0., 0., 50., 50., 0., 50. , 200., 0., 50. , 0., 50., 50., 50.,
845 50., 50. , 200., 50., 50., 0., 200., 50., 50., 200., 50. ,
846 200., 200., 50. , 0., 0., 200., 50., 0., 200. , 200., 0., 200.
847 , 0., 50., 200., 50., 50., 200. , 200., 50., 200.,
848 0., 200., 200., 50., 200., 200. , 200., 200., 200. ]
849 self.assertEqual(coordsExp,targetMesh.getCoords().getValues());
851 targetMesh=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
852 self.assertEqual(18,targetMesh.getNumberOfNodes());
853 time=targetMesh.getTimeOfThis();
854 o2n,areNodesMerged,newNbOfNodes=targetMesh.mergeNodes(1e-10);
855 self.assertTrue(time!=targetMesh.getTimeOfThis());
856 self.assertTrue(areNodesMerged);
857 self.assertEqual(9,targetMesh.getNumberOfNodes());
858 connExp2=[4,0,4,3,1, 3,1,3,2, 3,3,5,2, 4,4,6,7,3, 4,7,8,5,3]
859 self.assertEqual(23,targetMesh.getNodalConnectivity().getNumberOfTuples());
860 self.assertEqual(connExp2,list(targetMesh.getNodalConnectivity().getValues()));
861 coordsExp2=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, 0.2,0.2, -0.3,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7]
862 self.assertEqual(9,targetMesh.getCoords().getNumberOfTuples());
863 self.assertEqual(coordsExp2,targetMesh.getCoords().getValues());
866 def testCheckButterflyCells(self):
867 sourceMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
868 cells=sourceMesh.checkButterflyCells();
869 self.assertEqual(0,len(cells));
870 conn=sourceMesh.getNodalConnectivity()
872 conn.setIJ(15,0,conn.getIJ(16,0))
874 cells=sourceMesh.checkButterflyCells();
875 self.assertEqual(1,len(cells));
876 self.assertEqual([3],cells.getValues());
878 conn.setIJ(15,0,conn.getIJ(16,0))
880 cells=sourceMesh.checkButterflyCells();
881 self.assertEqual(0,len(cells));
883 sourceMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
884 cells=sourceMesh.checkButterflyCells();
885 self.assertEqual(0,len(cells));
886 conn=sourceMesh.getNodalConnectivity()
888 conn.setIJ(15,0,conn.getIJ(16,0))
890 cells=sourceMesh.checkButterflyCells();
891 self.assertEqual(1,len(cells));
892 self.assertEqual([3],cells.getValues());
894 conn.setIJ(15,0,conn.getIJ(16,0))
896 cells=sourceMesh.checkButterflyCells();
897 self.assertEqual(0,len(cells));
900 def testMergeMesh1(self):
901 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
902 m2=MEDCouplingDataForTest.build2DSourceMesh_1();
905 m3=m1.mergeMyselfWith(m2);
906 self.assertTrue(isinstance(m3,MEDCouplingUMesh));
908 m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
909 self.assertTrue(m3.isEqual(m4,1.e-12));
910 da,isMerged,newNbOfNodes=m3.mergeNodes(1.e-12);
911 self.assertEqual(11,m3.getNumberOfNodes());
912 self.assertTrue(isMerged);
915 def testMergeMeshOnSameCoords1(self):
916 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
917 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
919 m2.convertToPolyTypes(cells);
920 m1.tryToShareSameCoords(m2,1e-12);
921 m3=MEDCouplingDataForTest.build2DTargetMesh_1();
922 m3.tryToShareSameCoords(m2,1e-12);
924 m4=MEDCouplingUMesh.MergeUMeshesOnSameCoords(meshes);
926 self.assertEqual(15,m4.getNumberOfCells());
928 m1_1=m4.buildPartOfMySelf(cells1,True);
929 m1_1.setName(m1.getName());
930 self.assertTrue(m1.isEqual(m1_1,1e-12));
932 m2_1=m4.buildPartOfMySelf(cells2,True);
933 m2_1.setName(m2.getName());
934 self.assertTrue(m2.isEqual(m2_1,1e-12));
935 cells3=[10,11,12,13,14]
936 m3_1=m4.buildPartOfMySelf(cells3,True);
937 m3_1.setName(m3.getName());
938 self.assertTrue(m3.isEqual(m3_1,1e-12));
941 def testMergeField1(self):
942 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
943 m2=MEDCouplingDataForTest.build2DSourceMesh_1();
946 f1=m1.getMeasureField(True);
947 f2=m2.getMeasureField(True);
948 f3=MEDCouplingFieldDouble.MergeFields(f1,f2);
950 m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
951 self.assertTrue(f3.getMesh().isEqual(m4,1.e-12));
953 self.assertEqual(name,"MeasureOfMesh_");
954 self.assertEqual(f3.getTypeOfField(),ON_CELLS);
955 self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
956 self.assertEqual(1,f3.getNumberOfComponents());
957 self.assertEqual(7,f3.getNumberOfTuples());
958 values=[0.25,0.125,0.125,0.25,0.25,0.5,0.5]
959 tmp=f3.getArray().getValues();
960 self.assertEqual(len(values),len(tmp))
962 self.assertTrue(abs(values[i]-tmp[i])<1e-12)
966 def testFillFromAnalytic(self):
967 m=MEDCouplingDataForTest.build2DTargetMesh_1();
968 m.setTime(3.4,5,6); m.setTimeUnit("us");
969 f1=m.fillFromAnalytic(ON_CELLS,1,"x+y");
970 self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
971 self.assertEqual("us",f1.getTimeUnit())
973 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
974 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
975 self.assertEqual(1,f1.getNumberOfComponents());
976 self.assertEqual(5,f1.getNumberOfTuples());
977 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
978 tmp=f1.getArray().getValues();
979 self.assertEqual(len(values1),len(tmp))
980 for i in xrange(len(tmp)):
981 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
984 f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
986 self.assertEqual(f1.getTypeOfField(),ON_NODES);
987 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
988 self.assertEqual(1,f1.getNumberOfComponents());
989 self.assertEqual(9,f1.getNumberOfTuples());
990 values2=[-0.6,-0.1,0.4,-0.1,0.4,0.9,0.4,0.9,1.4]
991 tmp=f1.getArray().getValues();
992 self.assertEqual(len(values2),len(tmp))
993 for i in xrange(len(tmp)):
994 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
997 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
999 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1000 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1001 self.assertEqual(2,f1.getNumberOfComponents());
1002 self.assertEqual(9,f1.getNumberOfTuples());
1003 values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
1004 tmp=f1.getArray().getValues();
1005 self.assertEqual(len(values3),len(tmp))
1006 for i in xrange(len(tmp)):
1007 self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1009 values4=f1.accumulate();
1010 self.assertEqual(2,len(values4))
1011 self.assertTrue(abs(3.6-values4[0])<1.e-12);
1012 self.assertTrue(abs(7.2-values4[1])<1.e-12);
1013 values4=f1.integral(True);
1014 self.assertEqual(2,len(values4))
1015 self.assertTrue(abs(0.5-values4[0])<1.e-12);
1016 self.assertTrue(abs(1.-values4[1])<1.e-12);
1018 self.assertRaises(InterpKernelException,m.fillFromAnalytic,ON_NODES,1,"1./(x-0.2)");
1021 def testFillFromAnalytic2(self):
1022 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1023 f1=m.fillFromAnalytic(ON_CELLS,1,"y+x");
1024 f1.checkCoherency();
1025 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
1026 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1027 self.assertEqual(1,f1.getNumberOfComponents());
1028 self.assertEqual(5,f1.getNumberOfTuples());
1029 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
1030 tmp=f1.getArray().getValues();
1031 self.assertEqual(len(values1),len(tmp))
1032 for i in xrange(len(values1)):
1033 self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
1036 f1=m.fillFromAnalytic(ON_NODES,1,"y+2*x");
1037 f1.checkCoherency();
1038 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1039 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1040 self.assertEqual(1,f1.getNumberOfComponents());
1041 self.assertEqual(9,f1.getNumberOfTuples());
1042 values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1043 tmp=f1.getArray().getValues();
1044 self.assertEqual(len(values2),len(tmp))
1045 for i in xrange(len(values2)):
1046 self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
1048 f1=m.fillFromAnalytic(ON_NODES,1,"2.*x+y");
1049 f1.checkCoherency();
1050 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1051 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1052 self.assertEqual(1,f1.getNumberOfComponents());
1053 self.assertEqual(9,f1.getNumberOfTuples());
1054 tmp=f1.getArray().getValues();
1055 values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1056 self.assertEqual(len(values2Bis),len(tmp))
1057 for i in xrange(len(values2Bis)):
1058 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
1061 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1062 f1.checkCoherency();
1063 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1064 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1065 self.assertEqual(2,f1.getNumberOfComponents());
1066 self.assertEqual(9,f1.getNumberOfTuples());
1067 values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
1068 tmp=f1.getArray().getValues();
1069 self.assertEqual(len(values3),len(tmp))
1070 for i in xrange(len(values3)):
1071 self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
1073 values4=f1.accumulate();
1074 self.assertTrue(abs(3.6-values4[0])<1.e-12);
1075 self.assertTrue(abs(7.2-values4[1])<1.e-12);
1076 values4=f1.integral(True);
1077 self.assertTrue(abs(0.5-values4[0])<1.e-12);
1078 self.assertTrue(abs(1.-values4[1])<1.e-12);
1081 def testApplyFunc(self):
1082 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1083 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1084 f1.checkCoherency();
1085 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1086 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1087 self.assertEqual(2,f1.getNumberOfComponents());
1088 self.assertEqual(9,f1.getNumberOfTuples());
1089 f1.applyFunc(1,"x+y");
1090 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1091 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1092 self.assertEqual(1,f1.getNumberOfComponents());
1093 self.assertEqual(9,f1.getNumberOfTuples());
1094 values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1095 tmp=f1.getArray().getValues();
1096 self.assertEqual(len(values1),len(tmp))
1097 for i in xrange(len(tmp)):
1098 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1102 def testApplyFunc2(self):
1103 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1104 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1105 f1.checkCoherency();
1106 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1107 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1108 self.assertEqual(2,f1.getNumberOfComponents());
1109 self.assertEqual(9,f1.getNumberOfTuples());
1112 self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a+b+c+d");
1113 self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a/0");
1114 self.assertRaises(InterpKernelException, f2.applyFunc, "a/0");
1115 f2.applyFunc("abs(u)^2.4+2*u");
1116 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1117 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1118 self.assertEqual(2,f1.getNumberOfComponents());
1119 self.assertEqual(9,f1.getNumberOfTuples());
1120 values2=[-0.9065304805418678, -0.85105859001709905, -0.19601892829446504, -0.37898777756476987,
1121 0.91090317490482353, 2.1853504664669781, -0.19601892829446504, -0.37898777756476987,
1122 0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1123 0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1124 5.0423700574830965, 17.435300118916864]
1125 tmp=f2.getArray().getValues();
1126 self.assertEqual(len(tmp),len(values2))
1127 for i in xrange(len(tmp)):
1128 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1131 f1.applyFunc(1,"x+y");
1132 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1133 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1134 self.assertEqual(1,f1.getNumberOfComponents());
1135 self.assertEqual(9,f1.getNumberOfTuples());
1136 values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1137 tmp=f1.getArray().getValues();
1138 self.assertEqual(len(tmp),len(values1))
1139 for i in xrange(len(tmp)):
1140 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1144 def testOperationsOnFields(self):
1145 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1146 f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1147 f2=m.fillFromAnalytic(ON_NODES,1,"x+y");
1148 f1.checkCoherency();
1149 f2.checkCoherency();
1151 f3.checkCoherency();
1152 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1153 self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1154 values1=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1155 tmp=f3.getArray().getValues();
1156 self.assertEqual(len(values1),len(tmp))
1157 for i in xrange(len(tmp)):
1158 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1162 f3.checkCoherency();
1163 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1164 self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1165 values2=[0.36,0.01,0.16,0.01,0.16,0.81,0.16,0.81,1.96]
1166 tmp=f3.getArray().getValues();
1167 self.assertEqual(len(values2),len(tmp))
1168 for i in xrange(len(tmp)):
1169 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1174 f4.checkCoherency();
1175 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1176 self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1177 values3=[0.6,0.1,-0.4,0.1,-0.4,-0.9,-0.4,-0.9,-1.4]
1178 tmp=f4.getArray().getValues();
1179 self.assertEqual(len(values3),len(tmp))
1180 for i in xrange(len(tmp)):
1181 self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1186 f4.checkCoherency();
1187 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1188 self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1189 tmp=f4.getArray().getValues();
1190 for i in xrange(len(tmp)):
1191 self.assertTrue(abs(tmp[i]-2.)<1.e-12)
1194 f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
1195 f4.checkCoherency();
1196 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1197 self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1198 self.assertRaises(InterpKernelException,f1.__add__,f4);
1199 f5=f4.buildNewTimeReprFromThis(ONE_TIME,False);
1200 self.assertEqual(f5.getTypeOfField(),ON_NODES);
1201 self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1203 tmp=f3.getArray().getValues();
1204 values4=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1205 self.assertEqual(len(values3),len(tmp))
1206 for i in xrange(len(tmp)):
1207 self.assertTrue(abs(tmp[i]-values4[i])<1.e-12)
1210 f4=f2.buildNewTimeReprFromThis(NO_TIME,True);
1211 f4.checkCoherency();
1212 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1213 self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1214 self.assertRaises(InterpKernelException,f1.__add__,f4);
1215 f5=f4.buildNewTimeReprFromThis(ONE_TIME,True);
1216 self.assertEqual(f5.getTypeOfField(),ON_NODES);
1217 self.assertEqual(f5.getTimeDiscretization(),ONE_TIME);
1219 tmp=f3.getArray().getValues();
1220 values5=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1221 self.assertEqual(len(values5),len(tmp))
1222 for i in xrange(len(tmp)):
1223 self.assertTrue(abs(tmp[i]-values5[i])<1.e-12)
1227 def testOperationsOnFields2(self):
1228 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1229 m.setTime(3.4,5,6); m.setTimeUnit("us");
1230 f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1231 f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1233 f3.checkCoherency();
1234 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1235 self.assertEqual(f3.getTimeDiscretization(),ONE_TIME);
1236 expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1237 0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1238 0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1239 self.assertEqual(1,f3.getNumberOfComponents());
1240 self.assertEqual(9,f3.getNumberOfTuples());
1241 val=f3.getArray().getValues();
1243 self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1245 f1=m.buildOrthogonalField();
1246 self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
1247 self.assertEqual("us",f1.getTimeUnit())
1248 f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1250 expected2=[-0.035355339059327376,0.,0.035355339059327376, 0.2592724864350674,0.,-0.2592724864350674, 0.37712361663282529,0.,-0.37712361663282529, -0.035355339059327376,0.,0.035355339059327376, 0.31819805153394637,0.,-0.31819805153394637]
1251 val=f3.getArray().getValues();
1252 for i in xrange(15):
1253 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1257 val=f3.getArray().getValues();
1258 for i in xrange(15):
1259 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1263 def testOperationsOnFields3(self):
1264 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1265 f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1266 f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1268 f1.checkCoherency();
1269 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1270 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
1271 expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1272 0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1273 0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1274 self.assertEqual(1,f1.getNumberOfComponents());
1275 self.assertEqual(9,f1.getNumberOfTuples());
1276 val=f1.getArray().getValues();
1278 self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1281 f1=m.buildOrthogonalField();
1282 f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1284 expected2=[-0.035355339059327376,0.,0.035355339059327376, 0.2592724864350674,0.,-0.2592724864350674, 0.37712361663282529,0.,-0.37712361663282529, -0.035355339059327376,0.,0.035355339059327376, 0.31819805153394637,0.,-0.31819805153394637]
1285 val=f1.getArray().getValues();
1286 for i in xrange(15):
1287 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1290 f1=m.buildOrthogonalField();
1291 # to avoid valgrind leaks
1292 # self.assertRaises(InterpKernelException,f2.__imul__,f1);
1295 def testOperationsOnFields4(self):
1296 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1297 nbOfCells=m.getNumberOfCells();
1298 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
1300 array=DataArrayDouble.New();
1302 self.assertRaises(InterpKernelException,f1.setEndArray,array);
1303 self.assertRaises(InterpKernelException,f1.getEndArray);
1304 arr1=[0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.]
1305 arr2=[5.,15.,25.,6.,16.,26.,7.,17.,27.,8.,18.,28.,9.,19.,29.]
1306 array.setValues(arr1,nbOfCells,3);
1307 f1.setStartTime(2.,0,0);
1308 f1.setEndTime(3.,0,0);
1309 f1.checkCoherency();
1311 res=f1.getValueOn(pos);
1312 self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1313 self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1314 self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1316 res=f1.getValueOn(pos,2.2);
1317 self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1318 self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1319 self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1321 self.assertRaises(InterpKernelException,f1.getValueOn,pos,3.2)
1322 f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
1324 f2.setArray(f1.getArray());
1325 f2.setStartTime(2.,3,0);
1326 f2.setEndTime(4.,13,0);
1327 self.assertRaises(InterpKernelException,f2.checkCoherency)
1328 array2=DataArrayDouble.New();
1329 array2.setValues(arr2,nbOfCells,3);
1330 f2.setEndArray(array2);
1331 f2.checkCoherency();
1334 res=f2.getValueOn(pos,3.21);
1335 self.assertTrue(abs(4.025-res[0])<1.e-12);
1336 self.assertTrue(abs(14.025-res[1])<1.e-12);
1337 self.assertTrue(abs(24.025-res[2])<1.e-12);
1339 self.assertTrue(f2.isEqual(f3,1e-12,1e-12));
1340 f3.getEndArray().setIJ(0,0,5.001);
1341 self.assertTrue(not f2.isEqual(f3,1e-12,1e-12));
1342 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1343 f3.setStartTime(2.1,3,0);
1344 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1345 f3.setStartTime(2.,3,0);
1346 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1347 f3.setStartTime(2.,4,0);
1348 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1349 f3.setStartTime(2.,3,1);
1350 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1351 f3.setStartTime(2.,3,0);
1352 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1353 f3.setEndTime(4.1,13,0);
1354 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1355 f3.setEndTime(4.,13,0);
1356 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1357 f3.setEndTime(4.,14,0);
1358 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1359 f3.setEndTime(4.,13,1);
1360 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1361 f3.setEndTime(4.,13,0);
1362 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1365 res=f4.getValueOn(pos,3.21);
1366 self.assertTrue(abs(8.05-res[0])<1.e-12);
1367 self.assertTrue(abs(28.05-res[1])<1.e-12);
1368 self.assertTrue(abs(48.05-res[2])<1.e-12);
1371 res=f4.getValueOn(pos,3.21);
1372 self.assertTrue(abs(12.075-res[0])<1.e-12);
1373 self.assertTrue(abs(42.075-res[1])<1.e-12);
1374 self.assertTrue(abs(72.075-res[2])<1.e-12);
1377 def testMergeNodesOnField(self):
1378 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1379 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1380 f1.mergeNodes(1e-10);
1382 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1383 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1385 tmp.setIJ(0,0,1000.);
1386 f1.mergeNodes(1e-10);
1388 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1389 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1391 tmp.setIJ(1,0,1000.);
1392 self.assertRaises(InterpKernelException,f1.mergeNodes,1.e-10)
1395 def testCheckConsecutiveCellTypes(self):
1396 sourceMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1397 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1398 self.assertTrue(sourceMesh.checkConsecutiveCellTypes());
1399 order1=[NORM_TRI3,NORM_QUAD4]
1400 order2=[NORM_QUAD4,NORM_TRI3]
1401 self.assertTrue(not targetMesh.checkConsecutiveCellTypes());
1402 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1403 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1404 da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order1);
1405 self.assertEqual(5,da.getNumberOfTuples());
1406 self.assertEqual(1,da.getNumberOfComponents());
1407 expected1=[2,0,1,3,4]
1408 self.assertTrue(expected1==list(da.getValues()));
1409 da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order2);
1410 self.assertEqual(5,da.getNumberOfTuples());
1411 self.assertEqual(1,da.getNumberOfComponents());
1412 expected2=[0,3,4,1,2]
1413 self.assertTrue(expected2==list(da.getValues()));
1414 renumber1=[4,0,1,2,3]
1415 targetMesh.renumberCells(renumber1,False);
1416 self.assertTrue(targetMesh.checkConsecutiveCellTypes());
1417 self.assertTrue(targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1418 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1421 def testRearrange2ConsecutiveCellTypes(self):
1422 m1_1=MEDCouplingDataForTest.build2DSourceMesh_1();
1423 m2_1=MEDCouplingDataForTest.build2DTargetMesh_1();
1424 arr1=m1_1.rearrange2ConsecutiveCellTypes();
1425 m1_2=MEDCouplingDataForTest.build2DSourceMesh_1();
1426 self.assertTrue(m1_2.isEqual(m1_1,1e-12));
1428 self.assertEqual(2,arr1.getNumberOfTuples());
1429 self.assertEqual(1,arr1.getNumberOfComponents());
1430 self.assertEqual(expected1,arr1.getValues());
1431 expected2=[0,3,4,1,2]
1432 arr1=m2_1.rearrange2ConsecutiveCellTypes();
1433 self.assertEqual(5,arr1.getNumberOfTuples());
1434 self.assertEqual(1,arr1.getNumberOfComponents());
1435 self.assertEqual(expected2,list(arr1.getValues()));
1436 m2_2=MEDCouplingDataForTest.build2DTargetMesh_1();
1437 self.assertEqual(5,arr1.getNumberOfTuples());
1438 self.assertEqual(1,arr1.getNumberOfComponents());
1439 self.assertEqual(expected2,list(arr1.getValues()));
1440 self.assertTrue(not m2_2.isEqual(m2_1,1e-12));
1441 m2_2.renumberCells(expected2,False);
1442 self.assertTrue(m2_2.isEqual(m2_1,1e-12));
1445 def testSplitByType(self):
1446 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1448 self.assertEqual(3,len(v));
1449 m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(v);
1450 m2.setName(m1.getName());
1451 self.assertTrue(m1.isEqual(m2,1.e-12));
1454 def testFuseUMeshesOnSameCoords(self):
1455 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1457 m3=m2.buildPartOfMySelf(cells1,True);
1458 self.assertTrue(isinstance(m3,MEDCouplingUMesh))
1460 m4=m2.buildPartOfMySelf(cells2,True);
1461 self.assertTrue(isinstance(m4,MEDCouplingUMesh))
1463 m5=m2.buildPartOfMySelf(cells3,True);
1464 self.assertTrue(isinstance(m5,MEDCouplingUMesh))
1467 m7,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1468 self.assertEqual(4,m7.getNumberOfCells());
1469 self.assertEqual(3,len(corr));
1470 expectedVals1=[3,3,2]
1471 expectedVals2=[[0,1,2],[3,0,2],[3,0]]
1474 self.assertEqual(1,arr.getNumberOfComponents());
1475 nbOfVals=expectedVals1[i];
1476 self.assertEqual(nbOfVals,arr.getNumberOfTuples());
1477 vals=arr.getValues();
1478 self.assertEqual(expectedVals2[i],list(vals));
1480 arr2,fidsOfGroups=DataArrayInt.MakePartition(corr,m7.getNumberOfCells());
1482 fidsGrp=[[1,3,5],[3,4,5],[4,5]]
1483 self.assertEqual(3,len(fidsOfGroups));
1484 self.assertEqual(1,arr2.getNumberOfComponents());
1485 self.assertEqual(4,arr2.getNumberOfTuples());
1486 self.assertEqual(fidExp,list(arr2.getValues()));
1488 nbOfVals=expectedVals1[i];
1489 self.assertEqual(list(fidsOfGroups[i]),fidsGrp[i]);
1493 def testFuseUMeshesOnSameCoords2(self):
1494 m1,m2=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
1496 m3=m1.buildPartOfMySelf(part1,True);
1498 m4=m1.buildPartOfMySelf(part2,True);
1499 meshes=[m1,m3,m3,m4]
1500 m5,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1501 self.assertEqual(18,m5.getNumberOfCells());
1503 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
1509 self.assertEqual(exp2[i],list(it.getValues()));
1514 def testBuildOrthogonalField(self):
1515 targetMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1516 field=targetMesh.buildOrthogonalField();
1517 expected=[0.70710678118654746,0.,-0.70710678118654746]
1518 self.assertEqual(5,field.getNumberOfTuples());
1519 self.assertEqual(3,field.getNumberOfComponents());
1520 vals=field.getArray().getValues();
1521 for i in xrange(15):
1522 self.assertTrue(abs(expected[i%3]-vals[i])<1e-12);
1524 targetCoords=[0.,0.,0.,0.5,0.,0.5,1.,0.,1.,0.,1.,0.]
1525 targetConn=[0,1,2,3]
1526 targetMesh=MEDCouplingUMesh.New();
1527 targetMesh.setMeshDimension(2);
1528 targetMesh.allocateCells(1);
1529 targetMesh.insertNextCell(NORM_QUAD4,targetConn[0:4])
1530 targetMesh.finishInsertingCells();
1531 myCoords=DataArrayDouble.New();
1532 myCoords.setValues(targetCoords,4,3);
1533 targetMesh.setCoords(myCoords);
1534 field=targetMesh.buildOrthogonalField();
1535 self.assertEqual(1,field.getNumberOfTuples());
1536 self.assertEqual(3,field.getNumberOfComponents());
1537 vals=field.getArray().getValues();
1538 self.assertTrue(abs(-0.70710678118654746-vals[0])<1e-12);
1539 self.assertTrue(abs(0.-vals[1])<1e-12);
1540 self.assertTrue(abs(0.70710678118654746-vals[2])<1e-12);
1543 def testGetCellsContainingPoint(self):
1544 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1545 pos=[0.,0.,0.4,0.4,0.,0.4,0.1,0.1,0.25,0.,0.65,0.]
1547 t1,t2=targetMesh.getCellsContainingPoints(pos,6,1e-12);
1548 self.assertEqual(6,t1.getNumberOfTuples());
1549 self.assertEqual(1,t1.getNumberOfComponents());
1550 self.assertEqual(7,t2.getNumberOfTuples());
1551 self.assertEqual(1,t2.getNumberOfComponents());
1552 expectedValues1=[0,4,3,0,1,2]
1553 expectedValues2=[0,1,2,3,4,5,6]
1554 self.assertEqual(list(t1.getValues()),expectedValues1);
1555 self.assertEqual(list(t2.getValues()),expectedValues2);
1556 #2D with no help of bounding box.
1558 MEDCouplingPointSet.Rotate2DAlg(center,0.78539816339744830962,6,pos);
1559 targetMesh.rotate(center,0.78539816339744830962);
1562 t1,t2=targetMesh.getCellsContainingPoints(pos,1e-12);
1563 self.assertEqual(6,t1.getNumberOfTuples());
1564 self.assertEqual(7,t2.getNumberOfTuples());
1565 self.assertEqual(list(t1.getValues()),expectedValues1);
1566 self.assertEqual(list(t2.getValues()),expectedValues2);
1567 t1,t2=targetMesh.getCellsContainingPoints(DataArrayDouble.New(pos,6,2),1e-12);
1568 self.assertEqual(6,t1.getNumberOfTuples());
1569 self.assertEqual(7,t2.getNumberOfTuples());
1570 self.assertEqual(list(t1.getValues()),expectedValues1);
1571 self.assertEqual(list(t2.getValues()),expectedValues2);
1572 self.assertRaises(InterpKernelException,targetMesh.getCellsContainingPoints,DataArrayDouble.New(pos,4,3),1e-12);
1574 pos1bis=[-0.3303300858899107,-0.11819805153394641]
1575 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos1bis,1e-12));
1577 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1580 t1=targetMesh.getCellsContainingPoint(pos2,1e-12)
1581 self.assertEqual(2,len(t1));
1582 expectedValues3=[0,1]
1583 self.assertEqual(list(t1.getValues()),expectedValues3);
1586 t1=targetMesh.getCellsContainingPoint(pos3,1e-12);
1587 self.assertEqual(5,len(t1));
1588 expectedValues4=[0,1,2,3,4]
1589 self.assertEqual(list(t1.getValues()),expectedValues4);
1590 self.assertEqual(0,targetMesh.getCellContainingPoint(pos3,1e-12));
1592 targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1594 self.assertEqual(0,targetMesh.getCellContainingPoint(pos4,1e-12));
1597 t1=targetMesh.getCellsContainingPoint(pos5,1e-12);
1598 self.assertEqual(8,len(t1));
1599 expectedValues5=[0,1,2,3,4,5,6,7]
1600 self.assertEqual(list(t1.getValues()),expectedValues5);
1603 t1=targetMesh.getCellsContainingPoint(pos6,1e-12);
1604 self.assertEqual(2,len(t1));
1605 expectedValues6=[0,2]
1606 self.assertEqual(list(t1.getValues()),expectedValues6);
1609 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos7,1e-12));
1613 targetMesh.rotate(center2,vec2,0.78539816339744830962);
1615 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos8,1e-12));
1618 def testGetValueOn1(self):
1619 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1620 fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
1621 nbOfCells=targetMesh.getNumberOfCells();
1622 fieldOnCells.setMesh(targetMesh);
1623 array=DataArrayDouble.New();
1624 tmp=2*nbOfCells*[None]
1625 for i in xrange(nbOfCells):
1626 tmp[2*i]=7.+float(i);
1627 tmp[2*i+1]=17.+float(i)
1629 array.setValues(tmp,nbOfCells,2);
1630 fieldOnCells.setArray(array);
1633 res=fieldOnCells.getValueOn(pos1);
1634 self.assertEqual(2,len(res))
1635 self.assertTrue(abs(8.-res[0])<1e-12);
1636 self.assertTrue(abs(18.-res[1])<1e-12);
1639 targetMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1640 fieldOnNodes=MEDCouplingFieldDouble.New(ON_NODES);
1641 nbOfNodes=targetMesh.getNumberOfNodes();
1642 fieldOnNodes.setMesh(targetMesh);
1643 array=DataArrayDouble.New();
1644 tmp=2*nbOfNodes*[None]
1645 for i in xrange(nbOfNodes):
1646 tmp[2*i]=17.+float(i);
1647 tmp[2*i+1]=27.+float(i)
1649 array.setValues(tmp,nbOfNodes,2);
1650 fieldOnNodes.setArray(array);
1652 pos2=[-0.13333333333333333,-0.13333333333333333]
1654 res=fieldOnNodes.getValueOn(pos2);
1655 self.assertEqual(2,len(res))
1656 self.assertTrue(abs(17.5-res[0])<1e-12);
1657 self.assertTrue(abs(27.5-res[1])<1e-12);
1658 pos3=[0.033333333333333326,0.36666666666666664]
1660 res=fieldOnNodes.getValueOn(pos3);
1661 self.assertEqual(2,len(res))
1662 self.assertTrue(abs(18.666666666666667-res[0])<1e-12);
1663 self.assertTrue(abs(28.666666666666667-res[1])<1e-12);
1666 def testCMesh0(self):
1667 mesh=MEDCouplingCMesh.New();
1668 meshEmpty=mesh.clone(True);
1669 self.assertTrue(meshEmpty.isEqual(mesh, 1e-12));
1671 coordsX=DataArrayDouble.New();
1672 arrX=[ -1., 1., 2., 4. ]
1673 coordsX.setValues(arrX, 4, 1);
1674 coordsY=DataArrayDouble.New();
1675 arrY=[ -2., 2., 4., 8. ]
1676 coordsY.setValues(arrY, 4, 1);
1677 coordsZ=DataArrayDouble.New();
1678 arrZ=[ -3., 3., 6., 12. ]
1679 coordsZ.setValues(arrZ, 4, 1);
1680 mesh.setCoords(coordsX, coordsY, coordsZ);
1682 fieldOnNodes=mesh.fillFromAnalytic(ON_NODES, 1, "x+y/2.+z/3.");
1683 self.assertEqual(1, fieldOnNodes.getNumberOfComponents());
1684 self.assertEqual(64, fieldOnNodes.getNumberOfTuples());
1685 expected1=[-3., -1., 0., 2., -1., 1., 2., 4., 0., 2., 3., 5., 2., 4., 5., 7., -1., 1., 2.,
1686 4., 1., 3., 4., 6., 2., 4., 5., 7., 4., 6., 7., 9., 0., 2., 3., 5., 2., 4., 5.,
1687 7., 3., 5., 6., 8., 5., 7., 8., 10., 2., 4., 5.,
1688 7., 4., 6., 7., 9., 5., 7., 8., 10., 7., 9., 10., 12.];
1690 val=fieldOnNodes.getArray().getValues();
1691 for i in xrange(64):
1692 self.assertAlmostEqual(expected1[i], val[i], 12)
1693 res=fieldOnNodes.getValueOnPos(1, 3, 2);
1694 self.assertAlmostEqual(7., res[0], 12);
1696 fieldOnCells=mesh.fillFromAnalytic(ON_CELLS, 1, "x+y/2.+z/3.");
1697 self.assertEqual(1, fieldOnCells.getNumberOfComponents());
1698 self.assertEqual(27, fieldOnCells.getNumberOfTuples());
1699 val=fieldOnCells.getArray().getValues();
1700 expected2=[0, 1.5, 3, 1.5, 3, 4.5, 3, 4.5, 6, 1.5, 3, 4.5, 3, 4.5,
1701 6, 4.5, 6, 7.5, 3, 4.5, 6, 4.5, 6, 7.5, 6, 7.5, 9];
1702 for i in xrange(27):
1703 self.assertAlmostEqual(expected2[i], val[i], 12);
1704 #res=fieldOnCells.getValueOnPos(1,2,1);
1705 #self.assertAlmostEqual(6.,res,12);
1707 meshDeepCopy=mesh.deepCpy();
1708 meshClone=mesh.clone(False);
1710 meshEmpty.copyTinyStringsFrom(mesh);
1711 #no data in meshEmpty, expected False
1712 self.assertTrue(not meshEmpty.isEqual(mesh, 1e-12));
1714 self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1715 meshDeepCopy.copyTinyStringsFrom(mesh);
1716 self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1717 self.assertTrue(meshClone.isEqual(mesh, 1e-12));
1719 self.assertEqual(CARTESIAN, mesh.getType());
1720 self.assertEqual(CARTESIAN, meshEmpty.getType());
1721 self.assertEqual(CARTESIAN, meshDeepCopy.getType());
1722 self.assertEqual(CARTESIAN, meshClone.getType());
1725 def testCMesh1(self):
1726 mesh1=MEDCouplingCMesh.New();
1727 coordsX1=DataArrayDouble.New();
1728 arrX1=[ -1., 1., 2., 4. ]
1729 coordsX1.setValues(arrX1, 4, 1);
1730 coordsY1=DataArrayDouble.New();
1731 arrY1=[ -2., 2., 4., 8. ]
1732 coordsY1.setValues(arrY1, 4, 1);
1733 coordsZ1=DataArrayDouble.New();
1734 arrZ1=[ -3., 3., 6., 12. ]
1735 coordsZ1.setValues(arrZ1, 4, 1);
1736 mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1738 mesh2=MEDCouplingCMesh.New();
1739 coordsX2=DataArrayDouble.New();
1740 arrX2=[ -1., 1., 2., 4. ]
1741 coordsX2.setValues(arrX2, 4, 1);
1742 coordsY2=DataArrayDouble.New();
1743 arrY2=[ -2., 2., 4., 8. ]
1744 coordsY2.setValues(arrY2, 4, 1);
1745 coordsZ2=DataArrayDouble.New();
1746 arrZ2=[ -3., 3., 6., 12.+1e-6 ]
1747 coordsZ2.setValues(arrZ2, 4, 1);
1748 mesh2.setCoords(coordsX2, coordsY2, coordsZ2);
1750 mesh3=MEDCouplingCMesh.New();
1751 coordsX3=DataArrayDouble.New();
1753 coordsX3.setValues(arrX3, 1, 1);
1754 coordsY3=DataArrayDouble.New();
1756 coordsY3.setValues(arrY3, 1, 1);
1757 coordsZ3=DataArrayDouble.New();
1759 coordsZ3.setValues(arrZ3, 1, 1);
1760 mesh3.setCoords(coordsX3, coordsY3, coordsZ3);
1762 self.assertEqual(3, mesh1.getSpaceDimension());
1763 self.assertEqual(3, mesh1.getMeshDimension());
1765 self.assertTrue(not mesh1.isEqual(mesh2, 1e-12));
1766 self.assertTrue(not mesh2.isEqual(mesh1, 1e-12));
1767 self.assertTrue(not mesh2.isEqualWithoutConsideringStr(mesh1, 1e-12));
1768 self.assertTrue(mesh1.isEqual(mesh2, 1e-5));
1769 self.assertTrue(not mesh1.isEqual(mesh2, 1e-7));
1771 self.assertRaises(InterpKernelException, mesh3.checkCoherency1, 1e-12);
1772 mesh1.checkCoherency2(1e-12);
1773 self.assertEqual(NORM_HEXA8, mesh1.getTypeOfCell(1));
1775 self.assertEqual(NORM_HEXA8, mesh1.getAllGeoTypes()[0]);
1776 self.assertEqual(27, mesh1.getNumberOfCellsWithType(NORM_HEXA8));
1777 self.assertRaises(InterpKernelException, mesh1.getNumberOfCellsWithType, NORM_QUAD4);
1779 coo=mesh1.getCoordinatesOfNode(0);
1780 self.assertEqual(3, len(coo));
1781 self.assertAlmostEqual(-1., coo[0], 14);
1782 self.assertAlmostEqual(-2., coo[1], 14);
1783 self.assertAlmostEqual(-3., coo[2], 14);
1784 coo=mesh1.getCoordinatesOfNode(63);
1785 self.assertEqual(3, len(coo));
1786 self.assertAlmostEqual(4., coo[0], 14);
1787 self.assertAlmostEqual(8., coo[1], 14);
1788 self.assertAlmostEqual(12., coo[2], 14);
1791 repr=mesh1.simpleRepr();
1792 repr=mesh1.advancedRepr();
1793 self.assertTrue("Cartesian" in repr);
1794 self.assertTrue("Number of components : 1" in repr);
1795 self.assertTrue("Number of tuples : 4" in repr);
1796 self.assertTrue("Z Array :" in repr);
1799 def testCMesh2(self):
1800 mesh1=MEDCouplingCMesh.New();
1801 coordsX1=DataArrayDouble.New();
1802 arrX1=[ -1., 1., 2., 4. ]
1803 coordsX1.setValues(arrX1, 4, 1);
1804 coordsY1=DataArrayDouble.New();
1805 arrY1=[ -2., 2., 4., 8. ]
1806 coordsY1.setValues(arrY1, 4, 1);
1807 coordsZ1=DataArrayDouble.New();
1808 arrZ1=[ -3., 3., 6., 12. ]
1809 coordsZ1.setValues(arrZ1, 4, 1);
1810 mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1812 dis=mesh1.getDistributionOfTypes();
1813 self.assertEqual(1, len(dis));
1814 self.assertEqual(NORM_HEXA8, dis[0][0]);
1815 self.assertEqual(27, dis[0][1]);
1816 self.assertEqual(0, dis[0][2]);
1819 self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1822 self.assertTrue(not mesh1.checkTypeConsistencyAndContig(dis, idsPerType));
1823 dis[0][0]=NORM_QUAD4;
1824 self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1825 dis[0][0]=NORM_HEXA8;
1827 ids=DataArrayInt.New();
1829 ids.fillWithValue(111);
1831 check=mesh1.checkTypeConsistencyAndContig(dis, idsPerType);
1832 self.assertTrue(check);
1833 self.assertTrue(check.isEqual(ids));
1835 code, idsInPflPerType, pfls=mesh1.splitProfilePerType(ids);
1836 self.assertEqual(3, len(code));
1837 self.assertEqual(NORM_HEXA8, code[0]);
1838 self.assertEqual(27, code[1]);
1839 self.assertEqual(0, code[2]);
1840 self.assertEqual(1, len(idsInPflPerType));
1841 self.assertEqual(1, len(pfls));
1842 self.assertTrue(idsInPflPerType[0].isEqual(ids));
1843 self.assertTrue(pfls[0].isEqual(ids));
1845 cells1=[0, 1, 25, 26]
1846 partMesh1=mesh1.buildPart(cells1)
1847 self.assertTrue(isinstance(partMesh1,MEDCouplingMesh))
1848 self.assertEqual(4, partMesh1.getNumberOfCellsWithType(NORM_HEXA8));
1849 self.assertEqual(64, mesh1.getNumberOfNodes());
1850 self.assertEqual(64, partMesh1.getNumberOfNodes());
1853 partMesh2, arr1=mesh1.buildPartAndReduceNodes(cells2)
1854 self.assertTrue(isinstance(partMesh2,MEDCouplingUMesh))
1855 self.assertEqual(2,partMesh2.getNumberOfCellsWithType(NORM_HEXA8));
1856 self.assertEqual(12,partMesh2.getNumberOfNodes());
1859 partMesh3, arr2=partMesh1.buildPartAndReduceNodes(cells3)
1860 self.assertTrue(isinstance(partMesh3,MEDCouplingUMesh))
1861 self.assertEqual(2, partMesh3.getNumberOfCellsWithType(NORM_HEXA8));
1862 self.assertEqual(12, partMesh3.getNumberOfNodes());
1864 self.assertRaises(InterpKernelException, mesh1.simplexize, 0);
1865 self.assertRaises(InterpKernelException, mesh1.getMeasureFieldOnNode, True);
1869 bbox1=mesh1.getBoundingBox(); #[(-1.0, 4.0), (-2.0, 8.0), (-3.0, 12.0)]
1870 bbox2=partMesh1.getBoundingBox();
1871 self.assertTrue(bbox1==bbox2);
1872 bbox1=partMesh3.getBoundingBox();
1873 bbox2=partMesh2.getBoundingBox();
1874 self.assertTrue(bbox1==bbox2);
1876 self.assertRaises(InterpKernelException, mesh1.buildOrthogonalField);
1877 mesh2d=MEDCouplingCMesh.New();
1878 mesh2d.setCoords(coordsX1, coordsY1);
1879 f1=mesh2d.buildOrthogonalField();
1883 def testScale(self):
1884 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1886 mesh.scale(pos,0.5);
1887 expected1=[-0.05,-0.05, 0.2,-0.05, 0.45,-0.05, -0.05,0.2, 0.2,0.2, 0.45,0.2,
1888 -0.05,0.45, 0.2,0.45, 0.45,0.45]
1889 val=mesh.getCoords().getValues();
1890 self.assertEqual(18,len(val))
1891 for i in xrange(18):
1892 self.assertTrue(abs(expected1[i]-val[i])<1e-12);
1896 def testTryToShareSameCoords(self):
1897 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1898 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1899 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1900 m1.tryToShareSameCoords(m2,1e-12);
1901 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1902 m1.tryToShareSameCoords(m2,1e-12);
1903 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1904 m2.tryToShareSameCoords(m1,1e-12);
1905 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1907 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1908 m2=MEDCouplingDataForTest.build2DTargetMesh_2();
1909 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1910 m1.tryToShareSameCoords(m2,1e-12);
1911 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1912 m1.tryToShareSameCoords(m2,1e-12);
1913 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1914 m2.tryToShareSameCoords(m1,1e-12);
1915 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1917 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1918 m2=MEDCouplingDataForTest.build2DSourceMesh_1();
1919 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1920 self.assertRaises(InterpKernelException,m1.tryToShareSameCoords,m2,1e-12)
1923 def testFindNodeOnPlane(self):
1924 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1927 n=mesh.findNodesOnPlane(pt,v,1e-12);
1928 self.assertEqual(9,len(n));
1929 m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1930 self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1931 me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1932 da=me.getMesh3DIds();
1933 self.assertEqual(8,me.getNumberOfCells());
1934 expected=[0,1,2,3,4,5,6,7]
1936 self.assertEqual(expected,list(val));
1938 m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1939 self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1940 me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1941 da=me.getMesh3DIds();
1942 self.assertEqual(8,me.getNumberOfCells());
1943 expected=[0,1,2,3,4,5,6,7]
1945 self.assertEqual(expected,list(val));
1948 def testRenumberCells(self):
1949 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1950 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1951 self.assertTrue(m.isEqual(m2,0));
1953 m.renumberCells(arr,True);
1954 self.assertTrue(not m.isEqual(m2,0));
1955 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(0));
1956 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
1957 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(2));
1958 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
1959 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(4));
1961 m.renumberCells(arr2,True);
1962 self.assertTrue(m.isEqual(m2,0));
1965 def testChangeSpaceDimension(self):
1966 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1967 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1969 self.assertEqual(3,m1.getSpaceDimension());
1970 m1.changeSpaceDimension(2);
1971 self.assertEqual(2,m1.getSpaceDimension());
1972 m1.setName(m2.getName());
1973 self.assertTrue(m1.isEqual(m2,1e-12));
1974 m1.changeSpaceDimension(3);
1975 self.assertEqual(3,m1.getSpaceDimension());
1976 expected=[-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0.]
1977 val=m1.getCoords().getValues();
1978 for i in xrange(27):
1979 self.assertTrue(abs(expected[i]-val[i])<1e-14);
1983 def testGaussPointField1(self):
1984 _a=0.446948490915965;
1985 _b=0.091576213509771;
1986 _p1=0.11169079483905;
1987 _p2=0.0549758718227661;
1988 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
1989 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
1990 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]
1991 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
1996 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1997 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
1999 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2000 self.assertEqual(0,f.getNbOfGaussLocalization());
2001 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2002 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1); # not a bug only to check that it works well
2003 self.assertRaises(InterpKernelException,f.setGaussLocalizationOnType,NORM_QUAD4,_refCoo1,_gsCoo1,_wg1)
2004 self.assertEqual(1,f.getNbOfGaussLocalization());
2005 refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2007 _gsCoo1=_gsCoo1[0:4]
2009 f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2010 self.assertEqual(2,f.getNbOfGaussLocalization());
2011 array=DataArrayDouble.New();
2013 for i in xrange(18*2):
2015 array.setValues(ptr,18,2);
2016 ptr=array.getPointer();
2018 f.setName("MyFirstFieldOnGaussPoint");
2020 self.assertAlmostEqual(27.,f.getIJK(2,5,0),14);
2021 self.assertAlmostEqual(16.,f.getIJK(1,5,1),14);
2023 f.clearGaussLocalizations();
2024 self.assertEqual(0,f.getNbOfGaussLocalization());
2025 self.assertRaises(InterpKernelException,f.checkCoherency);
2027 self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,ids1,_refCoo2,_gsCoo1,_wg1);
2028 self.assertEqual(0,f.getNbOfGaussLocalization());
2030 f.setGaussLocalizationOnCells(ids2,_refCoo2,_gsCoo1,_wg1);
2031 self.assertEqual(1,f.getNbOfGaussLocalization());
2032 self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2033 self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneCell,1);
2035 f.setGaussLocalizationOnCells(ids3,_refCoo1,_gsCoo1,_wg1);
2036 self.assertEqual(2,f.getNbOfGaussLocalization());
2037 self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2038 self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(1));
2039 self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(2));
2040 self.assertRaises(InterpKernelException,f.checkCoherency);#<- cell 3 has no localization
2044 _gsCoo2[0]=0.8888777776666;
2045 _wg2[0]=0.1234567892377;
2046 f.setGaussLocalizationOnCells(ids4,_refCoo2,_gsCoo2,_wg2);
2047 self.assertEqual(3,f.getNbOfGaussLocalization());
2048 tmpIds=f.getCellIdsHavingGaussLocalization(0);
2049 self.assertEqual(ids2,list(tmpIds.getValues()));
2050 self.assertRaises(InterpKernelException,f.checkCoherency);#<- it's always not ok because undelying array not with the good size.
2051 array2=f.getArray().substr(0,10);
2053 f.checkCoherency();#<- here it is OK
2055 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2056 gl1=f2.getGaussLocalization(0);
2057 tmp=gl1.getGaussCoord(1,1);
2058 self.assertAlmostEqual(2.07*_b-1,tmp,14);
2059 gl1.setGaussCoord(1,1,0.07);
2060 self.assertTrue(not f.isEqual(f2,1e-14,1e-14));
2061 gl1.setGaussCoord(1,1,tmp);
2062 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2063 f2.checkCoherency();
2066 def testGaussPointNEField1(self):
2067 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2068 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2070 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2071 f.setName("MyFirstFieldOnNE");
2072 f.setDescription("MyDescriptionNE");
2073 array=DataArrayDouble.New();
2075 for i in xrange(18*2):
2078 array.setValues(tmp,18,2);
2079 ptr=array.getPointer();
2084 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2085 self.assertAlmostEqual(21.,f.getIJK(2,0,0),14);
2086 self.assertAlmostEqual(18.,f.getIJK(1,1,1),14);
2089 def testCellOrientation1(self):
2090 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2092 self.assertRaises(InterpKernelException,m.are2DCellsNotCorrectlyOriented,vec,False);
2093 m.changeSpaceDimension(3);
2094 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2095 self.assertTrue(len(res1)==0);
2097 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2098 self.assertEqual(5,len(res1));
2101 # connectivity inversion
2102 conn=m.getNodalConnectivity().getValues();
2106 m.getNodalConnectivity().setValues(conn,len(conn),1)
2107 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2108 self.assertEqual(1,len(res1));
2109 self.assertEqual(2,res1.getValues()[0]);
2110 m.orientCorrectly2DCells(vec,False);
2111 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2112 self.assertTrue(len(res1)==0);
2113 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
2114 m2.changeSpaceDimension(3);
2115 self.assertTrue(m.isEqual(m2,1e-12));
2118 def testCellOrientation2(self):
2119 m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2120 res1=m2.arePolyhedronsNotCorrectlyOriented();
2121 self.assertEqual(6,len(res1));
2122 m2.orientCorrectlyPolyhedrons();
2123 res1=m2.arePolyhedronsNotCorrectlyOriented();
2124 self.assertTrue(len(res1)==0);
2125 m2.checkCoherency();
2126 self.assertEqual(18,m2.getNumberOfCells());
2128 m2.convertToPolyTypes(cellIds2);
2129 m2.orientCorrectlyPolyhedrons();
2130 res1=m2.arePolyhedronsNotCorrectlyOriented();
2131 self.assertTrue(len(res1)==0);
2132 f2=m2.getMeasureField(False);
2133 f2Ptr=f2.getArray().getValues();
2134 #Test to check global reverse in MEDCouplingUMesh::tryToCorrectPolyhedronOrientation
2135 m3=MEDCouplingDataForTest.build2DTargetMesh_1();
2137 m3.changeSpaceDimension(3);
2139 m3.convertToPolyTypes(ids2);
2140 m3.orientCorrectly2DCells(vec,False);
2141 m4=MEDCouplingDataForTest.buildCU1DMesh_U();
2142 m4.changeSpaceDimension(3);
2145 m4.rotate(center,vector,-pi/2.);
2146 m5=m3.buildExtrudedMesh(m4,0);
2147 res1=m5.arePolyhedronsNotCorrectlyOriented();
2148 self.assertEqual(15,len(res1));
2149 m5.orientCorrectlyPolyhedrons();
2150 res1=m5.arePolyhedronsNotCorrectlyOriented();
2151 self.assertTrue(len(res1)==0);
2152 f3=m5.getMeasureField(False);
2153 self.assertEqual(15,f3.getArray().getNumberOfTuples());
2154 self.assertEqual(1,f3.getNumberOfComponents());
2155 f3Ptr=f3.getArray().getValues();
2156 expected1=[0.075,0.0375,0.0375,0.075,0.075, 0.1125,0.05625,0.05625,0.1125,0.1125, 0.0625,0.03125,0.03125,0.0625,0.0625];
2157 for i in xrange(15):
2158 self.assertTrue(abs(expected1[i]-f3Ptr[i])<1e-12);
2160 f4=m5.getBarycenterAndOwner();
2161 self.assertEqual(15,f4.getNumberOfTuples());
2162 self.assertEqual(3,f4.getNumberOfComponents());
2163 f4Ptr=f4.getValues();
2164 expected2=[-0.05,-0.05,0.15, 0.3666666666666667,-0.13333333333333333,0.15, 0.53333333333333333,0.033333333333333333,0.15, -0.05,0.45,0.15, 0.45,0.45,0.15,-0.05,-0.05,0.525, 0.3666666666666667,-0.13333333333333333,0.525, 0.53333333333333333,0.033333333333333333,0.525, -0.05,0.45,0.525, 0.45,0.45,0.525,-0.05,-0.05,0.875, 0.3666666666666667,-0.13333333333333333,0.875, 0.53333333333333333,0.033333333333333333,0.875, -0.05,0.45,0.875, 0.45,0.45,0.875];
2165 for i in xrange(45):
2166 self.assertTrue(abs(expected2[i]-f4Ptr[i])<1e-12);
2170 def testPolyhedronBarycenter(self):
2171 connN=[0,3,2,1, -1, 4,5,6,7, -1, 0,4,7,3, -1, 3,7,6,2, -1, 2,6,5,1, -1, 1,5,4,0];
2172 coords=[0.,0.,0., 1.,0.,0., 1.,1.,0., 0.,1.,0., 0.,0.,1., 1.,0.,1., 1.,1.,1., 0.,1.,1., 0.5, 0.5, 0.5];
2173 meshN=MEDCouplingUMesh.New();
2174 meshN.setName("ForBary");
2175 meshN.setMeshDimension(3);
2176 meshN.allocateCells(4);
2177 meshN.insertNextCell(NORM_POLYHED,29,connN[0:29])
2178 meshN.finishInsertingCells();
2179 myCoords=DataArrayDouble.New();
2180 myCoords.setValues(coords,9,3);
2181 meshN.setCoords(myCoords);
2182 meshN.checkCoherency();
2184 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2185 meshN.orientCorrectlyPolyhedrons();
2186 self.assertTrue(len(res1)==0);
2187 da=meshN.getBarycenterAndOwner();
2188 self.assertEqual(1,da.getNumberOfTuples());
2189 self.assertEqual(3,da.getNumberOfComponents());
2190 daPtr=da.getValues();
2191 ref=meshN.getCoords().getValues()[24:];
2193 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2198 da=meshN.getBarycenterAndOwner();
2199 daPtr=da.getValues();
2200 ref=meshN.getCoords().getValues()[24:];
2202 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2205 meshN.rotate(center,vec,pi/7.);
2206 meshN.translate(vec);
2207 da=meshN.getBarycenterAndOwner();
2208 daPtr=da.getValues();
2209 ref=meshN.getCoords().getValues()[24:];
2211 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2214 center2=[1.12,3.45,6.78]
2216 meshN.rotate(center2,vec2,e);
2217 meshN.translate(vec2);
2218 da=meshN.getBarycenterAndOwner();
2219 daPtr=da.getValues();
2220 ref=meshN.getCoords().getValues()[24:];
2222 self.assertTrue(abs(ref[i]-daPtr[i])<1e-10);
2226 def testNormL12Integ1D(self):
2227 m1=MEDCouplingDataForTest.build1DTargetMesh_3();
2228 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2230 array=DataArrayDouble.New();
2231 arr=[-5.23,15.45,-25.56,6.67,-16.78,26.89,-7.91,17.23,-27.43,8.21,-18.63,28.72]
2232 array.setValues(arr,m1.getNumberOfCells(),3);
2235 f3=m1.getBarycenterAndOwner();
2236 self.assertEqual(4,f3.getNumberOfTuples());
2237 self.assertEqual(1,f3.getNumberOfComponents());
2238 expected9=[0.75,5.105,0.8,5.155]
2241 self.assertTrue(abs(expected9[i]-ptr[i])<1e-12);
2244 f2=m1.getMeasureField(False);
2245 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2246 self.assertEqual(1,f2.getNumberOfComponents());
2247 expected1=[0.5,0.21,-0.6,-0.31]
2248 ptr=f2.getArray().getValues();
2250 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2252 expected2=[0.5,0.21,0.6,0.31]
2253 f2=m1.getMeasureField(True);
2254 ptr=f2.getArray().getValues();
2256 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2259 self.assertTrue(4,f1.getNumberOfTuples())
2260 res=f1.integral(False);
2261 self.assertTrue(3,len(res))
2262 expected3=[0.9866,-0.3615,0.4217]
2264 self.assertTrue(abs(expected3[i]-res[i])<1e-12);
2266 self.assertTrue(abs(expected3[0]-f1.integral(0,False))<1e-12);
2267 self.assertTrue(abs(expected3[1]-f1.integral(1,False))<1e-12);
2268 self.assertTrue(abs(expected3[2]-f1.integral(2,False))<1e-12);
2269 res=f1.integral(True);
2270 expected4=[-3.4152,8.7639,-14.6879]
2272 self.assertTrue(abs(expected4[i]-res[i])<1e-12);
2276 self.assertTrue(3,len(res))
2277 expected5=[6.979506172839505, 16.89018518518518, 27.02969135802469]
2279 self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2281 self.assertTrue(abs(expected5[0]-f1.normL1(0))<1e-12);
2282 self.assertTrue(abs(expected5[1]-f1.normL1(1))<1e-12);
2283 self.assertTrue(abs(expected5[2]-f1.normL1(2))<1e-12);
2286 self.assertTrue(3,len(res))
2287 expected7=[7.090910979452395, 16.9275542960123, 27.053271464160858]
2289 self.assertTrue(abs(expected7[i]-res[i])<1e-9);
2291 self.assertTrue(abs(expected7[0]-f1.normL2(0))<1e-9);
2292 self.assertTrue(abs(expected7[1]-f1.normL2(1))<1e-9);
2293 self.assertTrue(abs(expected7[2]-f1.normL2(2))<1e-9);
2295 f4=f1.buildMeasureField(False);
2296 self.assertTrue(abs(-0.2-f4.accumulate(0))<1e-12);
2297 f4=f1.buildMeasureField(True);
2298 self.assertTrue(abs(1.62-f4.accumulate(0))<1e-12);
2299 # Testing with 2D Curve
2300 m1=MEDCouplingDataForTest.build2DCurveTargetMesh_3();
2301 f2=m1.getMeasureField(False);
2302 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2303 self.assertEqual(1,f2.getNumberOfComponents());
2304 ptr=f2.getArray().getValues();
2306 self.assertTrue(abs(sqrt(2.)*expected2[i]-ptr[i])<1e-12);
2308 f2=m1.getMeasureField(True);
2309 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2310 self.assertEqual(1,f2.getNumberOfComponents());
2311 ptr=f2.getArray().getValues();
2313 self.assertTrue(abs(expected2[i]*sqrt(2.)-ptr[i])<1e-12);
2316 f3=m1.getBarycenterAndOwner();
2317 self.assertEqual(4,f3.getNumberOfTuples());
2318 self.assertEqual(2,f3.getNumberOfComponents());
2319 expected10=[0.75,0.75,5.105,5.105,0.8,0.8,5.155,5.155]
2322 self.assertTrue(abs(expected10[i]-ptr[i])<1e-12);
2325 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2327 array=DataArrayDouble.New();
2328 array.setValues(arr,m1.getNumberOfCells(),3);
2330 res=f1.integral(False);
2332 self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2334 res=f1.integral(True);
2336 self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2340 self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2344 self.assertTrue(abs(expected7[i]-res[i])<1e-12);
2348 def testAreaBary2D(self):
2349 m1=MEDCouplingDataForTest.build2DTargetMesh_3();
2350 f1=m1.getMeasureField(False);
2351 self.assertEqual(10,f1.getArray().getNumberOfTuples());
2352 self.assertEqual(1,f1.getNumberOfComponents());
2353 expected1=[-0.5,-1,-1.5,-0.5,-1, 0.5,1,1.5,0.5,1]
2354 ptr=f1.getArray().getValues();
2355 for i in xrange(10):
2356 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2358 f1=m1.getMeasureField(True);
2359 ptr=f1.getArray().getValues();
2360 for i in xrange(10):
2361 self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2363 f2=m1.getBarycenterAndOwner();
2364 self.assertEqual(10,f2.getNumberOfTuples());
2365 self.assertEqual(2,f2.getNumberOfComponents());
2366 expected2=[0.5,0.3333333333333333,0.5,0.5,0.5,0.77777777777777777,0.5,0.3333333333333333,0.5,0.5,0.5,0.3333333333333333,0.5,0.5,0.5,0.77777777777777777,0.5,0.3333333333333333,0.5,0.5]
2368 for i in xrange(20):
2369 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2371 m1.changeSpaceDimension(3);
2372 f1=m1.getMeasureField(False);
2373 self.assertEqual(10,f1.getArray().getNumberOfTuples());
2374 self.assertEqual(1,f1.getNumberOfComponents());
2375 ptr=f1.getArray().getValues();
2376 for i in xrange(10):
2377 self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2379 f2=m1.getBarycenterAndOwner();
2380 self.assertEqual(10,f2.getNumberOfTuples());
2381 self.assertEqual(3,f2.getNumberOfComponents());
2383 expected3=[0.5,0.3333333333333333,0.,0.5,0.5,0.,0.5,0.77777777777777777,0.,0.5,0.3333333333333333,0.,0.5,0.5,0., 0.5,0.3333333333333333,0.,0.5,0.5,0.,0.5,0.77777777777777777,0.,0.5,0.3333333333333333,0.,0.5,0.5,0.]
2384 for i in xrange(30):
2385 self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2389 def testAreaBary3D(self):
2390 coords=[ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
2391 0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
2392 0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
2393 0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
2394 -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
2395 -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
2396 0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
2397 0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
2398 -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
2399 0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
2400 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
2401 -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
2402 -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
2403 -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
2404 -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
2405 -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
2406 0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
2407 0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
2408 0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
2409 -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
2410 -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
2411 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
2412 -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
2413 0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
2414 0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
2415 0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
2416 -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
2417 -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
2418 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
2419 0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
2420 -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
2421 0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
2422 0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
2423 0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
2424 -0.0372812069535 , -0.286740286332 , 0.00963701291166 ]
2426 connN = [ #polyhedron 0
2427 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
2428 , 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
2429 , 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
2430 , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
2432 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
2433 , 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
2434 , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
2435 , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
2437 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
2438 , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
2440 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
2441 , 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
2442 , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
2443 , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
2445 barys = [ -0.0165220465527 , -0.0190922868195 , 0.158882733414 ,
2446 0.0287618656076 , 0.135874379934 , -0.14601588119 ,
2447 -0.147128055553 , 0.0465995097041 , -0.049391174453 ,
2448 -0.00142506732317 , -0.0996953090351 , -0.115159183132 ]
2449 meshN=MEDCouplingUMesh.New();
2450 meshN.setName("ForBary");
2451 meshN.setMeshDimension(3);
2452 meshN.allocateCells(4);
2453 meshN.insertNextCell(NORM_POLYHED,113,connN);
2454 meshN.insertNextCell(NORM_POLYHED,99,connN[113:]);
2455 meshN.insertNextCell(NORM_POLYHED,43,connN[212:]);
2456 meshN.insertNextCell(NORM_POLYHED,92,connN[255:]);
2457 meshN.finishInsertingCells();
2458 myCoords=DataArrayDouble.New();
2459 myCoords.setValues(coords,69,3);
2460 meshN.setCoords(myCoords);
2461 meshN.checkCoherency();
2462 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2463 meshN.orientCorrectlyPolyhedrons();
2464 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2465 self.assertTrue(len(res1)==0);
2467 da=meshN.getBarycenterAndOwner();
2468 self.assertEqual(4,da.getNumberOfTuples());
2469 self.assertEqual(3,da.getNumberOfComponents());
2470 daPtr=da.getValues();
2471 for i in xrange(12):
2472 self.assertTrue(abs(barys[i]-daPtr[i])<1e-12);
2476 def testRenumberCellsForFields(self):
2477 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2478 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2480 arr=DataArrayDouble.New();
2481 nbOfCells=m.getNumberOfCells();
2482 values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
2483 arr.setValues(values1,nbOfCells,3);
2485 renumber1=[3,1,0,4,2]
2486 loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
2488 res=f.getValueOn(loc[2*j:2*j+2]);
2490 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2493 f.renumberCells(renumber1,False);
2494 ptr=f.getArray().getValues();
2495 expected1=[9.,109.,10009.,8.,108.,10008.,11.,111.,10011.,7.,107.,10007.,10.,110.,10010.]
2496 for i in xrange(15):
2497 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2499 #check that fields remains the same geometrically
2501 res=f.getValueOn(loc[2*j:2*(j+1)]);
2503 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2507 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2509 _a=0.446948490915965;
2510 _b=0.091576213509771;
2511 _p1=0.11169079483905;
2512 _p2=0.0549758718227661;
2513 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2514 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b, 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ];
2515 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2516 _refCoo1=refCoo1[0:6];
2517 _gsCoo1=gsCoo1[0:12];
2519 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2520 refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2521 _refCoo2=refCoo2[0:8];
2522 _gsCoo1=_gsCoo1[0:4]
2524 f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2525 arr=DataArrayDouble.New();
2526 values2=[1.,1001.,2.,1002., 11.,1011.,12.,1012.,13.,1013.,14.,1014.,15.,1015.,16.,1016., 21.,1021.,22.,1022.,23.,1023.,24.,1024.,25.,1025.,26.,1026., 31.,1031.,32.,1032., 41.,1041.,42.,1042.]
2527 arr.setValues(values2,18,2);
2531 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2532 f.renumberCells(renumber1,False);
2533 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2534 expected2=[21.,1021.,22.,1022.,23.,1023.,24.,1024.,25.,1025.,26.,1026., 11.,1011.,12.,1012.,13.,1013.,14.,1014.,15.,1015.,16.,1016., 41.,1041.,42.,1042., 1.,1001.,2.,1002., 31.,1031.,32.,1032.]
2535 ptr=f.getArray().getValues();
2536 for i in xrange(36):
2537 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2539 renumber2=[2,1,4,0,3]
2540 f.renumberCells(renumber2,False);
2541 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2543 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2545 arr=DataArrayDouble.New();
2546 values3=[1.,1001.,2.,1002.,3.,1003.,4.,1004., 11.,1011.,12.,1012.,13.,1013., 21.,1021.,22.,1022.,23.,1023., 31.,1031.,32.,1032.,33.,1033.,34.,1034., 41.,1041.,42.,1042.,43.,1043.,44.,1044.]
2547 arr.setValues(values3,18,2);
2551 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2552 f.renumberCells(renumber1,False);
2553 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2554 expected3=[21.,1021.,22.,1022.,23.,1023.,11.,1011.,12.,1012.,13.,1013.,41.,1041.,42.,1042.,43.,1043.,44.,1044.,1.,1001.,2.,1002.,3.,1003.,4.,1004.,31.,1031.,32.,1032.,33.,1033.,34.,1034.]
2555 ptr=f.getArray().getValues();
2556 for i in xrange(36):
2557 self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2559 f.renumberCells(renumber2,False);#perform reverse operation of renumbering to check that the resulting field is equal.
2560 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2564 def testRenumberNodesForFields(self):
2565 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2566 f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2568 self.assertEqual(9,f.getNumberOfMeshPlacesExpected());
2569 arr=DataArrayDouble.New();
2570 nbOfNodes=m.getNumberOfNodes();
2571 values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.,12.,112.,10012.,13.,113.,10013.,14.,114.,10014.,15.,115.,10015.]
2572 arr.setValues(values1,nbOfNodes,3);
2575 renumber1=[0,4,1,3,5,2,6,7,8]
2576 loc=[0.5432,-0.2432, 0.5478,0.1528]
2577 expected1=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124]
2579 res=f.getValueOn(loc[2*j:2*j+2]);
2581 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2585 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2586 f.renumberNodes(renumber1);
2587 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2589 res=f.getValueOn(loc[2*j:2*j+2]);
2591 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2594 expected2=[7.,107.,10007.,9.,109.,10009.,12.,112.,10012.,10.,110.,10010.,8.,108.,10008.,11.,111.,10011.,13.,113.,10013.,14.,114.,10014.,15.,115.,10015.]
2595 for i in xrange(27):
2596 self.assertTrue(abs(expected2[i]-f.getArray().getValues()[i])<1e-12);
2598 renumber2=[0,2,5,3,1,4,6,7,8]
2599 f.renumberNodes(renumber2);
2600 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2603 def testConvertQuadraticCellsToLinear(self):
2604 mesh=MEDCouplingDataForTest.build2DTargetMesh_3();
2605 mesh.checkCoherency();
2606 types=mesh.getAllTypes();
2608 self.assertEqual(5,len(types));
2609 expected1=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4, NORM_TRI6, NORM_QUAD8]
2611 self.assertEqual(expected1,types);
2612 self.assertTrue(mesh.isPresenceOfQuadratic());
2613 self.assertEqual(62,mesh.getMeshLength());
2614 f1=mesh.getMeasureField(False);
2616 mesh.convertQuadraticCellsToLinear();
2617 self.assertTrue(not mesh.isPresenceOfQuadratic());
2619 mesh.checkCoherency();
2620 f2=mesh.getMeasureField(False);
2621 self.assertTrue(f1.getArray().isEqual(f2.getArray(),1e-12));
2622 self.assertEqual(48,mesh.getMeshLength());
2623 types2=mesh.getAllTypes();
2625 self.assertEqual(3,len(types2));
2626 expected2=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4]
2628 self.assertEqual(expected2,types2);
2631 def testCheckGeoEquivalWith(self):
2632 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2633 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2635 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,0,1e-12);#deepEqual
2636 self.assertTrue(cellCor==None);
2637 self.assertTrue(nodeCor==None);
2638 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,1,1e-12);#fastEqual
2639 self.assertTrue(cellCor==None);
2640 self.assertTrue(nodeCor==None);
2641 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2642 self.assertTrue(cellCor==None);
2643 self.assertTrue(nodeCor==None);
2644 #Second test mesh1 and mesh2 are 2 different meshes instance
2645 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,0,1e-12);#deepEqual
2646 self.assertTrue(cellCor==None);
2647 self.assertTrue(nodeCor==None);
2648 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual
2649 self.assertTrue(cellCor==None);
2650 self.assertTrue(nodeCor==None);
2651 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2652 self.assertTrue(cellCor==None);
2653 self.assertTrue(nodeCor==None);
2654 #Third test : cell permutation by keeping the first the middle and the last as it is.
2655 renum=[0,2,1,3,4,5,6,8,7,9]
2656 mesh2.renumberCells(renum,False);
2657 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2658 self.assertTrue(cellCor==None);
2659 self.assertTrue(nodeCor==None);
2660 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2661 self.assertTrue(cellCor==None);
2662 self.assertTrue(nodeCor==None);
2663 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2664 self.assertTrue(cellCor);
2665 self.assertEqual(10,cellCor.getNumberOfTuples());
2666 self.assertEqual(1,cellCor.getNumberOfComponents());
2667 self.assertEqual(renum,list(cellCor.getValues()))
2668 self.assertTrue(nodeCor==None);
2670 self.assertTrue(nodeCor==None);
2671 #4th test : cell and node permutation by keeping the first the middle and the last as it is.
2672 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2673 renum2=[0,2,1,3,4,5,6,8,7,9,10]
2674 mesh2.renumberCells(renum,False);
2675 mesh2.renumberNodes(renum2,11);
2678 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2679 self.assertTrue(cellCor==None);
2680 self.assertTrue(nodeCor==None);
2681 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2682 self.assertTrue(cellCor==None);
2683 self.assertTrue(nodeCor==None);
2684 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2685 self.assertTrue(cellCor);
2686 self.assertEqual(10,cellCor.getNumberOfTuples());
2687 self.assertEqual(1,cellCor.getNumberOfComponents());
2688 self.assertEqual(renum,list(cellCor.getValues()))
2689 self.assertTrue(nodeCor);
2690 self.assertEqual(11,nodeCor.getNumberOfTuples());
2691 self.assertEqual(1,nodeCor.getNumberOfComponents());
2692 self.assertEqual(renum2,list(nodeCor.getValues()))
2695 #5th test : modification of the last cell to check fastCheck detection.
2696 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2697 renum3=[0,2,1,3,4,5,6,8,9,7]
2698 mesh2.renumberCells(renum3,False);
2699 mesh2.renumberNodes(renum2,11);
2702 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12)
2703 self.assertTrue(cellCor==None);
2704 self.assertTrue(nodeCor==None);
2705 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,1,1e-12)
2706 self.assertTrue(cellCor==None);
2707 self.assertTrue(nodeCor==None);
2708 cellCor,nodeCor=mesh2.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2709 self.assertTrue(cellCor!=None);
2710 self.assertEqual(10,cellCor.getNumberOfTuples());
2711 self.assertEqual(1,cellCor.getNumberOfComponents());
2712 self.assertEqual(renum3,list(cellCor.getValues()))
2713 self.assertTrue(nodeCor!=None);
2714 self.assertEqual(11,nodeCor.getNumberOfTuples());
2715 self.assertEqual(1,nodeCor.getNumberOfComponents());
2716 self.assertEqual(renum2,list(nodeCor.getValues()));
2719 def testCheckGeoEquivalWith2(self):
2720 mesh1=MEDCouplingDataForTest.build2DTargetMesh_4();
2721 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
2722 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);
2723 self.assertEqual(None,cellCor);
2724 self.assertNotEqual(None,nodeCor);
2725 expected1=[0, 1, 3, 4, 5, 6, 7, 8, 9]
2727 self.assertEqual(expected1[i],nodeCor.getIJ(i,0));
2731 def testCopyTinyStringsFromOnFields(self):
2732 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2733 nbOfCells=m.getNumberOfCells();
2734 f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2736 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2738 f.setDescription("b");
2739 a1=DataArrayDouble.New();
2740 a1.alloc(nbOfCells,2);
2742 a1.setInfoOnComponent(0,"c");
2743 a1.setInfoOnComponent(1,"d");
2745 a2.setInfoOnComponent(0,"e");
2746 a2.setInfoOnComponent(1,"f");
2749 f.setEndTime(3.,3,4);
2751 m.getCoords().setInfoOnComponent(0,"h");
2752 m.getCoords().setInfoOnComponent(1,"i");
2753 m.getCoords().setInfoOnComponent(2,"j");
2757 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2759 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2760 f2.copyTinyStringsFrom(f);
2761 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2762 f2.setDescription("GGG");
2763 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2764 f2.copyTinyStringsFrom(f);
2765 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2766 f2.getArray().setInfoOnComponent(0,"mmmm");
2767 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2768 f2.copyTinyStringsFrom(f);
2769 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2770 f2.getEndArray().setInfoOnComponent(1,"mmmm");
2771 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2772 f2.copyTinyStringsFrom(f);
2773 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2775 self.assertTrue(m2.isEqual(m,1e-12));
2777 self.assertTrue(not m2.isEqual(m,1e-12));
2778 m2.copyTinyStringsFrom(m);
2779 self.assertTrue(m2.isEqual(m,1e-12));
2780 m2.getCoords().setInfoOnComponent(1,"eee");
2781 self.assertTrue(not m2.isEqual(m,1e-12));
2782 m2.copyTinyStringsFrom(m);
2783 self.assertTrue(m2.isEqual(m,1e-12));
2786 def testTryToShareSameCoordsPermute(self):
2787 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2788 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2789 #self.assertTrue(m.getCoords()!=m2.getCoords());
2790 m.tryToShareSameCoordsPermute(m2,1e-12);
2791 #self.assertTrue(m.getCoords()==m2.getCoords());
2792 self.assertTrue(m2.isEqual(m,1e-12));
2793 renum1=[1,2,0,5,8,7,4,3,6]
2794 r1=DataArrayInt.New()
2795 r1.setValues(renum1,len(renum1),1)
2796 m.renumberNodes(r1,9);
2797 #self.assertTrue(m.getCoords()!=m2.getCoords());
2798 self.assertTrue(not m2.isEqual(m,1e-12));
2799 m.tryToShareSameCoordsPermute(m2,1e-12);
2800 #self.assertTrue(m.getCoords()==m2.getCoords());
2801 self.assertTrue(m2.isEqual(m,1e-12));
2804 def testTryToShareSameCoordsPermute2(self):
2805 m1=MEDCouplingDataForTest.build2DTargetMesh_4();
2806 targetCoords=[-0.3,-0.3, 0.2,-0.3, -0.3,0.2, 0.2,0.2 ]
2807 targetConn=[0,2,3,1]
2808 m2=MEDCouplingUMesh.New();
2809 m2.setMeshDimension(2);
2810 m2.allocateCells(1);
2811 m2.insertNextCell(NORM_QUAD4,targetConn[0:4])
2812 m2.finishInsertingCells();
2813 myCoords=DataArrayDouble.New();
2814 myCoords.setValues(targetCoords,4,2);
2815 m2.setCoords(myCoords);
2816 m2.checkCoherency();
2817 m1.checkCoherency();
2819 expected1=[0.25,0.125,0.125,0.25,0.25]
2820 f1=m1.getMeasureField(False);
2821 f2=m2.getMeasureField(False);
2822 self.assertEqual(5,f1.getArray().getNumberOfTuples());
2823 self.assertEqual(1,f2.getArray().getNumberOfTuples());
2825 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2827 self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2828 self.assertRaises(InterpKernelException,m1.tryToShareSameCoordsPermute,m2,1e-12);# <- here in this order the sharing is impossible.
2829 # Let's go for deeper test of tryToShareSameCoordsPermute
2830 m2.tryToShareSameCoordsPermute(m1,1e-12);
2831 f1=m1.getMeasureField(False);
2832 f2=m2.getMeasureField(False);
2833 self.assertEqual(5,f1.getArray().getNumberOfTuples());
2834 self.assertEqual(1,f2.getArray().getNumberOfTuples());
2836 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2838 self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2841 def testChangeUnderlyingMesh1(self):
2842 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2843 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2844 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2846 array=DataArrayDouble.New();
2847 arr=[7., 107., 8., 108., 9., 109., 10., 110., 11., 111., 12., 112., 13., 113., 14., 114., 15., 115., 16., 116.]
2848 array.setValues(arr,mesh1.getNumberOfCells(),2);
2851 renum=[0,2,1,3,4,5,6,8,7,9]
2852 mesh2.renumberCells(renum,False);
2853 #self.assertTrue(f1.getMesh()==mesh1);
2854 f1.changeUnderlyingMesh(mesh1,10,1e-12);# nothing done only to check that nothing done.
2855 #self.assertTrue(f1.getMesh()==mesh1);
2856 f1.changeUnderlyingMesh(mesh2,10,1e-12);
2857 #self.assertTrue(f1.getMesh()==mesh2);
2858 expected1=[7.,107.,9.,109.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.]
2859 for i in xrange(20):
2860 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
2863 f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2865 array=DataArrayDouble.New();
2866 arr2=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.,17.,117.]
2867 array.setValues(arr2,mesh1.getNumberOfNodes(),2);
2870 renum2=[0,2,10,3,4,5,6,8,7,9,1]
2871 mesh2.renumberNodes(renum2,11);
2872 #self.assertTrue(f1.getMesh()==mesh1);
2873 f1.changeUnderlyingMesh(mesh2,10,1e-12);
2874 #self.assertTrue(f1.getMesh()==mesh2);
2875 expected2=[7.,107.,17.,117.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.,9.,109.]
2876 for i in xrange(22):
2877 self.assertAlmostEqual(expected2[i],f1.getArray().getIJ(0,i),12);
2881 def testGetMaxValue1(self):
2882 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2883 nbOfCells=m.getNumberOfCells();
2884 f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2886 a1=DataArrayDouble.New();
2887 val1=[3.,4.,5.,6.,7.]
2888 a1.setValues(val1,nbOfCells,1);
2889 a2=DataArrayDouble.New();
2890 val2=[0.,1.,2.,8.,7.]
2891 a2.setValues(val2,nbOfCells,1);
2894 f.setEndTime(3.,3,4);
2897 self.assertAlmostEqual(8.,f.getMaxValue(),14);
2898 self.assertAlmostEqual(0.,f.getMinValue(),14);
2899 self.assertAlmostEqual(5.,f.getAverageValue(),14);
2900 self.assertAlmostEqual(5.125,f.getWeightedAverageValue(),14);
2902 self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2903 self.assertAlmostEqual(0.,f.getMinValue(),14);
2905 self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2906 self.assertAlmostEqual(1.,f.getMinValue(),14);
2909 def testSubstractInPlaceDM1(self):
2910 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2911 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2912 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2914 array=DataArrayDouble.New();
2915 arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
2916 array.setValues(arr,mesh1.getNumberOfCells(),2);
2919 self.assertEqual(10,f1.getNumberOfTuples());
2920 self.assertEqual(2,f1.getNumberOfComponents());
2921 self.assertEqual(20,f1.getNumberOfValues());
2923 renum=[0,2,3,1,4,5,6,8,7,9]
2924 mesh2.renumberCells(renum,False);
2926 f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2928 array=DataArrayDouble.New();
2929 arr2=[7.1,107.1,10.1,110.1,8.1,108.1,9.1,109.1,11.1,111.1,12.1,112.1,13.1,113.1,15.1,115.1,14.1,114.1,16.1,116.1]
2930 array.setValues(arr2,mesh2.getNumberOfCells(),2);
2933 f1.substractInPlaceDM(f2,10,1e-12);
2934 f1.applyFunc(1,"abs(x+y+0.2)");
2935 self.assertAlmostEqual(0.,f1.getMaxValue(),13);
2938 def testDotCrossProduct1(self):
2939 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2940 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2941 f1.setTime(2.3,5,6);
2943 array=DataArrayDouble.New();
2944 arr1=[7.,107.,207.,8.,108.,208.,9.,109.,209.,10.,110.,210.,11.,111.,211.,12.,112.,212.,13.,113.,213.,14.,114.,214.,15.,115.,215.,16.,116.,216.]
2945 array.setValues(arr1,mesh1.getNumberOfCells(),3);
2947 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2948 f2.setTime(7.8,4,5);
2950 array=DataArrayDouble.New();
2951 arr2=[1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.]
2952 array.setValues(arr2,mesh1.getNumberOfCells(),3);
2956 expected1=[842.,1820.,2816.,3830.,4862.,5912.,6980.,8066.,9170.,10292.]
2957 for i in xrange(10):
2958 self.assertAlmostEqual(expected1[i],f3.getIJ(i,0),9);
2961 f4=f1.crossProduct(f2);
2962 expected2=[-93., 186., -93., -392., 784., -392., -691., 1382., -691., -990., 1980., -990., -1289., 2578., -1289., -1588., 3176., -1588., -1887., 3774., -1887., -2186., 4372., -2186., -2485., 4970., -2485., -2784., 5568., -2784.]
2963 for i in xrange(30):
2964 self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
2968 def testMinMaxFields1(self):
2969 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2970 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2971 f1.setTime(2.3,5,6);
2973 array=DataArrayDouble.New();
2974 arr1=[7.,107.,207.,8.,108.,208.,9.,109.,209.,10.,110.,210.,11.,111.,211.,12.,112.,212.,13.,113.,213.,14.,114.,214.,15.,115.,215.,16.,116.,216.]
2975 array.setValues(arr1,mesh1.getNumberOfCells(),3);
2977 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2978 f2.setTime(7.8,4,5);
2980 array=DataArrayDouble.New();
2981 arr2=[6.,108.,206.,9.,107.,209.,8.,110.,208.,11.,109.,211.,10.,112.,210.,13.,111.,213.,12.,114.,212.,15.,113.,215.,14.,116.,214.,17.,115.,217.]
2982 array.setValues(arr2,mesh1.getNumberOfCells(),3);
2986 expected1=[7.,108.,207.,9.,108.,209.,9.,110.,209.,11.,110.,211.,11.,112.,211.,13.,112.,213.,13.,114.,213.,15.,114.,215.,15.,116.,215.,17.,116.,217.]
2987 for i in xrange(30):
2988 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),9);
2992 expected2=[6.,107.,206.,8.,107.,208.,8.,109.,208.,10.,109.,210.,10.,111.,210.,12.,111.,212.,12.,113.,212.,14.,113.,214.,14.,115.,214.,16.,115.,216.]
2993 for i in xrange(30):
2994 self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
2999 def testApplyLin1(self):
3000 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3001 f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
3003 array=DataArrayDouble.New();
3004 arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
3005 array.setValues(arr,mesh1.getNumberOfCells(),2);
3008 f1.applyLin(2.,3.,0);
3009 expected1=[17.,107.,19.,108.,21.,109.,23.,110.,25.,111.,27.,112.,29.,113.,31.,114.,33.,115.,35.,116.]
3010 for i in xrange(20):
3011 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),9);
3014 arr2=[2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3015 array=DataArrayDouble.New();
3016 array.setValues(arr2,mesh1.getNumberOfCells(),2);
3017 f1.setEndArray(array);
3019 f1.applyLin(4.,5.,1);
3021 expected2=[17.,433.,19.,437.,21.,441.,23.,445.,25.,449.,27.,453.,29.,457.,31.,461.,33.,465.,35.,469.]
3022 for i in xrange(20):
3023 self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),9);
3025 expected3=[2.,413.,3.,417.,4.,421.,5.,425.,6.,429.,7.,433.,8.,437.,9.,441.,10.,445.,11.,449.]
3026 for i in xrange(20):
3027 self.assertAlmostEqual(expected3[i],f1.getEndArray().getIJ(0,i),9);
3032 def testGetIdsInRange1(self):
3033 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3034 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3035 f1.setTime(2.3,5,6);
3037 array=DataArrayDouble.New();
3038 arr1=[2.,8.,6.,5.,11.,7.,9.,3.,10.,4.]
3039 array.setValues(arr1,mesh1.getNumberOfCells(),1);
3042 f1.checkCoherency();
3043 da=f1.getIdsInRange(2.9,7.1);
3044 self.failUnlessEqual(5,da.getNbOfElems());
3045 expected1=[2,3,5,7,9]
3046 self.failUnlessEqual(expected1,list(da.getValues()));
3047 da=f1.getIdsInRange(8.,12.);
3048 self.failUnlessEqual(4,da.getNbOfElems());
3050 self.failUnlessEqual(expected2,list(da.getValues()));
3054 def testBuildSubPart1(self):
3055 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3056 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3057 f1.setTime(2.3,5,6);
3059 array=DataArrayDouble.New();
3060 arr1=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.]
3061 array.setValues(arr1,mesh1.getNumberOfCells(),2);
3067 self.failUnlessEqual(3,f2.getNumberOfTuples());
3068 self.failUnlessEqual(2,f2.getNumberOfComponents());
3069 expected1=[5.,105.,4.,104.,7.,107.]
3071 self.assertAlmostEqual(f2.getIJ(0,i),expected1[i],12);
3073 self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3074 self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3075 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3076 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3078 self.failUnlessEqual(13,m2C.getMeshLength());
3079 expected2=[0.2, -0.3, 0.7, -0.3, 0.2, 0.2, 0.7, 0.2, 0.2, 0.7, 0.7, 0.7]
3080 for i in xrange(12):
3081 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3083 expected3=[3,2,3,1,3,0,2,1,4,4,5,3,2]
3084 self.failUnlessEqual(expected3,list(m2C.getNodalConnectivity().getValues()));
3085 expected4=[0,4,8,13]
3086 self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3087 # Test with field on nodes.
3088 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3089 f1.setTime(2.3,5,6);
3091 array=DataArrayDouble.New();
3092 arr2=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3093 array.setValues(arr2,mesh1.getNumberOfNodes(),2);
3096 f2=f1.buildSubPart(part2);
3097 self.failUnlessEqual(4,f2.getNumberOfTuples());
3098 self.failUnlessEqual(2,f2.getNumberOfComponents());
3099 expected5=[4.,104.,5.,105.,7.,107.,8.,108.]
3101 self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3103 self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3104 self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3105 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3106 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3108 self.failUnlessEqual(8,m2C.getMeshLength());
3109 for i in xrange(8):#8 is not an error
3110 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3112 self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:]);
3113 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3114 self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3115 #idem previous because nodes of cell#4 are not fully present in part3
3117 arrr=DataArrayInt.New();
3118 arrr.setValues(part3,2,1);
3119 f2=f1.buildSubPart(arrr);
3120 self.failUnlessEqual(4,f2.getNumberOfTuples());
3121 self.failUnlessEqual(2,f2.getNumberOfComponents());
3123 self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3125 self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3126 self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3127 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3128 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3130 self.failUnlessEqual(8,m2C.getMeshLength());
3131 for i in xrange(8):#8 is not an error
3132 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3134 self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3135 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3136 self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3139 f2=f1.buildSubPart(part4);
3140 self.failUnlessEqual(6,f2.getNumberOfTuples());
3141 self.failUnlessEqual(2,f2.getNumberOfComponents());
3142 expected6=[4.,104.,5.,105.,7.,107.,8.,108.,10.,110.,11.,111.]
3143 for i in xrange(12):
3144 self.assertAlmostEqual(f2.getIJ(0,i),expected6[i],12);
3146 self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3147 self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3148 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3149 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3151 self.failUnlessEqual(13,m2C.getMeshLength());
3152 for i in xrange(12):
3153 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3155 self.failUnlessEqual(expected3[0:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3156 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[0:4]);
3157 self.failUnlessEqual(expected3[8:13],list(m2C.getNodalConnectivity().getValues())[8:13]);
3158 self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3161 def testDoublyContractedProduct1(self):
3162 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3163 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3165 array=DataArrayDouble.New();
3166 arr1=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3167 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3169 f1.checkCoherency();
3171 f2=f1.doublyContractedProduct();
3172 f2.checkCoherency();
3173 self.assertEqual(1,f2.getNumberOfComponents());
3174 self.assertEqual(5,f2.getNumberOfTuples());
3176 self.assertAlmostEqual(3906.56,f2.getIJ(i,0),9);
3181 def testDeterminant1(self):
3182 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3183 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
3184 f1.setTime(2.3,5,6);
3185 f1.setEndTime(3.8,7,3);
3187 array=DataArrayDouble.New();
3188 arr1=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3189 array.setValues(arr1,mesh1.getNumberOfCells(),4);
3192 f1.checkCoherency();
3193 f2=f1.determinant();
3194 f2.checkCoherency();
3195 self.assertEqual(CONST_ON_TIME_INTERVAL,f2.getTimeDiscretization());
3196 self.assertEqual(1,f2.getNumberOfComponents());
3197 self.assertEqual(5,f2.getNumberOfValues());
3199 self.assertAlmostEqual(-2.42,f2.getIJ(i,0),13);
3201 #6 components multi arrays with end array not defined
3202 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3203 f1.setTime(2.3,5,6);
3204 f1.setEndTime(3.8,7,3);
3206 array=DataArrayDouble.New();
3207 arr2=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7,
3208 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3209 array.setValues(arr2,mesh1.getNumberOfNodes(),6);
3211 self.assertRaises(InterpKernelException,f1.checkCoherency);#no end array specified !
3213 f2=f1.determinant();
3214 self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3215 self.assertEqual(1,f2.getArray().getNumberOfComponents());
3216 self.assertEqual(9,f2.getNumberOfTuples());
3218 self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3220 #6 components multi arrays with end array defined
3221 array=DataArrayDouble.New();
3222 arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5,
3223 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3224 array.setValues(arr3,mesh1.getNumberOfNodes(),6);
3225 f1.setEndArray(array);
3226 f1.checkCoherency();
3227 f2=f1.determinant();
3228 f2.checkCoherency();
3229 self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3230 self.assertEqual(1,f2.getNumberOfComponents());
3231 self.assertEqual(9,f2.getNumberOfTuples());
3232 time2,it,order=f2.getTime()
3233 self.assertAlmostEqual(2.3,time2,12);
3234 self.assertEqual(5,it);
3235 self.assertEqual(6,order);
3236 time2,it,order=f2.getEndTime()
3237 self.assertAlmostEqual(3.8,time2,12);
3238 self.assertEqual(7,it);
3239 self.assertEqual(3,order);
3241 self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3242 self.assertAlmostEqual(1289.685,f2.getEndArray().getIJ(i,0),9);
3245 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3246 f1.setTime(7.8,10,2);
3248 array=DataArrayDouble.New();
3249 arr4=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3250 array.setValues(arr4,mesh1.getNumberOfCells(),9);
3253 f1.checkCoherency();
3254 f2=f1.determinant();
3255 f2.checkCoherency();
3256 self.assertEqual(ONE_TIME,f2.getTimeDiscretization());
3257 self.assertEqual(1,f2.getNumberOfComponents());
3258 self.assertEqual(5,f2.getNumberOfTuples());
3259 time2,it,order=f2.getTime()
3260 self.assertAlmostEqual(7.8,time2,12);
3261 self.assertEqual(10,it);
3262 self.assertEqual(2,order);
3264 self.assertAlmostEqual(3.267,f2.getIJ(i,0),13);
3268 def testEigenValues1(self):
3269 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3270 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3272 array=DataArrayDouble.New();
3273 arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3274 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3276 f1.checkCoherency();
3278 f2=f1.eigenValues();
3279 f2.checkCoherency();
3280 self.assertEqual(3,f2.getNumberOfComponents());
3281 self.assertEqual(5,f2.getNumberOfTuples());
3282 expected1=[13.638813677891717,-4.502313844635971,-2.2364998332557486]
3284 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3285 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3286 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3290 def testEigenVectors1(self):
3291 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3292 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3294 array=DataArrayDouble.New();
3295 arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3296 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3298 f1.checkCoherency();
3300 f2=f1.eigenVectors();
3301 f2.checkCoherency();
3302 self.assertEqual(9,f2.getNumberOfComponents());
3303 self.assertEqual(5,f2.getNumberOfTuples());
3304 expected1=[0.5424262364180696, 0.5351201064614425, 0.6476266283176001,#eigenvect 0
3305 0.7381111277307373, 0.06458838384003074, -0.6715804522117897,#eigenvect 1
3306 -0.4012053603397987, 0.8423032781211455, -0.3599436712889738#eigenvect 2
3309 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3310 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3311 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3312 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3313 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3314 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3315 self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3316 self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3317 self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3322 def testInverse1(self):
3323 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3324 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3326 array=DataArrayDouble.New();
3327 arr1=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3328 array.setValues(arr1,mesh1.getNumberOfCells(),9);
3330 f1.checkCoherency();
3333 f2.checkCoherency();
3334 self.assertEqual(9,f2.getNumberOfComponents());
3335 self.assertEqual(5,f2.getNumberOfTuples());
3336 expected1=[-2.6538108356290113, 2.855831037649208, -1.1111111111111067, 3.461891643709813, -4.775022956841121, 2.2222222222222143, -1.1111111111111054, 2.222222222222214, -1.1111111111111072]
3338 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3339 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3340 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3341 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3342 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3343 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3344 self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3345 self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3346 self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3349 array=DataArrayDouble.New();
3350 arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3351 array.setValues(arr3,mesh1.getNumberOfCells(),6);
3353 f1.checkCoherency();
3356 f2.checkCoherency();
3357 self.assertEqual(6,f2.getNumberOfComponents());
3358 self.assertEqual(5,f2.getNumberOfTuples());
3359 expected3=[-0.3617705098531818, -0.8678630828458127, -0.026843764174972983, 0.5539957431465833, 0.13133439560823013, -0.05301294502145887]
3361 self.assertAlmostEqual(expected3[0],f2.getIJ(i,0),13);
3362 self.assertAlmostEqual(expected3[1],f2.getIJ(i,1),13);
3363 self.assertAlmostEqual(expected3[2],f2.getIJ(i,2),13);
3364 self.assertAlmostEqual(expected3[3],f2.getIJ(i,3),13);
3365 self.assertAlmostEqual(expected3[4],f2.getIJ(i,4),13);
3366 self.assertAlmostEqual(expected3[5],f2.getIJ(i,5),13);
3369 array=DataArrayDouble.New();
3370 arr2=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3371 array.setValues(arr2,mesh1.getNumberOfCells(),4);
3373 f1.checkCoherency();
3376 f2.checkCoherency();
3377 self.assertEqual(4,f2.getNumberOfComponents());
3378 self.assertEqual(5,f2.getNumberOfTuples());
3379 expected2=[-1.8595041322314059, 0.9504132231404963, 1.404958677685951, -0.49586776859504156]
3381 self.assertAlmostEqual(expected2[0],f2.getIJ(i,0),13);
3382 self.assertAlmostEqual(expected2[1],f2.getIJ(i,1),13);
3383 self.assertAlmostEqual(expected2[2],f2.getIJ(i,2),13);
3384 self.assertAlmostEqual(expected2[3],f2.getIJ(i,3),13);
3389 def testTrace1(self):
3390 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3391 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3393 array=DataArrayDouble.New();
3394 arr1=[1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1, 1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.1]
3395 array.setValues(arr1,mesh1.getNumberOfCells(),9);
3397 f1.checkCoherency();
3400 f2.checkCoherency();
3401 self.assertEqual(1,f2.getNumberOfComponents());
3402 self.assertEqual(5,f2.getNumberOfTuples());
3404 self.assertAlmostEqual(15.9,f2.getIJ(i,0),13);
3407 array=DataArrayDouble.New();
3408 arr3=[7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5, 7.8,8.9,9.1,10.2,23.4,34.5]
3409 array.setValues(arr3,mesh1.getNumberOfCells(),6);
3411 f1.checkCoherency();
3414 f2.checkCoherency();
3415 self.assertEqual(1,f2.getNumberOfComponents());
3416 self.assertEqual(5,f2.getNumberOfTuples());
3418 self.assertAlmostEqual(25.8,f2.getIJ(i,0),13);
3421 array=DataArrayDouble.New();
3422 arr2=[1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5, 1.2,2.3,3.4,4.5]
3423 array.setValues(arr2,mesh1.getNumberOfCells(),4);
3425 f1.checkCoherency();
3428 f2.checkCoherency();
3429 self.assertEqual(1,f2.getNumberOfComponents());
3430 self.assertEqual(5,f2.getNumberOfTuples());
3432 self.assertAlmostEqual(5.7,f2.getIJ(i,0),13);
3437 def testDeviator1(self):
3438 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3439 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3441 array=DataArrayDouble.New();
3442 arr1=[1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7, 1.2,2.3,3.4,4.5,5.6,6.7]
3443 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3445 f1.checkCoherency();
3448 f2.checkCoherency();
3449 self.assertEqual(6,f2.getNumberOfComponents());
3450 self.assertEqual(5,f2.getNumberOfTuples());
3451 expected1=[-1.1,0.,1.1,4.5,5.6,6.7]
3453 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3454 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3455 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3456 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3457 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3458 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3463 def testMagnitude1(self):
3464 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3465 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3467 array=DataArrayDouble.New();
3468 arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6, 1.2,2.3,3.4,4.5,5.6]
3469 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3471 f1.checkCoherency();
3474 f2.checkCoherency();
3475 self.assertEqual(1,f2.getNumberOfComponents());
3476 self.assertEqual(5,f2.getNumberOfTuples());
3478 self.assertAlmostEqual(8.3606219864313918,f2.getIJ(i,0),13);
3483 def testMaxPerTuple1(self):
3484 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3485 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3487 array=DataArrayDouble.New();
3488 arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3489 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3491 f1.checkCoherency();
3493 f2=f1.maxPerTuple();
3494 f2.checkCoherency();
3495 self.assertEqual(1,f2.getNumberOfComponents());
3496 self.assertEqual(5,f2.getNumberOfTuples());
3498 self.assertAlmostEqual(5.6,f2.getIJ(i,0),13);
3503 def testChangeNbOfComponents(self):
3504 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3505 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3507 array=DataArrayDouble.New();
3508 arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3509 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3511 f1.checkCoherency();
3513 f1.changeNbOfComponents(3,7.77);
3514 f1.checkCoherency();
3515 self.assertEqual(3,f1.getNumberOfComponents());
3516 self.assertEqual(5,f1.getNumberOfTuples());
3517 expected1=[1.2,2.3,3.4, 1.2,3.4,4.5, 3.4,4.5,5.6, 5.6,1.2,2.3, 4.5,5.6,1.2]
3518 for i in xrange(15):
3519 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),13);
3521 f1.changeNbOfComponents(4,7.77);
3522 f1.checkCoherency();
3523 self.assertEqual(4,f1.getNumberOfComponents());
3524 self.assertEqual(5,f1.getNumberOfTuples());
3525 expected2=[1.2,2.3,3.4,7.77, 1.2,3.4,4.5,7.77, 3.4,4.5,5.6,7.77, 5.6,1.2,2.3,7.77, 4.5,5.6,1.2,7.77]
3526 for i in xrange(20):
3527 self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),13);
3532 def testSortPerTuple1(self):
3533 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3534 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3536 array=DataArrayDouble.New();
3537 arr1=[1.2,2.3,3.4,4.5,5.6, 1.2,3.4,4.5,5.6,2.3, 3.4,4.5,5.6,1.2,2.3, 5.6,1.2,2.3,3.4,4.5, 4.5,5.6,1.2,2.3,3.4]
3538 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3540 f1.checkCoherency();
3542 f1.sortPerTuple(True);
3543 f1.checkCoherency();
3544 self.assertEqual(5,f1.getNumberOfComponents());
3545 self.assertEqual(5,f1.getNumberOfTuples());
3547 self.assertAlmostEqual(arr1[0],f1.getIJ(i,0),13);
3548 self.assertAlmostEqual(arr1[1],f1.getIJ(i,1),13);
3549 self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3550 self.assertAlmostEqual(arr1[3],f1.getIJ(i,3),13);
3551 self.assertAlmostEqual(arr1[4],f1.getIJ(i,4),13);
3554 f1.sortPerTuple(False);
3555 f1.checkCoherency();
3556 self.assertEqual(5,f1.getNumberOfComponents());
3557 self.assertEqual(5,f1.getNumberOfTuples());
3559 self.assertAlmostEqual(arr1[4],f1.getIJ(i,0),13);
3560 self.assertAlmostEqual(arr1[3],f1.getIJ(i,1),13);
3561 self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3562 self.assertAlmostEqual(arr1[1],f1.getIJ(i,3),13);
3563 self.assertAlmostEqual(arr1[0],f1.getIJ(i,4),13);
3568 def testIsEqualWithoutConsideringStr1(self):
3569 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3570 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
3572 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3573 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3574 mesh2.setName("rr");
3575 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3576 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3577 da1,da2=mesh1.checkGeoEquivalWith(mesh2,2,1e-12);
3578 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);
3580 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3581 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3582 mesh2.getCoords().setInfoOnComponent(0,"tty");
3583 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3584 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3585 mesh2.getCoords().setInfoOnComponent(0,"");
3586 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3587 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3588 mesh2.getCoords().setInfoOnComponent(1,"tty");
3589 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3590 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3591 mesh2.getCoords().setInfoOnComponent(1,"");
3592 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3593 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3594 tmp=mesh2.getCoords().getIJ(0,3);
3595 mesh2.getCoords().setIJ(0,3,9999.);
3596 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3597 self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3598 mesh2.getCoords().setIJ(0,3,tmp);
3599 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3600 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3601 tmp2=mesh2.getNodalConnectivity().getIJ(0,4);
3602 mesh2.getNodalConnectivity().setIJ(0,4,0);
3603 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3604 self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3605 mesh2.getNodalConnectivity().setIJ(0,4,tmp2);
3606 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3607 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3609 f1=mesh1.getMeasureField(True);
3610 f2=mesh2.getMeasureField(True);
3611 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3612 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3613 f2.setName("ftest");
3614 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3615 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3616 f1.setName("ftest");
3617 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3618 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3620 f2.getArray().setInfoOnComponent(0,"eee");
3621 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3622 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3623 f2.getArray().setInfoOnComponent(0,"");
3624 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3625 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3627 f2.getArray().setIJ(1,0,0.123);
3628 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3629 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3630 f2.getArray().setIJ(1,0,0.125);
3631 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3632 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3636 def testGetNodeIdsOfCell1(self):
3637 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3638 li=mesh1.getNodeIdsOfCell(1)
3640 self.assertEqual(expected1,list(li))
3641 li=mesh1.getCoordinatesOfNode(4)
3642 self.assertEqual(2,len(li))
3643 self.assertAlmostEqual(0.2,li[0],13);
3644 self.assertAlmostEqual(0.2,li[1],13);
3645 li=mesh1.getCoords().getValuesAsTuple()
3646 self.assertEqual(9,len(li))
3647 li2=mesh1.getNodalConnectivityIndex().getValuesAsTuple()
3648 self.assertEqual(6,len(li2))
3651 def testGetEdgeRatioField1(self):
3652 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3653 m1.setTime(3.4,5,6); m1.setTimeUnit("us");
3654 f1=m1.getEdgeRatioField();
3655 self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
3656 self.assertEqual("us",f1.getTimeUnit())
3657 self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3658 self.assertEqual(5,f1.getNumberOfTuples());
3659 self.assertEqual(1,f1.getNumberOfComponents());
3660 expected1=[1.,1.4142135623730951, 1.4142135623730951,1.,1.]
3662 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),14);
3665 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
3666 f1=m1.getEdgeRatioField();
3667 self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3668 self.assertEqual(5,f1.getNumberOfTuples());
3669 self.assertEqual(1,f1.getNumberOfComponents());
3670 expected2=[1.4142135623730951, 1.7320508075688772, 1.7320508075688772, 1.4142135623730951, 1.4142135623730951]
3672 self.assertAlmostEqual(expected2[i],f1.getIJ(i,0),14);
3676 def testFillFromAnalytic3(self):
3677 m=MEDCouplingDataForTest.build2DTargetMesh_1()
3678 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME)
3679 self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"y+x");
3681 f1.setName("myField");
3682 f1.fillFromAnalytic(1,"y+x");
3683 f1.checkCoherency();
3684 self.assertEqual(f1.getName(),"myField");
3685 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
3686 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3687 self.assertEqual(1,f1.getNumberOfComponents());
3688 self.assertEqual(5,f1.getNumberOfTuples());
3689 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
3690 tmp=f1.getArray().getValues();
3691 self.assertEqual(len(values1),len(tmp))
3692 for i in xrange(len(values1)):
3693 self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
3696 f1=MEDCouplingFieldDouble.New(ON_NODES,CONST_ON_TIME_INTERVAL)
3698 f1.fillFromAnalytic(1,"y+2*x");
3699 f1.setEndTime(1.2,3,4);
3700 f1.checkCoherency();
3701 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3702 self.assertEqual(f1.getTimeDiscretization(),CONST_ON_TIME_INTERVAL);
3703 self.assertEqual(1,f1.getNumberOfComponents());
3704 self.assertEqual(9,f1.getNumberOfTuples());
3705 values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3706 tmp=f1.getArray().getValues();
3707 self.assertEqual(len(values2),len(tmp))
3708 for i in xrange(len(values2)):
3709 self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
3711 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3713 f1.fillFromAnalytic(1,"2.*x+y");
3714 f1.setEndTime(1.2,3,4);
3715 f1.checkCoherency();
3716 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3717 self.assertEqual(f1.getTimeDiscretization(),LINEAR_TIME);
3718 self.assertEqual(1,f1.getNumberOfComponents());
3719 self.assertEqual(9,f1.getNumberOfTuples());
3720 tmp=f1.getArray().getValues();
3721 values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3722 self.assertEqual(len(values2Bis),len(tmp))
3723 for i in xrange(len(values2Bis)):
3724 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3726 tmp=f1.getEndArray().getValues();
3727 self.assertEqual(len(values2Bis),len(tmp))
3728 for i in xrange(len(values2Bis)):
3729 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3732 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3734 f1.fillFromAnalytic(2,"(x+y)*IVec+2*(x+y)*JVec");
3735 f1.checkCoherency();
3736 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3737 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3738 self.assertEqual(2,f1.getNumberOfComponents());
3739 self.assertEqual(9,f1.getNumberOfTuples());
3740 values3=[-0.6,-1.2,-0.1,-0.2,0.4,0.8,-0.1,-0.2,0.4,0.8,0.9,1.8,0.4,0.8,0.9,1.8,1.4,2.8]
3741 tmp=f1.getArray().getValues();
3742 self.assertEqual(len(values3),len(tmp))
3743 for i in xrange(len(values3)):
3744 self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
3746 values4=f1.accumulate();
3747 self.assertTrue(abs(3.6-values4[0])<1.e-12);
3748 self.assertTrue(abs(7.2-values4[1])<1.e-12);
3749 values4=f1.integral(True);
3750 self.assertTrue(abs(0.5-values4[0])<1.e-12);
3751 self.assertTrue(abs(1.-values4[1])<1.e-12);
3753 f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
3755 self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"1./(x-0.2)");
3758 def testFieldDoubleOpEqual1(self):
3759 m=MEDCouplingDataForTest.build2DTargetMesh_1();
3760 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3761 self.assertRaises(InterpKernelException,f1.assign,0.07);
3764 f1.checkCoherency();
3765 self.assertEqual(1,f1.getNumberOfComponents());
3766 self.assertEqual(5,f1.getNumberOfTuples());
3768 self.assertAlmostEqual(0.07,f1.getIJ(i,0),16);
3771 f1.checkCoherency();
3772 self.assertEqual(1,f1.getNumberOfComponents());
3773 self.assertEqual(5,f1.getNumberOfTuples());
3775 self.assertAlmostEqual(0.09,f1.getIJ(i,0),16);
3778 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3779 f1.setEndTime(4.5,2,3);
3782 f1.checkCoherency();
3783 self.assertEqual(1,f1.getNumberOfComponents());
3784 self.assertEqual(9,f1.getNumberOfTuples());
3786 self.assertAlmostEqual(0.08,f1.getIJ(i,0),16);
3788 self.assertEqual(1,f1.getEndArray().getNumberOfComponents());
3789 self.assertEqual(9,f1.getEndArray().getNumberOfTuples());
3791 self.assertAlmostEqual(0.08,f1.getEndArray().getIJ(i,0),16);
3795 def testAreaBary3D2(self):
3796 coordsForHexa8=[-75.45749305371, 180.95495078401, 39.515472018008,
3797 -9.755591679144, 23.394927935279, 5.108794294848,
3798 14.337630157832, 61.705351002702, 160.42422501908,
3799 -27.273893776752, 167.567731083961, 192.830034145464,
3800 99.857193154796,264.499264735586,-8.287335493412,
3801 144.939882761126,156.38626563134,-31.896173894226,
3802 161.34096835726,182.4654895809,73.832387065572,
3803 132.680430393685,255.37973247196,96.15235602819];
3804 volHexa8=3258520.29637466;
3805 baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644]
3807 coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588,
3808 8.461744647847,76.653979804423,165.00018874933,
3809 -27.273893776752,167.567731083961,192.830034145464,
3810 106.586501038965,262.629609408327,13.124533008813,
3811 155.465082847275,197.414118382622,78.408350795821,
3812 132.680430393685,255.37973247196,96.15235602819];
3813 volPenta6=944849.868507338;
3814 baryPenta6=[39.631002313543,182.692711783428,106.98540473964]
3816 coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819,
3817 -27.273893776752,167.567731083961,192.830034145464,
3818 8.461744647847,76.653979804423,165.00018874933,
3819 155.465082847275,197.414118382622,78.408350795821,
3820 -68.199829618726,178.938498373416,62.608505919588];
3821 volPyra5=756943.92980254;
3822 baryPyra5=[29.204294116618,172.540129749156,118.01035951483]
3823 mesh=MEDCouplingUMesh.New("Bary3D2",3);
3824 coo=DataArrayDouble.New();
3825 tmp=coordsForHexa8+coordsForPenta6+coordsForPyra5
3826 coo.setValues(tmp,19,3);
3827 mesh.setCoords(coo);
3829 tmpConn=[0,1,2,3,4,5,6,7]
3830 mesh.allocateCells(3);
3831 self.assertRaises(InterpKernelException,mesh.insertNextCell,NORM_HEXA8,9,tmpConn[0:8])
3832 mesh.insertNextCell(NORM_HEXA8,tmpConn[0:8])
3833 mesh.insertNextCell(NORM_PENTA6,6,[i+8 for i in tmpConn])
3834 mesh.insertNextCell(NORM_PYRA5,5,[i+14 for i in tmpConn])
3835 mesh.finishInsertingCells();
3836 mesh.checkCoherency();
3837 mesh.mergeNodes(1e-7)
3838 self.assertEqual(12,mesh.getNumberOfNodes());
3839 vols=mesh.getMeasureField(True);
3840 self.assertEqual(3,vols.getNumberOfTuples());
3841 self.assertEqual(1,vols.getNumberOfComponents());
3842 self.assertAlmostEqual(volHexa8,vols.getIJ(0,0),6);
3843 self.assertAlmostEqual(volPenta6,vols.getIJ(1,0),7);
3844 self.assertAlmostEqual(volPyra5,vols.getIJ(2,0),7);
3845 bary=mesh.getBarycenterAndOwner();
3846 self.assertEqual(3,bary.getNumberOfTuples());
3847 self.assertEqual(3,bary.getNumberOfComponents());
3848 self.assertAlmostEqual(baryHexa8[0],bary.getIJ(0,0),11);
3849 self.assertAlmostEqual(baryHexa8[1],bary.getIJ(0,1),11);
3850 self.assertAlmostEqual(baryHexa8[2],bary.getIJ(0,2),11);
3851 self.assertAlmostEqual(baryPenta6[0],bary.getIJ(1,0),11);
3852 self.assertAlmostEqual(baryPenta6[1],bary.getIJ(1,1),11);
3853 self.assertAlmostEqual(baryPenta6[2],bary.getIJ(1,2),11);
3854 self.assertAlmostEqual(baryPyra5[0],bary.getIJ(2,0),11);
3855 self.assertAlmostEqual(baryPyra5[1],bary.getIJ(2,1),11);
3856 self.assertAlmostEqual(baryPyra5[2],bary.getIJ(2,2),11);
3859 def testGetMeasureFieldCMesh1(self):
3860 m=MEDCouplingCMesh.New();
3861 da=DataArrayDouble.New();
3862 discX=[2.3,3.4,5.8,10.2]
3863 discY=[12.3,23.4,45.8]
3864 discZ=[-0.7,1.2,1.25,2.13,2.67]
3865 da.setValues(discX,4,1);
3866 m.setCoordsAt(0,da);
3868 self.assertEqual(4,m.getNumberOfNodes());
3869 self.assertEqual(3,m.getNumberOfCells());
3870 self.assertEqual(1,m.getSpaceDimension());
3871 f=m.getMeasureField(True);
3872 self.assertEqual(3,f.getNumberOfTuples());
3873 self.assertEqual(1,f.getNumberOfComponents());
3874 expected1=[1.1,2.4,4.4]
3876 self.assertAlmostEqual(expected1[i],f.getIJ(i,0),12);
3878 coords=m.getCoordinatesAndOwner();
3879 self.assertEqual(4,coords.getNumberOfTuples());
3880 self.assertEqual(1,coords.getNumberOfComponents());
3882 self.assertAlmostEqual(discX[i],coords.getIJ(i,0),12);
3884 coords=m.getBarycenterAndOwner();
3885 self.assertEqual(3,coords.getNumberOfTuples());
3886 self.assertEqual(1,coords.getNumberOfComponents());
3887 expected1_3=[2.85,4.6,8.]
3889 self.assertAlmostEqual(expected1_3[i],coords.getIJ(i,0),12);
3892 da=DataArrayDouble.New();
3893 da.setValues(discY,3,1);
3894 m.setCoordsAt(1,da);
3896 self.assertEqual(12,m.getNumberOfNodes());
3897 self.assertEqual(6,m.getNumberOfCells());
3898 self.assertEqual(2,m.getSpaceDimension());
3899 f=m.getMeasureField(True);
3900 self.assertEqual(6,f.getNumberOfTuples());
3901 self.assertEqual(1,f.getNumberOfComponents());
3902 expected2=[12.21,26.64,48.84,24.64,53.76,98.56]
3904 self.assertAlmostEqual(expected2[i],f.getIJ(i,0),12);
3906 coords=m.getCoordinatesAndOwner();
3907 self.assertEqual(12,coords.getNumberOfTuples());
3908 self.assertEqual(2,coords.getNumberOfComponents());
3909 expected2_2=[2.3,12.3,3.4,12.3,5.8,12.3,10.2,12.3, 2.3,23.4,3.4,23.4,5.8,23.4,10.2,23.4, 2.3,45.8,3.4,45.8,5.8,45.8,10.2,45.8]
3910 for i in xrange(24):
3911 self.assertAlmostEqual(expected2_2[i],coords.getIJ(0,i),12);
3913 coords=m.getBarycenterAndOwner();
3914 self.assertEqual(6,coords.getNumberOfTuples());
3915 self.assertEqual(2,coords.getNumberOfComponents());
3916 expected2_3=[2.85,17.85,4.6,17.85,8.,17.85, 2.85,34.6,4.6,34.6,8.,34.6]
3917 for i in xrange(12):
3918 self.assertAlmostEqual(expected2_3[i],coords.getIJ(0,i),12);
3921 da=DataArrayDouble.New();
3922 da.setValues(discZ,5,1);
3923 m.setCoordsAt(2,da);
3925 self.assertEqual(60,m.getNumberOfNodes());
3926 self.assertEqual(24,m.getNumberOfCells());
3927 self.assertEqual(3,m.getSpaceDimension());
3928 f=m.getMeasureField(True);
3929 self.assertEqual(24,f.getNumberOfTuples());
3930 self.assertEqual(1,f.getNumberOfComponents());
3931 expected3=[23.199, 50.616, 92.796, 46.816, 102.144, 187.264, 0.6105, 1.332, 2.442, 1.232, 2.688, 4.928, 10.7448, 23.4432, 42.9792, 21.6832, 47.3088, 86.7328, 6.5934, 14.3856, 26.3736, 13.3056, 29.0304, 53.2224]
3932 for i in xrange(24):
3933 self.assertAlmostEqual(expected3[i],f.getIJ(i,0),12);
3935 coords=m.getCoordinatesAndOwner();
3936 self.assertEqual(60,coords.getNumberOfTuples());
3937 self.assertEqual(3,coords.getNumberOfComponents());
3939 2.3,12.3,-0.7, 3.4,12.3,-0.7, 5.8,12.3,-0.7, 10.2,12.3,-0.7, 2.3,23.4,-0.7, 3.4,23.4,-0.7, 5.8,23.4,-0.7, 10.2,23.4,-0.7, 2.3,45.8,-0.7, 3.4,45.8,-0.7, 5.8,45.8,-0.7, 10.2,45.8,-0.7,
3940 2.3,12.3,1.2, 3.4,12.3,1.2, 5.8,12.3,1.2, 10.2,12.3,1.2, 2.3,23.4,1.2, 3.4,23.4,1.2, 5.8,23.4,1.2, 10.2,23.4,1.2, 2.3,45.8,1.2, 3.4,45.8,1.2, 5.8,45.8,1.2, 10.2,45.8,1.2,
3941 2.3,12.3,1.25, 3.4,12.3,1.25, 5.8,12.3,1.25, 10.2,12.3,1.25, 2.3,23.4,1.25, 3.4,23.4,1.25, 5.8,23.4,1.25, 10.2,23.4,1.25, 2.3,45.8,1.25, 3.4,45.8,1.25, 5.8,45.8,1.25, 10.2,45.8,1.25,
3942 2.3,12.3,2.13, 3.4,12.3,2.13, 5.8,12.3,2.13, 10.2,12.3,2.13, 2.3,23.4,2.13, 3.4,23.4,2.13, 5.8,23.4,2.13, 10.2,23.4,2.13, 2.3,45.8,2.13, 3.4,45.8,2.13, 5.8,45.8,2.13, 10.2,45.8,2.13,
3943 2.3,12.3,2.67, 3.4,12.3,2.67, 5.8,12.3,2.67, 10.2,12.3,2.67, 2.3,23.4,2.67, 3.4,23.4,2.67, 5.8,23.4,2.67, 10.2,23.4,2.67, 2.3,45.8,2.67, 3.4,45.8,2.67, 5.8,45.8,2.67, 10.2,45.8,2.67];
3944 for i in xrange(180):
3945 self.assertAlmostEqual(expected3_2[i],coords.getIJ(0,i),12);
3947 coords=m.getBarycenterAndOwner();
3948 self.assertEqual(24,coords.getNumberOfTuples());
3949 self.assertEqual(3,coords.getNumberOfComponents());
3951 2.85,17.85,0.25,4.6,17.85,0.25,8.,17.85,0.25, 2.85,34.6,0.25,4.6,34.6,0.25,8.,34.6,0.25,
3952 2.85,17.85,1.225,4.6,17.85,1.225,8.,17.85,1.225, 2.85,34.6,1.225,4.6,34.6,1.225,8.,34.6,1.225,
3953 2.85,17.85,1.69,4.6,17.85,1.69,8.,17.85,1.69, 2.85,34.6,1.69,4.6,34.6,1.69,8.,34.6,1.69,
3954 2.85,17.85,2.4,4.6,17.85,2.4,8.,17.85,2.4, 2.85,34.6,2.4,4.6,34.6,2.4,8.,34.6,2.4];
3955 for i in xrange(72):
3956 self.assertAlmostEqual(expected3_3[i],coords.getIJ(0,i),12);
3960 def testFieldDoubleZipCoords1(self):
3961 m=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
3962 f=m.fillFromAnalytic(ON_NODES,2,"x*2.");
3963 f.getArray().setInfoOnComponent(0,"titi");
3964 f.getArray().setInfoOnComponent(1,"tutu");
3966 self.assertEqual(18,f.getNumberOfTuples());
3967 self.assertEqual(2,f.getNumberOfComponents());
3968 expected1=[-0.6, -0.6, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 0.4, 0.4]
3969 for i in xrange(36):
3970 self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
3972 self.assertTrue(f.zipCoords());
3974 expected2=[-0.6, -0.6, 1.4, 1.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 1.4, 1.4, -0.6, -0.6, 0.4, 0.4, 1.4, 1.4, 0.4, 0.4]
3975 for i in xrange(30):
3976 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
3978 self.assertTrue(not f.zipCoords());
3980 for i in xrange(30):
3981 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
3983 self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
3984 self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
3987 def testFieldDoubleZipConnectivity1(self):
3988 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3989 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
3991 m3_1=m2.buildPartOfMySelf(cells1,True);
3993 m4=MEDCouplingDataForTest.build2DSourceMesh_1();
3994 m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
3995 m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
3997 self.assertEqual(10,m6.getNumberOfCells());
3998 self.assertEqual(22,m6.getNumberOfNodes());
3999 arr,areNodesMerged,newNbOfNodes=m6.mergeNodes(1e-13);
4000 self.assertEqual(9,m6.getNumberOfNodes());
4001 f=m6.fillFromAnalytic(ON_CELLS,2,"x");
4002 f2=m6.fillFromAnalytic(ON_NODES,2,"x");
4003 self.assertEqual(10,f.getNumberOfTuples());
4004 self.assertEqual(2,f.getNumberOfComponents());
4005 expected1=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4006 -0.05, -0.05, 0.45, 0.45, 0.53333333333333321, 0.53333333333333321, -0.05, -0.05, 0.45, 0.45,
4007 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4008 for i in xrange(20):
4009 self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4011 f.getArray().setInfoOnComponent(0,"titi");
4012 f.getArray().setInfoOnComponent(1,"tutu");
4014 self.assertTrue(f.zipConnectivity(0));
4015 expected2=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4016 -0.05, -0.05, 0.45, 0.45, 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4017 self.assertEqual(7,f.getNumberOfTuples());
4018 self.assertEqual(2,f.getNumberOfComponents());
4019 for i in xrange(14):
4020 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4022 self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4023 self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4024 self.assertTrue(not f.zipConnectivity(0));
4026 expected3=[-0.3, -0.3, 0.2, 0.2, 0.7, 0.7, -0.3, -0.3, 0.2, 0.2, 0.7, 0.7,
4027 -0.3, -0.3, 0.2, 0.2, 0.7, 0.7];
4028 self.assertEqual(9,f2.getNumberOfTuples());
4029 self.assertEqual(2,f2.getNumberOfComponents());
4030 for i in xrange(18):
4031 self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4033 self.assertTrue(f2.zipConnectivity(0));
4034 self.assertEqual(9,f2.getNumberOfTuples());
4035 self.assertEqual(2,f2.getNumberOfComponents());
4036 for i in xrange(18):
4037 self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4041 def testDaDoubleRenumber1(self):
4042 a=DataArrayDouble.New();
4043 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4044 a.setValues(arr1,7,2);
4045 a.setInfoOnComponent(0,"toto");
4046 a.setInfoOnComponent(1,"tata");
4048 arr2=[3,1,0,6,5,4,2]
4050 self.assertEqual(7,b.getNumberOfTuples());
4051 self.assertEqual(2,b.getNumberOfComponents());
4052 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4053 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4054 expected1=[3.1, 13.1, 2.1, 12.1, 7.1, 17.1, 1.1, 11.1, 6.1, 16.1, 5.1, 15.1, 4.1, 14.1]
4055 for i in xrange(14):
4056 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4059 c=DataArrayInt.New();
4060 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4061 c.setValues(arr3,7,2);
4062 c.setInfoOnComponent(0,"toto");
4063 c.setInfoOnComponent(1,"tata");
4065 self.assertEqual(7,d.getNumberOfTuples());
4066 self.assertEqual(2,d.getNumberOfComponents());
4067 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4068 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4069 expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4070 for i in xrange(14):
4071 self.assertEqual(expected2[i],d.getIJ(0,i));
4075 def testDaDoubleRenumberAndReduce1(self):
4076 a=DataArrayDouble.New();
4077 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4078 a.setValues(arr1,7,2);
4079 a.setInfoOnComponent(0,"toto");
4080 a.setInfoOnComponent(1,"tata");
4082 arr2=[2,-1,1,-1,0,4,3]
4083 b=a.renumberAndReduce(arr2,5);
4084 self.assertEqual(5,b.getNumberOfTuples());
4085 self.assertEqual(2,b.getNumberOfComponents());
4086 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4087 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4088 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4089 for i in xrange(10):
4090 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4093 c=DataArrayInt.New();
4094 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4095 c.setValues(arr3,7,2);
4096 c.setInfoOnComponent(0,"toto");
4097 c.setInfoOnComponent(1,"tata");
4098 d=c.renumberAndReduce(arr2,5);
4099 self.assertEqual(5,d.getNumberOfTuples());
4100 self.assertEqual(2,d.getNumberOfComponents());
4101 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4102 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4103 expected2=[5,15,3,13,1,11,7,17,6,16]
4104 for i in xrange(10):
4105 self.assertEqual(expected2[i],d.getIJ(0,i));
4109 def testDaDoubleRenumberInPlace1(self):
4110 a=DataArrayDouble.New();
4111 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4112 a.setValues(arr1,7,2);
4114 arr2=[3,1,0,6,5,4,2]
4115 a.renumberInPlace(arr2);
4116 self.assertEqual(7,a.getNumberOfTuples());
4117 self.assertEqual(2,a.getNumberOfComponents());
4118 expected1=[3.1, 13.1, 2.1, 12.1, 7.1, 17.1, 1.1, 11.1, 6.1, 16.1, 5.1, 15.1, 4.1, 14.1]
4119 for i in xrange(14):
4120 self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4123 c=DataArrayInt.New();
4124 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4125 c.setValues(arr3,7,2);
4126 c.renumberInPlace(arr2);
4127 self.assertEqual(7,c.getNumberOfTuples());
4128 self.assertEqual(2,c.getNumberOfComponents());
4129 expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4130 for i in xrange(14):
4131 self.assertEqual(expected2[i],c.getIJ(0,i));
4135 def testDaDoubleRenumberR1(self):
4136 a=DataArrayDouble.New();
4137 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4138 a.setValues(arr1,7,2);
4139 a.setInfoOnComponent(0,"toto");
4140 a.setInfoOnComponent(1,"tata");
4142 arr2=[3,1,0,6,5,4,2]
4143 b=a.renumberR(arr2);
4144 self.assertEqual(7,b.getNumberOfTuples());
4145 self.assertEqual(2,b.getNumberOfComponents());
4146 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4147 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4148 expected1=[4.1, 14.1, 2.1, 12.1, 1.1, 11.1, 7.1, 17.1, 6.1, 16.1, 5.1, 15.1, 3.1, 13.1]
4149 for i in xrange(14):
4150 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4153 c=DataArrayInt.New();
4154 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4155 c.setValues(arr3,7,2);
4156 c.setInfoOnComponent(0,"toto");
4157 c.setInfoOnComponent(1,"tata");
4158 d=c.renumberR(arr2);
4159 self.assertEqual(7,d.getNumberOfTuples());
4160 self.assertEqual(2,d.getNumberOfComponents());
4161 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4162 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4163 expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4164 for i in xrange(14):
4165 self.assertEqual(expected2[i],d.getIJ(0,i));
4169 def testDaDoubleRenumberInPlaceR1(self):
4170 a=DataArrayDouble.New();
4171 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4172 a.setValues(arr1,7,2);
4174 arr2=[3,1,0,6,5,4,2]
4175 a.renumberInPlaceR(arr2);
4176 self.assertEqual(7,a.getNumberOfTuples());
4177 self.assertEqual(2,a.getNumberOfComponents());
4178 expected1=[4.1, 14.1, 2.1, 12.1, 1.1, 11.1, 7.1, 17.1, 6.1, 16.1, 5.1, 15.1, 3.1, 13.1]
4179 for i in xrange(14):
4180 self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4183 c=DataArrayInt.New();
4184 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4185 c.setValues(arr3,7,2);
4186 c.renumberInPlaceR(arr2);
4187 self.assertEqual(7,c.getNumberOfTuples());
4188 self.assertEqual(2,c.getNumberOfComponents());
4189 expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4190 for i in xrange(14):
4191 self.assertEqual(expected2[i],c.getIJ(0,i));
4195 def testDaDoubleSelectByTupleId1(self):
4196 a=DataArrayDouble.New();
4197 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
4198 a.setValues(arr1,7,2);
4199 a.setInfoOnComponent(0,"toto");
4200 a.setInfoOnComponent(1,"tata");
4203 b=a.selectByTupleId(arr2);
4204 self.assertEqual(5,b.getNumberOfTuples());
4205 self.assertEqual(2,b.getNumberOfComponents());
4206 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4207 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4208 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4209 for i in xrange(10):
4210 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4213 c=DataArrayInt.New();
4214 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4215 c.setValues(arr3,7,2);
4216 c.setInfoOnComponent(0,"toto");
4217 c.setInfoOnComponent(1,"tata");
4218 d=c.selectByTupleId(arr2);
4219 self.assertEqual(5,d.getNumberOfTuples());
4220 self.assertEqual(2,d.getNumberOfComponents());
4221 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4222 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4223 expected2=[5,15,3,13,1,11,7,17,6,16]
4224 for i in xrange(10):
4225 self.assertEqual(expected2[i],d.getIJ(0,i));
4229 def testDaDoubleGetMinMaxValues1(self):
4230 a=DataArrayDouble.New();
4231 arr1=[2.34,4.56,-6.77,4.55,4.56,2.24,2.34,1.02,4.56]
4232 a.setValues(arr1,9,1);
4233 m,where=a.getMaxValue();
4234 self.assertEqual(1,where);
4235 self.assertAlmostEqual(4.56,m,12);
4236 m,ws=a.getMaxValue2();
4237 self.assertAlmostEqual(4.56,m,12);
4238 self.assertEqual(3,ws.getNumberOfTuples());
4239 self.assertEqual(1,ws.getNumberOfComponents());
4242 self.assertEqual(expected1[i],ws.getIJ(i,0));
4244 a=DataArrayDouble.New();
4245 arr2=[-2.34,-4.56,6.77,-4.55,-4.56,-2.24,-2.34,-1.02,-4.56]
4246 a.setValues(arr2,9,1);
4247 m,where=a.getMinValue();
4248 self.assertEqual(1,where);
4249 self.assertAlmostEqual(-4.56,m,12);
4250 m,ws=a.getMinValue2();
4251 self.assertAlmostEqual(-4.56,m,12);
4252 self.assertEqual(3,ws.getNumberOfTuples());
4253 self.assertEqual(1,ws.getNumberOfComponents());
4255 self.assertEqual(expected1[i],ws.getIJ(i,0));
4259 def testFieldDoubleGetMinMaxValues2(self):
4260 m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
4261 self.assertEqual(18,m2.getNumberOfCells());
4262 arr1=[8.71,4.53,-12.41,8.71,-8.71,8.7099,4.55,8.71,5.55,6.77,-1e-200,4.55,8.7099,0.,1.23,0.,2.22,8.71]
4263 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4264 a=DataArrayDouble.New();
4265 a.setValues(arr1,18,1);
4271 self.assertAlmostEqual(8.71,m,12);
4272 m,ws=f.getMaxValue2();
4273 self.assertAlmostEqual(8.71,m,12);
4274 self.assertEqual(4,ws.getNumberOfTuples());
4275 self.assertEqual(1,ws.getNumberOfComponents());
4276 expected1=[0,3,7,17]
4278 self.assertEqual(expected1[i],ws.getIJ(i,0));
4281 arr2=[-8.71,-4.53,12.41,-8.71,8.71,-8.7099,-4.55,-8.71,-5.55,-6.77,1e-200,-4.55,-8.7099,0.,-1.23,0.,-2.22,-8.71]
4282 a.setValues(arr2,18,1);
4285 self.assertAlmostEqual(-8.71,m,12);
4286 m,ws=f.getMinValue2();
4287 self.assertAlmostEqual(-8.71,m,12);
4288 self.assertEqual(4,ws.getNumberOfTuples());
4289 self.assertEqual(1,ws.getNumberOfComponents());
4291 self.assertEqual(expected1[i],ws.getIJ(i,0));
4295 def testBuildUnstructuredCMesh1(self):
4296 m=MEDCouplingCMesh.New();
4297 da=DataArrayDouble.New();
4298 discX=[2.3,3.4,5.8,10.2]
4299 discY=[12.3,23.4,45.8]
4300 discZ=[-0.7,1.2,1.25,2.13,2.67]
4301 da.setValues(discX,4,1);
4302 m.setCoordsAt(0,da);
4304 self.assertEqual(0,m.getCellContainingPoint([2.4],1e-12));
4305 self.assertEqual(1,m.getCellContainingPoint([3.7],1e-12));
4306 self.assertEqual(2,m.getCellContainingPoint([5.9],1e-12));
4307 self.assertEqual(-1,m.getCellContainingPoint([10.3],1e-12));
4308 self.assertEqual(-1,m.getCellContainingPoint([1.3],1e-12));
4310 m2=m.buildUnstructured();
4311 m2.checkCoherency();
4312 f1=m.getMeasureField(False);
4313 f2=m2.getMeasureField(False);
4314 self.assertTrue(isinstance(f1.getMesh(),MEDCouplingCMesh))
4315 self.assertEqual(f1.getNumberOfTuples(),3);
4316 self.assertEqual(f2.getNumberOfTuples(),3);
4317 self.assertEqual(1,m2.getMeshDimension());
4318 self.assertEqual(1,m2.getSpaceDimension());
4320 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4322 da=DataArrayDouble.New();
4323 da.setValues(discY,3,1);
4324 m.setCoordsAt(1,da);
4326 m2=m.buildUnstructured();
4327 m2.checkCoherency();
4328 f1=m.getMeasureField(False);
4329 f2=m2.getMeasureField(False);
4330 self.assertEqual(f1.getNumberOfTuples(),6);
4331 self.assertEqual(f2.getNumberOfTuples(),6);
4332 self.assertEqual(2,m2.getMeshDimension());
4333 self.assertEqual(2,m2.getSpaceDimension());
4335 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4338 da=DataArrayDouble.New();
4339 da.setValues(discZ,5,1);
4340 m.setCoordsAt(2,da);
4341 m2=m.buildUnstructured();
4342 m2.checkCoherency();
4343 f1=m.getMeasureField(False);
4344 f2=m2.getMeasureField(False);
4345 self.assertEqual(f1.getNumberOfTuples(),24);
4346 self.assertEqual(f2.getNumberOfTuples(),24);
4347 self.assertEqual(3,m2.getMeshDimension());
4348 self.assertEqual(3,m2.getSpaceDimension());
4349 for i in xrange(24):
4350 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4354 self.assertEqual(16,m.getCellContainingPoint(pos1,1e-12));
4356 elems=m2.getCellsInBoundingBox([3.5,6.,12.2,25.,0.,1.5],1e-7)
4357 self.assertEqual([1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17],elems.getValues())
4361 m3=m.buildUnstructured();
4363 self.assertTrue(m3.isEqual(m2,1e-12));
4366 def testDataArrayIntInvertO2NNO21(self):
4368 da=DataArrayInt.New();
4369 da.setValues(arr1,6,1);
4370 da2=da.invertArrayO2N2N2O(6);
4371 self.assertEqual(6,da2.getNumberOfTuples());
4372 self.assertEqual(1,da2.getNumberOfComponents());
4373 expected1=[1,3,0,5,2,4]
4375 self.assertEqual(expected1[i],da2.getIJ(i,0));
4377 da3=da2.invertArrayN2O2O2N(6);
4379 self.assertEqual(arr1[i],da3.getIJ(i,0));
4382 arr2=[3,-1,5,4,-1,0,-1,1,2,-1]
4383 da=DataArrayInt.New();
4384 da.setValues(arr2,10,1);
4385 da2=da.invertArrayO2N2N2O(6);
4386 self.assertEqual(6,da2.getNumberOfTuples());
4387 self.assertEqual(1,da2.getNumberOfComponents());
4388 expected2=[5,7,8,0,3,2]
4390 self.assertEqual(expected2[i],da2.getIJ(i,0));
4392 da3=da2.invertArrayN2O2O2N(10);
4393 for i in xrange(10):
4394 self.assertEqual(arr2[i],da3.getIJ(i,0));
4398 def testKeepSetSelectedComponent1(self):
4399 arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4400 a1=DataArrayDouble.New();
4401 a1.setValues(arr1,5,4);
4402 expp=[21.,22.,23.,24.]
4403 self.assertEqual(4,len(a1.getTuple(2)));
4405 self.assertAlmostEqual(expp[i],a1.getTuple(2)[i],12)
4407 a1.setInfoOnComponent(0,"aaaa");
4408 a1.setInfoOnComponent(1,"bbbb");
4409 a1.setInfoOnComponent(2,"cccc");
4410 a1.setInfoOnComponent(3,"dddd");
4412 a2=a1.keepSelectedComponents(arr2V);
4413 self.assertEqual(6,a2.getNumberOfComponents());
4414 self.assertEqual(5,a2.getNumberOfTuples());
4415 self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4416 self.assertTrue(a2.getInfoOnComponent(1)=="cccc");
4417 self.assertTrue(a2.getInfoOnComponent(2)=="bbbb");
4418 self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4419 self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4420 self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4421 expected1=[2.,3.,2.,3.,1.,1., 12.,13.,12.,13.,11.,11., 22.,23.,22.,23.,21.,21., 32.,33.,32.,33.,31.,31., 42.,43.,42.,43.,41.,41.]
4422 for i in xrange(30):
4423 self.assertAlmostEqual(expected1[i],a2.getIJ(0,i),14);
4425 a3=a1.convertToIntArr();
4426 self.assertEqual([21,22,23,24],a3.getTuple(2))
4427 a4=a3.keepSelectedComponents(arr2V);
4428 self.assertEqual(6,a4.getNumberOfComponents());
4429 self.assertEqual(5,a4.getNumberOfTuples());
4430 self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4431 self.assertTrue(a4.getInfoOnComponent(1)=="cccc");
4432 self.assertTrue(a4.getInfoOnComponent(2)=="bbbb");
4433 self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4434 self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4435 self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4436 for i in xrange(30):
4437 self.assertEqual(int(expected1[i]),a4.getIJ(0,i));
4439 # setSelectedComponents
4441 a5=a1.keepSelectedComponents(arr3V);
4442 a5.setInfoOnComponent(0,"eeee");
4443 a5.setInfoOnComponent(1,"ffff");
4445 a2.setSelectedComponents(a5,arr4V);
4446 self.assertEqual(6,a2.getNumberOfComponents());
4447 self.assertEqual(5,a2.getNumberOfTuples());
4448 self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4449 self.assertTrue(a2.getInfoOnComponent(1)=="eeee");
4450 self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
4451 self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4452 self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4453 self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4454 expected2=[2.,4.,3.,3.,1.,1., 12.,14.,13.,13.,11.,11., 22.,24.,23.,23.,21.,21., 32.,34.,33.,33.,31.,31., 42.,44.,43.,43.,41.,41.]
4455 for i in xrange(30):
4456 self.assertAlmostEqual(expected2[i],a2.getIJ(0,i),14);
4458 a6=a5.convertToIntArr();
4459 a6.setInfoOnComponent(0,"eeee");
4460 a6.setInfoOnComponent(1,"ffff");
4461 a4.setSelectedComponents(a6,arr4V);
4462 self.assertEqual(6,a4.getNumberOfComponents());
4463 self.assertEqual(5,a4.getNumberOfTuples());
4464 self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4465 self.assertTrue(a4.getInfoOnComponent(1)=="eeee");
4466 self.assertTrue(a4.getInfoOnComponent(2)=="ffff");
4467 self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4468 self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4469 self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4470 for i in xrange(30):
4471 self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
4477 self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr5V);
4478 self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr6V);
4479 self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4481 self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4485 def testKeepSetSelectedComponent2(self):
4486 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4487 arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4488 a1=DataArrayDouble.New();
4489 a1.setValues(arr1,5,4);
4490 a1.setInfoOnComponent(0,"aaaa");
4491 a1.setInfoOnComponent(1,"bbbb");
4492 a1.setInfoOnComponent(2,"cccc");
4493 a1.setInfoOnComponent(3,"dddd");
4494 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4495 f1.setTime(2.3,4,5);
4499 f1.checkCoherency();
4502 f2=f1.keepSelectedComponents(arr2V);
4503 self.assertTrue(f2.getTimeDiscretization()==ONE_TIME);
4504 t,dt,it=f2.getTime()
4505 self.assertAlmostEqual(2.3,t,13);
4506 self.assertEqual(4,dt);
4507 self.assertEqual(5,it);
4508 f2.checkCoherency();
4509 self.assertEqual(6,f2.getNumberOfComponents());
4510 self.assertEqual(5,f2.getNumberOfTuples());
4511 self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4512 self.assertTrue(f2.getArray().getInfoOnComponent(1)=="cccc");
4513 self.assertTrue(f2.getArray().getInfoOnComponent(2)=="bbbb");
4514 self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4515 self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4516 self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4517 expected1=[2.,3.,2.,3.,1.,1., 12.,13.,12.,13.,11.,11., 22.,23.,22.,23.,21.,21., 32.,33.,32.,33.,31.,31., 42.,43.,42.,43.,41.,41.]
4518 for i in xrange(30):
4519 self.assertAlmostEqual(expected1[i],f2.getIJ(0,i),14);
4521 #setSelectedComponents
4523 f5=f1.keepSelectedComponents(arr3V);
4524 f5.setTime(6.7,8,9);
4525 f5.getArray().setInfoOnComponent(0,"eeee");
4526 f5.getArray().setInfoOnComponent(1,"ffff");
4527 f5.checkCoherency();
4529 f2.setSelectedComponents(f5,arr4V);
4530 self.assertEqual(6,f2.getNumberOfComponents());
4531 self.assertEqual(5,f2.getNumberOfTuples());
4532 f2.checkCoherency();
4533 t,dt,it=f2.getTime()
4534 self.assertAlmostEqual(2.3,t,13);
4535 self.assertEqual(4,dt);
4536 self.assertEqual(5,it);
4537 self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4538 self.assertTrue(f2.getArray().getInfoOnComponent(1)=="eeee");
4539 self.assertTrue(f2.getArray().getInfoOnComponent(2)=="ffff");
4540 self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4541 self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4542 self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4543 expected2=[2.,4.,3.,3.,1.,1., 12.,14.,13.,13.,11.,11., 22.,24.,23.,23.,21.,21., 32.,34.,33.,33.,31.,31., 42.,44.,43.,43.,41.,41.]
4544 for i in xrange(30):
4545 self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),14);
4550 def testElementaryDAThrowAndSpecialCases(self):
4551 da=DataArrayInt.New();
4552 self.assertRaises(InterpKernelException, da.checkAllocated);
4553 self.assertRaises(InterpKernelException, da.fillWithValue, 1);
4554 self.assertRaises(InterpKernelException, da.iota, 1);
4556 da.fillWithValue(11); #11,11,11,11...
4557 da.iota(10); #10,11,12,13...
4559 db=DataArrayInt.New();
4562 dbl2=DataArrayDouble.New();
4564 self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15);
4565 self.assertRaises(InterpKernelException, dbl2.sort);
4566 self.assertRaises(InterpKernelException, dbl2.reverse);
4567 self.assertRaises(InterpKernelException, dbl2.iota, 10.);
4569 dbl=DataArrayDouble.New();
4570 #DataArrayDouble not allocated yet
4571 self.assertRaises(InterpKernelException, dbl.iota, 10.);
4572 self.assertRaises(InterpKernelException, dbl.isUniform, 10., 1e-15);
4573 self.assertRaises(InterpKernelException, dbl.sort);
4574 self.assertRaises(InterpKernelException, dbl.reverse);
4575 self.assertRaises(InterpKernelException, dbl.fromNoInterlace);
4576 self.assertRaises(InterpKernelException, dbl.toNoInterlace);
4580 self.assertTrue(not dbl.isUniform(10.,1e-15));
4582 self.assertTrue(dbl.isMonotonic(True, .99));
4583 self.assertTrue(dbl.isMonotonic(True, -.99));
4584 self.assertTrue(not dbl.isMonotonic(True, 1.1));
4585 self.assertTrue(not dbl.isMonotonic(True, -1.1));
4587 self.assertTrue(dbl.isMonotonic(False, .99));
4588 self.assertTrue(not dbl.isMonotonic(False, 1.1));
4589 self.assertTrue(not dbl.isMonotonic(False, -1.1));
4591 dc=DataArrayInt.New();
4594 dd=DataArrayDouble.New();
4595 self.assertRaises(InterpKernelException, dd.checkAllocated);
4596 self.assertRaises(InterpKernelException, dd.fillWithValue, 1.);
4597 self.assertRaises(InterpKernelException, dd.iota, 1.);
4598 self.assertTrue(not ((dd.repr().find("No data"))==-1));
4600 dd.alloc(0,1); #Allocated but nbOfElements==0!
4601 self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1));
4602 self.assertTrue(not ((dd.repr().find("Empty Data"))==-1));
4603 dd.fillWithValue(11); #?!...ok
4604 dd.iota(10); #?!...ok
4605 self.assertTrue(dd.isMonotonic(True, 1.)); #nothing is monotonic
4606 self.assertTrue(dd.isMonotonic(False, 1.));
4608 self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4609 self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4611 self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4614 self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4616 info=["infoOfOneComponent"]*2;
4617 self.assertRaises(InterpKernelException, da.setInfoOnComponents, info);
4618 self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]);
4619 db.setInfoOnComponents(info);
4621 self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1);
4622 self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2);
4623 self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0));
4624 self.assertRaises(InterpKernelException, db.getVarOnComponent, -1);
4625 self.assertRaises(InterpKernelException, db.getVarOnComponent, 2);
4626 self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1);
4627 self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2);
4629 self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit ");
4630 self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit[");
4631 self.assertTrue(da.GetVarNameFromInfo("[unit]")=="");
4632 self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname");
4634 self.assertTrue(da.GetUnitFromInfo("varname unit ")=="");
4635 self.assertTrue(da.GetUnitFromInfo("varname]unit[")=="");
4636 self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit");
4637 self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit");
4639 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow");
4640 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4641 self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4643 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow");
4644 da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow");
4646 self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow");
4647 db.checkNbOfElems(7*2,"theMessageInThrow");
4649 self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow");
4650 self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow");
4651 self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow"));
4652 self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow"));
4653 self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow"));
4655 self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1));
4656 self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1));
4657 self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1));
4659 self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1));
4660 self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1));
4661 self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1));
4663 self.assertRaises(InterpKernelException, dbl.selectByTupleId2, 0, 1, -1);
4664 self.assertRaises(InterpKernelException, dbl.substr, -1, 1);
4665 self.assertRaises(InterpKernelException, dbl.substr, 8, 1);
4666 self.assertRaises(InterpKernelException, dbl.substr, 0, 8);
4667 self.assertRaises(InterpKernelException, dbl.meldWith, dd);
4669 self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components
4670 self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da); #da tuple selector DataArrayInt instance not have exactly 2 components
4672 dbl3=DataArrayDouble.New();
4674 dbl3.fillWithValue(11.);
4675 #bad number of components
4676 self.assertRaises(InterpKernelException, dbl3.getMaxValue);
4677 self.assertRaises(InterpKernelException, dd.getMaxValue);
4678 self.assertRaises(InterpKernelException, dbl3.getMinValue);
4679 self.assertRaises(InterpKernelException, dd.getMinValue);
4680 self.assertRaises(InterpKernelException, dbl3.getAverageValue);
4681 self.assertRaises(InterpKernelException, dd.getAverageValue);
4682 self.assertRaises(InterpKernelException, dd.accumulate, 100);
4683 self.assertRaises(InterpKernelException, dbl.fromPolarToCart);
4684 self.assertRaises(InterpKernelException, dbl3.fromCylToCart);
4685 self.assertRaises(InterpKernelException, dbl3.fromSpherToCart);
4686 self.assertRaises(InterpKernelException, dbl3.doublyContractedProduct);
4687 self.assertRaises(InterpKernelException, dbl3.determinant);
4688 self.assertRaises(InterpKernelException, dbl3.eigenValues);
4689 self.assertRaises(InterpKernelException, dbl3.eigenVectors);
4690 self.assertRaises(InterpKernelException, dbl3.inverse);
4691 self.assertRaises(InterpKernelException, dbl3.trace);
4692 self.assertRaises(InterpKernelException, dbl3.deviator);
4694 dbl3.setIJ(5,1,12.);
4695 self.assertTrue(dbl3.getMaxValueInArray()==12.);
4696 self.assertTrue(dbl3.getMinValueInArray()==11.);
4698 db.fillWithValue(100); #bad Ids
4699 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4700 db.fillWithValue(-1); #bad Ids
4701 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4702 db.fillWithValue(6); #bad Ids for dbl3
4703 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4705 dbl3.checkNoNullValues();
4707 self.assertRaises(InterpKernelException, dbl3.checkNoNullValues);
4708 self.assertRaises(InterpKernelException, dbl3.applyInv, 1.); #div by zero
4709 self.assertRaises(InterpKernelException, dbl2.getIdsInRange, 1., 2.);
4711 self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4712 self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4714 a=[dbl2,dbl]; #Nb of components mismatch
4715 self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4717 self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl);
4719 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch
4720 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3
4721 dbl4=DataArrayDouble.New();
4723 dbl5=DataArrayDouble.New();
4725 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch
4727 a[0]=dbl4; #Nb of tuple mismatch
4728 a[1]=dbl5; #Nb of tuple mismatch
4729 self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4730 self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl4, dbl5);
4733 def testDAIGetIdsEqual1(self):
4734 tab1=[5,-2,-4,-2,3,2,-2];
4735 da=DataArrayInt.New();
4736 da.setValues(tab1,7,1);
4737 da2=da.getIdsEqual(-2);
4738 self.assertEqual(3,da2.getNumberOfTuples());
4739 self.assertEqual(1,da2.getNumberOfComponents());
4741 self.assertEqual(expected1,da2.getValues());
4744 def testDAIGetIdsEqualList1(self):
4745 tab1=[5,-2,-4,-2,3,2,-2];
4746 da=DataArrayInt.New();
4747 da.setValues(tab1,7,1);
4748 da2=da.getIdsEqualList([3,-2,0]);
4749 self.assertEqual(4,da2.getNumberOfTuples());
4750 self.assertEqual(1,da2.getNumberOfComponents());
4751 expected1=[1,3,4,6];
4752 self.assertEqual(expected1,da2.getValues());
4755 def testDAFromNoInterlace1(self):
4756 tab1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4757 da=DataArrayInt.New();
4758 da.setValues(tab1,5,3);
4759 da2=da.fromNoInterlace();
4760 expected1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4761 self.assertEqual(5,da2.getNumberOfTuples());
4762 self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4763 self.assertEqual(expected1,da2.getValues());
4764 da3=da.convertToDblArr();
4765 da4=da3.fromNoInterlace();
4766 self.assertEqual(5,da4.getNumberOfTuples());
4767 self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4768 for i in xrange(15):
4769 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4773 def testDAToNoInterlace1(self):
4774 tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4775 da=DataArrayInt.New();
4776 da.setValues(tab1,5,3);
4777 da2=da.toNoInterlace();
4778 expected1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4779 self.assertEqual(5,da2.getNumberOfTuples());
4780 self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4781 self.assertEqual(expected1,da2.getValues());
4782 da3=da.convertToDblArr();
4783 da4=da3.toNoInterlace();
4784 self.assertEqual(5,da4.getNumberOfTuples());
4785 self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4786 for i in xrange(15):
4787 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4791 def testDAIsUniform1(self):
4793 da=DataArrayInt.New();
4794 da.setValues(tab1,5,1);
4795 self.assertTrue(da.isUniform(1));
4797 self.assertTrue(not da.isUniform(1));
4799 self.assertTrue(da.isUniform(1));
4800 da2=da.convertToDblArr();
4801 self.assertTrue(da2.isUniform(1.,1.e-12));
4802 da2.setIJ(1,0,1.+1.e-13);
4803 self.assertTrue(da2.isUniform(1.,1.e-12));
4804 da2.setIJ(1,0,1.+1.e-11);
4805 self.assertTrue(not da2.isUniform(1.,1.e-12));
4808 def testDADFromPolarToCart1(self):
4809 tab1=[2.,0.2,2.5,0.7]
4810 da=DataArrayDouble.New();
4811 da.setValues(tab1,2,2);
4812 da2=da.fromPolarToCart();
4813 expected1=[1.9601331556824833,0.39733866159012243, 1.9121054682112213,1.6105442180942275]
4815 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4819 def testDADFromCylToCart1(self):
4820 tab1=[2.,0.2,4.,2.5,0.7,9.]
4821 da=DataArrayDouble.New();
4822 da.setValues(tab1,2,3);
4823 da2=da.fromCylToCart();
4824 expected1=[1.9601331556824833,0.39733866159012243,4., 1.9121054682112213,1.6105442180942275,9.]
4826 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4830 def testDADFromSpherToCart1(self):
4831 tab1=[2.,0.2,0.3,2.5,0.7,0.8]
4832 da=DataArrayDouble.New();
4833 da.setValues(tab1,2,3);
4834 da2=da.fromSpherToCart();
4835 expected1=[0.37959212195737485,0.11742160338765303,1.9601331556824833, 1.1220769624465328,1.1553337045129035,1.9121054682112213]
4837 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4841 def testUnPolyze1(self):
4842 elts=[0,1,2,3,4,5,6,7]
4844 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4845 mesh.convertToPolyTypes(eltsV);
4847 mesh2=MEDCouplingDataForTest.build3DTargetMesh_1();
4848 mesh.checkCoherency();
4849 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4850 mesh.convertToPolyTypes(eltsV);
4851 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4852 mesh.getNodalConnectivity().setIJ(0,6,10);
4853 mesh.getNodalConnectivity().setIJ(0,7,9);
4854 mesh.getNodalConnectivity().setIJ(0,8,12);
4855 mesh.getNodalConnectivity().setIJ(0,9,13);
4857 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4858 mesh.convertToPolyTypes(eltsV);
4859 mesh.getNodalConnectivity().setIJ(0,6,12);
4860 mesh.getNodalConnectivity().setIJ(0,7,13);
4861 mesh.getNodalConnectivity().setIJ(0,8,10);
4862 mesh.getNodalConnectivity().setIJ(0,9,9);
4864 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4865 mesh.convertToPolyTypes(eltsV);
4866 mesh.getNodalConnectivity().setIJ(0,6,12);
4867 mesh.getNodalConnectivity().setIJ(0,7,10);
4868 mesh.getNodalConnectivity().setIJ(0,8,13);
4869 mesh.getNodalConnectivity().setIJ(0,9,9);
4871 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4873 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4874 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
4876 mesh.convertToPolyTypes(eltsV);
4877 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4879 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4882 def testConvertDegeneratedCells1(self):
4883 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4884 conn=[0,1,3,3,9,10,12,12, 0,1,3,4,9,9,9,9, 1,1,1,1,10,12,9,10, 10,11,12,9,1,1,1,1]
4885 mesh.allocateCells(4);
4886 mesh.insertNextCell(NORM_HEXA8,8,conn[0:8])
4887 mesh.insertNextCell(NORM_HEXA8,8,conn[8:16])
4888 mesh.insertNextCell(NORM_HEXA8,8,conn[16:24])
4889 mesh.insertNextCell(NORM_HEXA8,8,conn[24:32])
4890 mesh.finishInsertingCells();
4891 mesh.checkCoherency();
4892 self.assertEqual(4,mesh.getNumberOfCells());
4893 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(0));
4894 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(1));
4895 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(2));
4896 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(3));
4897 f1=mesh.getMeasureField(True);
4898 mesh.convertDegeneratedCells();
4899 mesh.checkCoherency();
4900 f2=mesh.getMeasureField(True);
4901 self.assertEqual(4,mesh.getNumberOfCells());
4902 self.assertEqual(NORM_PENTA6,mesh.getTypeOfCell(0));
4903 self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(1));
4904 self.assertEqual(NORM_TETRA4,mesh.getTypeOfCell(2));
4905 self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(3));
4907 self.assertAlmostEqual(f1.getArray().getIJ(0,i),f2.getArray().getIJ(0,i),5);
4911 def testGetNodeIdsNearPoints1(self):
4912 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4913 coords=mesh.getCoords();
4914 tmp=DataArrayDouble.New();
4915 vals=[0.2,0.2,0.1,0.2,0.2,0.2]
4916 tmp.setValues(vals,3,2);
4917 tmp2=DataArrayDouble.Aggregate(coords,tmp);
4918 mesh.setCoords(tmp2);
4919 pts=[0.2,0.2,0.1,0.3,-0.3,0.7]
4920 c=mesh.getNodeIdsNearPoint(pts[:2],1e-7);
4921 self.assertEqual([4,9,11],c.getValues());
4922 c,cI=mesh.getNodeIdsNearPoints(pts,3,1e-7);
4923 self.assertEqual([0,3,3,4],cI.getValues());
4924 self.assertEqual([4,9,11,6],c.getValues());
4925 c,cI=mesh.getNodeIdsNearPoints(pts,1e-7);
4926 self.assertEqual([0,3,3,4],cI.getValues());
4927 self.assertEqual([4,9,11,6],c.getValues());
4928 c,cI=mesh.getNodeIdsNearPoints(DataArrayDouble.New(pts,3,2),1e-7);
4929 self.assertEqual([0,3,3,4],cI.getValues());
4930 self.assertEqual([4,9,11,6],c.getValues());
4931 self.assertRaises(InterpKernelException,mesh.getNodeIdsNearPoints,DataArrayDouble.New(pts,2,3),1e-7);
4934 def testFieldCopyTinyAttrFrom1(self):
4935 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4937 f1.setTimeTolerance(1.e-5);
4938 f1.setDescription("f1Desc");
4939 f1.setTime(1.23,4,5);
4940 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4942 f2.setDescription("f2Desc");
4943 f2.setTime(6.78,9,10);
4944 f2.setTimeTolerance(4.556e-12);
4946 f1.copyTinyAttrFrom(f2);
4947 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4948 t,dt,it=f1.getTime()
4949 self.assertAlmostEqual(6.78,t,12);
4950 self.assertEqual(9,dt);
4951 self.assertEqual(10,it);
4952 self.assertTrue(f1.getName()=="f1");#name unchanged
4953 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4955 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4957 f1.setTimeTolerance(1.e-5);
4958 f1.setDescription("f1Desc");
4959 f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4961 f2.setDescription("f2Desc");
4962 f2.setTimeTolerance(4.556e-12);
4964 f1.copyTinyAttrFrom(f2);
4965 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4966 self.assertTrue(f1.getName()=="f1");#name unchanged
4967 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4969 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
4971 f1.setTimeTolerance(1.e-5);
4972 f1.setDescription("f1Desc");
4973 f1.setTime(1.23,4,5);
4974 f1.setEndTime(5.43,2,1);
4975 f2=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
4977 f2.setDescription("f2Desc");
4978 f2.setTimeTolerance(4.556e-12);
4979 f2.setTime(6.78,9,10);
4980 f2.setEndTime(10.98,7,6);
4982 f1.copyTinyAttrFrom(f2);
4983 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4984 self.assertTrue(f1.getName()=="f1");#name unchanged
4985 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4986 t,dt,it=f1.getTime()
4987 self.assertAlmostEqual(6.78,t,12);
4988 self.assertEqual(9,dt);
4989 self.assertEqual(10,it);
4990 t,dt,it=f1.getEndTime()
4991 self.assertAlmostEqual(10.98,t,12);
4992 self.assertEqual(7,dt);
4993 self.assertEqual(6,it);
4995 f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
4997 f1.setTimeTolerance(1.e-5);
4998 f1.setDescription("f1Desc");
4999 f1.setTime(1.23,4,5);
5000 f1.setEndTime(5.43,2,1);
5001 f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
5003 f2.setDescription("f2Desc");
5004 f2.setTimeTolerance(4.556e-12);
5005 f2.setTime(6.78,9,10);
5006 f2.setEndTime(10.98,7,6);
5008 f1.copyTinyAttrFrom(f2);
5009 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5010 self.assertTrue(f1.getName()=="f1");#name unchanged
5011 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5012 t,dt,it=f1.getTime()
5013 self.assertAlmostEqual(6.78,t,12);
5014 self.assertEqual(9,dt);
5015 self.assertEqual(10,it);
5016 t,dt,it=f1.getEndTime()
5017 self.assertAlmostEqual(10.98,t,12);
5018 self.assertEqual(7,dt);
5019 self.assertEqual(6,it);
5022 def testExtrudedMesh5(self):
5024 a=DataArrayDouble.New();
5025 a.setValues(coo1,4,1);
5026 b=MEDCouplingCMesh.New();
5028 c=b.buildUnstructured();
5029 self.assertEqual(1,c.getSpaceDimension());
5030 c.changeSpaceDimension(2);
5032 d=DataArrayDouble.New();
5035 e=MEDCouplingCMesh.New();
5037 f=e.buildUnstructured();
5038 g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5039 self.assertRaises(InterpKernelException,f.getCoords().applyFunc,2,"3.5*IVec+x/6*3.14159265359*KVec"); # KVec refers to component #2 and there is only 2 components !
5040 h=g.fromPolarToCart();
5042 i=c.buildExtrudedMesh(f,1);
5043 self.assertEqual(52,i.getNumberOfNodes());
5044 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5045 self.assertTrue(tmp2);
5046 self.assertEqual(37,tmp3);
5047 i.convertDegeneratedCells();
5049 self.assertEqual(36,i.getNumberOfCells());
5050 self.assertEqual(37,i.getNumberOfNodes());
5051 self.assertEqual(12,i.getNumberOfCellsWithType(NORM_TRI3));
5052 self.assertEqual(24,i.getNumberOfCellsWithType(NORM_QUAD4));
5053 expected1=[0.25,0.75,2.0625]
5054 j=i.getMeasureField(True);
5055 for ii in xrange(12):
5057 self.assertAlmostEqual(expected1[k],j.getIJ(0,ii*3+k),10);
5060 expected2=[0.62200846792814113, 0.16666666666681595, 1.4513530918323276, 0.38888888888923495, 2.6293994326053212, 0.7045454545460802, 0.45534180126145435, 0.45534180126150181, 1.0624642029433926, 1.0624642029435025, 1.9248539780597826, 1.9248539780599816, 0.16666666666661334, 0.62200846792815856, 0.38888888888876294, 1.4513530918323678, 0.70454545454522521, 2.629399432605394, -0.16666666666674007, 0.62200846792812436, -0.38888888888906142, 1.4513530918322881, -0.70454545454576778, 2.6293994326052488, -0.45534180126154766, 0.45534180126140844, -1.0624642029436118, 1.0624642029432834, -1.9248539780601803, 1.9248539780595841, -0.62200846792817499, 0.1666666666665495, -1.451353091832408, 0.388888888888613, -2.6293994326054668, 0.70454545454495332, -0.62200846792810593, -0.16666666666680507, -1.451353091832247, -0.38888888888921297, -2.6293994326051746, -0.70454545454604123, -0.45534180126135926, -0.45534180126159562, -1.0624642029431723, -1.0624642029437235, -1.9248539780593836, -1.9248539780603811, -0.1666666666664828, -0.62200846792819242, -0.38888888888846079, -1.4513530918324489, -0.70454545454467987, -2.6293994326055397, 0.16666666666687083, -0.62200846792808862, 0.38888888888936374, -1.4513530918322073, 0.70454545454631357, -2.6293994326051022, 0.45534180126164348, -0.45534180126131207, 1.0624642029438327, -1.0624642029430627, 1.9248539780605791, -1.9248539780591853, 0.62200846792821063, -0.16666666666641802, 1.4513530918324888, -0.38888888888831086, 2.6293994326056125, -0.70454545454440853]
5061 m=i.getBarycenterAndOwner();
5062 for i in xrange(72):
5063 self.assertAlmostEqual(expected2[i],m.getIJ(0,i),10);
5068 def testExtrudedMesh6(self):
5070 a=DataArrayDouble.New();
5071 a.setValues(coo1,4,1);
5072 b=MEDCouplingCMesh.New();
5074 c=b.buildUnstructured();
5075 self.assertEqual(1,c.getSpaceDimension());
5076 c.changeSpaceDimension(2);
5078 d=DataArrayDouble.New();
5081 e=MEDCouplingCMesh.New();
5083 f=e.buildUnstructured();
5084 d2=f.getCoords().applyFunc("x*x/2");
5086 f.changeSpaceDimension(2);
5089 f.rotate(center,None,pi/3);
5090 g=c.buildExtrudedMesh(f,0);
5092 expected1=[ 0.4330127018922193, 0.4330127018922193, 0.649519052838329, 1.2990381056766578, 1.299038105676658, 1.948557158514987, 2.1650635094610955, 2.1650635094610964, 3.2475952641916446, 3.031088913245533, 3.0310889132455352, 4.546633369868303 ]
5093 f1=g.getMeasureField(True);
5094 for i in xrange(12):
5095 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),12);
5097 expected2=[0.625, 0.21650635094610962, 1.625, 0.21650635094610959, 2.8750000000000004, 0.21650635094610965, 1.1250000000000002, 1.0825317547305482, 2.125, 1.0825317547305482, 3.3750000000000004, 1.0825317547305484, 2.125, 2.8145825622994254, 3.125, 2.8145825622994254, 4.375, 2.8145825622994254, 3.6250000000000009, 5.4126587736527414, 4.625, 5.4126587736527414, 5.875, 5.4126587736527414]
5098 f2=g.getBarycenterAndOwner();
5099 for i in xrange(24):
5100 self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),12);
5104 def testExtrudedMesh7(self):
5106 a=DataArrayDouble.New();
5107 a.setValues(coo1,4,1);
5108 b=MEDCouplingCMesh.New();
5110 c=b.buildUnstructured();
5111 self.assertEqual(1,c.getSpaceDimension());
5112 c.changeSpaceDimension(2);
5114 d=DataArrayDouble.New();
5117 e=MEDCouplingCMesh.New();
5119 f=e.buildUnstructured();
5120 g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5121 h=g.fromPolarToCart();
5123 i=c.buildExtrudedMesh(f,1);
5124 self.assertEqual(52,i.getNumberOfNodes());
5125 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5126 self.assertTrue(tmp2);
5127 self.assertEqual(37,tmp3);
5128 i.convertDegeneratedCells();
5131 g2=h.applyFunc(3,"13.5/3.5*x*IVec+0*JVec+13.5/3.5*y*KVec");
5133 i.changeSpaceDimension(3);
5134 i3=i.buildExtrudedMesh(f,1);
5135 f2=i3.getMeasureField(True);
5136 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5137 self.assertTrue(tmp2);
5138 self.assertEqual(444,tmp3);
5139 expected1=[1.327751058489274, 4.2942574094314701, 13.024068164857139, 1.3069177251569044, 4.1484240761012954, 12.297505664866796, 1.270833333332571, 3.8958333333309674, 11.039062499993179, 1.2291666666659207, 3.6041666666644425, 9.585937499993932, 1.1930822748415895, 3.3515759238941376, 8.3274943351204556, 1.1722489415082769, 3.2057425905609289, 7.6009318351210622, 1.1722489415082862, 3.2057425905609884, 7.6009318351213713, 1.1930822748416161, 3.3515759238943001, 8.3274943351212727, 1.2291666666659564, 3.6041666666646734, 9.5859374999950777, 1.2708333333326081, 3.8958333333311868, 11.039062499994293, 1.3069177251569224, 4.1484240761014384, 12.297505664867627, 1.3277510584902354, 4.2942574094346071, 13.024068164866796]
5140 for ii in xrange(12):
5141 for jj in xrange(36):
5142 self.assertAlmostEqual(expected1[jj],f2.getIJ(0,ii*36+jj),9);
5147 def testSimplexize1(self):
5148 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5149 m.convertToPolyTypes([3]);
5151 self.assertEqual(7,da.getNumberOfTuples());
5152 self.assertEqual(1,da.getNumberOfComponents());
5153 expected2=[0,0,1,2,3,4,4]
5155 self.assertEqual(expected2[i],da.getIJ(i,0));
5158 self.assertEqual(7,m.getNumberOfCells());
5159 self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5160 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5161 self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5162 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5163 self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5164 self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5165 self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5166 expected1=[0.125,0.125,0.125,0.125,0.25,0.125,0.125]
5167 f=m.getMeasureField(False);
5169 self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5171 types=m.getAllTypes();
5172 self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5174 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5175 m.convertToPolyTypes([3]);
5177 self.assertEqual(7,da.getNumberOfTuples());
5178 self.assertEqual(1,da.getNumberOfComponents());
5180 self.assertEqual(expected2[i],da.getIJ(i,0));
5183 types=m.getAllTypes();
5184 self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5185 self.assertEqual(7,m.getNumberOfCells());
5186 self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5187 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5188 self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5189 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5190 self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5191 self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5192 self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5193 f=m.getMeasureField(False);
5195 self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5199 def testSimplexize2(self):
5200 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5201 m.convertToPolyTypes([3]);
5202 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5204 arr=DataArrayDouble.New();
5205 arr1=[10.,110.,20.,120.,30.,130.,40.,140.,50.,150.]
5206 arr.setValues(arr1,5,2);
5209 f1.checkCoherency();
5210 self.assertTrue(f1.simplexize(0));
5211 f1.checkCoherency();
5212 expected1=[10.,110.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.,50.,150.]
5213 for i in xrange(14):
5214 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5216 self.assertTrue(not f1.simplexize(0));
5217 for i in xrange(14):
5218 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5223 def testDAMeld1(self):
5224 da1=DataArrayDouble.New();
5226 da2=DataArrayDouble.New();
5229 da1.fillWithValue(7.);
5231 da3=da2.applyFunc(3,"10*x*IVec+100*x*JVec+1000*x*KVec");
5233 da1.setInfoOnComponent(0,"c0da1");
5234 da1.setInfoOnComponent(1,"c1da1");
5235 da3.setInfoOnComponent(0,"c0da3");
5236 da3.setInfoOnComponent(1,"c1da3");
5237 da3.setInfoOnComponent(2,"c2da3");
5241 self.assertEqual(5,da1.getNumberOfComponents());
5242 self.assertEqual(7,da1.getNumberOfTuples());
5243 self.assertTrue(da1.getInfoOnComponent(0)=="c0da1");
5244 self.assertTrue(da1.getInfoOnComponent(1)=="c1da1");
5245 self.assertTrue(da1.getInfoOnComponent(2)=="c0da3");
5246 self.assertTrue(da1.getInfoOnComponent(3)=="c1da3");
5247 self.assertTrue(da1.getInfoOnComponent(4)=="c2da3");
5249 expected1=[7.,7.,0.,0.,0., 7.,7.,10.,100.,1000., 7.,7.,20.,200.,2000., 7.,7.,30.,300.,3000., 7.,7.,40.,400.,4000.,7.,7.,50.,500.,5000.,7.,7.,60.,600.,6000.]
5250 for i in xrange(35):
5251 self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),10);
5254 dai1=da1C.convertToIntArr();
5255 dai3=da3.convertToIntArr();
5256 dai1.meldWith(dai3);
5257 self.assertEqual(5,dai1.getNumberOfComponents());
5258 self.assertEqual(7,dai1.getNumberOfTuples());
5259 self.assertTrue(dai1.getInfoOnComponent(0)=="c0da1");
5260 self.assertTrue(dai1.getInfoOnComponent(1)=="c1da1");
5261 self.assertTrue(dai1.getInfoOnComponent(2)=="c0da3");
5262 self.assertTrue(dai1.getInfoOnComponent(3)=="c1da3");
5263 self.assertTrue(dai1.getInfoOnComponent(4)=="c2da3");
5264 for i in xrange(35):
5265 self.assertEqual(int(expected1[i]),dai1.getIJ(0,i));
5267 # test of static method DataArrayDouble::meld
5268 da4=DataArrayDouble.Meld(da1C,da3);
5269 tmp=DataArrayDouble.Meld([da1C,da3]);
5270 self.assertTrue(da4.isEqual(tmp,1e-10))
5271 self.assertEqual(5,da4.getNumberOfComponents());
5272 self.assertEqual(7,da4.getNumberOfTuples());
5273 self.assertTrue(da4.getInfoOnComponent(0)=="c0da1");
5274 self.assertTrue(da4.getInfoOnComponent(1)=="c1da1");
5275 self.assertTrue(da4.getInfoOnComponent(2)=="c0da3");
5276 self.assertTrue(da4.getInfoOnComponent(3)=="c1da3");
5277 self.assertTrue(da4.getInfoOnComponent(4)=="c2da3");
5278 for i in xrange(35):
5279 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),10);
5281 # test of static method DataArrayInt::meld
5282 dai1=da1C.convertToIntArr();
5283 dai4=DataArrayInt.Meld(dai1,dai3);
5284 tmp=DataArrayInt.Meld([dai1,dai3]);
5285 self.assertTrue(dai4.isEqual(tmp))
5286 self.assertEqual(5,dai4.getNumberOfComponents());
5287 self.assertEqual(7,dai4.getNumberOfTuples());
5288 self.assertTrue(dai4.getInfoOnComponent(0)=="c0da1");
5289 self.assertTrue(dai4.getInfoOnComponent(1)=="c1da1");
5290 self.assertTrue(dai4.getInfoOnComponent(2)=="c0da3");
5291 self.assertTrue(dai4.getInfoOnComponent(3)=="c1da3");
5292 self.assertTrue(dai4.getInfoOnComponent(4)=="c2da3");
5293 for i in xrange(35):
5294 self.assertEqual(int(expected1[i]),dai4.getIJ(0,i));
5298 def testFieldMeld1(self):
5299 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5300 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5302 da1=DataArrayDouble.New();
5303 arr1=[12.,23.,34.,45.,56.]
5304 da1.setValues(arr1,5,1);
5305 da1.setInfoOnComponent(0,"aaa");
5307 f1.setTime(3.4,2,1);
5308 f1.checkCoherency();
5311 f2.setMesh(f1.getMesh());
5312 f2.checkCoherency();
5313 f2.changeNbOfComponents(2,5.);
5315 f2.getArray().setInfoOnComponent(0,"bbb");
5316 f2.getArray().setInfoOnComponent(1,"ccc");
5317 f2.checkCoherency();
5319 f3=MEDCouplingFieldDouble.MeldFields(f2,f1);
5320 f3.checkCoherency();
5321 self.assertEqual(5,f3.getNumberOfTuples());
5322 self.assertEqual(3,f3.getNumberOfComponents());
5323 self.assertTrue(f3.getArray().getInfoOnComponent(0)=="bbb");
5324 self.assertTrue(f3.getArray().getInfoOnComponent(1)=="ccc");
5325 self.assertTrue(f3.getArray().getInfoOnComponent(2)=="aaa");
5326 expected1=[5.,5.,12.,5.,5.,23.,5.,5.,34.,5.,5.,45.,5.,5.,56.]
5327 for i in xrange(15):
5328 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),12);
5330 time,dt,it=f3.getTime();
5331 self.assertAlmostEqual(3.4,time,14);
5332 self.assertEqual(2,dt);
5333 self.assertEqual(1,it);
5335 f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
5336 f5=f1.buildNewTimeReprFromThis(NO_TIME,False);
5337 f6=MEDCouplingFieldDouble.MeldFields(f4,f5);
5338 f6.checkCoherency();
5339 self.assertEqual(5,f6.getNumberOfTuples());
5340 self.assertEqual(3,f6.getNumberOfComponents());
5341 self.assertTrue(f6.getArray().getInfoOnComponent(0)=="bbb");
5342 self.assertTrue(f6.getArray().getInfoOnComponent(1)=="ccc");
5343 self.assertTrue(f6.getArray().getInfoOnComponent(2)=="aaa");
5344 for i in xrange(15):
5345 self.assertAlmostEqual(expected1[i],f6.getIJ(0,i),12);
5350 def testMergeNodes2(self):
5351 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5352 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
5356 m3=MEDCouplingUMesh.MergeUMeshes([m1,m2]);
5357 da,b,newNbOfNodes=m3.mergeNodes2(0.01);
5358 self.assertEqual(9,m3.getNumberOfNodes());
5359 expected1=[-0.299,-0.3, 0.201,-0.3, 0.701,-0.3, -0.299,0.2, 0.201,0.2, 0.701,0.2, -0.299,0.7, 0.201,0.7, 0.701,0.7]
5360 for i in xrange(18):
5361 self.assertAlmostEqual(expected1[i],m3.getCoords().getIJ(0,i),13);
5366 def testMergeField2(self):
5367 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5368 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5370 arr=DataArrayDouble.New();
5372 arr.fillWithValue(2.);
5374 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5376 arr=DataArrayDouble.New();
5378 arr.fillWithValue(5.);
5380 f3=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5382 arr=DataArrayDouble.New();
5384 arr.fillWithValue(7.);
5387 f4=MEDCouplingFieldDouble.MergeFields([f1,f2,f3]);
5388 self.assertEqual(15,f4.getMesh().getNumberOfCells());
5389 expected1=[2.,2.,2.,2.,2.,2.,2.,2.,2.,2., 5.,5.,5.,5.,5.,5.,5.,5.,5.,5., 7.,7.,7.,7.,7.,7.,7.,7.,7.,7.]
5390 for i in xrange(30):
5391 self.assertAlmostEqual(expected1[i],f4.getIJ(0,i),13);
5396 def testDAIBuildComplement1(self):
5397 a=DataArrayInt.New();
5399 a.setValues(tab,4,1);
5400 b=a.buildComplement(12);
5401 self.assertEqual(8,b.getNumberOfTuples());
5402 self.assertEqual(1,b.getNumberOfComponents());
5403 expected1=[0,2,4,5,6,9,10,11]
5405 self.assertEqual(expected1[i],b.getIJ(0,i));
5409 def testDAIBuildUnion1(self):
5410 a=DataArrayInt.New();
5412 a.setValues(tab1,4,1);
5413 c=DataArrayInt.New();
5415 c.setValues(tab2,5,1);
5417 self.assertEqual(7,b.getNumberOfTuples());
5418 self.assertEqual(1,b.getNumberOfComponents());
5419 expected1=[0,1,3,5,7,8,18]
5421 self.assertEqual(expected1[i],b.getIJ(0,i));
5423 b=DataArrayInt.BuildUnion([a,c]);
5424 self.assertEqual(7,b.getNumberOfTuples());
5425 self.assertEqual(1,b.getNumberOfComponents());
5426 expected1=[0,1,3,5,7,8,18]
5428 self.assertEqual(expected1[i],b.getIJ(0,i));
5432 def testDAIBuildIntersection1(self):
5433 a=DataArrayInt.New();
5435 a.setValues(tab1,4,1);
5436 c=DataArrayInt.New();
5438 c.setValues(tab2,5,1);
5439 b=a.buildIntersection(c);
5440 self.assertEqual(2,b.getNumberOfTuples());
5441 self.assertEqual(1,b.getNumberOfComponents());
5444 self.assertEqual(expected1[i],b.getIJ(0,i));
5446 b=DataArrayInt.BuildIntersection([a,c]);
5447 self.assertEqual(2,b.getNumberOfTuples());
5448 self.assertEqual(1,b.getNumberOfComponents());
5451 self.assertEqual(expected1[i],b.getIJ(0,i));
5455 def testDAIDeltaShiftIndex1(self):
5456 a=DataArrayInt.New();
5457 tab=[1,3,6,7,7,9,15]
5458 a.setValues(tab,7,1);
5459 b=a.deltaShiftIndex();
5460 self.assertEqual(6,b.getNumberOfTuples());
5461 self.assertEqual(1,b.getNumberOfComponents());
5462 expected1=[2,3,1,0,2,6]
5464 self.assertEqual(expected1[i],b.getIJ(0,i));
5468 def testDaDoubleSelectByTupleIdSafe1(self):
5469 a=DataArrayDouble.New();
5470 arr1=[1.1,11.1,2.1,12.1,3.1,13.1,4.1,14.1,5.1,15.1,6.1,16.1,7.1,17.1]
5471 a.setValues(arr1,7,2);
5472 a.setInfoOnComponent(0,"toto");
5473 a.setInfoOnComponent(1,"tata");
5476 b=a.selectByTupleIdSafe(arr2);
5477 self.assertEqual(5,b.getNumberOfTuples());
5478 self.assertEqual(2,b.getNumberOfComponents());
5479 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5480 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5481 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
5482 for i in xrange(10):
5483 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5486 self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr4);
5488 self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr5);
5490 c=DataArrayInt.New();
5491 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5492 c.setValues(arr3,7,2);
5493 c.setInfoOnComponent(0,"toto");
5494 c.setInfoOnComponent(1,"tata");
5495 d=c.selectByTupleIdSafe(arr2);
5496 self.assertEqual(5,d.getNumberOfTuples());
5497 self.assertEqual(2,d.getNumberOfComponents());
5498 self.assertTrue(d.getInfoOnComponent(0)=="toto");
5499 self.assertTrue(d.getInfoOnComponent(1)=="tata");
5500 expected2=[5,15,3,13,1,11,7,17,6,16]
5501 for i in xrange(10):
5502 self.assertEqual(expected2[i],d.getIJ(0,i));
5504 self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr4);
5505 self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr5);
5508 def testAreCellsIncludedIn1(self):
5509 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5511 m2=m.buildPartOfMySelf(pt,True);
5512 ret,tmp=m.areCellsIncludedIn(m2,0)
5513 self.assertTrue(ret);
5514 self.assertEqual(2,tmp.getNumberOfTuples());
5515 self.assertEqual(1,tmp.getNumberOfComponents());
5516 self.assertEqual(pt[0],tmp.getIJ(0,0));
5517 self.assertEqual(pt[1],tmp.getIJ(0,1));
5518 ret,tmp=m2.areCellsIncludedIn(m,0)
5519 self.assertTrue(not ret);
5520 m3=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m,m2)
5521 c,cI=m3.findCommonCells(2,m.getNumberOfCells())
5522 self.assertTrue(c.isEqual(DataArrayInt([1,5,3,6])))
5523 self.assertTrue(cI.isEqual(DataArrayInt([0,2,4])))
5526 def testSwigErrorProtection1(self):
5527 m=MEDCouplingDataForTest.build3DTargetMesh_1();
5528 m.rotate([0.,0.,0.],[0.3,0.6,1.2],0.37)
5529 m.rotate([0.,0.,0.],[0.3,6,1.2],0.37)
5530 self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],(0.3,6,"1.2"),0.37)
5531 self.assertRaises(InterpKernelException,m.rotate,[0.,"0.",0.],[0.3,0.6,1.2],0.37)
5532 self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],[0.3,'0.6',1.2],0.37)
5533 m2=m.buildPartOfMySelf([2,5],True)
5534 m3=m.buildPartOfMySelf((2,5),True)
5535 self.assertTrue(m2.isEqual(m3,1e-12))
5536 self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[2,5.],True)
5537 da1=m.getCoords().keepSelectedComponents([1])
5538 da2=m.getCoords().keepSelectedComponents((1,))
5539 self.assertTrue(da1.isEqual(da2,1e-12))
5540 self.assertRaises(InterpKernelException,m.getCoords().keepSelectedComponents,["1"])
5543 def testDAIBuildSubstraction1(self):
5544 a=DataArrayInt.New()
5547 b=DataArrayInt.New()
5550 self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
5553 def testBuildOrthogonalField2(self):
5554 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5555 d1=DataArrayInt.New();
5556 d2=DataArrayInt.New();
5557 d3=DataArrayInt.New();
5558 d4=DataArrayInt.New();
5559 m1=m.buildDescendingConnectivity(d1,d2,d3,d4);
5561 f1=m1.buildOrthogonalField();
5563 self.assertEqual(2,da1.getNumberOfComponents());
5564 self.assertEqual(13,da1.getNumberOfTuples());
5566 expected1=[-1.,0.,0.,1.,1.,0.,0.,-1.,0.707106781186548,0.707106781186548,0.,-1.,0.,1.,1.,0.,0.,1.,1.,0.,-1.,0.,0.,1.,1.,0.];
5567 for i in xrange(26):
5568 self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),14);
5572 def testSwigErrorProtection2(self):
5573 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5575 c=m.getNodalConnectivity()
5576 ci=m.getNodalConnectivityIndex()
5578 self.assertEqual(2,coo.getNumberOfComponents());
5579 self.assertEqual(6,ci.getNumberOfTuples());
5580 self.assertEqual(23,c.getNumberOfTuples());
5581 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5582 f=m.getMeasureField(True)
5585 self.assertEqual(1,c.getNumberOfComponents());
5586 m=MEDCouplingCMesh.New()
5587 x=DataArrayDouble.New()
5588 x.setValues([1.,2.,4.],3,1)
5593 self.assertEqual(3,xx.getNumberOfTuples());
5595 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5596 f=m.getMeasureField(True)
5600 self.assertEqual(5,m2.getNumberOfCells());
5603 def testUMInsertNextCell1(self):
5604 targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ]
5605 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
5606 targetMesh=MEDCouplingUMesh.New();
5607 targetMesh.allocateCells(5);
5608 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_QUAD4,4,targetConn[0:4])
5609 targetMesh.setMeshDimension(2);
5610 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
5611 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_TETRA4,4,targetConn[0:4])
5612 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_SEG2,2,targetConn[0:2])
5613 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_POINT1,1,targetConn[0:1])
5614 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[4:7])
5615 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[7:10])
5616 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
5617 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
5618 targetMesh.finishInsertingCells();
5619 myCoords=DataArrayDouble.New();
5620 myCoords.setValues(targetCoords,9,2);
5621 targetMesh.setCoords(myCoords);
5622 targetMesh.checkCoherency();
5625 def testFieldOperatorDivDiffComp1(self):
5626 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5627 m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
5629 f1=m1.buildOrthogonalField();
5630 arr1=[2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.]
5631 arr=DataArrayDouble.New();
5632 arr.setValues(arr1,13,1);
5633 f2=MEDCouplingFieldDouble.New(ON_CELLS);
5636 f2.checkCoherency();
5639 self.assertRaises(InterpKernelException,f2.__div__,f1)
5640 f3.checkCoherency();
5642 #self.assertRaises(InterpKernelException,f2.__idiv__,f1) # mem leaks
5643 self.assertTrue(f1.isEqual(f3,1e-10,1e-10));
5644 expected1=[-0.5, 0.0, 0.0, 0.33333333333333331, 0.25, 0.0, 0.0, -0.20000000000000001, 0.117851130197758, 0.117851130197758, 0.0, -0.14285714285714285, 0.0, 0.125, 0.1111111111111111, 0.0, 0.0, 0.10000000000000001, 0.090909090909090912, 0.0, -0.083333333333333329, 0.0, 0.0, 0.076923076923076927, 0.071428571428571425, 0.0]
5645 for i in xrange(26):
5646 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),10);
5650 def testDARearrange1(self):
5651 da1=DataArrayInt.New();
5655 self.assertEqual(12,da1.getNbOfElems());
5656 self.assertEqual(1,da1.getNumberOfComponents());
5657 self.assertEqual(12,da1.getNumberOfTuples());
5659 self.assertEqual(12,da1.getNbOfElems());
5660 self.assertEqual(4,da1.getNumberOfComponents());
5661 self.assertEqual(3,da1.getNumberOfTuples());
5662 for i in xrange(12):
5663 self.assertEqual(i,da1.getIJ(0,i));
5666 self.assertEqual(12,da1.getNbOfElems());
5667 self.assertEqual(6,da1.getNumberOfComponents());
5668 self.assertEqual(2,da1.getNumberOfTuples());
5669 for i in xrange(12):
5670 self.assertEqual(i,da1.getIJ(0,i));
5672 self.assertRaises(InterpKernelException,da1.rearrange,7);
5675 self.assertEqual(12,da1.getNbOfElems());
5676 self.assertEqual(12,da1.getNumberOfComponents());
5677 self.assertEqual(1,da1.getNumberOfTuples());
5678 for i in xrange(12):
5679 self.assertEqual(i,da1.getIJ(0,i));
5682 self.assertEqual(12,da1.getNbOfElems());
5683 self.assertEqual(3,da1.getNumberOfComponents());
5684 self.assertEqual(4,da1.getNumberOfTuples());
5685 for i in xrange(12):
5686 self.assertEqual(i,da1.getIJ(0,i));
5688 da2=da1.convertToDblArr();
5689 st=da2.getHiddenCppPointer()
5691 self.assertEqual(12,da2.getNbOfElems());
5692 self.assertEqual(3,da2.getNumberOfComponents());
5693 self.assertEqual(4,da2.getNumberOfTuples());
5695 self.assertEqual(12,da2.getNbOfElems());
5696 self.assertEqual(4,da2.getNumberOfComponents());
5697 self.assertEqual(3,da2.getNumberOfTuples());
5698 for i in xrange(12):
5699 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5702 self.assertEqual(12,da2.getNbOfElems());
5703 self.assertEqual(6,da2.getNumberOfComponents());
5704 self.assertEqual(2,da2.getNumberOfTuples());
5705 for i in xrange(12):
5706 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5708 self.assertRaises(InterpKernelException,da2.rearrange,7);
5711 self.assertEqual(st,da2.getHiddenCppPointer())
5712 self.assertEqual(12,da2.getNbOfElems());
5713 self.assertEqual(1,da2.getNumberOfComponents());
5714 self.assertEqual(12,da2.getNumberOfTuples());
5715 for i in xrange(12):
5716 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5719 self.assertEqual(12,da2.getNbOfElems());
5720 self.assertEqual(3,da2.getNumberOfComponents());
5721 self.assertEqual(4,da2.getNumberOfTuples());
5722 for i in xrange(12):
5723 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5726 def testDARearrange2(self):
5727 da1=DataArrayInt.New();
5728 arr=[1,2,3,2,2,3,5,1,5,5,2,2]
5729 da1.setValues(arr,4,3);
5730 s=da1.getDifferentValues();
5732 self.assertEqual(expected1,s);
5735 def testSwigErrorProtection3(self):
5736 da=DataArrayInt.New()
5737 da.setValues([1,2,3,4,0,0,0,0,0,0,0,0],4,3)
5738 self.assertEqual([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0],da.getValues())
5739 self.assertEqual(3,da.getNumberOfComponents());
5740 self.assertEqual(4,da.getNumberOfTuples());
5741 da=DataArrayInt.New()
5742 da.setValues(((1,2,3),(4,4,3),(0,0,0),(0,0,0)),4,3)
5743 self.assertEqual([1, 2, 3, 4, 4, 3, 0, 0, 0, 0, 0, 0],da.getValues())
5744 self.assertEqual(3,da.getNumberOfComponents());
5745 self.assertEqual(4,da.getNumberOfTuples());
5746 da.setValues((10*[1]+290*[2])[:12],4,3)
5747 self.assertEqual(10*[1]+[2,2],da.getValues())
5748 self.assertEqual(3,da.getNumberOfComponents());
5749 self.assertEqual(4,da.getNumberOfTuples());
5751 da=DataArrayDouble.New()
5752 da.setValues([1,2,3.,4,0,0,0,0,0,0,0,0],4,3)
5753 self.assertEqual([1., 2., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0.],da.getValues())
5754 self.assertEqual(3,da.getNumberOfComponents());
5755 self.assertEqual(4,da.getNumberOfTuples());
5756 da=DataArrayDouble.New()
5757 da.setValues(((1,2,3),(4.,4,3),(0,0,0),(0,0,0)),4,3)
5758 self.assertEqual([1., 2., 3., 4., 4., 3., 0., 0., 0., 0., 0., 0.],da.getValues())
5759 self.assertEqual(3,da.getNumberOfComponents());
5760 self.assertEqual(4,da.getNumberOfTuples());
5761 da.setValues((10*[1]+290*[2])[:12],4,3)
5762 self.assertEqual(10*[1.]+[2.,2.],da.getValues())
5763 self.assertEqual(3,da.getNumberOfComponents());
5764 self.assertEqual(4,da.getNumberOfTuples());
5767 def testDAIBuildPermutationArr1(self):
5768 a=DataArrayInt.New()
5769 a.setValues([4,5,6,7,8],5,1)
5770 b=DataArrayInt.New()
5771 b.setValues([5,4,8,6,7],5,1)
5772 c=a.buildPermutationArr(b)
5773 self.assertEqual([1,0,4,2,3],c.getValues())
5774 self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5776 self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
5777 self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
5780 b.setIJ(4,0,4)#a==[4,5,6,4,8] and b==[5,4,8,6,4]
5781 self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5782 c=a.buildPermutationArr(b)
5783 self.assertEqual([1,3,4,2,3],c.getValues())
5784 d=b.convertToDblArr()
5787 self.assertEqual(expect3,b.getValues())
5789 self.assertEqual(5,d.getNumberOfTuples());
5790 self.assertEqual(1,d.getNumberOfComponents());
5792 self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
5796 def testAreCellsIncludedIn2(self):
5798 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5799 m2=m.buildPartOfMySelf([],True);
5800 self.assertEqual(0,m2.getNumberOfCells());
5801 self.assertEqual(3,m2.getSpaceDimension());
5802 self.assertEqual(2,m2.getMeshDimension());
5804 test,tmp=m.areCellsIncludedIn(m2,0)
5805 self.assertTrue(test);
5806 self.assertEqual(myName,tmp.getName());
5807 self.assertEqual(0,tmp.getNumberOfTuples())
5808 self.assertEqual(1,tmp.getNumberOfComponents())
5811 def testUMeshGetPartBarycenterAndOwner1(self):
5812 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5814 part=DataArrayInt.New();
5815 part.setValues(part1,3,1);
5816 b=m1.getPartBarycenterAndOwner(part);
5817 self.assertEqual(2,b.getNumberOfComponents());
5818 self.assertEqual(3,b.getNumberOfTuples());
5819 expected1=[0.36666666666666665,-0.13333333333333333,-0.05,-0.05,0.45,0.45];
5821 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5825 def testUMeshGetPartMeasureField1(self):
5826 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5828 part=DataArrayInt.New();
5829 part.setValues(part1,3,1);
5830 b=m1.getPartMeasureField(True,part);
5831 self.assertEqual(1,b.getNumberOfComponents());
5832 self.assertEqual(3,b.getNumberOfTuples());
5833 expected1=[0.125,0.25,0.25];
5835 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5839 def testUMeshBuildPartOrthogonalField1(self):
5840 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5841 m1.changeSpaceDimension(3);
5843 part=DataArrayInt.New();
5844 part.setValues(part1,3,1);
5845 b=m1.buildPartOrthogonalField(part);
5846 self.assertEqual(3,b.getArray().getNumberOfComponents());
5847 self.assertEqual(3,b.getArray().getNumberOfTuples());
5848 expected1=[0.,0.,-1.,0.,0.,-1.,0.,0.,-1.];
5850 self.assertAlmostEqual(expected1[i],b.getArray().getIJ(0,i),14);
5854 def testUMeshGetTypesOfPart1(self):
5855 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5857 p1=DataArrayInt.New()
5858 p1.setValues(part1,3,1)
5859 s=m1.getTypesOfPart(p1);
5860 self.assertEqual([NORM_QUAD4],s);
5862 p2=DataArrayInt.New()
5863 p2.setValues(part2,4,1)
5864 s=m1.getTypesOfPart(p2);
5865 self.assertEqual([NORM_TRI3],s);
5867 p3=DataArrayInt.New()
5868 p3.setValues(part3,3,1)
5869 s=m1.getTypesOfPart(p3);
5870 self.assertEqual(s,[NORM_TRI3,NORM_QUAD4]);
5873 def testUMeshKeepCellIdsByType1(self):
5874 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5876 p1=DataArrayInt.New()
5877 p1.setValues(part1,3,1)
5879 a=m1.keepCellIdsByType(NORM_TRI3,p1);
5880 self.assertEqual("p1",a.getName())
5881 self.assertEqual(1,a.getNumberOfComponents());
5882 self.assertEqual(0,a.getNumberOfTuples());
5885 p2=DataArrayInt.New()
5886 p2.setValues(part2,5,1)
5888 a=m1.keepCellIdsByType(NORM_TRI3,p2);
5889 self.assertEqual("p2",a.getName())
5890 self.assertEqual(1,a.getNumberOfComponents());
5891 self.assertEqual(2,a.getNumberOfTuples());
5892 self.assertEqual(2,a.getIJ(0,0));
5893 self.assertEqual(2,a.getIJ(1,0));
5895 a=m1.keepCellIdsByType(NORM_QUAD4,p2);
5896 self.assertEqual("p2",a.getName())
5897 self.assertEqual(1,a.getNumberOfComponents());
5898 self.assertEqual(3,a.getNumberOfTuples());
5899 self.assertEqual(3,a.getIJ(0,0));
5900 self.assertEqual(0,a.getIJ(1,0));
5901 self.assertEqual(4,a.getIJ(2,0));
5904 def testSwigErrorDaIntSelectByTupleId1(self):
5905 a=DataArrayInt.New();
5906 arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5907 a.setValues(arr1,7,2);
5908 a.setInfoOnComponent(0,"toto");
5909 a.setInfoOnComponent(1,"tata");
5912 b=a.selectByTupleId(arr2);
5913 self.assertEqual(5,b.getNumberOfTuples());
5914 self.assertEqual(2,b.getNumberOfComponents());
5915 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5916 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5917 expected1=[5,15,3,13,1,11,7,17,6,16]
5918 self.assertEqual(expected1,b.getValues())
5920 a2=DataArrayInt.New()
5921 a2.setValues(arr2,5,1)
5922 b=a.selectByTupleId(a2);
5923 self.assertEqual(5,b.getNumberOfTuples());
5924 self.assertEqual(2,b.getNumberOfComponents());
5925 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5926 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5927 expected1=[5,15,3,13,1,11,7,17,6,16]
5928 self.assertEqual(expected1,b.getValues())
5931 def testSwigErrorRenum(self):
5932 da=DataArrayDouble.New()
5933 da.setValues([7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.],10,2)
5934 d=DataArrayInt.New()
5935 d.setValues([0,2,3,1,4,5,6,8,7,9],10,1)
5936 da.renumberInPlace(d)
5940 def testSwigGetItem1(self):
5941 da=DataArrayInt.New()
5946 da.setInfoOnComponent(0,"X [m]")
5947 da.setInfoOnComponent(1,"Y [m]")
5948 da.setInfoOnComponent(2,"Z [km]")
5950 self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51],da2.getValues())
5952 self.assertEqual([19, 20, 21],da2.getValues())
5955 except InterpKernelException as e:
5956 self.assertTrue(True)
5958 self.assertTrue(False)
5961 self.assertEqual([24, 27, 30, 33, 36, 39, 42, 45, 48],da2.getValues())
5963 self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30],da2.getValues())
5965 self.assertTrue(da2.isEqual(da))
5967 self.assertTrue(da2.isEqual(da))
5970 except InterpKernelException as e:
5971 self.assertTrue(True)
5973 self.assertTrue(False)
5977 except InterpKernelException as e:
5978 self.assertTrue(True)
5980 self.assertTrue(False)
5983 self.assertEqual([22, 25, 28],da2.getValues())
5986 except InterpKernelException as e:
5987 self.assertTrue(True)
5989 self.assertTrue(False)
5992 self.assertEqual([],da2.getValues())
5995 def testSwigGetItem2(self):
5996 da=DataArrayDouble.New()
6001 da.setInfoOnComponent(0,"X [m]")
6002 da.setInfoOnComponent(1,"Y [m]")
6003 da.setInfoOnComponent(2,"Z [km]")
6005 self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51.],da2.getValues())
6007 self.assertEqual([19., 20., 21],da2.getValues())
6010 except InterpKernelException as e:
6011 self.assertTrue(True)
6013 self.assertTrue(False)
6016 self.assertEqual([24., 27., 30., 33., 36., 39., 42., 45., 48.],da2.getValues())
6018 self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30.],da2.getValues())
6020 self.assertTrue(da2.isEqual(da,1e-12))
6022 self.assertTrue(da2.isEqual(da,1e-12))
6025 except InterpKernelException as e:
6026 self.assertTrue(True)
6028 self.assertTrue(False)
6032 except InterpKernelException as e:
6033 self.assertTrue(True)
6035 self.assertTrue(False)
6038 self.assertEqual([22., 25., 28.],da2.getValues())
6041 except InterpKernelException as e:
6042 self.assertTrue(True)
6044 self.assertTrue(False)
6047 self.assertEqual([],da2.getValues())
6050 def testSwigSetItem1(self):
6051 da=DataArrayInt.New()
6055 da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6056 da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ;
6058 self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues())
6059 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6061 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3, 3, 3, 3, 3, 22, 23, 24, 25, 26],da.getValues())
6062 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6064 self.assertEqual([-1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1],da.getValues())
6065 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6067 self.assertEqual([7, -3, 9, -3, -3, 12, -3, 14, -3, -3, 17, -3, 19, -3, -3, 22, -3, 24, -3, -3],da.getValues())
6068 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6069 da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6071 self.assertEqual([-7, -7, -7, -7, -7, 12, 13, 14, 15, 16, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7],da.getValues())
6072 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6074 self.assertEqual([7, 8, 9, -7, -7, 12, 13, 14, 15, 16, 17, 18, 19, -7, -7, 22, 23, 24, -7, -7],da.getValues())
6075 # Let's test with DAI right hand side
6076 da1=DataArrayInt.New()
6077 da1.setValues([25,26,27,125,126,127],2,3)
6079 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6081 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 21, 22, 125, 126, 127, 26],da.getValues())
6082 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6083 da[1:,3]=[225,226,227]
6084 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 225, 16, 17, 18, 19, 226, 21, 22, 23, 24, 227, 26],da.getValues())
6085 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6086 da[1,2:]=[225,226,227]
6087 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 225, 226, 227, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],da.getValues())
6088 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6089 da[da2,-2:]=[88,99,1010,1111,1212,1313]
6090 self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6091 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6092 da3=DataArrayInt.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6094 self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6095 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6097 self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6098 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6100 self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6101 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6103 self.assertEqual([-8, 8, -8, 10, 11, 12, 13, 14, 15, 16, -8, 18, -8, 20, 21, -8, 23, -8, 25, 26],da.getValues())
6106 def testSwigSetItem2(self):
6107 da=DataArrayDouble.New()
6111 da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6112 da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ;
6114 self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues())
6115 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6117 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 3., 3., 3., 3., 3., 22., 23., 24., 25., 26.],da.getValues())
6118 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6120 self.assertEqual([-1., -1., -1., -1., -1., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., -1., -1., -1., -1., -1.],da.getValues())
6121 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6123 self.assertEqual([7., -3., 9., -3., -3., 12., -3., 14., -3., -3., 17., -3., 19., -3., -3., 22., -3., 24., -3., -3.],da.getValues())
6124 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6125 da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6127 self.assertEqual([-7., -7., -7., -7., -7., 12., 13., 14., 15., 16., -7., -7., -7., -7., -7., -7., -7., -7., -7., -7.],da.getValues())
6128 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6130 self.assertEqual([7., 8., 9., -7., -7., 12., 13., 14., 15., 16., 17., 18., 19., -7., -7., 22., 23., 24., -7., -7.],da.getValues())
6131 # Let's test with DAI right hand side
6132 da1=DataArrayDouble.New()
6133 da1.setValues([25,26,27,125,126,127],2,3)
6135 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6137 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 25., 26., 27., 21., 22., 125., 126., 127., 26.],da.getValues())
6138 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6139 da[1:,3]=[225.,226.,227.]
6140 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 225., 16., 17., 18., 19., 226., 21., 22., 23., 24., 227., 26.],da.getValues())
6141 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6142 da[1,2:]=[225,226,227]
6143 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 225., 226., 227., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26.],da.getValues())
6144 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6145 da[da2,-2:]=[88,99,1010,1111,1212,1313]
6146 self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6147 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6148 da3=DataArrayDouble.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6150 self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6151 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6153 self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6154 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6156 self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6157 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6159 self.assertEqual([-8., 8., -8., 10., 11., 12., 13., 14., 15., 16., -8., 18., -8., 20., 21., -8., 23., -8., 25., 26.],da.getValues())
6162 def testSwigDADOp(self):
6163 da=DataArrayDouble.New()
6166 da1=DataArrayDouble.New()
6170 self.assertEqual([15., 17., 19., 21., 23., 25., 27., 29., 31., 33., 35., 37.],da2.getValues())
6173 self.assertTrue(da2.isEqual(da3,1e-12))
6175 self.assertEqual([6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0],da2.getValues())
6177 self.assertEqual([-6.0, -7.0, -8.0, -9.0, -10.0, -11.0, -12.0, -13.0, -14.0, -15.0, -16.0, -17.0],da2.getValues())
6179 self.assertEqual([21.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0, 48.0, 51.0, 54.0],da2.getValues())
6181 self.assertEqual([21.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0, 48.0, 51.0, 54.0],da2.getValues())
6183 self.assertEqual([56.0, 72.0, 90.0, 110.0, 132.0, 156.0, 182.0, 210.0, 240.0, 272.0, 306.0, 342.0],da2.getValues())
6185 self.assertEqual([1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 4.25, 4.5],da2.getValues())
6188 self.assertTrue(da4.isUniform(1.,1e-12))
6189 st1=da.getHiddenCppPointer()
6191 st2=da.getHiddenCppPointer()
6192 self.assertEqual(st1,st2)
6193 self.assertTrue(da.isEqual(da1,1e-12))
6195 st2=da.getHiddenCppPointer()
6196 self.assertEqual(st1,st2)
6197 self.assertEqual(range(12),da.getValues())
6199 st2=da.getHiddenCppPointer()
6200 self.assertEqual(st1,st2)
6201 self.assertEqual([8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0],da.getValues())
6203 st2=da.getHiddenCppPointer()
6204 self.assertEqual(st1,st2)
6205 self.assertEqual([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0],da.getValues())
6207 st2=da.getHiddenCppPointer()
6208 self.assertEqual(st1,st2)
6209 self.assertEqual([32.0, 45.0, 60.0, 77.0, 96.0, 117.0, 140.0, 165.0, 192.0, 221.0, 252.0, 285.0],da.getValues())
6211 self.assertEqual(st1,st2)
6212 self.assertEqual([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0],da.getValues())
6214 st2=da.getHiddenCppPointer()
6215 self.assertEqual(st1,st2)
6216 self.assertEqual([2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5],da.getValues())
6218 da5=DataArrayDouble.New()
6219 da5.setValues([5.,4.,3.,2.],4,1)
6220 da*=da5 # it works with unmathing number of compo
6221 st2=da.getHiddenCppPointer()
6222 self.assertEqual(st1,st2)
6223 self.assertEqual([10.0, 12.5, 15.0, 14.0, 16.0, 18.0, 15.0, 16.5, 18.0, 13.0, 14.0, 15.0],da.getValues())
6228 ids=DataArrayInt.New()
6229 ids.setValues([3,4,7],3,1)
6230 da[ids,:]=[5.,8.,9.]
6231 self.assertEqual([7.,8.,9.,10.,11.,12.,13.,14.,15.,5.,8.,9.,5.,8.,9.,22.,23.,24.,25.,26.,27.,5.,8.,9.,31.,32.,33.,34.,35.,36.0],da.getValues())
6233 da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6235 self.assertEqual([7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,5.,8.,19.,5.,8.,22.,23.,24.,25.,26.,27.,28.,5.,8.,31.,32.,33.,34.,35.,36.],da.getValues())
6238 def testSwigDAIOp(self):
6239 da=DataArrayInt.New()
6242 da1=DataArrayInt.New()
6246 self.assertEqual([15,17,19,21,23,25,27,29,31,33,35,37],da2.getValues())
6249 self.assertTrue(da2.isEqual(da3))
6251 self.assertEqual([6,7,8,9,10,11,12,13,14,15,16,17],da2.getValues())
6253 self.assertEqual([-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17],da2.getValues())
6255 self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6257 self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6259 self.assertEqual([56,72,90,110,132,156,182,210,240,272,306,342.0],da2.getValues())
6261 self.assertEqual([1,2,2,2,2,3,3,3,3,4,4,4],da2.getValues())
6264 self.assertTrue(da4.isUniform(0))
6265 st1=da.getHiddenCppPointer()
6267 st2=da.getHiddenCppPointer()
6268 self.assertEqual(st1,st2)
6269 self.assertTrue(da.isEqual(da1))
6271 st2=da.getHiddenCppPointer()
6272 self.assertEqual(st1,st2)
6273 self.assertEqual(range(12),da.getValues())
6275 st2=da.getHiddenCppPointer()
6276 self.assertEqual(st1,st2)
6277 self.assertEqual([8,10,12,14,16,18,20,22,24,26,28,30],da.getValues())
6279 st2=da.getHiddenCppPointer()
6280 self.assertEqual(st1,st2)
6281 self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6283 st2=da.getHiddenCppPointer()
6284 self.assertEqual(st1,st2)
6285 self.assertEqual([32,45,60,77,96,117,140,165,192,221,252,285],da.getValues())
6287 self.assertEqual(st1,st2)
6288 self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6290 st2=da.getHiddenCppPointer()
6291 self.assertEqual(st1,st2)
6292 self.assertEqual([2,2, 3,3, 4,4, 5,5, 6,6, 7,7],da.getValues())
6294 da5=DataArrayInt.New()
6295 da5.setValues([5,4,3,2],4,1)
6296 da*=da5 # it works with unmathing number of compo
6297 st2=da.getHiddenCppPointer()
6298 self.assertEqual(st1,st2)
6299 self.assertEqual([10,10, 15,12,16,16,15,15, 18,12,14,14],da.getValues())
6301 st2=da.getHiddenCppPointer()
6302 self.assertEqual(st1,st2)
6303 self.assertEqual([4,4,3,0,4,4,3,3,0,0,2,2],da.getValues())
6308 ids=DataArrayInt.New()
6309 ids.setValues([3,4,7],3,1)
6311 self.assertEqual([7,8,9,10,11,12,13,14,15,5,8,9,5,8,9,22,23,24,25,26,27,5,8,9,31,32,33,34,35,36],da.getValues())
6313 da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6315 self.assertEqual([7,8,9,10,11,12,13,14,15,16,5,8,19,5,8,22,23,24,25,26,27,28,5,8,31,32,33,34,35,36],da.getValues())
6318 def testSwigDAIOp2(self):
6319 da=DataArrayInt.New()
6320 st=da.getHiddenCppPointer()
6330 self.assertEqual(st,da.getHiddenCppPointer())
6331 self.assertEqual(da.getValues(),[7,7,7,3,8,8,7,7,7,9,14,20,12,17,26,7,7,7,18,23,38,21,26,44,24,29,70,27,32,76])
6334 def testSwigDAIOp3(self):
6335 da=DataArrayInt.New()
6336 self.assertRaises(InterpKernelException,da.__len__)
6337 self.assertRaises(InterpKernelException,da.__int__)
6339 self.assertTrue(False)
6342 da.rearrange(1) ; da.fillWithZero()
6344 self.assertEqual(36,len(da));
6347 self.assertRaises(InterpKernelException,tmp.__int__)
6348 self.assertEqual(12,len(da));
6350 for elt in enumerate(l):
6353 ref=[0,0,0,0,0,1,0,0,2,0,0,3,0,0,4,0,0,5,0,0,6,0,0,7,0,0,8,0,0,9,0,0,10,0,0,11]
6354 self.assertEqual(ref,da.getValues());
6356 l=[int(elt) for elt in l1]
6357 self.assertEqual(ref,da.getValues());
6358 self.assertEqual(11,int(da[-1:]))
6361 def testSwigDADOp3(self):
6362 da=DataArrayDouble.New()
6363 self.assertRaises(InterpKernelException,da.__len__)
6364 self.assertRaises(InterpKernelException,da.__float__)
6366 self.assertTrue(False)
6369 da.rearrange(1) ; da.fillWithZero()
6371 self.assertEqual(36,len(da));
6374 self.assertRaises(InterpKernelException,tmp.__float__)
6375 self.assertEqual(12,len(da));
6377 for elt in enumerate(l):
6380 ref=[0.,0.,0.,0.,0.,1.,0.,0.,2.,0.,0.,3.,0.,0.,4.,0.,0.,5.,0.,0.,6.,0.,0.,7.,0.,0.,8.,0.,0.,9.,0.,0.,10.,0.,0.,11.]
6381 self.assertEqual(ref,da.getValues());
6383 l=[float(elt) for elt in l1]
6384 self.assertEqual(ref,da.getValues());
6385 self.assertEqual(11.,float(da[-1:]))
6388 def testSwigDataArrayIntIterator1(self):
6389 da=DataArrayInt.New()
6393 # __getitem__ testing
6398 self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6403 self.assertEqual([4, 7, 10, 13],li)
6408 self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6409 # __setitem__ testing
6411 da2=DataArrayInt.New()
6421 self.assertTrue(da.isEqual(da2))
6429 self.assertTrue(da.isUniform(5))
6436 self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6443 self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6446 def testSwigDataArrayDoubleIterator1(self):
6447 da=DataArrayDouble.New()
6451 # __getitem__ testing
6456 self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6461 self.assertEqual([4, 7, 10, 13],li)
6466 self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6467 # __setitem__ testing
6469 da2=DataArrayDouble.New()
6479 self.assertTrue(da.isEqual(da2,1e-12))
6487 self.assertTrue(da.isUniform(5,1e-12))
6494 self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6501 self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6504 def testSwigUMeshIterator1(self):
6505 m=MEDCouplingDataForTest.build2DTargetMesh_1()
6509 li1+=cell.getAllConn()[1:]
6510 li2+=[cell.getType()]
6512 self.assertEqual(li1,[0, 3, 4, 1, 1, 4, 2, 4, 5, 2, 6, 7, 4, 3, 7, 8, 5, 4])
6513 self.assertEqual(li2,[4, 3, 3, 4, 4])
6516 def testSwigUMeshIterator2(self):
6517 m=MEDCouplingDataForTest.build2DTargetMesh_1()
6518 self.assertRaises(InterpKernelException,m.cellsByType);
6519 m.rearrange2ConsecutiveCellTypes()
6523 for cellsByType in m.cellsByType():
6524 li1.append(cellsByType.getType())
6525 li2.append(cellsByType.getNumberOfElems())
6527 for cell in cellsByType:
6530 t[1]=cell.getAllConn()[1:]
6535 self.assertEqual(li1,[4, 3])
6536 self.assertEqual(li2,[3, 2])
6537 self.assertEqual(li3,[[[4, (0, 3, 4, 1)], [4, (6, 7, 4, 3)], [4, (7, 8, 5, 4)]], [[3, (1, 4, 2)], [3, (4, 5, 2)]]])
6540 def testDAIAggregateMulti1(self):
6541 a=DataArrayInt.New()
6542 a.setValues(range(4),2,2)
6544 b=DataArrayInt.New()
6545 b.setValues(range(6),3,2)
6546 c=DataArrayInt.Aggregate([a,b])
6547 self.assertEqual(range(4)+range(6),c.getValues())
6548 self.assertEqual("aa",c.getName())
6549 self.assertEqual(5,c.getNumberOfTuples())
6550 self.assertEqual(2,c.getNumberOfComponents())
6553 def testMergeUMeshes2(self):
6554 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6555 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6556 m3=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6559 m2_2=m2.buildPartOfMySelf(vec1,False);
6561 m3_2=m3.buildPartOfMySelf(vec2,False);
6565 self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[None]);
6566 self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[3.4])
6567 m4=MEDCouplingUMesh.MergeUMeshes(ms);
6568 m4.checkCoherency();
6569 self.assertEqual(10,m4.getNumberOfCells());
6570 self.assertEqual(20,m4.getNumberOfNodes());
6571 self.assertEqual(45,m4.getMeshLength());
6572 m4bis=MEDCouplingMesh.MergeMeshes(ms);
6573 self.assertTrue(m4.isEqual(m4bis,1e-12))
6577 m4_1=m4.buildPartOfMySelf(vec3,False);
6578 m4_1.setName(m1.getName());
6579 self.assertTrue(m4_1.isEqual(m1,1e-12));
6582 m4_2=m4.buildPartOfMySelf(vec4,False);
6583 cellCor,nodeCor=m4_2.checkGeoEquivalWith(m2_2,10,1e-12);
6586 m4_3=m4.buildPartOfMySelf(vec5,False);
6587 self.assertEqual(2,m4_3.getNumberOfCells());
6588 self.assertEqual(3,m4_3.getNumberOfNodes());
6590 m4_3.setName(m3_2.getName());
6591 self.assertTrue(m4_3.isEqual(m3_2,1e-12));
6595 def testBuild0DMeshFromCoords1(self):
6596 sourceCoords=[-0.3,-0.3,0., 0.7,-0.3,0., -0.3,0.7,0., 0.7,0.7,0.]
6597 coo=DataArrayDouble.New();
6598 coo.setValues(sourceCoords,4,3);
6599 coo.setName("My0D");
6600 m=MEDCouplingUMesh.Build0DMeshFromCoords(coo);
6602 self.assertEqual(4,m.getNumberOfNodes());
6603 self.assertEqual(4,m.getNumberOfCells());
6604 self.assertEqual(3,m.getSpaceDimension());
6605 self.assertEqual(0,m.getMeshDimension());
6606 types1=m.getAllTypes();
6607 self.assertEqual([NORM_POINT1],types1);
6609 conn=m.getNodeIdsOfCell(i);
6610 self.assertEqual([i],conn);
6611 self.assertTrue(NORM_POINT1==m.getTypeOfCell(i));
6613 self.assertEqual(m.getName(),"My0D");
6616 def testDescriptionInMeshTimeUnit1(self):
6618 m=MEDCouplingDataForTest.build2DTargetMesh_1();
6619 m.setDescription(text1);
6620 self.assertEqual(m.getDescription(),text1);
6622 self.assertTrue(m.isEqual(m2,1e-12));
6623 self.assertEqual(m2.getDescription(),text1);
6624 m2.setDescription("ggg");
6625 self.assertTrue(not m.isEqual(m2,1e-12));
6627 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6628 f.setTimeUnit(text1);
6629 self.assertEqual(f.getTimeUnit(),text1);
6631 self.assertEqual(f2.getTimeUnit(),text1);
6635 def testMultiFields1(self):
6636 mfs=MEDCouplingDataForTest.buildMultiFields_1();
6638 dms,refs=mfs.getDifferentMeshes()
6639 das=mfs.getArrays();
6640 das2,refs2=mfs.getDifferentArrays()
6641 self.assertEqual(5,len(mfs.getFields()))
6642 self.assertEqual(1,len(mfs.getFields()[0].getArrays()));
6643 self.assertEqual(2,len(mfs.getFields()[1].getArrays()));
6644 self.assertEqual(1,len(mfs.getFields()[2].getArrays()));
6645 self.assertEqual(1,len(mfs.getFields()[3].getArrays()));
6646 self.assertEqual(1,len(mfs.getFields()[4].getArrays()));
6647 self.assertEqual(5,len(ms));
6648 self.assertEqual(2,len(dms));
6649 self.assertEqual(6,len(das));
6650 self.assertEqual(5,len(das2));
6652 self.assertTrue(mfs.isEqual(mfs2,1e-12,1e-12))
6655 def testFieldOverTime1(self):
6656 fs=MEDCouplingDataForTest.buildMultiFields_2();
6657 self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6658 f4bis=fs[4].buildNewTimeReprFromThis(ONE_TIME,False);
6660 self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6661 f4bis.setTime(2.7,20,21);
6662 fot=MEDCouplingFieldOverTime.New(fs);
6663 dt=fot.getDefinitionTimeZone();
6664 hs=dt.getHotSpotsTime();
6665 self.assertEqual(6,len(hs));
6666 expected1=[0.2,0.7,1.2,1.35,1.7,2.7]
6668 self.assertAlmostEqual(expected1[i],hs[i],12);
6670 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.2);
6671 self.assertEqual(0,meshId);
6672 self.assertEqual(0,arrId);
6673 self.assertEqual(0,arrIdInField);
6674 self.assertEqual(0,fieldId);
6676 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.7);
6677 self.assertEqual(0,meshId);
6678 self.assertEqual(1,arrId);
6679 self.assertEqual(0,arrIdInField);
6680 self.assertEqual(1,fieldId);
6682 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeLeft(1.2);#**** WARNING left here
6683 self.assertEqual(0,meshId);
6684 self.assertEqual(2,arrId);
6685 self.assertEqual(1,arrIdInField);
6686 self.assertEqual(1,fieldId);
6688 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.2);#**** WARNING right again here
6689 self.assertEqual(1,meshId);
6690 self.assertEqual(3,arrId);
6691 self.assertEqual(0,arrIdInField);
6692 self.assertEqual(2,fieldId);
6694 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.35);
6695 self.assertEqual(1,meshId);
6696 self.assertEqual(3,arrId);
6697 self.assertEqual(0,arrIdInField);
6698 self.assertEqual(2,fieldId);
6700 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.7);
6701 self.assertEqual(0,meshId);
6702 self.assertEqual(3,arrId);
6703 self.assertEqual(0,arrIdInField);
6704 self.assertEqual(3,fieldId);
6706 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(2.7);
6707 self.assertEqual(1,meshId);
6708 self.assertEqual(4,arrId);
6709 self.assertEqual(0,arrIdInField);
6710 self.assertEqual(4,fieldId);
6712 dt2=MEDCouplingDefinitionTime();
6713 self.assertTrue(not dt2.isEqual(dt));
6715 dt2.assign(dt);#to check memory management
6716 self.assertTrue(dt2.isEqual(dt));
6718 dt3=MEDCouplingDefinitionTime();
6722 def testDAICheckAndPreparePermutation1(self):
6723 vals1=[9,10,0,6,4,11,3,7];
6724 expect1=[5,6,0,3,2,7,1,4];
6725 vals2=[9,10,0,6,10,11,3,7];
6726 da=DataArrayInt.New();
6727 da.setValues(vals1,8,1);
6728 da2=da.checkAndPreparePermutation();
6729 self.assertEqual(8,da2.getNumberOfTuples());
6730 self.assertEqual(1,da2.getNumberOfComponents());
6732 self.assertEqual(expect1[i],da2.getIJ(i,0));
6735 da=DataArrayInt.New();
6738 da2=da.checkAndPreparePermutation();
6739 self.assertEqual(8,da2.getNumberOfTuples());
6740 self.assertEqual(1,da2.getNumberOfComponents());
6741 self.assertTrue(da2.isIdentity());
6743 da=DataArrayInt.New();
6745 da.setValues(vals2,8,1);
6746 self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
6749 def testDAIChangeSurjectiveFormat1(self):
6750 vals1=[0,3,2,3,2,2,1,2]
6751 expected1=[0,1,2,6,8]
6752 expected2=[0, 6, 2,4,5,7, 1,3]
6753 da=DataArrayInt.New();
6754 da.setValues(vals1,8,1);
6756 da2,da2I=da.changeSurjectiveFormat(4);
6757 self.assertEqual(5,da2I.getNumberOfTuples());
6758 self.assertEqual(8,da2.getNumberOfTuples());
6759 self.assertEqual(expected1,da2I.getValues());
6760 self.assertEqual(expected2,da2.getValues());
6762 self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
6766 def testUMeshGetCellIdsLyingOnNodes1(self):
6767 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6768 nodeIds1=[1,2,3,4,6]
6770 da=m.getCellIdsLyingOnNodes(nodeIds1,True);
6771 self.assertEqual(1,da.getNumberOfTuples());
6772 self.assertEqual(1,da.getNumberOfComponents());
6773 self.assertEqual(1,da.getIJ(0,0));
6774 da2=DataArrayInt.New()
6775 da2.setValues(nodeIds2,2,1)
6776 da=m.getCellIdsLyingOnNodes(da2,False);
6777 self.assertEqual(2,da.getNumberOfTuples());
6778 self.assertEqual(1,da.getNumberOfComponents());
6779 self.assertEqual(3,da.getIJ(0,0));
6780 self.assertEqual(4,da.getIJ(1,0));
6783 def testUMeshFindCellIdsOnBoundary1(self):
6784 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6785 da5=m.findCellIdsOnBoundary();
6786 self.assertEqual(5,da5.getNumberOfTuples());
6787 self.assertTrue(da5.isIdentity());
6790 def testMeshSetTime1(self):
6791 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6792 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6794 self.assertTrue(m1.isEqual(m2,1e-12));
6795 m1.setTime(3.14,6,7);
6796 tmp3,tmp1,tmp2=m1.getTime();
6797 self.assertEqual(6,tmp1);
6798 self.assertEqual(7,tmp2);
6799 self.assertAlmostEqual(3.14,tmp3,12);
6800 self.assertTrue(not m1.isEqual(m2,1e-12));
6801 m2.setTime(3.14,6,7);
6802 self.assertTrue(m1.isEqual(m2,1e-12));
6803 m1.setTimeUnit("ms");
6804 self.assertTrue(m1.getTimeUnit()=="ms");
6805 m1.setTimeUnit("us");
6806 self.assertTrue(m1.getTimeUnit()=="us");
6807 self.assertTrue(not m1.isEqual(m2,1e-12));
6808 m2.setTimeUnit("us");
6809 self.assertTrue(m1.isEqual(m2,1e-12));
6810 m2.setTime(3.14,6,8);
6811 self.assertTrue(not m1.isEqual(m2,1e-12));
6812 m2.setTime(3.14,7,7);
6813 self.assertTrue(not m1.isEqual(m2,1e-12));
6814 m2.setTime(3.15,6,7);
6815 self.assertTrue(not m1.isEqual(m2,1e-12));
6817 m1.setTime(10.34,55,12);
6819 self.assertTrue(m1.isEqual(m3,1e-12));
6820 tmp3,tmp1,tmp2=m3.getTime();
6821 self.assertEqual(55,tmp1);
6822 self.assertEqual(12,tmp2);
6823 self.assertAlmostEqual(10.34,tmp3,12);
6827 a=DataArrayDouble.New();
6828 a.setValues(coo1,4,1);
6829 b=MEDCouplingCMesh.New();
6832 b.setTime(5.67,8,100);
6833 tmp3,tmp1,tmp2=b.getTime();
6834 self.assertEqual(8,tmp1);
6835 self.assertEqual(100,tmp2);
6836 self.assertAlmostEqual(5.67,tmp3,12);
6838 self.assertTrue(c.isEqual(b,1e-12));
6839 tmp3,tmp1,tmp2=c.getTime();
6840 self.assertEqual(8,tmp1);
6841 self.assertEqual(100,tmp2);
6842 self.assertAlmostEqual(5.67,tmp3,12);
6845 def testApplyFuncTwo1(self):
6846 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6847 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6850 vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6851 da=DataArrayDouble.New();
6852 da.setValues(vals,5,3);
6855 self.assertRaises(InterpKernelException,da.applyFunc2,1,"y+z");
6856 da.setInfoOnComponent(0,"x [m]");
6857 da.setInfoOnComponent(1,"y [mm]");
6858 da.setInfoOnComponent(2,"z [km]");
6860 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x+y+zz+zzz");
6861 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "toto(x+y)");
6862 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x/0");
6864 da2=da.applyFunc2(1,"y+z");
6865 self.assertEqual(1,da2.getNumberOfComponents());
6866 self.assertEqual(5,da2.getNumberOfTuples());
6867 expected1=[32.,34.,36.,38.,40.]
6869 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6871 da2=da.applyFunc(1,"y+z");
6872 expected2=[12.,14.,16.,18.,20.]
6874 self.assertAlmostEqual(expected2[i],da2.getIJ(0,i),12);
6877 self.assertEqual(3,f1.getNumberOfComponents());
6878 self.assertEqual(5,f1.getNumberOfTuples());
6879 f1.applyFunc2(1,"y+z");
6880 self.assertEqual(1,f1.getNumberOfComponents());
6881 self.assertEqual(5,f1.getNumberOfTuples());
6883 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6888 def testApplyFuncThree1(self):
6889 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6890 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6893 vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6894 da=DataArrayDouble.New();
6895 da.setValues(vals,5,3);
6899 vs[0]="x"; vs[1]="Y"; vs[2]="z";
6900 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "y+z");
6901 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x+Y+z+zz+zzz");
6902 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x/0");
6904 da2=da.applyFunc3(1,vs,"y+z");
6905 expected1=[32.,34.,36.,38.,40.]
6907 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6909 self.assertRaises(InterpKernelException, da.applyFunc3, 1, ["x","y","z","a"],"x+a")
6911 self.assertEqual(3,f1.getNumberOfComponents());
6912 self.assertEqual(5,f1.getNumberOfTuples());
6913 f1.applyFunc3(1,vs,"y+z");
6914 self.assertEqual(1,f1.getNumberOfComponents());
6915 self.assertEqual(5,f1.getNumberOfTuples());
6917 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6921 def testFillFromAnalyticTwo1(self):
6922 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6923 m1.setTime(3.4,5,6); m1.setTimeUnit("us");
6924 self.assertRaises(InterpKernelException,m1.fillFromAnalytic2,ON_NODES,1,"y+z");
6925 m1.getCoords().setInfoOnComponent(0,"x [m]");
6926 m1.getCoords().setInfoOnComponent(1,"y");
6927 m1.getCoords().setInfoOnComponent(2,"z");
6928 f1=m1.fillFromAnalytic2(ON_NODES,1,"y+z");
6929 self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
6930 self.assertEqual("us",f1.getTimeUnit())
6931 self.assertEqual(1,f1.getNumberOfComponents());
6932 self.assertEqual(9,f1.getNumberOfTuples());
6933 expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6935 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6939 def testFillFromAnalyticThree1(self):
6940 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6941 m1.setTime(3.4,5,6); m1.setTimeUnit("us");
6943 vs[0]="x"; vs[1]="Y"; vs[2]="z";
6944 self.assertRaises(InterpKernelException,m1.fillFromAnalytic3,ON_NODES,1,vs,"y+z");
6946 f1=m1.fillFromAnalytic3(ON_NODES,1,vs,"y+z");
6947 self.assertAlmostEqual(3.4,f1.getTime()[0],12) ; self.assertEqual(5,f1.getTime()[1]) ; self.assertEqual(6,f1.getTime()[2])
6948 self.assertEqual("us",f1.getTimeUnit())
6949 self.assertEqual(1,f1.getNumberOfComponents());
6950 self.assertEqual(9,f1.getNumberOfTuples());
6951 expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6953 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6957 def testDAUnitVar1(self):
6958 da=DataArrayDouble.New();
6960 da.setInfoOnComponent(0,"XPS [m]");
6961 st1=da.getVarOnComponent(0);
6962 self.assertTrue(st1=="XPS");
6963 st2=da.getUnitOnComponent(0);
6964 self.assertTrue(st2=="m");
6966 da.setInfoOnComponent(0,"XPS [m]");
6967 st1=da.getVarOnComponent(0);
6968 self.assertTrue(st1=="XPS");
6969 st2=da.getUnitOnComponent(0);
6970 self.assertTrue(st2=="m");
6972 da.setInfoOnComponent(0,"XPP [m]");
6973 st1=da.getVarOnComponent(0);
6974 self.assertTrue(st1=="XPP");
6975 st2=da.getUnitOnComponent(0);
6976 self.assertTrue(st2=="m");
6978 da.setInfoOnComponent(0,"XPP kdep kefer [ m ]");
6979 st1=da.getVarOnComponent(0);
6980 self.assertTrue(st1=="XPP kdep kefer");
6981 st2=da.getUnitOnComponent(0);
6982 self.assertTrue(st2==" m ");
6984 da.setInfoOnComponent(0," XPP k[ dep k]efer [ m^ 2/s^3*kJ ]");
6985 st1=da.getVarOnComponent(0);
6986 self.assertTrue(st1==" XPP k[ dep k]efer");
6987 st2=da.getUnitOnComponent(0);
6988 self.assertTrue(st2==" m^ 2/s^3*kJ ");
6990 da.setInfoOnComponent(0," XPP kefer ");
6991 st1=da.getVarOnComponent(0);
6992 self.assertTrue(st1==" XPP kefer ");
6993 st2=da.getUnitOnComponent(0);
6994 self.assertTrue(st2=="");
6996 da.setInfoOnComponent(0,"temperature( bof)");
6997 st1=da.getVarOnComponent(0);
6998 self.assertTrue(st1=="temperature( bof)");
6999 st2=da.getUnitOnComponent(0);
7000 self.assertTrue(st2=="");
7002 da.setInfoOnComponent(0,"kkk [m]");
7003 da.setInfoOnComponent(1,"ppp [m^2/kJ]");
7004 da.setInfoOnComponent(2,"abcde [MW/s]");
7006 vs=da.getVarsOnComponent();
7007 self.assertEqual(3,len(vs));
7008 self.assertTrue(vs[0]=="kkk");
7009 self.assertTrue(vs[1]=="ppp");
7010 self.assertTrue(vs[2]=="abcde");
7011 vs=da.getUnitsOnComponent();
7012 self.assertEqual(3,len(vs));
7013 self.assertTrue(vs[0]=="m");
7014 self.assertTrue(vs[1]=="m^2/kJ");
7015 self.assertTrue(vs[2]=="MW/s");
7018 def testGaussCoordinates1(self):
7019 #Testing 1D cell types
7020 m1=MEDCouplingDataForTest.build1DMultiTypes_1();
7021 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7026 f.setGaussLocalizationOnType(NORM_SEG2,refCoo1,gsCoo1,wg1);
7029 refCoo2=[-1.0,1.0,0.0];
7030 f.setGaussLocalizationOnType(NORM_SEG3,refCoo2,gsCoo2,wg2);
7032 resToTest=f.getLocalizationOfDiscr();
7033 self.assertEqual(3,resToTest.getNumberOfComponents());
7034 self.assertEqual(2,resToTest.getNumberOfTuples());
7035 expected1=[0.6,0.6,0.6, 0.6,0.6,0.6]
7037 self.assertAlmostEqual(expected1[i],resToTest.getIJ(0,i),14);
7040 #Testing 2D cell types
7041 m2=MEDCouplingDataForTest.build2DMultiTypes_1();
7042 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7045 tria3CooGauss=[ 0.1, 0.8, 0.2, 0.7 ]
7046 gsCoo3=tria3CooGauss
7047 tria3CooRef=[ 0.0, 0.0, 1.0 , 0.0, 0.0, 1.0 ]
7048 refCoo3=tria3CooRef;
7049 f.setGaussLocalizationOnType(NORM_TRI3,refCoo3,gsCoo3,wg3);
7051 tria6CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4 ]
7052 gsCoo4=tria6CooGauss;
7053 tria6CooRef=[0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5]
7054 refCoo4=tria6CooRef;
7055 f.setGaussLocalizationOnType(NORM_TRI6,refCoo4,gsCoo4,wg4);
7056 wg5=[0.3,0.3,0.3,0.3];
7057 quad4CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4, 0.15, 0.27 ]
7058 gsCoo5=quad4CooGauss;
7059 quad4CooRef=[-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0]
7060 refCoo5=quad4CooRef;
7061 f.setGaussLocalizationOnType(NORM_QUAD4,refCoo5,gsCoo5,wg5);
7062 wg6=[0.3,0.3,0.3,0.3];
7063 quad8CooGauss=[ 0.34, 0.16, 0.21, 0.3, 0.23, 0.4, 0.14, 0.37 ]
7064 gsCoo6=quad8CooGauss;
7065 quad8CooRef=[ -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, -1.0, 0.0]
7066 refCoo6=quad8CooRef;
7067 f.setGaussLocalizationOnType(NORM_QUAD8,refCoo6,gsCoo6,wg6);
7069 resToTest=f.getLocalizationOfDiscr();
7070 self.assertEqual(3,resToTest.getNumberOfComponents());
7071 self.assertEqual(13,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7072 expected2=[5.1,1.55,0.0, 4.7,1.65,0.0,
7073 2.32,1.52,0.0, 1.6,1.32,0.0, 3.52,1.26,0.0,#TRI6
7074 2.6,1.6,0.0, 2.4,1.8,0.0, 2.4,1.2,0.0, 2.3,1.46,0.0,#QUAD4
7075 2.32,2.68,0.0, 2.6,2.42,0.0, 2.8,2.46,0.0, 2.74,2.28,0.0 ];#QUAD8
7076 for i in xrange(39):
7077 self.assertAlmostEqual(expected2[i],resToTest.getIJ(0,i),14);
7080 #Testing 3D cell types
7081 m3=MEDCouplingDataForTest.build3DMultiTypes_1();
7082 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7086 tetra4CooGauss=[0.34, 0.16, 0.21]
7087 gsCoo7=tetra4CooGauss;
7088 tetra4CooRef=[0.0,1.0,0.0, 0.0,0.0,1.0, 0.0,0.0,0.0, 1.0,0.0,0.0]
7089 refCoo7=tetra4CooRef;
7090 f.setGaussLocalizationOnType(NORM_TETRA4,refCoo7,gsCoo7,wg7);
7092 tetra10CooGauss=[0.2, 0.3, 0.1]
7093 gsCoo8=tetra10CooGauss;
7094 tetra10CooRef=[0.0,1.0,0.0, 0.0,0.0,0.0, 0.0,0.0,1.0, 1.0,0.0,0.0, 0.0,0.5,0.0, 0.0,0.0,0.5, 0.0,0.5,0.5, 0.5,0.5,0.0, 0.5,0.0,0.0, 0.5,0.0,0.5]
7095 refCoo8=tetra10CooRef;
7096 f.setGaussLocalizationOnType(NORM_TETRA10,refCoo8,gsCoo8,wg8);
7098 pyra5CooGauss=[0.2, 0.3, 0.1]
7099 gsCoo9=pyra5CooGauss;
7100 pyra5CooRef=[1.0,0.0,0.0, 0.0,1.0,0.0, -1.0,0.0,0.0, 0.0,-1.0,0.0, 0.0,0.0,1.0]
7101 refCoo9=pyra5CooRef;
7102 f.setGaussLocalizationOnType(NORM_PYRA5,refCoo9,gsCoo9,wg9);
7104 pyra13CooGauss=[0.1, 0.2, 0.7]
7105 gsCoo10=pyra13CooGauss;
7106 pyra13CooRef=[1.0,0.0,0.0, 0.0,1.0,0.0,-1.0,0.0,0.0,0.0,-1.0,0.0,0.0,0.0,1.0,0.5,0.5,0.0,-0.5,0.5,0.0,-0.5,-0.5,0.0,0.5,-0.5,0.0,0.5,0.0,0.5,0.0,0.5,0.5,-0.5,0.0,0.5,0.0,-0.5,0.5]
7107 refCoo10=pyra13CooRef;
7108 f.setGaussLocalizationOnType(NORM_PYRA13,refCoo10,gsCoo10,wg10);
7110 penta6CooGauss=[0.2, 0.3, 0.1]
7111 gsCoo11=penta6CooGauss;
7112 penta6CooRef=[-1.0,1.0,0.0,-1.0,-0.0,1.0,-1.0,0.0,0.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,0.0,0.0]
7113 refCoo11=penta6CooRef;
7114 f.setGaussLocalizationOnType(NORM_PENTA6,refCoo11,gsCoo11,wg11);
7116 penta15CooGauss=[0.2, 0.3,0.15]
7117 gsCoo12=penta15CooGauss;
7118 penta15CooRef=[-1.0,1.0,0.0,-1.0,0.0,1.0,-1.0,0.0,0.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,0.0,0.0,-1.0,0.5,0.5,-1.0,0.0,0.5,-1.0,0.5,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.5,0.5,1.0,0.0, 0.5,1.0,0.5,0.0]
7119 refCoo12=penta15CooRef;
7120 f.setGaussLocalizationOnType(NORM_PENTA15,refCoo12,gsCoo12,wg12);
7122 hexa8CooGauss=[0.2,0.3,0.15]
7123 gsCoo13=hexa8CooGauss;
7124 hexa8CooRef=[-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0]
7125 refCoo13=hexa8CooRef;
7126 f.setGaussLocalizationOnType(NORM_HEXA8,refCoo13,gsCoo13,wg13);
7128 hexa20CooGauss=[0.11,0.3,0.55]
7129 gsCoo14=hexa20CooGauss;
7130 hexa20CooRef=[-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0,0.0,-1.0,-1.0,1.0,0.0,-1.0,0.0,1.0,-1.0,-1.0,0.0,-1.0,-1.0,-1.0,0.0,1.0,-1.0,0.0,1.0,1.0,0.0,-1.0,1.0,0.0,0.0,-1.0,1.0,1.0,0.0,1.0,0.0,1.0,1.0,-1.0,0.0,1.0]
7131 refCoo14=hexa20CooRef;
7132 f.setGaussLocalizationOnType(NORM_HEXA20,refCoo14,gsCoo14,wg14);
7134 resToTest=f.getLocalizationOfDiscr();
7135 self.assertEqual(3,resToTest.getNumberOfComponents());
7136 self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7137 expected3=[1.312,3.15,1.02, 0.56,3.3,0.6, 2.18,1.1,0.2, 1.18,1.54,0.98, 1.56,0.3,3.6, 1.613,0.801,4.374, 2.6,2.4,2.3, 2.31232,2.3933985,1.553255]
7138 for i in xrange(24):
7139 self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14);
7144 def testP2Localization1(self):
7145 m=MEDCouplingUMesh.New("testP2",2);
7146 coords=[0.,2.,3.5,0.,4.5,1.5,1.2,0.32,3.4,1.,2.1,2.4]
7148 coo=DataArrayDouble.New();
7149 coo.setValues(coords,6,2);
7152 m.insertNextCell(NORM_TRI6,6,conn[0:6])
7153 m.finishInsertingCells();
7155 f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7157 da=DataArrayDouble.New();
7158 vals1=[1.2,2.3,3.4, 2.2,3.3,4.4, 3.2,4.3,5.4, 4.2,5.3,6.4, 5.2,6.3,7.4, 6.2,7.3,8.4]
7159 da.setValues(vals1,6,3);
7163 locs=f.getValueOnMulti(loc);
7164 expected1=[6.0921164547752236, 7.1921164547752232, 8.2921164547752255]
7166 self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7170 def testP2Localization2(self):
7171 m=MEDCouplingUMesh.New("testP2_2",3);
7172 coords=[0.33312787792955395, -0.35155740179580952, -0.03567564825034563, 1.307146326477638, -0.57234557776250305, -0.08608044208272235, 0.5551834466499993, 0.62324964668794192, -0.014638951108536295, 0.37761817224442129, -0.38324019806913578, 0.96283164472856886, 0.79494856035658679, -0.40628057809270046, 0.0021004190225864614, 1.023740446371799, 0.07665912970471335, -0.072889657161871096, 0.54564584619517376, 0.11132872093429744, 0.039647326652013051, 0.27164784387819052, -0.42018012100866675, 0.46563376500745146, 0.89501965094896418, -0.56148455362735061, 0.43337469695473035, 0.49118025152924394, 0.093884938060727313, 0.47216346905220891]
7173 conn=[0,1,2,3,4,5,6,7,8,9]
7174 coo=DataArrayDouble.New();
7175 coo.setValues(coords,10,3);
7178 m.insertNextCell(NORM_TETRA10,10,conn[0:10])
7179 m.finishInsertingCells();
7181 f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7183 da=DataArrayDouble.New();
7184 vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2]
7185 da.setValues(vals1,10,1);
7188 loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748]
7189 locs=f.getValueOnMulti(loc);
7190 expected1=[10.0844021968047]
7192 self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7196 def testGetValueOn2(self):
7197 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7198 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
7200 arr=DataArrayDouble.New();
7201 nbOfCells=m.getNumberOfCells();
7203 values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
7204 arr.setValues(values1,nbOfCells,3);
7205 loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
7207 locs=f.getValueOnMulti(loc);
7208 self.assertEqual(5,locs.getNumberOfTuples());
7209 self.assertEqual(3,locs.getNumberOfComponents());
7210 for j in xrange(15):
7211 self.assertAlmostEqual(values1[j],locs.getIJ(0,j),12);
7214 f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
7216 arr=DataArrayDouble.New();
7217 nbOfNodes=m.getNumberOfNodes();
7219 values2=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.,12.,112.,10012.,13.,113.,10013.,14.,114.,10014.,15.,115.,10015.]
7220 arr.setValues(values2,nbOfNodes,3);
7221 loc2=[0.5432,-0.2432, 0.5478,0.1528, 0.5432,-0.2432, 0.5432,-0.2432]
7222 expected2=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124, 9.0272, 109.0272, 10009.0272, 9.0272, 109.0272, 10009.0272]
7224 loc3=DataArrayDouble.New()
7225 loc3.setValues(loc2,4,2);
7226 locs=f.getValueOnMulti(loc3);
7227 self.assertEqual(4,locs.getNumberOfTuples());
7228 self.assertEqual(3,locs.getNumberOfComponents());
7229 for i in xrange(12):
7230 self.assertAlmostEqual(expected2[i],locs.getIJ(0,i),12);
7235 def testDAIGetIdsNotEqual1(self):
7236 d=DataArrayInt.New();
7237 vals1=[2,3,5,6,8,5,5,6,1,-5]
7238 d.setValues(vals1,10,1);
7239 d2=d.getIdsNotEqual(5);
7240 self.assertEqual(7,d2.getNumberOfTuples());
7241 self.assertEqual(1,d2.getNumberOfComponents());
7242 expected1=[0,1,3,4,7,8,9]
7244 self.assertEqual(expected1[i],d2.getIJ(0,i));
7247 self.assertRaises(InterpKernelException,d.getIdsNotEqual,5);
7251 d3=d.getIdsNotEqualList(vals3);
7252 self.assertEqual(5,d3.getNumberOfTuples());
7253 self.assertEqual(1,d3.getNumberOfComponents());
7254 expected2=[0,1,4,8,9]
7256 self.assertEqual(expected2[i],d3.getIJ(0,i));
7260 def testDAIComputeOffsets1(self):
7261 d=DataArrayInt.New();
7263 expected1=[0,3,8,9,11,11]
7264 d.setValues(vals1,6,1);
7266 self.assertEqual(6,d.getNumberOfTuples());
7267 self.assertEqual(1,d.getNumberOfComponents());
7269 self.assertEqual(expected1[i],d.getIJ(0,i));
7273 def testUMeshHexagonPrism1(self):
7274 coords=[0.8660254037844386, 0.5, 0.0, 0.0, 1.0, 0.0, -0.8660254037844386, 0.5, 0.0, -0.8660254037844386, -0.5, 0.0, 0.0, -1.0, 0.0, 0.8660254037844386, -0.5, 0.0,
7275 0.8660254037844386, 0.5, 2.0, 0.0, 1.0, 2.0, -0.8660254037844386, 0.5, 2.0, -0.8660254037844386, -0.5, 2.0, 0.0, -1.0, 2.0, 0.8660254037844386, -0.5, 2.0];
7276 conn=[1,2,3,4,5,0,7,8,9,10,11,6]
7277 mesh=MEDCouplingUMesh.New("MyFirstHexagonalPrism",3);
7278 coo=DataArrayDouble.New();
7279 coo.setValues(coords,12,3);
7280 mesh.setCoords(coo);
7281 mesh.allocateCells(1);
7282 mesh.insertNextCell(NORM_HEXGP12,12,conn[0:12])
7283 mesh.finishInsertingCells();
7285 mesh.checkCoherency();
7286 vols=mesh.getMeasureField(False);
7287 self.assertEqual(1,vols.getNumberOfTuples());
7288 self.assertEqual(1,vols.getNumberOfComponents());
7289 self.assertAlmostEqual(-5.196152422706632,vols.getIJ(0,0),12);
7290 bary=mesh.getBarycenterAndOwner();
7291 self.assertEqual(1,bary.getNumberOfTuples());
7292 self.assertEqual(3,bary.getNumberOfComponents());
7293 expected1=[0.,0.,1.]
7295 self.assertAlmostEqual(expected1[i],bary.getIJ(0,i),12);
7297 d1=DataArrayInt.New();
7298 d2=DataArrayInt.New();
7299 d3=DataArrayInt.New();
7300 d4=DataArrayInt.New();
7301 m2=mesh.buildDescendingConnectivity(d1,d2,d3,d4);
7302 self.assertEqual(8,m2.getNumberOfCells());
7303 expected4=[[1,2,3,4,5,0],[7,6,11,10,9,8],[1,7,8,2],[2,8,9,3],[3,9,10,4],[4,10,11,5],[5,11,6,0],[0,6,7,1]];
7304 expected2=[NORM_POLYGON, NORM_POLYGON, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4];
7305 expected3=[6,6,4,4,4,4,4,4]
7307 self.assertTrue(m2.getTypeOfCell(i)==expected2[i]);
7308 v=m2.getNodeIdsOfCell(i);
7309 self.assertTrue(len(v)==expected3[i]);
7310 self.assertEqual(expected4[i],v);
7312 mesh.convertAllToPoly();
7313 self.assertTrue(NORM_POLYHED==mesh.getTypeOfCell(0));
7315 self.assertTrue(NORM_HEXGP12==mesh.getTypeOfCell(0));
7316 self.assertEqual(13,mesh.getMeshLength());
7320 def testDADCheckIsMonotonic(self):
7321 da=DataArrayDouble.New();
7322 da.setValues([-1.,1.01,2.03,6.],2,2);
7323 self.assertRaises(InterpKernelException,da.isMonotonic,True,1e-12);
7325 self.assertTrue(da.isMonotonic(True,1e-12));
7326 da.checkMonotonic(True,1e-12);
7328 self.assertTrue(not da.isMonotonic(True,1e-12));
7329 self.assertRaises(InterpKernelException,da.checkMonotonic,True,1e-12);
7331 self.assertTrue(da.isMonotonic(True,1e-12));
7332 self.assertTrue(not da.isMonotonic(True,1e-1));
7335 def testCheckCoherencyDeeper1(self):
7336 m=MEDCouplingDataForTest.build3DSourceMesh_1();
7338 m.checkCoherency1();
7339 m.getNodalConnectivity().setIJ(8,0,-1);
7341 self.assertRaises(InterpKernelException,m.checkCoherency1);
7342 m.getNodalConnectivity().setIJ(8,0,-6);
7344 self.assertRaises(InterpKernelException,m.checkCoherency1);
7345 m.getNodalConnectivity().setIJ(8,0,9);#9>=NbOfNodes
7347 self.assertRaises(InterpKernelException,m.checkCoherency1);
7348 m.getNodalConnectivity().setIJ(8,0,8);#OK
7350 m.checkCoherency1();
7352 m.convertToPolyTypes(elts);
7354 m.checkCoherency1();
7355 m.getNodalConnectivity().setIJ(2,0,9);#9>=NbOfNodes
7357 self.assertRaises(InterpKernelException,m.checkCoherency1);
7358 m.getNodalConnectivity().setIJ(2,0,-3);
7360 self.assertRaises(InterpKernelException,m.checkCoherency1);
7361 m.getNodalConnectivity().setIJ(2,0,-1);
7363 self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw because cell#0 is not a polyhedron
7364 m.getNodalConnectivity().setIJ(2,0,4);
7366 m.checkCoherency1();
7367 m.getNodalConnectivity().setIJ(7,0,-1);
7369 m.checkCoherency1();#OK because we are in polyhedron connec
7370 m.getNodalConnectivity().setIJ(36,0,14);
7372 self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
7375 def testUnPolyze2(self):
7376 m=MEDCouplingUMesh.New("jjj",3);
7377 coo=DataArrayDouble.New();
7384 m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7385 m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7386 m.finishInsertingCells();
7387 m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(4*[m]);
7388 m2.convertToPolyTypes([2]);
7390 self.assertEqual(NORM_TETRA4,m2.getTypeOfCell(2));
7391 self.assertEqual(40,m2.getMeshLength());
7392 temp2=m2.getNodeIdsOfCell(2);
7393 self.assertEqual(temp2,[0,1,2,3]);
7394 m2.checkCoherency1();
7397 self.assertTrue(m3.isEqual(m2,1e-12));
7400 def testDACpyFrom1(self):
7401 d=DataArrayDouble.New();
7406 d.setInfoOnComponent(0,"X [m]");
7407 d.setInfoOnComponent(1,"Y [m]");
7408 d.setInfoOnComponent(2,"Z [m]");
7410 d1=DataArrayDouble.New();
7411 self.assertTrue(not d.isEqual(d1,1e-12));
7413 self.assertTrue(d.isEqual(d1,1e-12));
7415 self.assertTrue(d.isEqual(d1,1e-12));
7417 self.assertTrue(not d.isEqual(d1,1e-12));
7419 self.assertTrue(d.isEqual(d1,1e-12));
7421 d2=d.convertToIntArr();
7422 d4=DataArrayInt.New();
7423 self.assertTrue(not d2.isEqual(d4));
7425 self.assertTrue(d2.isEqual(d4));
7427 self.assertTrue(d2.isEqual(d4));
7429 self.assertTrue(not d2.isEqual(d4));
7431 self.assertTrue(d2.isEqual(d4));
7434 def testDAITransformWithIndArr1(self):
7436 tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
7437 expected=[17,18,18,19,19,17,18,19,22,22,19,17]
7438 d=DataArrayInt.New();
7439 d.setValues(tab1,4,1);
7440 d1=DataArrayInt.New();
7441 d1.setValues(tab2,12,1);
7444 d1.transformWithIndArr(d);
7445 self.assertEqual(12,d1.getNumberOfTuples());
7446 self.assertEqual(1,d1.getNumberOfComponents());
7447 for i in xrange(12):
7448 self.assertEqual(expected[i],d1.getIJ(i,0));
7452 d1.transformWithIndArr(tab1)
7453 self.assertEqual(12,d1.getNumberOfTuples());
7454 self.assertEqual(1,d1.getNumberOfComponents());
7455 for i in xrange(12):
7456 self.assertEqual(expected[i],d1.getIJ(i,0));
7460 def testDAIBuildPermArrPerLevel1(self):
7461 arr=[2,0,1,1,0,1,2,0,1,1,0,0]
7462 expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
7463 da=DataArrayInt.New();
7464 da.setValues(arr,12,1);
7465 da2=da.buildPermArrPerLevel();
7466 self.assertEqual(12,da2.getNumberOfTuples());
7467 self.assertEqual(1,da2.getNumberOfComponents());
7468 for i in xrange(12):
7469 self.assertEqual(expected1[i],da2.getIJ(i,0));
7473 def testDAIOperations1(self):
7474 arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
7475 da=DataArrayInt.New();
7476 da.setValues(arr1,4,3);
7477 da1=DataArrayInt.New();
7480 self.assertRaises(InterpKernelException,DataArrayInt.Add,da,da1);#not same number of tuples/Components
7482 da2=DataArrayInt.Add(da,da1);
7483 self.assertEqual(4,da2.getNumberOfTuples());
7484 self.assertEqual(3,da2.getNumberOfComponents());
7485 expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
7486 for i in xrange(12):
7487 self.assertEqual(expected1[i],da2.getIJ(0,i));
7489 da1.substractEqual(da);
7490 expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
7491 for i in xrange(12):
7492 self.assertEqual(expected2[i],da1.getIJ(0,i));
7494 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7496 for i in xrange(12):
7497 self.assertEqual(expected1[i],da1.getIJ(0,i));
7499 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7500 da2=DataArrayInt.Multiply(da,da1);
7501 self.assertEqual(4,da2.getNumberOfTuples());
7502 self.assertEqual(3,da2.getNumberOfComponents());
7503 expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
7504 for i in xrange(12):
7505 self.assertEqual(expected3[i],da2.getIJ(0,i));
7507 da.divideEqual(da1);
7508 self.assertEqual(4,da.getNumberOfTuples());
7509 self.assertEqual(3,da.getNumberOfComponents());
7510 expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
7511 for i in xrange(12):
7512 self.assertEqual(expected4[i],da.getIJ(0,i));
7514 da.setValues(arr1,4,3);
7515 da1.multiplyEqual(da);
7516 self.assertEqual(4,da1.getNumberOfTuples());
7517 self.assertEqual(3,da1.getNumberOfComponents());
7518 for i in xrange(12):
7519 self.assertEqual(expected3[i],da1.getIJ(0,i));
7521 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7522 da2=DataArrayInt.Divide(da,da1);
7523 self.assertEqual(4,da2.getNumberOfTuples());
7524 self.assertEqual(3,da2.getNumberOfComponents());
7525 for i in xrange(12):
7526 self.assertEqual(expected4[i],da2.getIJ(0,i));
7529 self.assertEqual(4,da1.getNumberOfTuples());
7530 self.assertEqual(3,da1.getNumberOfComponents());
7531 expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
7532 for i in xrange(12):
7533 self.assertEqual(expected5[i],da1.getIJ(0,i));
7535 da1.applyDivideBy(2);
7536 self.assertEqual(4,da1.getNumberOfTuples());
7537 self.assertEqual(3,da1.getNumberOfComponents());
7538 expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
7539 for i in xrange(12):
7540 self.assertEqual(expected6[i],da1.getIJ(0,i));
7542 expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
7543 da1.applyModulus(7);
7544 for i in xrange(12):
7545 self.assertEqual(expected7[i],da1.getIJ(0,i));
7548 expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
7549 da1.applyRModulus(3);
7550 for i in xrange(12):
7551 self.assertEqual(expected8[i],da1.getIJ(0,i));
7555 def testEmulateMEDMEMBDC1(self):
7556 m,m1=MEDCouplingDataForTest.buildPointe_1();
7557 m2,da1,da2,da3,da4,da5,da0=m.emulateMEDMEMBDC(m1)
7558 expected0=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,36,37,32,33,34,35,38,39,40,41,42,43,44,45,46]
7559 expected1=[1,32,29,23,41,36]
7560 self.assertEqual(47,da0.getNumberOfTuples());
7561 self.assertEqual(1,da0.getNumberOfComponents());
7562 for i in xrange(47):
7563 self.assertEqual(expected0[i],da0.getIJ(0,i));
7565 self.assertEqual(6,da5.getNumberOfTuples());
7566 self.assertEqual(1,da5.getNumberOfComponents());
7568 self.assertEqual(expected1[i],da5.getIJ(0,i));
7570 expected2=[0,1,2,3,4,0,5,6,7,4,8,9,1,7,10,11,12,13,14,5,15,16,17,8,18,19,20,10,21,22,23,2,13,24,25,21,16,26,27,12,19,28,29,15,22,30,31,18,36,26,28,30,24,37,32,33,34,35,38,36,39,40,41,42,37,38,43,44,45,46]
7571 self.assertEqual(70,da1.getNumberOfTuples());
7572 self.assertEqual(1,da1.getNumberOfComponents());
7573 for i in xrange(70):
7574 self.assertEqual(expected2[i],da1.getIJ(0,i));
7576 expected3=[0,4,8,12,16,20,24,28,32,36,40,44,48,53,58,64,70]
7577 self.assertEqual(17,da2.getNumberOfTuples());
7578 self.assertEqual(1,da2.getNumberOfComponents());
7579 for i in xrange(17):
7580 self.assertEqual(expected3[i],da2.getIJ(0,i));
7582 expected4=[0,2,4,6,7,9,11,12,14,16,17,19,20,22,24,25,27,29,30,32,34,35,37,39,40,42,43,45,46,48,49,51,52,53,54,55,56,58,60,62,63,64,65,66,67,68,69,70]
7583 #expected4=[0,2,4,6,7,9,11,12,14,16,17,19,20,22,24,25,27,29,30,32,34,35,37,39,40,42,43,45,46,48,49,51,52,54,56,57,58,59,60,62,63,64,65,66,67,68,69,70];
7584 self.assertEqual(48,da4.getNumberOfTuples());
7585 self.assertEqual(1,da4.getNumberOfComponents());
7586 for i in xrange(48):
7587 self.assertEqual(expected4[i],da4.getIJ(0,i));
7589 expected5=[0,1,0,3,0,7,0,1,2,1,4,1,2,3,2,5,2,3,6,3,4,9,4,8,4,5,10,5,9,5,6,11,6,10,6,7,8,7,11,7,8,12,8,9,12,9,10,12,10,11,12,11,13,13,13,13,12,14,13,15,14,15,14,14,14,14,15,15,15,15]
7590 self.assertEqual(70,da3.getNumberOfTuples());
7591 self.assertEqual(1,da3.getNumberOfComponents());
7592 for i in xrange(70):
7593 self.assertEqual(expected5[i],da3.getIJ(0,i));
7597 def testGetLevArrPerCellTypes1(self):
7598 m,m1=MEDCouplingDataForTest.buildPointe_1();
7599 m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
7600 order=[NORM_TRI3,NORM_QUAD4];
7601 da0,da1=m1.getLevArrPerCellTypes(order);
7602 expected0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1]
7603 expected1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,36,37,32,33,34,35,38,39,40,41,42,43,44,45,46]
7604 self.assertEqual(47,da0.getNumberOfTuples());
7605 self.assertEqual(1,da0.getNumberOfComponents());
7606 for i in xrange(47):
7607 self.assertEqual(expected0[i],da0.getIJ(0,i));
7609 self.assertEqual(2,da1.getNumberOfTuples());
7610 self.assertEqual(1,da1.getNumberOfComponents());
7611 self.assertEqual(36,da1.getIJ(0,0));#36 TRI3
7612 self.assertEqual(11,da1.getIJ(1,0));#11 QUAD4
7614 da2=da0.buildPermArrPerLevel();
7616 self.assertEqual(47,da2.getNumberOfTuples());
7617 self.assertEqual(1,da2.getNumberOfComponents());
7618 for i in xrange(47):
7619 self.assertEqual(expected1[i],da2.getIJ(0,i));
7623 def testSortCellsInMEDFileFrmt1(self):
7624 m,m1=MEDCouplingDataForTest.buildPointe_1();
7626 da=DataArrayInt.New()
7627 da.setValues([0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13],16,1)
7628 daa=da.invertArrayN2O2O2N(16)
7629 m.renumberCells(daa,False)
7630 da2=m.sortCellsInMEDFileFrmt()
7631 self.assertEqual(da2.getValues(),[0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13])
7632 self.assertTrue(m.isEqual(m2,1e-12))
7633 self.assertTrue(da.isEqual(da2))
7636 def testBuildPartAndReduceNodes1(self):
7637 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7639 m2,da=m.buildPartAndReduceNodes(arr);
7640 self.assertEqual(5,m2.getNumberOfNodes());
7641 self.assertEqual(2,m2.getNumberOfCells());
7642 f=m2.getMeasureField(True);
7643 self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7644 self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7646 arr2=DataArrayInt.New()
7647 arr2.setValues(arr,2,1)
7648 m2,da=m.buildPartAndReduceNodes(arr2);
7649 self.assertEqual(5,m2.getNumberOfNodes());
7650 self.assertEqual(2,m2.getNumberOfCells());
7651 f=m2.getMeasureField(True);
7652 self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7653 self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7656 def testDAITransformWithIndArrR1(self):
7658 tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
7659 expected=[0,3,1,2,4,5]
7660 d=DataArrayInt.New();
7661 d.setValues(tab1,6,1);
7662 d1=DataArrayInt.New();
7663 d1.setValues(tab2,12,1);
7666 d3=d.transformWithIndArrR(d1);
7667 self.assertEqual(6,d3.getNumberOfTuples());
7668 self.assertEqual(1,d3.getNumberOfComponents());
7670 self.assertEqual(expected[i],d3.getIJ(i,0));
7674 d3=d.transformWithIndArrR(tab2)
7675 self.assertEqual(6,d3.getNumberOfTuples());
7676 self.assertEqual(1,d3.getNumberOfComponents());
7678 self.assertEqual(expected[i],d3.getIJ(i,0));
7682 def testDAISplitByValueRange1(self):
7683 val1=[6,5,0,3,2,7,8,1,4]
7685 d=DataArrayInt.New();
7686 d.setValues(val1,9,1);
7687 e,f,g=d.splitByValueRange(val2);
7688 self.assertEqual(9,e.getNumberOfTuples());
7689 self.assertEqual(1,e.getNumberOfComponents());
7690 self.assertEqual(9,f.getNumberOfTuples());
7691 self.assertEqual(1,f.getNumberOfComponents());
7692 self.assertEqual(2,g.getNumberOfTuples());
7693 self.assertEqual(1,g.getNumberOfComponents());
7695 expected1=[1,1,0,0,0,1,1,0,1]
7696 expected2=[2,1,0,3,2,3,4,1,0]
7698 self.assertEqual(expected1[i],e.getIJ(i,0));
7699 self.assertEqual(expected2[i],f.getIJ(i,0));
7701 self.assertEqual(0,g.getIJ(0,0));
7702 self.assertEqual(1,g.getIJ(1,0));
7705 self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
7708 def testUMeshSplitProfilePerType1(self):
7710 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7711 m.renumberCells(val0,False);
7714 d=DataArrayInt.New();
7715 d.setValues(val1,3,1);
7717 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7718 self.assertEqual(6,len(code));
7719 self.assertEqual(2,len(idsInPflPerType));
7720 expected1=[3,1,0, 4,2,1]
7722 self.assertEqual(expected1[i],code[i]);
7724 self.assertEqual(2,len(idsInPflPerType));
7725 self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7726 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7727 self.assertEqual(2,idsInPflPerType[1].getNumberOfTuples());
7728 self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7729 self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7731 self.assertEqual(2,len(pfls));
7732 self.assertEqual("sup",pfls[0].getName())
7733 self.assertEqual(1,pfls[0].getNumberOfTuples());
7734 self.assertEqual(0,pfls[0].getIJ(0,0));
7735 self.assertEqual("sup",pfls[1].getName())
7736 self.assertEqual(2,pfls[1].getNumberOfTuples());
7737 self.assertEqual(0,pfls[1].getIJ(0,0));
7738 self.assertEqual(1,pfls[1].getIJ(1,0));
7741 d=DataArrayInt.New();
7742 d.setValues(val2,4,1);
7743 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7744 self.assertEqual(6,len(code));
7745 self.assertEqual(2,len(idsInPflPerType));
7746 expected2=[3,1,0, 4,3,-1]
7748 self.assertEqual(expected2[i],code[i]);
7750 self.assertEqual(2,len(idsInPflPerType));
7751 self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7752 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7753 self.assertEqual(3,idsInPflPerType[1].getNumberOfTuples());
7754 self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7755 self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7756 self.assertEqual(3,idsInPflPerType[1].getIJ(2,0));
7758 self.assertEqual(1,len(pfls));
7759 self.assertEqual(1,pfls[0].getNumberOfTuples());
7760 self.assertEqual(0,pfls[0].getIJ(0,0));
7763 d=DataArrayInt.New();
7764 d.setValues(val3,3,1);
7765 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7766 self.assertEqual(6,len(code));
7767 self.assertEqual(2,len(idsInPflPerType));
7768 expected3=[3,2,0, 4,1,1]
7770 self.assertEqual(expected3[i],code[i]);
7772 self.assertEqual(2,len(idsInPflPerType));
7773 self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7774 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7775 self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7776 self.assertEqual(1,idsInPflPerType[1].getNumberOfTuples());
7777 self.assertEqual(2,idsInPflPerType[1].getIJ(0,0));
7779 self.assertEqual(2,len(pfls));
7780 self.assertEqual(2,pfls[0].getNumberOfTuples());
7781 self.assertEqual(1,pfls[0].getIJ(0,0));
7782 self.assertEqual(0,pfls[0].getIJ(1,0));
7783 self.assertEqual(0,pfls[1].getIJ(0,0));
7786 d=DataArrayInt.New();
7787 d.setValues(val4,2,1);
7788 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7789 self.assertEqual(3,len(code));
7790 self.assertEqual(1,len(idsInPflPerType));
7793 self.assertEqual(expected4[i],code[i]);
7795 self.assertEqual(1,len(idsInPflPerType));
7796 self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7797 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7798 self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7800 self.assertEqual(1,len(pfls));
7801 self.assertEqual(2,pfls[0].getNumberOfTuples());
7802 self.assertEqual(1,pfls[0].getIJ(0,0));
7803 self.assertEqual(2,pfls[0].getIJ(1,0));
7806 def testDAIBuildExplicitArrByRanges1(self):
7807 d=DataArrayInt.New();
7809 d.setValues(vals1,3,1);
7810 e=DataArrayInt.New();
7811 vals2=[0,3,6,10,14,20]
7812 e.setValues(vals2,6,1);
7814 f=d.buildExplicitArrByRanges(e);
7815 self.assertEqual(11,f.getNumberOfTuples());
7816 self.assertEqual(1,f.getNumberOfComponents());
7817 expected1=[0,1,2,6,7,8,9,10,11,12,13]
7818 for i in xrange(11):
7819 self.assertEqual(expected1[i],f.getIJ(i,0));
7823 def testDAIComputeOffsets2(self):
7824 d=DataArrayInt.New();
7826 expected1=[0,3,8,9,11,11,19]
7827 d.setValues(vals1,6,1);
7828 d.computeOffsets2();
7829 self.assertEqual(7,d.getNumberOfTuples());
7830 self.assertEqual(1,d.getNumberOfComponents());
7832 self.assertEqual(expected1[i],d.getIJ(0,i));
7836 def testMergeField3(self):
7837 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7838 m.getCoords().setInfoOnComponent(0,"x [m]");
7839 m.getCoords().setInfoOnComponent(1,"z [km]");
7841 m.setDescription("desc");
7842 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7845 arr=DataArrayDouble.New();
7847 arr.setInfoOnComponent(0,"X [m]");
7848 arr.setInfoOnComponent(1,"YY [mm]");
7849 arr.fillWithValue(2.);
7852 f2=MEDCouplingFieldDouble.MergeFields([f1]);
7853 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
7857 def testGetDistributionOfTypes1(self):
7858 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7860 self.assertRaises(InterpKernelException,m.getDistributionOfTypes);
7861 m.renumberCells(tab1,False);
7862 code=m.getDistributionOfTypes();
7863 self.assertEqual(2,len(code));
7864 self.assertEqual(3,code[0][0]);
7865 self.assertEqual(2,code[0][1]);
7866 self.assertEqual(0,code[0][2]);
7867 self.assertEqual(4,code[1][0]);
7868 self.assertEqual(3,code[1][1]);
7869 self.assertEqual(0,code[1][2]);
7872 def testNorm2_1(self):
7873 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7874 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7877 d=DataArrayDouble.New();
7878 tab=[1.2,1.3,2.2,2.3,3.2,3.3,4.2,4.3,5.2,5.3]
7879 d.setValues(tab,5,2);
7883 self.assertAlmostEqual(11.209371079592289,f.norm2(),14);
7887 def testNormMax1(self):
7888 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7889 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7892 d=DataArrayDouble.New();
7893 tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
7894 d.setValues(tab,5,2);
7898 self.assertAlmostEqual(7.8,f.normMax(),14);
7902 def testFindAndCorrectBadOriented3DExtrudedCells1(self):
7903 coords=[0.0011180339887498999, -0.0011755705045849499, 0.0, -0.0012331070204200001, -0.0011755705045849499, 0.0, -0.00067557050458494599, -0.00145964954842536, 0.0, -0.00050000000000000001, -0.00086602540378443902, 0.0, 0.00140211303259031, -0.00061803398874989504, 0.0, 0.00086602540378443902, -0.00050000000000000001, 0.0, 0.001, 0.0, 0.0, 0.00034561537182258202, 0.000269164072574575, 0.0, 0.0, 0.001, 0.0, -0.00050000000000000001, 0.00086602540378443902, 0.0, -0.000269164072574575, 0.00034561537182258202, 0.0, -0.001, 0.0, 0.0, -0.00086602540378443902, -0.00050000000000000001, 0.0, -0.00034561537182258202, -0.000269164072574575, 0.0, 0.0, -0.001, 0.0, 0.00050000000000000001, -0.00086602540378443902, 0.0, 0.000269164072574575, -0.00034561537182258202, 0.0, 0.0015, -6.01853107621011e-36, 0.0, 0.00056049747291484397, -0.00145964954842536, 0.0, 0.0011180339887498999, -0.0011755705045849499, 0.00050000000000000001, -0.0012331070204200001, -0.0011755705045849499, 0.00050000000000000001, -0.00067557050458494599, -0.00145964954842536, 0.00050000000000000001, -0.00050000000000000001, -0.00086602540378443902, 0.00050000000000000001, 0.00140211303259031, -0.00061803398874989504, 0.00050000000000000001, 0.00086602540378443902, -0.00050000000000000001, 0.00050000000000000001, 0.001, 0.0, 0.00050000000000000001, 0.00034561537182258202, 0.000269164072574575, 0.00050000000000000001, 0.0, 0.001, 0.00050000000000000001, -0.00050000000000000001, 0.00086602540378443902, 0.00050000000000000001, -0.000269164072574575, 0.00034561537182258202, 0.00050000000000000001, -0.001, 0.0, 0.00050000000000000001, -0.00086602540378443902, -0.00050000000000000001, 0.00050000000000000001, -0.00034561537182258202, -0.000269164072574575, 0.00050000000000000001, 0.0, -0.001, 0.00050000000000000001, 0.00050000000000000001, -0.00086602540378443902, 0.00050000000000000001, 0.000269164072574575, -0.00034561537182258202, 0.00050000000000000001, 0.0015, -6.01853107621011e-36, 0.00050000000000000001, 0.00056049747291484397, -0.00145964954842536, 0.00050000000000000001];
7904 conn=[2, 1, 3, 21, 20, 22, 4, 0, 5, 23, 19, 24, 8, 9, 10, 27, 28, 29, 11, 12, 13, 30, 31, 32, 0, 18, 15, 5, 19, 37, 34, 24, 6, 17, 4, 5, 25, 36, 23, 24, 3, 14, 16, 13, 22, 33, 35, 32, 13, 16, 7, 10, 32, 35, 26, 29]
7905 connExp=[16, 2, 1, 3, 21, 20, 22, 16, 4, 0, 5, 23, 19, 24, 16, 8, 10, 9, 27, 29, 28, 16, 11, 13, 12, 30, 32, 31, 18, 0, 18, 15, 5, 19, 37, 34, 24,18, 6, 17, 4, 5, 25, 36, 23, 24, 18, 3, 13, 16, 14, 22, 32, 35, 33, 18, 13, 10, 7, 16, 32, 29, 26, 35]
7906 invalidCells=[2,3,6,7]
7907 m=MEDCouplingUMesh.New("Example",3);
7908 coo=DataArrayDouble.New();
7909 coo.setValues(coords,38,3);
7912 m.insertNextCell(NORM_PENTA6,6,conn[0:6])
7913 m.insertNextCell(NORM_PENTA6,6,conn[6:12])
7914 m.insertNextCell(NORM_PENTA6,6,conn[12:18])
7915 m.insertNextCell(NORM_PENTA6,6,conn[18:24])
7916 m.insertNextCell(NORM_HEXA8,8,conn[24:32])
7917 m.insertNextCell(NORM_HEXA8,8,conn[32:40])
7918 m.insertNextCell(NORM_HEXA8,8,conn[40:48])
7919 m.insertNextCell(NORM_HEXA8,8,conn[48:56])
7920 m.finishInsertingCells();
7922 v=m.findAndCorrectBadOriented3DExtrudedCells();
7923 self.assertEqual(4,len(v));
7924 self.assertEqual(v.getValues(),invalidCells);
7925 self.assertEqual(connExp,m.getNodalConnectivity().getValues());
7926 self.assertTrue(m.findAndCorrectBadOriented3DExtrudedCells().empty())
7930 def testConvertExtrudedPolyhedra1(self):
7931 conn=[1,2,3,4, 5,6,7,8,9,10,11,12, 13,14,15,16, 17,18,19,20,21,22, 23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38, 39,40,41,42,43,44,45,46, 47,48,49,50,51,52,53,54,55,56,57,58, 59,60,61,62,63,64,65,66,67,68,69,70,71,72]
7932 m=MEDCouplingUMesh.New("Example",3);
7933 coo=DataArrayDouble.New();
7935 coo.rearrange(1); coo.iota(0); coo.rearrange(3);
7938 m.insertNextCell(NORM_TETRA4,4,conn[0:4])
7939 m.insertNextCell(NORM_HEXA8,8,conn[4:12])
7940 m.insertNextCell(NORM_TETRA4,4,conn[12:16])
7941 m.insertNextCell(NORM_POLYHED,6,conn[16:22])
7942 m.insertNextCell(NORM_PENTA6,6,conn[22:28])
7943 m.insertNextCell(NORM_POLYHED,10,conn[28:38])
7944 m.insertNextCell(NORM_HEXA8,8,conn[38:46])
7945 m.insertNextCell(NORM_HEXGP12,12,conn[46:58])
7946 m.insertNextCell(NORM_POLYHED,14,conn[58:72])
7947 m.finishInsertingCells();
7949 m.convertExtrudedPolyhedra();
7950 da=m.getNodalConnectivity();
7951 dai=m.getNodalConnectivityIndex();
7952 self.assertEqual(10,dai.getNbOfElems());
7953 self.assertEqual(159,da.getNbOfElems());
7955 expected1=[14, 1, 2, 3, 4,
7956 18, 5, 6, 7, 8, 9, 10, 11, 12,
7958 31, 17, 18, 19, -1, 20, 22, 21, -1, 17, 18, 21, 20, -1, 18, 19, 22, 21, -1, 19, 17, 20, 22,
7959 16, 23, 24, 25, 26, 27, 28,
7960 31, 29, 30, 31, 32, 33, -1, 34, 38, 37, 36, 35, -1, 29, 30, 35, 34, -1, 30, 31, 36, 35, -1, 31, 32, 37, 36, -1, 32, 33, 38, 37, -1, 33, 29, 34, 38,
7961 18, 39, 40, 41, 42, 43, 44, 45, 46,
7962 22, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7963 31, 59, 60, 61, 62, 63, 64, 65, -1, 66, 72, 71, 70, 69, 68, 67, -1, 59, 60, 67, 66, -1, 60, 61, 68, 67, -1, 61, 62, 69, 68, -1, 62, 63, 70, 69, -1, 63, 64, 71, 70, -1, 64, 65, 72, 71, -1, 65, 59, 66, 72];
7964 expected2=[0,5,14,19,42,49,86,95,108,159]
7965 self.assertEqual(expected1,da.getValues());
7966 self.assertEqual(expected2,dai.getValues());
7970 def testNonRegressionCopyTinyStrings(self):
7971 m=MEDCouplingDataForTest.build2DTargetMesh_1()
7972 f1=m.getMeasureField(True)
7973 f1.getArray().setInfoOnComponent(0,"P [N/m^2]")
7974 bary=m.getBarycenterAndOwner()
7975 f2=f1.buildNewTimeReprFromThis(NO_TIME,False)
7977 self.assertRaises(InterpKernelException,f1.copyTinyAttrFrom,f2)
7980 def testDaDSetPartOfValuesAdv1(self):
7981 tab1=[3.,4.,5., 13.,14.,15., 23.,24.,25., 33.,34.,35., 43.,44.,45., 53.,54.,55.]
7982 tab2=[6.,7.,8., 16.,17.,18., 26.,27.,28.]
7983 tab3=[4,1, 2,2, 3,0]
7984 a=DataArrayDouble.New();
7985 a.setValues(tab1,6,3);
7986 b=DataArrayDouble.New();
7987 b.setValues(tab2,3,3);
7988 c=DataArrayInt.New();
7989 c.setValues(tab3,3,2);
7991 a.setPartOfValuesAdv(b,c);
7992 expected1=[3.,4.,5., 13.,14.,15., 26.,27.,28., 6.,7.,8., 16.,17.,18., 53.,54.,55.]
7993 self.assertEqual(expected1,a.getValues());
7996 def testUMeshBuildSetInstanceFromThis1(self):
7997 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
7998 m2=m.buildSetInstanceFromThis(3);
7999 self.assertTrue(m.isEqual(m2,1e-12));
8001 m=MEDCouplingUMesh.New("toto",2);
8002 m2=m.buildSetInstanceFromThis(3);
8003 self.assertEqual(0,m2.getNumberOfNodes());
8004 self.assertEqual(0,m2.getNumberOfCells());
8007 def testUMeshMergeMeshesCVW1(self):
8008 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
8009 m2=MEDCouplingUMesh.New("toto",2);
8010 m3=MEDCouplingUMesh.MergeUMeshes([m,m2]);
8011 m3.setName(m.getName());
8012 self.assertTrue(m.isEqual(m3,1e-12));
8015 def testChangeUnderlyingMeshWithCMesh1(self):
8016 mesh=MEDCouplingCMesh.New();
8017 coordsX=DataArrayDouble.New();
8018 arrX=[ -1., 1., 2., 4. ]
8019 coordsX.setValues(arrX,4,1);
8020 coordsY=DataArrayDouble.New();
8021 arrY=[ -2., 2., 4., 8. ]
8022 coordsY.setValues(arrY,4,1);
8023 coordsZ=DataArrayDouble.New();
8024 arrZ=[ -3., 3., 6., 12. ]
8025 coordsZ.setValues(arrZ,4,1);
8026 mesh.setCoords(coordsX,coordsY,coordsZ);
8027 f=mesh.getMeasureField(True)
8028 mesh2=mesh.deepCpy()
8029 for myId in [0,1,2,10,11,12,20,21,22]:
8030 f=mesh.getMeasureField(True)
8031 f.changeUnderlyingMesh(mesh2,myId,1e-12);
8033 mesh2.setName("uuuu")
8034 for myId in [1,2,10,11,12,20,21,22]:
8035 f=mesh.getMeasureField(True)
8036 f.changeUnderlyingMesh(mesh2,myId,1e-12);
8040 def testDADFindCommonTuples1(self):
8041 da=DataArrayDouble.New();
8043 array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8044 da.setValues(array1,6,1)
8045 c,cI=da.findCommonTuples(1e-2);
8048 self.assertEqual(3,c.getNbOfElems());
8049 self.assertEqual(2,cI.getNbOfElems());
8050 self.assertEqual(expected1,c.getValues())
8051 self.assertEqual(expected2,cI.getValues())
8052 c,cI=da.findCommonTuples(2e-1)
8053 expected3=[0,3,4,1,2]
8055 self.assertEqual(5,c.getNbOfElems());
8056 self.assertEqual(3,cI.getNbOfElems());
8057 self.assertEqual(expected3,c.getValues())
8058 self.assertEqual(expected4,cI.getValues())
8060 array2=[2.3,2.3,1.2,1.2,1.3,1.3,2.3,2.3,2.301,2.301,0.8,0.8]
8061 da.setValues(array2,6,2)
8062 c,cI=da.findCommonTuples(1e-2);
8063 self.assertEqual(3,c.getNbOfElems());
8064 self.assertEqual(2,cI.getNbOfElems());
8065 self.assertEqual(expected1,c.getValues())
8066 self.assertEqual(expected2,cI.getValues())
8067 c,cI=da.findCommonTuples(2e-1)
8068 self.assertEqual(5,c.getNbOfElems());
8069 self.assertEqual(3,cI.getNbOfElems());
8070 self.assertEqual(expected3,c.getValues())
8071 self.assertEqual(expected4,cI.getValues())
8073 array3=[2.3,2.3,2.3,1.2,1.2,1.2,1.3,1.3,1.3,2.3,2.3,2.3,2.301,2.301,2.301,0.8,0.8,0.8]
8074 da.setValues(array3,6,3)
8075 c,cI=da.findCommonTuples(1e-2);
8076 self.assertEqual(3,c.getNbOfElems());
8077 self.assertEqual(2,cI.getNbOfElems());
8078 self.assertEqual(expected1,c.getValues())
8079 self.assertEqual(expected2,cI.getValues())
8080 c,cI=da.findCommonTuples(2e-1)
8081 self.assertEqual(5,c.getNbOfElems());
8082 self.assertEqual(3,cI.getNbOfElems());
8083 self.assertEqual(expected3,c.getValues())
8084 self.assertEqual(expected4,cI.getValues())
8085 # nbOftuples=1, no common groups
8086 array11=[2.3,1.2,1.3,2.4,2.5,0.8]
8087 da.setValues(array11,6,1)
8088 c,cI=da.findCommonTuples(1e-2);
8089 self.assertEqual(0,c.getNbOfElems());
8090 self.assertEqual(1,cI.getNbOfElems());
8091 self.assertEqual([0],cI.getValues())
8094 da.setValues(array12,6,4) #bad NumberOfComponents
8095 self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2);
8098 def testDABack1(self):
8099 da=DataArrayDouble.New();
8100 array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8101 da.setValues(array1,6,1);
8102 self.assertAlmostEqual(0.8,da.back(),14);
8104 self.assertRaises(InterpKernelException,da.back);
8106 self.assertRaises(InterpKernelException,da.back);
8108 da=DataArrayInt.New();
8110 da.setValues(array2,4,1);
8111 self.assertEqual(2,da.back());
8113 self.assertRaises(InterpKernelException,da.back);
8115 self.assertRaises(InterpKernelException,da.back);
8118 def testDADGetDifferentValues1(self):
8119 da=DataArrayDouble.New();
8120 array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8121 da.setValues(array1,6,1)
8123 expected1=[2.301,1.2,1.3,0.8]
8124 dv=da.getDifferentValues(1e-2);
8125 self.assertEqual(4,dv.getNbOfElems());
8127 self.assertAlmostEqual(expected1[i],dv.getIJ(i,0),14);
8130 dv=da.getDifferentValues(2e-1);
8131 expected2=[2.301,1.3,0.8]
8132 self.assertEqual(3,dv.getNbOfElems());
8134 self.assertAlmostEqual(expected2[i],dv.getIJ(i,0),14);
8138 def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
8141 a=DataArrayInt.New();
8142 a.setValues(arr,5,1);
8143 b=DataArrayInt.New();
8144 b.setValues(arrI,3,1);
8145 ret,newNbTuple=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(10,a,b);
8146 expected=[0,1,2,0,3,4,5,4,6,4]
8147 self.assertEqual(10,ret.getNbOfElems());
8148 self.assertEqual(7,newNbTuple);
8149 self.assertEqual(1,ret.getNumberOfComponents());
8150 self.assertEqual(expected,ret.getValues());
8151 self.assertRaises(InterpKernelException,DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2,9,a,b);
8154 def testDADIReverse1(self):
8156 a=DataArrayInt.New();
8157 a.setValues(arr,6,1);
8158 self.assertEqual(2,a.back());
8161 self.assertEqual(arr[5-i],a.getIJ(i,0));
8163 a.setValues(arr[:-1],5,1);
8166 self.assertEqual(arr[4-i],a.getIJ(i,0));
8169 arr2=[0.,3.,5.,7.,9.,2.]
8170 b=DataArrayDouble.New();
8171 b.setValues(arr2,6,1);
8174 self.assertAlmostEqual(arr2[5-i],b.getIJ(i,0),14);
8176 b.setValues(arr2[:5],5,1);
8177 self.assertAlmostEqual(9.,b.back(),14)
8180 self.assertAlmostEqual(arr2[4-i],b.getIJ(i,0),14);
8184 def testGetNodeIdsInUse1(self):
8185 m0=MEDCouplingDataForTest.build2DTargetMesh_1();
8187 m1=m0.buildPartOfMySelf(CellIds,True);
8188 arr,newNbOfNodes=m1.getNodeIdsInUse();
8189 expected=[-1,0,1,-1,2,3,-1,-1,-1]
8190 self.assertEqual(4,newNbOfNodes);
8191 self.assertEqual(9,arr.getNbOfElems());
8192 self.assertEqual(expected,arr.getValues());
8193 arr2=arr.invertArrayO2N2N2O(newNbOfNodes);
8194 self.assertEqual(4,arr2.getNbOfElems());
8196 self.assertEqual(expected2,arr2.getValues());
8199 def testBuildDescendingConnec2(self):
8200 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8202 mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8203 mesh2.checkCoherency();
8204 self.assertEqual(1,mesh2.getMeshDimension());
8205 self.assertEqual(13,mesh2.getNumberOfCells());
8206 self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
8207 self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
8208 self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
8209 self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
8210 expected1=[1,2,3,4,-3,5,6, 7,8,-5,9,10,-2,11, 12,13,-7,-10]
8211 self.assertEqual(expected1,desc.getValues());
8212 expected2=[0,4,7,10,14,18]
8213 self.assertEqual(expected2,descIndx.getValues());
8214 expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18]
8215 self.assertEqual(expected3,revDescIndx.getValues());
8216 expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4]
8217 self.assertEqual(expected4,revDesc.getValues());
8218 conn=mesh2.getNodalConnectivity();
8219 connIndex=mesh2.getNodalConnectivityIndex();
8220 expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39]
8221 self.assertEqual(expected5,connIndex.getValues());
8222 expected6=[1, 0, 3, 1, 3, 4, 1, 4, 1, 1, 1, 0, 1, 4, 2, 1, 2, 1, 1, 4, 5, 1, 5, 2, 1, 6, 7, 1, 7, 4, 1, 3, 6, 1, 7, 8, 1, 8, 5]
8223 self.assertEqual(expected6,conn.getValues());
8226 def testIntersect2DMeshesTmp1(self):
8227 m1c=MEDCouplingCMesh.New();
8228 coordsX=DataArrayDouble.New();
8229 arrX=[ -1., 1., 2., 4. ]
8230 coordsX.setValues(arrX,4,1);
8231 m1c.setCoordsAt(0,coordsX);
8232 coordsY=DataArrayDouble.New();
8233 arrY=[ -2., 2., 4., 8. ]
8234 coordsY.setValues(arrY,4,1);
8235 m1c.setCoordsAt(1,coordsY);
8236 m1=m1c.buildUnstructured()
8237 m1bis=m1.buildPartOfMySelf([3,4,5],False)
8239 m2=m2.buildPartOfMySelf([0,1,2],False)
8240 m2.translate([0.5,0.5])
8242 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1bis,m2,1e-10)
8243 expected1=[0,0,1,1,1,2,2,2]
8244 expected2=[0,-1,0,1,-1,1,2,-1]
8245 self.assertEqual(8,d1.getNumberOfTuples());
8246 self.assertEqual(8,d2.getNumberOfTuples());
8247 self.assertEqual(8,m3.getNumberOfCells());
8248 self.assertEqual(22,m3.getNumberOfNodes());
8249 self.assertEqual(2,m3.getSpaceDimension());
8250 self.assertEqual(expected1,d1.getValues());
8251 self.assertEqual(expected2,d2.getValues());
8252 expected3=[5,17,1,16,12,5,16,0,4,5,17,12,5,18,1,17,13,5,19,2,18,13,5,17,5,6,19,13,5,20,2,19,14,5,21,3,20,14,5,19,6,7,21,14]
8253 expected4=[0,5,12,17,22,28,33,38,44]
8254 expected5=[-1.0,2.0,1.0,2.0,2.0,2.0,4.0,2.0,-1.0,4.0,1.0,4.0,2.0,4.0,4.0,4.0,-0.5,-1.5,1.5,-1.5,2.5,-1.5,4.5,-1.5,-0.5,2.5,1.5,2.5,2.5,2.5,4.5,2.5,-0.5,2.0,1.0,2.5,1.5,2.0,2.0,2.5,2.5,2.0,4.0,2.5]
8255 self.assertEqual(44,m3.getNodalConnectivity().getNumberOfTuples());
8256 self.assertEqual(9,m3.getNodalConnectivityIndex().getNumberOfTuples());
8257 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8258 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8259 for i in xrange(44):
8260 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8264 def testFindNodesOnLine1(self):
8265 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8273 res=mesh.findNodesOnLine(pt,vec,1e-12);
8274 self.assertEqual(3,len(res));
8275 self.assertEqual(expected1,res.getValues());
8277 mesh.changeSpaceDimension(3);
8278 mesh.rotate(pt2,vec2,pi/4.);
8279 res=mesh.findNodesOnLine(pt3,vec3,1e-12);
8280 self.assertEqual(3,len(res));
8281 self.assertEqual(expected1,res.getValues());
8284 def testIntersect2DMeshesTmp2(self):
8285 m1c=MEDCouplingCMesh.New();
8286 coordsX1=DataArrayDouble.New();
8287 arrX1=[ 0., 1., 1.5, 2. ]
8288 coordsX1.setValues(arrX1,4,1);
8289 m1c.setCoordsAt(0,coordsX1);
8290 coordsY1=DataArrayDouble.New();
8291 arrY1=[ 0., 1.5, 3.]
8292 coordsY1.setValues(arrY1,3,1);
8293 m1c.setCoordsAt(1,coordsY1);
8294 m1=m1c.buildUnstructured();
8295 m2c=MEDCouplingCMesh.New();
8296 coordsX2=DataArrayDouble.New();
8297 arrX2=[ 0., 1., 2. ]
8298 coordsX2.setValues(arrX2,3,1);
8299 m2c.setCoordsAt(0,coordsX2);
8300 coordsY2=DataArrayDouble.New();
8302 coordsY2.setValues(arrY2,3,1);
8303 m2c.setCoordsAt(1,coordsY2);
8304 m2=m2c.buildUnstructured();
8306 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8308 expected1=[0,0,1,1,2,2,3,4,5]
8309 expected2=[0,2,1,3,1,3,2,3,3]
8310 self.assertEqual(9,d1.getNumberOfTuples());
8311 self.assertEqual(9,d2.getNumberOfTuples());
8312 self.assertEqual(9,m3.getNumberOfCells());
8313 self.assertEqual(22,m3.getNumberOfNodes());
8314 self.assertEqual(2,m3.getSpaceDimension());
8315 self.assertEqual(expected1,d1.getValues());
8316 self.assertEqual(expected2,d2.getValues());
8317 expected3=[5,16,13,12,15,5,15,4,5,16,5,21,2,13,16,5,16,5,6,21,5,17,14,2,21,5,21,6,7,17,5,4,18,19,5,5,5,19,10,6,5,6,10,20,7]
8318 expected4=[0,5,10,15,20,25,30,35,40,45]
8319 expected5=[0.0,0.0,1.0,0.0,1.5,0.0,2.0,0.0,0.0,1.5,1.0,1.5,1.5,1.5,2.0,1.5,0.0,3.0,1.0,3.0,1.5,3.0,2.0,3.0,0.0,0.0,1.0,0.0,2.0,0.0,0.0,1.0,1.0,1.0,2.0,1.0,0.0,3.0,1.0,3.0,2.0,3.0,1.5,1.0]
8320 self.assertEqual(45,m3.getNodalConnectivity().getNumberOfTuples());
8321 self.assertEqual(10,m3.getNodalConnectivityIndex().getNumberOfTuples());
8322 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8323 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8324 for i in xrange(44):
8325 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8329 def testBuildPartOfMySelfSafe1(self):
8330 mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
8331 self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True)
8332 self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,4,5,4],True)
8335 def testIntersect2DMeshesTmp3(self):
8336 m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
8337 m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
8338 m1=MEDCouplingUMesh.New();
8339 m1.setMeshDimension(2);
8340 m1.allocateCells(8);
8341 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8342 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8343 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8344 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8345 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8346 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8347 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8348 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8349 m1.finishInsertingCells();
8350 myCoords1=DataArrayDouble.New();
8351 myCoords1.setValues(m1Coords,25,2);
8352 m1.setCoords(myCoords1);
8354 m2Coords=[0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1,-1.1,-1.,0.,-1.,1.1,-1,1.7,-1.]
8355 m2Conn=[0,3,2,1, 1,2,5,4, 7,6,3,0, 8,9,6,7, 7,0,12,11, 8,7,11,10, 0,1,13,12, 1,4,14,13]
8356 m2=MEDCouplingUMesh.New();
8357 m2.setMeshDimension(2);
8358 m2.allocateCells(8);
8360 m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8362 m2.finishInsertingCells();
8363 myCoords2=DataArrayDouble.New();
8364 myCoords2.setValues(m2Coords,15,2);
8365 m2.setCoords(myCoords2);
8367 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8370 expected1=[0,1,1,1,2,3,3,3,4,5,5,5,6,7,7,7]
8371 expected2=[0,0,1,-1,2,2,3,-1,4,4,5,-1,6,6,7,-1]
8372 self.assertEqual(16,d1.getNumberOfTuples());
8373 self.assertEqual(16,d2.getNumberOfTuples());
8374 self.assertEqual(16,m3.getNumberOfCells());
8375 self.assertEqual(104,m3.getNumberOfNodes());
8376 self.assertEqual(2,m3.getSpaceDimension());
8377 self.assertEqual(expected1,d1.getValues());
8378 self.assertEqual(expected2,d2.getValues());
8379 expected3=[6,28,1,25,44,45,46,8,26,1,28,27,47,48,49,50,8,40,2,26,27,51,52,53,54,8,28,4,40,27,55,56,57,58,6,28,25,5,59,60,61,8,28,5,32,31,62,63,64,65,8,32,6,41,31,66,67,68,69,8,41,4,28,31,70,71,72,73,6,25,37,5,74,75,76,8,32,5,37,36,77,78,79,80,8,42,6,32,36,81,82,83,84,8,37,8,42,36,85,86,87,88,6,1,37,25,89,90,91,8,37,1,26,38,92,93,94,95,8,26,2,43,38,96,97,98,99,8,43,8,37,38,100,101,102,103]
8380 expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8381 expected5=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,1.118033988749895,1.,-1.118033988749895,1.,-1.118033988749895,-1.,1.118033988749895,-1.,0.7071067811865477,0.7071067811865476,0.5,0.,0.,0.5,1.05,0.,0.7071067811865475,0.7071067811865477,0.55,1.,1.1,0.5,1.4012585384440737,0.535233134659635,1.3,0.,1.1,0.5,1.1090169943749475,1.,0.,1.25,0.6123724356957946,1.369306393762915,1.1090169943749475,1.,0.55,1.,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-0.7071067811865475,0.7071067811865477,-1.05,0.,-1.1,0.5,-0.55,1.,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.1090169943749475,1.,-1.1,0.5,-0.6123724356957941,1.3693063937629155,0.,1.25,-0.55,1.,-1.1090169943749475,1.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.5,0.,-1.05,0.,-0.7071067811865478,-0.7071067811865475,-0.55,-1.,-1.1,-0.5,-1.4012585384440734,-0.5352331346596354,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,0.,-1.25,-0.6123724356957945,-1.369306393762915,-1.1090169943749475,-1.,-0.55,-1.,0.7071067811865475,-0.7071067811865477,0.,-0.5,0.5,0.,0.7071067811865477,-0.7071067811865475,1.05,0.,1.1,-0.5,0.55,-1.,1.3,0.,1.4012585384440737,-0.535233134659635,1.1090169943749475,-1.,1.1,-0.5,0.6123724356957946,-1.369306393762915,0.,-1.25,0.55,-1.,1.1090169943749475,-1.0]
8382 self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8383 self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8384 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8385 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8386 for i in xrange(208):
8387 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8391 def testUMeshTessellate2D1(self):
8392 m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
8393 m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
8394 m1=MEDCouplingUMesh.New();
8395 m1.setMeshDimension(2);
8396 m1.allocateCells(8);
8397 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8398 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8399 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8400 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8401 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8402 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8403 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8404 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8405 m1.finishInsertingCells();
8406 myCoords1=DataArrayDouble.New();
8407 myCoords1.setValues(m1Coords,25,2);
8408 m1.setCoords(myCoords1);
8411 m11.tessellate2D(1.);
8412 self.assertTrue(m11.getCoords().isEqual(m11.getCoords(),1e-12));
8413 expected1=[5,0,3,11,1,5,3,4,12,2,1,11,5,5,15,3,0,5,6,16,4,3,15,5,5,5,0,7,19,5,6,5,19,7,8,20,5,0,1,23,7,5,1,2,24,8,7,23]
8414 expected2=[0,5,12,17,24,29,36,41,48]
8415 self.assertEqual(48,m11.getNodalConnectivity().getNumberOfTuples());
8416 self.assertEqual(9,m11.getNodalConnectivityIndex().getNumberOfTuples());
8417 self.assertEqual(expected1,m11.getNodalConnectivity().getValues());
8418 self.assertEqual(expected2,m11.getNodalConnectivityIndex().getValues());
8421 m12.tessellate2D(0.5);
8422 self.assertEqual(41,m12.getNumberOfNodes());
8423 expected3=[5,0,3,25,26,1,5,3,4,27,28,2,1,26,25,5,5,29,30,3,0,5,6,31,32,4,3,30,29,5,5,5,0,7,33,34,5,6,5,34,33,7,8,35,36,5,0,1,37,38,7,5,1,2,39,40,8,7,38,37]
8424 expected4=[0,6,15,21,30,36,45,51,60]
8425 expected5=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,0.479425538604203,0.8775825618903728,0.8414709848078964,0.54030230586814,0.7191383079063044,1.3163738428355591,1.2622064772118446,0.8104534588022099,-0.877582561890373,0.4794255386042027,-0.5403023058681399,0.8414709848078964,-1.3163738428355596,0.7191383079063038,-0.8104534588022098,1.2622064772118446,-0.4794255386042031,-0.8775825618903728,-0.8414709848078965,-0.5403023058681399,-0.7191383079063045,-1.3163738428355591,-1.2622064772118449,-0.8104534588022098,0.8775825618903729,-0.47942553860420295,0.54030230586814,-0.8414709848078964,1.3163738428355594,-0.7191383079063043,0.8104534588022099,-1.2622064772118446]
8426 for i in xrange(82):
8427 self.assertAlmostEqual(expected5[i],m12.getCoords().getIJ(0,i),12);
8429 self.assertEqual(60,m12.getNodalConnectivity().getNumberOfTuples());
8430 self.assertEqual(9,m12.getNodalConnectivityIndex().getNumberOfTuples());
8431 self.assertEqual(expected3,m12.getNodalConnectivity().getValues());
8432 self.assertEqual(expected4,m12.getNodalConnectivityIndex().getValues());
8435 def testIntersect2DMeshesTmp4(self):
8436 m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214];
8437 m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23];
8438 m1=MEDCouplingUMesh.New();
8439 m1.setMeshDimension(2);
8440 m1.allocateCells(8);
8441 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8442 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8443 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8444 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8445 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8446 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8447 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8448 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8449 m1.finishInsertingCells();
8450 myCoords1=DataArrayDouble.New();
8451 myCoords1.setValues(m1Coords,25,2);
8452 m1.setCoords(myCoords1);
8454 m2Coords=[0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1,-1.1,-1.,0.,-1.,1.1,-1,1.7,-1.]
8455 m2Conn=[0,3,2,1, 1,2,5,4, 7,6,3,0, 8,9,6,7, 7,0,12,11, 8,7,11,10, 0,1,13,12, 1,4,14,13]
8456 m2=MEDCouplingUMesh.New();
8457 m2.setMeshDimension(2);
8458 m2.allocateCells(8);
8460 m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8462 m2.finishInsertingCells();
8463 myCoords2=DataArrayDouble.New();
8464 myCoords2.setValues(m2Coords,15,2);
8465 m2.setCoords(myCoords2);
8467 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10)
8470 expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
8471 expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1]
8472 self.assertEqual(16,d1.getNumberOfTuples());
8473 self.assertEqual(16,d2.getNumberOfTuples());
8474 self.assertEqual(16,m3.getNumberOfCells());
8475 self.assertEqual(104,m3.getNumberOfNodes());
8476 self.assertEqual(2,m3.getSpaceDimension());
8477 self.assertEqual(expected1,d1.getValues());
8478 self.assertEqual(expected2,d2.getValues());
8479 expected3=[6,16,15,18,44,45,46,8,18,2,1,16,47,48,49,50,8,17,1,2,40,51,52,53,54,8,40,5,4,17,55,56,57,58,6,18,15,20,59,60,61,8,20,7,6,18,62,63,64,65,8,41,6,7,21,66,67,68,69,8,21,8,9,41,70,71,72,73,6,20,15,22,74,75,76,8,22,11,7,20,77,78,79,80,8,21,7,11,42,81,82,83,84,8,42,10,8,21,85,86,87,88,6,22,15,16,89,90,91,8,16,1,13,22,92,93,94,95,8,43,13,1,17,96,97,98,99,8,17,4,14,43,100,101,102,103]
8480 expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8481 expected5=[0.,0.,1.1, 0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,1.1180339887498951,1.,-1.1180339887498951,1.,-1.1180339887498951,-1.,1.1180339887498951,-1.,0.5,0.,0.,0.5,0.7071067811865477,0.7071067811865476,0.55,1.,1.1,0.5,1.05,0.,0.7071067811865477,0.7071067811865475,1.3,0.,1.1,0.5,1.1090169943749475,1.,1.4012585384440737,0.535233134659635,1.4090169943749475,1.,1.7,0.5,1.6,0.,1.4012585384440737,0.535233134659635,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-1.05,0.,-1.1,0.5,-0.55,1.,-0.7071067811865478,0.7071067811865475,-1.1090169943749475,1.,-1.1,0.5,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.6,0.,-1.7,0.5,-1.4090169943749475,1.,-1.4012585384440737,0.5352331346596344,-0.5,0.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.55,-1.,-1.1,-0.5,-1.05,0.,-0.7071067811865475,-0.7071067811865477,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,-1.4012585384440734,-0.5352331346596354,-1.4090169943749475,-1.,-1.7,-0.5,-1.6,0.,-1.4012585384440732,-0.5352331346596354,0.,-0.5,0.5,0.,0.7071067811865475,-0.7071067811865477,1.05,0.,1.1,-0.5,0.55,-1.,0.7071067811865475,-0.7071067811865477,1.1090169943749475,-1.,1.1,-0.5,1.3,0.,1.4012585384440737,-0.535233134659635,1.6,0.,1.7,-0.5,1.4090169943749475,-1.,1.4012585384440737,-0.535233134659635]
8482 self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8483 self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8484 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8485 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8486 for i in xrange(208):
8487 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8491 def testGetCellIdsCrossingPlane1(self):
8492 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8494 origin=[1.524,1.4552,1.74768]
8495 ids1=mesh3D.getCellIdsCrossingPlane(origin,vec,1e-10)
8496 self.assertEqual([1,3,4,7,9,10,13,15,16],ids1.getValues())
8498 ids2=mesh3D.getCellIdsCrossingPlane(origin,vec2,1e-10)
8499 self.assertEqual([6,7,8,9,10,11],ids2.getValues())
8502 def testBuildSlice3D1(self):
8503 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8504 vec1=[-0.07,1.,0.07]
8505 origin1=[1.524,1.4552,1.74768]
8506 slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
8507 expected1=[1,3,4,7,9,10,13,15,16]
8508 expected2=[5,42,41,40,43,44,5,42,46,45,41,5,44,43,40,47,48,5,49,42,44,50,5,49,51,46,42,5,50,44,48,52,5,53,49,50,54,5,53,55,51,49,5,54,50,52,56]
8509 expected3=[0,6,11,17,22,27,32,37,42,47]
8510 expected4=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,2.,2.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,2.,2.,1.,1.,1.,2.,1.,1.25,2.,1.,1.5,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,1.,1.,3.,1.,1.25,3.,1.,1.5,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,1.,1.5408576,0.,2.,1.6108576000000001,0.,2.,1.5408576,1.,1.,1.5,0.5836800000000008,1.,1.4708576,1.,3.,1.6808576,0.,3.,1.6108576000000001,1.,0.,1.4708576,0.,0.,1.4008576,1.,2.,1.4708576,2.,1.,1.4008576000000001,2.,3.,1.5408575999999998,2.,0.,1.3308575999999999,2.,2.,1.4008576,3.,1.,1.3308576,3.,3.,1.4708576,3.,0.,1.2608576,3.]
8511 self.assertEqual(2,slice1.getMeshDimension());
8512 self.assertEqual(3,slice1.getSpaceDimension());
8513 self.assertEqual(57,slice1.getNumberOfNodes());
8514 self.assertEqual(9,slice1.getNumberOfCells());
8515 self.assertEqual(9,ids.getNumberOfTuples());
8516 self.assertEqual(47,slice1.getNodalConnectivity().getNumberOfTuples());
8517 self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8518 self.assertEqual(expected1,ids.getValues());
8519 self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8520 self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8521 for i in xrange(171):
8522 self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8524 # 2nd slice based on already existing nodes of mesh3D.
8527 slice1,ids=mesh3D.buildSlice3D(origin2,vec2,1e-10);
8528 expected5=[5,50,10,4,51,5,50,52,7,10,5,51,4,5,53,5,54,50,51,55,56,5,54,57,52,50,5,56,55,51,53,58,5,38,59,56,54,43,5,54,57,46,43,5,38,59,56,58,48]
8529 expected6=[0,5,10,15,21,26,32,38,43,49]
8530 expected7=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,1.,3.,0.,2.,2.,0.,2.,3.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25,2.,1.,0.,2.,1.,1.5,2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,0.,0.,3.,1.,1.,3.,1.,1.25,3.,1.,0.,3.,1.,1.5,3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,2.,1.6666666666666667,1.,1.,1.6666666666666667,1.,3.,1.6666666666666667,1.,0.,1.6666666666666667,1.,2.,1.3333333333333335,2.,1.,1.5,1.5,1.,1.3333333333333333,2.,3.,1.3333333333333335,2.,0.,1.3333333333333335,2.,1.,1.25,2.25]
8531 self.assertEqual(2,slice1.getMeshDimension());
8532 self.assertEqual(3,slice1.getSpaceDimension());
8533 self.assertEqual(60,slice1.getNumberOfNodes());
8534 self.assertEqual(9,slice1.getNumberOfCells());
8535 self.assertEqual(9,ids.getNumberOfTuples());
8536 self.assertEqual(49,slice1.getNodalConnectivity().getNumberOfTuples());
8537 self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8538 self.assertEqual(expected1,ids.getValues());
8539 self.assertEqual(expected5,slice1.getNodalConnectivity().getValues());
8540 self.assertEqual(expected6,slice1.getNodalConnectivityIndex().getValues());
8541 for i in xrange(180):
8542 self.assertAlmostEqual(expected7[i],slice1.getCoords().getIJ(0,i),12);
8544 # 3rd slice based on shared face of mesh3D.
8547 slice1,ids=mesh3D.buildSlice3D(origin3,vec3,1e-10);
8548 expected8=[6,7,8,9,10,11,12,13,14,15,16,17]
8549 expected9=[5,15,26,16,18,5,16,21,28,22,19,17,5,18,20,21,16,5,21,24,25,28,5,26,16,17,19,22,23,5,22,27,29,28,5,15,26,16,18,5,16,21,28,22,19,17,5,18,20,21,16,5,21,24,25,28,5,26,16,17,19,22,23,5,22,27,29,28]
8550 expected10=[0,5,12,17,22,29,34,39,46,51,56,63,68]
8551 expected11=[0.,0.,1.,1.,1.,1.,1.,1.25,1.,1.,0.,1.,1.,1.5,1.,2.,0.,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25,2.,1.,0.,2.,1.,1.5,2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,1.,3.,2.,2.,2.,2.,2.,3.,2.,0.,0.,3.,1.,1.,3.,1.,1.25,3.,1.,0.,3.,1.,1.5,3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,1.,3.,3.,2.,2.,3.,2.,3.,3.]
8552 self.assertEqual(2,slice1.getMeshDimension());
8553 self.assertEqual(3,slice1.getSpaceDimension());
8554 self.assertEqual(45,slice1.getNumberOfNodes());
8555 self.assertEqual(12,slice1.getNumberOfCells());
8556 self.assertEqual(12,ids.getNumberOfTuples());
8557 self.assertEqual(68,slice1.getNodalConnectivity().getNumberOfTuples());
8558 self.assertEqual(13,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8559 self.assertEqual(expected8,ids.getValues());
8560 self.assertEqual(expected9,slice1.getNodalConnectivity().getValues());
8561 self.assertEqual(expected10,slice1.getNodalConnectivityIndex().getValues());
8562 for i in xrange(135):
8563 self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12);
8567 def testBuildSlice3DSurf1(self):
8568 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8569 mesh2D=mesh3D.buildDescendingConnectivity()[0];
8570 vec1=[-0.07,1.,0.07]
8571 origin1=[1.524,1.4552,1.74768]
8572 slice1,ids=mesh2D.buildSlice3DSurf(origin1,vec1,1e-10);
8573 expected1=[6,8,10,11,13,18,19,21,23,25,26,38,41,43,47,49,52,53,64,67,69,73,75,78,79]
8574 expected2=[1,40,41,1,42,41,1,40,43,1,44,43,1,42,44,1,45,41,1,42,46,1,46,45,1,47,40,1,47,48,1,44,48,1,49,42,1,44,50,1,49,50,1,49,51,1,51,46,1,48,52,1,50,52,1,53,49,1,50,54,1,53,54,1,53,55,1,55,51,1,52,56,1,54,56]
8575 expected3=[0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75];
8576 expected4=[1.,1.,0.,1.,1.25,0.,1.,1.5,0.,2.,1.,0.,1.,2.,0.,0.,2.,0.,3.,1.,0.,3.,2.,0.,0.,1.,0.,2.,2.,0.,1.,1.,1.,1.,1.25,1.,1.,1.5,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,2.,2.,1.,1.,1.,2.,1.,1.25,2.,1.,1.5,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,2.,2.,2.,1.,1.,3.,1.,1.25,3.,1.,1.5,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,2.,2.,3.,1.,1.5408576,0.,2.,1.6108576000000001,0.,2.,1.5408576,1.,1.,1.5,0.5836800000000008,1.,1.4708576,1.,3.,1.6808576,0.,3.,1.6108576000000001,1.,0.,1.4708576,0.,0.,1.4008576,1.,2.,1.4708576,2.,1.,1.4008576000000001,2.,3.,1.5408575999999998,2.,0.,1.3308575999999999,2.,2.,1.4008576,3.,1.,1.3308576,3.,3.,1.4708576,3.,0.,1.2608576,3.]
8577 self.assertEqual(1,slice1.getMeshDimension());
8578 self.assertEqual(3,slice1.getSpaceDimension());
8579 self.assertEqual(57,slice1.getNumberOfNodes());
8580 self.assertEqual(25,slice1.getNumberOfCells());
8581 self.assertEqual(25,ids.getNumberOfTuples());
8582 self.assertEqual(75,slice1.getNodalConnectivity().getNumberOfTuples());
8583 self.assertEqual(26,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8584 self.assertEqual(expected1,ids.getValues());
8585 self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8586 self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8587 for i in xrange(171):
8588 self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8593 slice1,ids=mesh2D.buildSlice3DSurf(origin2,vec2,1e-10);
8594 expected5=[32,32,32,32,33,34,35,36,37,38,39,40,41,42,43,43,43,43,43,43,44,44,44,44,45,46,47,47,47,47,48,49,50,51,52,53,53,53,53,53,53,54,54,54,54,55,56,57,59,60,61,62,63,64,65,66,67,68,71,72,74,75,76,77,78,81,82,83]
8595 expected6=[1,15,18,1,18,16,1,16,26,1,26,15,1,26,15,1,16,26,1,18,16,1,15,18,1,16,21,1,21,28,1,22,28,1,19,22,1,17,19,1,16,17,1,16,21,1,21,28,1,28,22,1,22,19,1,19,17,1,17,16,1,16,18,1,18,20,1,20,21,1,21,16,1,20,21,1,18,20,1,28,21,1,21,24,1,24,25,1,25,28,1,25,28,1,24,25,1,21,24,1,23,22,1,26,23,1,26,16,1,16,17,1,17,19,1,19,22,1,22,23,1,23,26,1,22,28,1,28,29,1,29,27,1,27,22,1,27,22,1,29,27,1,28,29,1,26,15,1,16,26,1,18,16,1,15,18,1,16,21,1,21,28,1,22,28,1,19,22,1,17,19,1,16,17,1,20,21,1,18,20,1,25,28,1,24,25,1,21,24,1,23,22,1,26,23,1,27,22,1,29,27,1,28,29]
8596 expected7=[0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,201,204];
8597 expected8=[0.,0.,1.,1.,1.,1.,1.,1.25, 1.,1.,0.,1.,1.,1.5, 1.,2.,0.,1.,2.,1.,1.,1.,2.,1.,0.,2.,1.,3.,1.,1.,3.,2.,1.,0.,1.,1.,1.,3.,1.,2.,2.,1.,2.,3.,1.,0.,0.,2.,1.,1.,2.,1.,1.25, 2.,1.,0.,2.,1.,1.5, 2.,2.,0.,2.,2.,1.,2.,1.,2.,2.,0.,2.,2.,3.,1.,2.,3.,2.,2.,0.,1.,2.,1.,3.,2.,2.,2.,2.,2.,3.,2.,0.,0.,3.,1.,1.,3.,1.,1.25, 3.,1.,0.,3.,1.,1.5, 3.,2.,0.,3.,2.,1.,3.,1.,2.,3.,0.,2.,3.,3.,1.,3.,3.,2.,3.,0.,1.,3.,1.,3.,3.,2.,2.,3.,2.,3.,3.]
8598 self.assertEqual(1,slice1.getMeshDimension());
8599 self.assertEqual(3,slice1.getSpaceDimension());
8600 self.assertEqual(45,slice1.getNumberOfNodes());
8601 self.assertEqual(68,slice1.getNumberOfCells());
8602 self.assertEqual(68,ids.getNumberOfTuples());
8603 self.assertEqual(204,slice1.getNodalConnectivity().getNumberOfTuples());
8604 self.assertEqual(69,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8605 self.assertEqual(expected5,ids.getValues());
8606 self.assertEqual(expected6,slice1.getNodalConnectivity().getValues());
8607 self.assertEqual(expected7,slice1.getNodalConnectivityIndex().getValues());
8608 for i in xrange(135):
8609 self.assertAlmostEqual(expected8[i],slice1.getCoords().getIJ(0,i),12);
8613 def testDataArrayDoubleAdvSetting1(self):
8614 data1=[1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.]
8615 data2=[8.,38.,9.,39.,0.,30.,11.,41.,12.,42.]
8616 compsCpp=["comp1","comp2"]
8617 da=DataArrayDouble.New();
8618 da.setInfoAndChangeNbOfCompo(compsCpp);
8621 compsCpp=compsCpp[:-1]
8622 self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8623 da.setValues(data1,7,2)
8625 p=[(0,3),(3,5),(5,7)]
8626 tmp=da.selectByTupleRanges(p);
8627 self.assertTrue(tmp.isEqual(da,1e-14));
8628 p=[(0,2),(3,4),(5,7)]
8629 tmp=da.selectByTupleRanges(p);
8630 expected1=[1.,11.,2.,12.,4.,14.,6.,16.,7.,17.]
8631 self.assertEqual(5,tmp.getNumberOfTuples());
8632 self.assertEqual(2,tmp.getNumberOfComponents());
8633 for i in xrange(10):
8634 self.assertAlmostEqual(expected1[i],tmp.getIJ(0,i),14);
8636 p=[(0,2),(0,2),(5,6)]
8637 tmp=da.selectByTupleRanges(p);
8638 expected2=[1.,11.,2.,12.,1.,11.,2.,12.,6.,16.]
8639 self.assertEqual(5,tmp.getNumberOfTuples());
8640 self.assertEqual(2,tmp.getNumberOfComponents());
8641 for i in xrange(10):
8642 self.assertAlmostEqual(expected2[i],tmp.getIJ(0,i),14);
8644 p=[(0,2),(-1,2),(5,6)]
8645 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8646 p=[(0,2),(0,2),(5,8)]
8647 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8649 da2=DataArrayDouble.New();
8650 da2.setValues(data2,5,2);
8653 dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8654 expected3=[1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.]
8655 for i in xrange(14):
8656 self.assertAlmostEqual(expected3[i],dac.getIJ(0,i),14);
8660 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8661 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8662 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8663 dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8664 expected4=[1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.]
8665 for i in xrange(14):
8666 self.assertAlmostEqual(expected4[i],dac.getIJ(0,i),14);
8669 ids=DataArrayInt.New();
8672 ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8673 dac.setContigPartOfSelectedValues(2,da2,ids);
8674 expected5=[1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.]
8675 for i in xrange(14):
8676 self.assertAlmostEqual(expected5[i],dac.getIJ(0,i),14);
8680 ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8681 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8682 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8683 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8684 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8685 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8687 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8689 dac.setContigPartOfSelectedValues(4,da2,ids);
8690 expected6=[1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.]
8691 for i in xrange(14):
8692 self.assertAlmostEqual(expected6[i],dac.getIJ(0,i),14);
8696 def testDataArrayIntAdvSetting1(self):
8697 data1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
8698 data2=[8,38,9,39,0,30,11,41,12,42]
8699 compsCpp=["comp1","comp2"]
8700 da=DataArrayInt.New();
8701 da.setInfoAndChangeNbOfCompo(compsCpp);
8704 compsCpp=compsCpp[:-1]
8705 self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8706 da.setValues(data1,7,2)
8708 p=[(0,3),(3,5),(5,7)]
8709 tmp=da.selectByTupleRanges(p);
8710 self.assertTrue(tmp.isEqual(da));
8711 p=[(0,2),(3,4),(5,7)]
8712 tmp=da.selectByTupleRanges(p);
8713 expected1=[1,11,2,12,4,14,6,16,7,17]
8714 self.assertEqual(5,tmp.getNumberOfTuples());
8715 self.assertEqual(2,tmp.getNumberOfComponents());
8716 for i in xrange(10):
8717 self.assertEqual(expected1[i],tmp.getIJ(0,i));
8719 p=[(0,2),(0,2),(5,6)]
8720 tmp=da.selectByTupleRanges(p);
8721 expected2=[1,11,2,12,1,11,2,12,6,16]
8722 self.assertEqual(5,tmp.getNumberOfTuples());
8723 self.assertEqual(2,tmp.getNumberOfComponents());
8724 for i in xrange(10):
8725 self.assertEqual(expected2[i],tmp.getIJ(0,i));
8727 p=[(0,2),(-1,2),(5,6)]
8728 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8729 p=[(0,2),(0,2),(5,8)]
8730 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8732 da2=DataArrayInt.New();
8733 da2.setValues(data2,5,2);
8736 dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8737 expected3=[1,11,0,30,11,41,4,14,5,15,6,16,7,17]
8738 for i in xrange(14):
8739 self.assertEqual(expected3[i],dac.getIJ(0,i));
8743 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8744 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8745 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8746 dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8747 expected4=[1,11,2,12,3,13,9,39,0,30,11,41,12,42]
8748 for i in xrange(14):
8749 self.assertEqual(expected4[i],dac.getIJ(0,i));
8752 ids=DataArrayInt.New();
8755 ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8756 dac.setContigPartOfSelectedValues(2,da2,ids);
8757 expected5=[1,11,2,12,0,30,8,38,12,42,6,16,7,17]
8758 for i in xrange(14):
8759 self.assertEqual(expected5[i],dac.getIJ(0,i));
8763 ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8764 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8765 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8766 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8767 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8768 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8770 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8772 dac.setContigPartOfSelectedValues(4,da2,ids);
8773 expected6=[1,11,2,12,3,13,4,14,0,30,0,30,9,39]
8774 for i in xrange(14):
8775 self.assertEqual(expected6[i],dac.getIJ(0,i));
8779 def testBuildDescendingConnec2Of3DMesh1(self):
8780 mesh=MEDCouplingDataForTest.build3DSourceMesh_1();
8782 mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8783 mesh2.checkCoherency();
8784 self.assertEqual(2,mesh2.getMeshDimension());
8785 self.assertEqual(30,mesh2.getNumberOfCells());
8786 self.assertEqual(31,revDescIndx.getNbOfElems()); self.assertEqual(31,revDescIndx.getNumberOfTuples());
8787 self.assertEqual(13,descIndx.getNbOfElems()); self.assertEqual(13,descIndx.getNumberOfTuples());
8788 self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
8789 self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
8790 expected1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,-10,15,-5,-13,16,17,-14,18,-4,19,-2,20,21,22,23,24,25,-11,26,-1,-12,-25,-22,27,28,-7,-20,-24,29,-16,-18,30,-8,-28]
8791 self.assertEqual(expected1,desc.getValues());
8792 expected2=[0,4,8,12,16,20,24,28,32,36,40,44,48]
8793 self.assertEqual(expected2,descIndx.getValues());
8794 expected3=[0,2,4,5,7,9,10,12,14,15,17,19,21,23,25,26,28,29,31,32,34,35,37,38,40,42,43,44,46,47,48]
8795 self.assertEqual(expected3,revDescIndx.getValues());
8796 expected4=[0,8,0,6,0,0,5,1,4,1,1,9,1,11,2,2,3,2,7,2,8,3,4,3,5,3,4,10,4,5,11,5,6,10,6,6,9,7,7,10,7,8,8,9,9,11,10,11]
8797 self.assertEqual(expected4,revDesc.getValues());
8798 conn=mesh2.getNodalConnectivity();
8799 connIndex=mesh2.getNodalConnectivityIndex();
8800 expected5=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120]
8801 self.assertEqual(expected5,connIndex.getValues());
8802 expected6=[3,8,1,7,3,8,3,1,3,1,3,7,3,7,3,8,3,6,0,8,3,6,2,0,3,0,2,8,3,8,2,6,3,7,4,5,3,7,8,4,3,4,8,5,3,5,8,7,3,6,8,4,3,6,7,8,3,4,7,6,3,8,4,0,3,0,4,6,3,6,3,8,3,7,3,6,3,8,0,1,3,1,0,3,3,3,0,8,3,4,1,5,3,4,8,1,3,1,8,5,3,1,7,5,3,0,2,3,3,3,2,8,3,1,4,0,3,3,2,6]
8803 self.assertEqual(expected6,conn.getValues());
8806 def testAre2DCellsNotCorrectlyOriented1(self):
8807 m1Coords=[1.,1.,-1.,-1.,-1.,-1.,1.,-1.]
8809 m1=MEDCouplingUMesh.New();
8810 m1.setMeshDimension(2);
8811 m1.allocateCells(1);
8812 m1.insertNextCell(NORM_QUAD4,4,m1Conn[0:4])
8813 m1.finishInsertingCells();
8814 myCoords1=DataArrayDouble.New();
8815 myCoords1.setValues(m1Coords,4,2);
8816 m1.setCoords(myCoords1);
8819 for i in xrange(18):
8820 vec2=[3.*cos(pi/9.*i),3.*sin(pi/9.*i)];
8822 m1Cpy.translate(vec2);
8823 self.assertRaises(InterpKernelException,m1Cpy.are2DCellsNotCorrectlyOriented,vec1,False);
8824 m1Cpy.changeSpaceDimension(3);
8825 res=m1Cpy.are2DCellsNotCorrectlyOriented(vec1,False)
8826 self.assertEqual([0],res.getValues());
8830 def testDataArrayAbs1(self):
8831 d1=DataArrayDouble.New();
8832 val1=[2.,-3.,-5.,6.,-7.,-8.,9.,10.,-11.,-12.,-13.,-15.]
8833 expected1=[2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.]
8834 d1.setValues(val1,6,2);
8835 d2=d1.convertToIntArr();
8838 for i in xrange(12):
8839 self.assertAlmostEqual(expected1[i],d1.getIJ(0,i),14);
8842 expected2=[2,3,5,6,7,8,9,10,11,12,13,15]
8844 for i in xrange(12):
8845 self.assertEqual(expected2[i],d2.getIJ(0,i));
8851 def testGetValueOn3(self):
8853 v2=[0.7,1.25,0.,2.,1.5]
8854 disp=[5.,50.,500.,6.,60.,600.,7.,70.,700.,8.,80.,800.]
8855 m=MEDCouplingUMesh.New("myMesh",1)
8858 m.allocateCells(nbCells)
8859 coords=DataArrayDouble.New() ; coords.setValues(v,nbNodes,1)
8861 m.insertNextCell(NORM_SEG2,2,[0,1])
8862 m.insertNextCell(NORM_SEG2,2,[2,1])
8863 m.insertNextCell(NORM_SEG2,2,[2,3])
8864 m.finishInsertingCells()
8865 f=MEDCouplingFieldDouble.New(ON_NODES)
8867 array=DataArrayDouble.New(); array.setValues(disp,m.getNumberOfNodes(),3)
8869 arr1=f.getValueOnMulti(v2)
8870 self.assertEqual(5,arr1.getNumberOfTuples());
8871 self.assertEqual(3,arr1.getNumberOfComponents());
8872 expected1=[5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.]
8873 for i in xrange(15):
8874 self.assertAlmostEqual(expected1[i],arr1.getIJ(0,i),14);
8878 def testGetNodeIdsOfCell2(self):
8879 m1c=MEDCouplingCMesh.New();
8880 coordsX=DataArrayDouble.New();
8881 arrX=[ -1., 1., 2., 4., 4.5 ]
8882 coordsX.setValues(arrX,5,1);
8883 coordsY=DataArrayDouble.New();
8884 arrY=[ -2., 2., 4., 8.]
8885 coordsY.setValues(arrY,4,1);
8886 coordsZ=DataArrayDouble.New();
8888 coordsZ.setValues(arrZ,3,1);
8890 m1c.setCoordsAt(0,coordsX);
8891 expected1=[[0,1],[1,2],[2,3],[3,4]]
8892 self.assertEqual(4,m1c.getNumberOfCells())
8893 for i in xrange(m1c.getNumberOfCells()):
8894 self.assertEqual(expected1[i],m1c.getNodeIdsOfCell(i))
8897 m1c.setCoordsAt(1,coordsY);
8898 self.assertEqual(12,m1c.getNumberOfCells())
8899 expected2=[[0,1,6,5],[1,2,7,6],[2,3,8,7],[3,4,9,8],[4,5,11,10],[5,6,12,11],[6,7,13,12],[7,8,14,13],[8,9,16,15],[9,10,17,16],[10,11,18,17],[11,12,19,18]]
8900 for i in xrange(m1c.getNumberOfCells()):
8901 self.assertEqual(expected2[i],m1c.getNodeIdsOfCell(i))
8904 m1c.setCoordsAt(2,coordsZ);
8905 expected3=[[0,1,6,5,20,21,26,25],[1,2,7,6,21,22,27,26],[2,3,8,7,22,23,28,27],[3,4,9,8,23,24,29,28],[4,5,11,10,24,25,31,30],[5,6,12,11,25,26,32,31],[6,7,13,12,26,27,33,32],[7,8,14,13,27,28,34,33],[8,9,16,15,28,29,36,35],[9,10,17,16,29,30,37,36],[10,11,18,17,30,31,38,37],[11,12,19,18,31,32,39,38],[20,21,26,25,40,41,46,45],[21,22,27,26,41,42,47,46],[22,23,28,27,42,43,48,47],[23,24,29,28,43,44,49,48],[24,25,31,30,44,45,51,50],[25,26,32,31,45,46,52,51],[26,27,33,32,46,47,53,52],[27,28,34,33,47,48,54,53],[28,29,36,35,48,49,56,55],[29,30,37,36,49,50,57,56],[30,31,38,37,50,51,58,57],[31,32,39,38,51,52,59,58]]
8906 self.assertEqual(24,m1c.getNumberOfCells())
8907 for i in xrange(m1c.getNumberOfCells()):
8908 self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i))
8912 def testSwigDADOp4(self):
8913 da=DataArrayDouble.New(range(6,30),12,2)
8914 self.assertEqual(12,da.getNumberOfTuples());
8915 self.assertEqual(2,da.getNumberOfComponents());
8916 for i in xrange(24):
8917 self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8919 # operator transpose
8921 self.assertEqual(2,da.getNumberOfTuples());
8922 self.assertEqual(12,da.getNumberOfComponents());
8923 for i in xrange(24):
8924 self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8928 da2=DataArrayDouble.New(12,1)
8931 for i in xrange(24):
8932 self.assertAlmostEqual(dabis.getIJ(0,i),-float(i+6),13)
8936 expected1=[6.,7.,9.,10.,12.,13.,15.,16.,18.,19.,21.,22.,24.,25.,27.,28.,30.,31.,33.,34.,36.,37.,39.,40.]
8937 for i in xrange(24):
8938 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8942 expected2=[106.,108.,108.,110.,110.,112.,112.,114.,114.,116.,116.,118.,118.,120.,120.,122.,122.,124.,124.,126.,126.,128.,128.,130.]
8943 self.assertEqual(12,da.getNumberOfTuples());
8944 self.assertEqual(2,da.getNumberOfComponents());
8945 for i in xrange(24):
8946 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
8948 for pos,elt in enumerate(dabis):
8951 self.assertEqual(12,da.getNumberOfTuples());
8952 self.assertEqual(2,da.getNumberOfComponents());
8955 self.assertAlmostEqual(li[0],100.,13) ; self.assertAlmostEqual(li[1],101.,13)
8958 da=DataArrayDouble.New(range(6,30),12,2)
8959 da2=DataArrayDouble.New(range(12),12,1)
8962 expected1=[6.,7.,7.,8.,8.,9.,9.,10.,10.,11.,11.,12.,12.,13.,13.,14.,14.,15.,15.,16.,16.,17.,17.,18.]
8963 for i in xrange(24):
8964 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8968 expected2=[-94.,-94.,-92.,-92.,-90.,-90.,-88.,-88.,-86.,-86.,-84.,-84.,-82.,-82.,-80.,-80.,-78.,-78.,-76.,-76.,-74.,-74.,-72.,-72.]
8969 self.assertEqual(12,da.getNumberOfTuples());
8970 self.assertEqual(2,da.getNumberOfComponents());
8971 for i in xrange(24):
8972 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
8974 for pos,elt in enumerate(dabis):
8977 self.assertEqual(12,da.getNumberOfTuples());
8978 self.assertEqual(2,da.getNumberOfComponents());
8979 expected3=[-88.,-87.,-84.,-83.,-80.,-79.,-76.,-75.,-72.,-71.,-68.,-67.,-64.,-63.,-60.,-59.,-56.,-55.,-52.,-51.,-48.,-47.,-44.,-43.]
8980 for i in xrange(24):
8981 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
8984 da=DataArrayDouble.New(range(6,30),12,2)
8985 da2=DataArrayDouble.New(range(12),12,1)
8988 expected1=[0.,0.,8.,9.,20.,22.,36.,39.,56.,60.,80.,85.,108.,114.,140.,147.,176.,184.,216.,225.,260.,270.,308.,319.]
8989 for i in xrange(24):
8990 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8994 expected2=[600.,707.,800.,909.,1000.,1111.,1200.,1313.,1400.,1515.,1600.,1717.,1800.,1919.,2000.,2121.,2200.,2323.,2400.,2525.,2600.,2727.,2800.,2929.]
8995 self.assertEqual(12,da.getNumberOfTuples());
8996 self.assertEqual(2,da.getNumberOfComponents());
8997 for i in xrange(24):
8998 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9000 for pos,elt in enumerate(dabis):
9003 self.assertEqual(12,da.getNumberOfTuples());
9004 self.assertEqual(2,da.getNumberOfComponents());
9005 expected3=[-3600.,-4949.,-6400.,-8181.,-10000.,-12221.,-14400.,-17069.,-19600.,-22725.,-25600.,-29189.,-32400.,-36461.,-40000.,-44541.,-48400.,-53429.,-57600.,-63125.,-67600.,-73629.,-78400.,-84941.0]
9006 for i in xrange(24):
9007 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9010 da=DataArrayDouble.New(range(6,30),12,2)
9011 da2=DataArrayDouble.New(range(1,13),12,1)
9014 expected1=[6.0,7.0,4.0,4.5,3.3333333333333335,3.6666666666666665,3.0,3.25,2.8,3.0,2.6666666666666665,2.8333333333333335,2.5714285714285716,2.7142857142857144,2.5,2.625,2.4444444444444446,2.5555555555555554,2.4,2.5,2.3636363636363638,2.4545454545454546,2.3333333333333335,2.4166666666666665]
9015 for i in xrange(24):
9016 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
9020 expected2=[0.06,0.06930693069306931,0.08,0.0891089108910891,0.1,0.10891089108910891,0.12,0.12871287128712872,0.14,0.1485148514851485,0.16,0.16831683168316833,0.18,0.18811881188118812,0.2,0.2079207920792079,0.22,0.22772277227722773,0.24,0.24752475247524752,0.26,0.26732673267326734,0.28,0.2871287128712871]
9021 self.assertEqual(12,da.getNumberOfTuples());
9022 self.assertEqual(2,da.getNumberOfComponents());
9023 for i in xrange(24):
9024 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9026 for pos,elt in enumerate(dabis):
9029 self.assertEqual(12,da.getNumberOfTuples());
9030 self.assertEqual(2,da.getNumberOfComponents());
9031 expected3=[-0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.009900990099009901, -0.01, -0.0099009900990099]
9032 for i in xrange(24):
9033 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9037 def testSwigDAIOp4(self):
9038 da=DataArrayInt.New(range(6,30),12,2)
9039 self.assertEqual(12,da.getNumberOfTuples());
9040 self.assertEqual(2,da.getNumberOfComponents());
9041 for i in xrange(24):
9042 self.assertEqual(da.getIJ(0,i),i+6)
9044 # operator transpose
9046 self.assertEqual(2,da.getNumberOfTuples());
9047 self.assertEqual(12,da.getNumberOfComponents());
9048 for i in xrange(24):
9049 self.assertEqual(da.getIJ(0,i),i+6)
9053 da2=DataArrayInt.New(12,1)
9056 for i in xrange(24):
9057 self.assertEqual(dabis.getIJ(0,i),-(i+6))
9061 expected1=[6,7,9,10,12,13,15,16,18,19,21,22,24,25,27,28,30,31,33,34,36,37,39,40]
9062 for i in xrange(24):
9063 self.assertEqual(da.getIJ(0,i),expected1[i])
9067 expected2=[106,108,108,110,110,112,112,114,114,116,116,118,118,120,120,122,122,124,124,126,126,128,128,130]
9068 self.assertEqual(12,da.getNumberOfTuples());
9069 self.assertEqual(2,da.getNumberOfComponents());
9070 for i in xrange(24):
9071 self.assertEqual(da.getIJ(0,i),expected2[i])
9073 for pos,elt in enumerate(dabis):
9076 self.assertEqual(12,da.getNumberOfTuples());
9077 self.assertEqual(2,da.getNumberOfComponents());
9080 self.assertEqual(li[0],100) ; self.assertEqual(li[1],101)
9083 da=DataArrayInt.New(range(6,30),12,2)
9084 da2=DataArrayInt.New(range(12),12,1)
9087 expected1=[6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18]
9088 for i in xrange(24):
9089 self.assertEqual(da.getIJ(0,i),expected1[i])
9093 expected2=[-94,-94,-92,-92,-90,-90,-88,-88,-86,-86,-84,-84,-82,-82,-80,-80,-78,-78,-76,-76,-74,-74,-72,-72]
9094 self.assertEqual(12,da.getNumberOfTuples());
9095 self.assertEqual(2,da.getNumberOfComponents());
9096 for i in xrange(24):
9097 self.assertEqual(da.getIJ(0,i),expected2[i])
9099 for pos,elt in enumerate(dabis):
9102 self.assertEqual(12,da.getNumberOfTuples());
9103 self.assertEqual(2,da.getNumberOfComponents());
9104 expected3=[-88,-87,-84,-83,-80,-79,-76,-75,-72,-71,-68,-67,-64,-63,-60,-59,-56,-55,-52,-51,-48,-47,-44,-43]
9105 for i in xrange(24):
9106 self.assertEqual(da.getIJ(0,i),expected3[i])
9109 da=DataArrayInt.New(range(6,30),12,2)
9110 da2=DataArrayInt.New(range(12),12,1)
9113 expected1=[0,0,8,9,20,22,36,39,56,60,80,85,108,114,140,147,176,184,216,225,260,270,308,319]
9114 for i in xrange(24):
9115 self.assertEqual(da.getIJ(0,i),expected1[i])
9119 expected2=[600,707,800,909,1000,1111,1200,1313,1400,1515,1600,1717,1800,1919,2000,2121,2200,2323,2400,2525,2600,2727,2800,2929]
9120 self.assertEqual(12,da.getNumberOfTuples());
9121 self.assertEqual(2,da.getNumberOfComponents());
9122 for i in xrange(24):
9123 self.assertEqual(da.getIJ(0,i),expected2[i])
9125 for pos,elt in enumerate(dabis):
9128 self.assertEqual(12,da.getNumberOfTuples());
9129 self.assertEqual(2,da.getNumberOfComponents());
9130 expected3=[-3600,-4949,-6400,-8181,-10000,-12221,-14400,-17069,-19600,-22725,-25600,-29189,-32400,-36461,-40000,-44541,-48400,-53429,-57600,-63125,-67600,-73629,-78400,-84941.0]
9131 for i in xrange(24):
9132 self.assertEqual(da.getIJ(0,i),expected3[i])
9135 da=DataArrayInt.New(range(6,30),12,2)
9136 da2=DataArrayInt.New(range(1,13),12,1)
9139 expected1=[6,7,4,4,3,3,3,3,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
9140 for i in xrange(24):
9141 self.assertEqual(da.getIJ(0,i),expected1[i])
9144 da/=DataArrayInt.New([2,3],1,2)
9145 self.assertEqual(12,da.getNumberOfTuples());
9146 self.assertEqual(2,da.getNumberOfComponents());
9147 expected2=[3,2,4,3,5,3,6,4,7,5,8,5,9,6,10,7,11,7,12,8,13,9,14,9]
9148 for i in xrange(24):
9149 self.assertEqual(da.getIJ(0,i),expected2[i])
9153 def testSwigDADOp5(self):
9154 da=DataArrayDouble.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9156 da2=DataArrayDouble.New([5.,8.,10.,12])
9157 self.assertEqual(4,da2.getNumberOfTuples());
9158 self.assertEqual(1,da2.getNumberOfComponents());
9160 self.assertEqual(4,da3.getNumberOfTuples());
9161 self.assertEqual(3,da3.getNumberOfComponents());
9162 expected1=[10.,11.,12.,16.,17.,14.,17.,8.,13.,21.,20.,22.]
9163 for i in xrange(12):
9164 self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9167 self.assertEqual(4,da3.getNumberOfTuples());
9168 self.assertEqual(3,da3.getNumberOfComponents());
9169 for i in xrange(12):
9170 self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9172 # Test new API of classmethod DataArrayDouble.New
9173 vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9174 da=DataArrayDouble.New(vals)
9175 self.assertEqual(12,da.getNumberOfTuples());
9176 self.assertEqual(1,da.getNumberOfComponents());
9177 for i in xrange(12):
9178 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9180 da=DataArrayDouble.New(vals,12)
9181 self.assertEqual(12,da.getNumberOfTuples());
9182 self.assertEqual(1,da.getNumberOfComponents());
9183 for i in xrange(12):
9184 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9186 da=DataArrayDouble.New(vals,1,12)
9187 self.assertEqual(1,da.getNumberOfTuples());
9188 self.assertEqual(12,da.getNumberOfComponents());
9189 for i in xrange(12):
9190 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9192 da=DataArrayDouble.New(vals,6,2)
9193 self.assertEqual(6,da.getNumberOfTuples());
9194 self.assertEqual(2,da.getNumberOfComponents());
9195 for i in xrange(12):
9196 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9198 da=DataArrayDouble.New(vals,4,3)
9199 self.assertEqual(4,da.getNumberOfTuples());
9200 self.assertEqual(3,da.getNumberOfComponents());
9201 for i in xrange(12):
9202 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9204 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9205 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9206 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9207 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9210 def testSwigDADOp6(self):
9211 da=DataArrayInt.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9213 da2=DataArrayInt.New([5,8,10,12])
9214 self.assertEqual(4,da2.getNumberOfTuples());
9215 self.assertEqual(1,da2.getNumberOfComponents());
9217 self.assertEqual(4,da3.getNumberOfTuples());
9218 self.assertEqual(3,da3.getNumberOfComponents());
9219 expected1=[10,11,12,16,17,14,17,8,13,21,20,22]
9220 for i in xrange(12):
9221 self.assertEqual(da3.getIJ(0,i),expected1[i])
9224 self.assertEqual(4,da3.getNumberOfTuples());
9225 self.assertEqual(3,da3.getNumberOfComponents());
9226 for i in xrange(12):
9227 self.assertEqual(da3.getIJ(0,i),expected1[i])
9229 da3=da+DataArrayInt.New(da2.getValues())
9230 # Test new API of classmethod DataArrayInt.New
9231 vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9232 da=DataArrayDouble.New(vals)
9233 self.assertEqual(12,da.getNumberOfTuples());
9234 self.assertEqual(1,da.getNumberOfComponents());
9235 for i in xrange(12):
9236 self.assertEqual(da.getIJ(0,i),vals[i])
9238 da=DataArrayDouble.New(vals,12)
9239 self.assertEqual(12,da.getNumberOfTuples());
9240 self.assertEqual(1,da.getNumberOfComponents());
9241 for i in xrange(12):
9242 self.assertEqual(da.getIJ(0,i),vals[i])
9244 da=DataArrayDouble.New(vals,1,12)
9245 self.assertEqual(1,da.getNumberOfTuples());
9246 self.assertEqual(12,da.getNumberOfComponents());
9247 for i in xrange(12):
9248 self.assertEqual(da.getIJ(0,i),vals[i])
9250 da=DataArrayDouble.New(vals,6,2)
9251 self.assertEqual(6,da.getNumberOfTuples());
9252 self.assertEqual(2,da.getNumberOfComponents());
9253 for i in xrange(12):
9254 self.assertEqual(da.getIJ(0,i),vals[i])
9256 da=DataArrayDouble.New(vals,4,3)
9257 self.assertEqual(4,da.getNumberOfTuples());
9258 self.assertEqual(3,da.getNumberOfComponents());
9259 for i in xrange(12):
9260 self.assertEqual(da.getIJ(0,i),vals[i])
9262 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9263 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9264 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9265 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9268 def testSwigDADOp9(self):
9269 l1=[(1.,2.,3),(4.,5.,6.),(7.,8.,9.),[10.,11.,12.]]
9270 da1=DataArrayDouble(l1,4,3)
9271 self.assertEqual(4,da1.getNumberOfTuples());
9272 self.assertEqual(3,da1.getNumberOfComponents());
9273 da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9274 self.assertTrue(da2.isEqual(da1,1e-12))
9275 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9276 da3=DataArrayDouble(l1,4)
9277 self.assertTrue(da3.isEqual(da1,1e-12))
9278 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9279 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9280 l1=[(1.,2.,3),(4.,(5.),((6.))),(7.,8.,9.),[10.,11.,12.]]
9281 da1=DataArrayDouble(l1,4,3)
9282 self.assertEqual(4,da1.getNumberOfTuples());
9283 self.assertEqual(3,da1.getNumberOfComponents());
9284 da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9285 self.assertTrue(da2.isEqual(da1,1e-12))
9286 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9287 da3=DataArrayDouble(l1,4)
9288 self.assertTrue(da3.isEqual(da1,1e-12))
9289 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9290 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9292 l1=[(1,2,3),(4,5,6),(7,8,9),[10,11,12]]
9293 da1=DataArrayInt(l1,4,3)
9294 self.assertEqual(4,da1.getNumberOfTuples());
9295 self.assertEqual(3,da1.getNumberOfComponents());
9296 da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9297 self.assertTrue(da2.isEqual(da1))
9298 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9299 da3=DataArrayInt(l1,4)
9300 self.assertTrue(da3.isEqual(da1))
9301 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9302 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9303 l1=[(1,[2],3),(4,[(5)],6),((([7])),8,9),[10,11,12]]
9304 da1=DataArrayInt(l1,4,3)
9305 self.assertEqual(4,da1.getNumberOfTuples());
9306 self.assertEqual(3,da1.getNumberOfComponents());
9307 da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9308 self.assertTrue(da2.isEqual(da1))
9309 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9310 da3=DataArrayInt(l1,4)
9311 self.assertTrue(da3.isEqual(da1))
9312 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9313 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9316 def testRenumberNodesInConn1(self):
9317 mesh2DCoords=[-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ]
9318 mesh2DConn=[1,4,2, 4,5,2, 0,3,4,1, 6,7,4,3, 7,8,5,4]
9319 mesh2D=MEDCouplingUMesh.New("mesh",2);
9320 mesh2D.allocateCells(5);
9321 mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[0:3])
9322 mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[3:6])
9323 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[6:10])
9324 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[10:14])
9325 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[14:18])
9326 mesh2D.finishInsertingCells();
9327 myCoords=DataArrayDouble.New(mesh2DCoords,9,3);
9328 mesh2D.setCoords(myCoords);
9329 mesh2D.checkCoherency();
9331 mesh3DCoords=[-0.3,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.2,-0.3,0., -0.3,-0.3,1., -0.3,0.2,1., 0.2,0.2,1., 0.2,-0.3,1. ]
9332 mesh3DConn=[0,1,2,3,4,5,6,7]
9333 mesh3D=MEDCouplingUMesh.New("mesh",3);
9334 mesh3D.allocateCells(1);
9335 mesh3D.insertNextCell(NORM_HEXA8,8,mesh3DConn[:])
9336 mesh3D.finishInsertingCells();
9337 myCoords3D=DataArrayDouble.New(mesh3DCoords,8,3);
9338 mesh3D.setCoords(myCoords3D);
9339 mesh3D.checkCoherency();
9341 mesh3D_2=mesh3D.deepCpy();
9342 mesh2D_2=mesh2D.deepCpy();
9343 mesh3D_4=mesh3D.deepCpy();
9344 mesh2D_4=mesh2D.deepCpy();
9345 oldNbOf3DNodes=mesh3D.getNumberOfNodes();
9346 renumNodes=DataArrayInt.New();
9347 renumNodes.alloc(mesh2D.getNumberOfNodes(),1);
9348 renumNodes.iota(oldNbOf3DNodes);
9349 coo=DataArrayDouble.Aggregate(mesh3D.getCoords(),mesh2D.getCoords());
9350 mesh3D.setCoords(coo);
9351 mesh2D.setCoords(coo);
9352 mesh2DCpy=mesh2D.deepCpy()
9353 mesh2D_3=mesh2D.deepCpy();
9354 mesh2D_3.shiftNodeNumbersInConn(oldNbOf3DNodes);
9355 mesh2D.renumberNodesInConn(renumNodes);
9356 mesh2DCpy.renumberNodesInConn(renumNodes.getValues());
9357 self.assertTrue(mesh2D.isEqual(mesh2DCpy,1e-12))
9358 self.assertTrue(mesh2D.isEqual(mesh2D_3,1e-12))
9360 da1,da2=mesh3D.checkGeoEquivalWith(mesh3D_2,10,1e-12);
9361 self.assertTrue(da1==None);
9362 self.assertEqual(8,da2.getNumberOfTuples());
9363 self.assertEqual(1,da2.getNumberOfComponents());
9364 expected1=[8,11,12,9,4,5,6,7]
9366 self.assertEqual(expected1[i],da2.getIJ(i,0));
9369 da1,da2=mesh2D.checkGeoEquivalWith(mesh2D_2,10,1e-12);
9370 self.assertTrue(da1==None);
9371 self.assertEqual(9,da2.getNumberOfTuples());
9372 self.assertEqual(1,da2.getNumberOfComponents());
9374 self.assertEqual(8+i,da2.getIJ(i,0));
9377 mesh2D_5=mesh2D_4.deepCpy();
9378 mesh2D_5.translate([1.,0.,0.]);
9379 meshes=[mesh3D_4,mesh2D_4,mesh2D_5];
9380 MEDCouplingUMesh.PutUMeshesOnSameAggregatedCoords(meshes);
9381 self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9382 self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9383 mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9384 self.assertEqual(26,mesh3D_4.getNumberOfNodes());
9385 self.assertEqual(3,mesh3D_4.getSpaceDimension());
9386 self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9387 self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9388 self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9389 expected2=[18,0,1,2,3,4,5,6,7]
9390 expected3=[3,9,12,10, 3,12,13,10, 4,8,11,12,9, 4,14,15,12,11, 4,15,16,13,12]
9391 expected4=[3,18,21,19, 3,21,22,19, 4,17,20,21,18, 4,23,24,21,20, 4,24,25,22,21]
9392 expected5=[-0.3,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.2,-0.3,0., -0.3,-0.3,1., -0.3,0.2,1., 0.2,0.2,1., 0.2,-0.3,1., -0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0., 0.7, -0.3, 0.0, 1.2, -0.3, 0.0, 1.7, -0.3, 0.0, 0.7, 0.2, 0.0, 1.2, 0.2, 0.0, 1.7, 0.2, 0.0, 0.7, 0.7, 0.0, 1.2, 0.7, 0.0, 1.7, 0.7, 0.0]
9393 self.assertEqual(expected2,mesh3D_4.getNodalConnectivity().getValues());
9394 self.assertEqual(expected3,mesh2D_4.getNodalConnectivity().getValues());
9395 self.assertEqual(expected4,mesh2D_5.getNodalConnectivity().getValues());
9396 for i in xrange(78):
9397 self.assertAlmostEqual(expected5[i],mesh3D_4.getCoords().getIJ(0,i),12);
9400 MEDCouplingUMesh.MergeNodesOnUMeshesSharingSameCoords(meshes,1e-12);
9401 mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9402 self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9403 self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9404 self.assertEqual(19,mesh3D_4.getNumberOfNodes());
9405 self.assertEqual(3,mesh3D_4.getSpaceDimension());
9406 self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9407 self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9408 self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9409 expected6=[18,0,1,2,3,4,5,6,7]
9410 expected7=[3,3,2,8, 3,2,9,8, 4,0,1,2,3, 4,10,11,2,1, 4,11,12,9,2]
9411 expected8=[3,13,15,14, 3,15,16,14, 4,8,9,15,13, 4,12,17,15,9, 4,17,18,16,15]
9412 expected9=[-0.3, -0.3, 0., -0.3, 0.2, 0., 0.2, 0.2, 0., 0.2, -0.3, 0., -0.3, -0.3, 1., -0.3, 0.2, 1.,
9413 0.2, 0.2, 1., 0.2, -0.3, 1., 0.7, -0.3, 0., 0.7, 0.2, 0., -0.3, 0.7, 0., 0.2, 0.7, 0.,
9414 0.7, 0.7, 0., 1.2, -0.3, 0., 1.7, -0.3, 0., 1.2, 0.2, 0., 1.7, 0.2, 0., 1.2, 0.7, 0., 1.7, 0.7, 0.]
9415 self.assertEqual(expected6,mesh3D_4.getNodalConnectivity().getValues());
9416 self.assertEqual(expected7,mesh2D_4.getNodalConnectivity().getValues());
9417 self.assertEqual(expected8,mesh2D_5.getNodalConnectivity().getValues());
9418 for i in xrange(57):
9419 self.assertAlmostEqual(expected9[i],mesh3D_4.getCoords().getIJ(0,i),12);
9424 def testComputeNeighborsOfCells1(self):
9425 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9426 d1,d2=m.computeNeighborsOfCells();
9427 self.assertEqual(6,d2.getNumberOfTuples());
9428 self.assertEqual(10,d1.getNumberOfTuples());
9429 expected1=[0,2,4,6,8,10]
9430 expected2=[3,1,0,2,4,1,4,0,2,3]
9431 self.assertEqual(expected1,d2.getValues());
9432 self.assertEqual(expected2,d1.getValues());
9435 def testCheckButterflyCellsBug1(self):
9436 mesh2DCoords=[323.85,120.983748908684,317.5,131.982271536747,336.55,120.983748908686,330.2,131.982271536751,323.85,142.98079416481]
9437 mesh2DConn=[4,1,0,2,3]
9438 mesh2D=MEDCouplingUMesh.New("mesh",2);
9439 mesh2D.allocateCells(1);
9440 mesh2D.insertNextCell(NORM_POLYGON,5,mesh2DConn[0:5])
9441 mesh2D.finishInsertingCells();
9442 myCoords=DataArrayDouble.New(mesh2DCoords,5,2);
9443 mesh2D.setCoords(myCoords);
9444 mesh2D.checkCoherency();
9446 v=mesh2D.checkButterflyCells();
9447 self.assertTrue(v.empty());
9450 def testDataArrayIntRange1(self):
9451 d=DataArrayInt.Range(2,17,7);
9453 self.assertEqual(3,d.getNumberOfTuples());
9454 self.assertEqual(1,d.getNumberOfComponents());
9455 self.assertEqual(expected1,d.getValues());
9457 d=DataArrayInt.Range(2,23,7);
9458 self.assertEqual(3,d.getNumberOfTuples());
9459 self.assertEqual(1,d.getNumberOfComponents());
9460 self.assertEqual(expected1,d.getValues());
9462 d=DataArrayInt.Range(2,24,7);
9463 expected2=[2,9,16,23]
9464 self.assertEqual(4,d.getNumberOfTuples());
9465 self.assertEqual(1,d.getNumberOfComponents());
9466 self.assertEqual(expected2,d.getValues());
9468 d=DataArrayInt.Range(24,2,-7);
9469 expected3=[24,17,10,3]
9470 self.assertEqual(4,d.getNumberOfTuples());
9471 self.assertEqual(1,d.getNumberOfComponents());
9472 self.assertEqual(expected3,d.getValues());
9474 d=DataArrayInt.Range(23,2,-7);
9476 self.assertEqual(3,d.getNumberOfTuples());
9477 self.assertEqual(1,d.getNumberOfComponents());
9478 self.assertEqual(expected4,d.getValues());
9480 d=DataArrayInt.Range(23,22,-7);
9481 self.assertEqual(1,d.getNumberOfTuples());
9482 self.assertEqual(1,d.getNumberOfComponents());
9483 self.assertEqual(23,d.getIJ(0,0));
9485 d=DataArrayInt.Range(22,23,7);
9486 self.assertEqual(1,d.getNumberOfTuples());
9487 self.assertEqual(1,d.getNumberOfComponents());
9488 self.assertEqual(22,d.getIJ(0,0));
9490 d=DataArrayInt.Range(22,22,7);
9491 self.assertEqual(0,d.getNumberOfTuples());
9492 self.assertEqual(1,d.getNumberOfComponents());
9494 d=DataArrayInt.Range(22,22,-7);
9495 self.assertEqual(0,d.getNumberOfTuples());
9496 self.assertEqual(1,d.getNumberOfComponents());
9498 self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,-7);
9499 self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,7);
9500 self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,0);
9501 self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,0);
9504 def testSwigUMeshGetItem1(self):
9505 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9506 subMesh=m.buildPartOfMySelf([1,3],True);
9507 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
9509 self.assertTrue(isinstance(m1,MEDCouplingUMesh))
9511 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9513 self.assertTrue(isinstance(m3,MEDCouplingUMesh))
9514 m4=m[DataArrayInt.New([1,3])]
9516 self.assertTrue(isinstance(m5_1,MEDCouplingUMesh))
9518 self.assertTrue(isinstance(m5_2,MEDCouplingUMesh))
9519 m5=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m5_1,m5_2]);
9520 m5.setName(subMesh.getName())
9521 self.assertTrue(isinstance(m4,MEDCouplingUMesh))
9522 self.assertTrue(subMesh.isEqual(m1,1e-12))
9523 self.assertTrue(subMesh.isEqual(m2,1e-12))
9524 self.assertTrue(subMesh.isEqual(m3,1e-12))
9525 self.assertTrue(subMesh.isEqual(m4,1e-12))
9526 self.assertTrue(subMesh.isEqual(m5,1e-12))
9527 self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[1,5],True);
9530 def testSwigGetItem3(self):
9531 da=DataArrayInt.New([4,5,6])
9532 self.assertEqual(5,da[1])
9533 self.assertRaises(InterpKernelException,da.__getitem__,-1)
9534 self.assertRaises(InterpKernelException,da.__getitem__,3)
9535 da=DataArrayInt.New([4,5,6,7,8,9],2,3)
9536 self.assertEqual(9,da[1,2])
9537 da=DataArrayDouble.New([4.1,5.2,6.3])
9538 self.assertAlmostEqual(5.2,da[1],12)
9539 self.assertRaises(InterpKernelException,da.__getitem__,-1)
9540 self.assertRaises(InterpKernelException,da.__getitem__,3)
9541 da=DataArrayDouble.New([4.12,5.12,6.12,7.12,8.12,9.12],2,3)
9542 self.assertAlmostEqual(9.12,da[1,2],12)
9545 def testSwigDADISub1(self):
9546 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
9547 bary=mesh3D.getBarycenterAndOwner()
9549 pts=bary.getDifferentValues(1e-12)
9550 expected=[[0,6,12],[1,7,13],[2,8,14],[3,9,15],[4,10,16],[5,11,17]]
9551 for pos,pt in enumerate(pts):
9554 norm=bary2.magnitude()
9555 self.assertEqual(expected[pos],norm.getIdsInRange(-1.,1e-5).getValues())
9557 expected2=[[3.,54.],[-141.,180.],[21.,54.],[39.,72.],[-15.,90.],[21.,90.]]
9558 for pos,pt in enumerate(pts):
9561 self.assertAlmostEqual(expected2[pos][0],bary2.accumulate()[0],12);
9562 self.assertAlmostEqual(expected2[pos][1],bary2.accumulate()[1],12);
9564 expected3=[[-3.,22.5],[45.,337.5],[-9., 22.5],[-15.,67.5],[3.,112.5],[-9.,112.5]]
9565 for pos,pt in enumerate(pts):
9568 self.assertAlmostEqual(expected3[pos][0],bary2.accumulate()[0],12);
9569 self.assertAlmostEqual(expected3[pos][1],bary2.accumulate()[1],12);
9571 expected4=[[-12.,90.],[0.8,6.],[-4,90.],[-2.4,30.],[12.,18],[-4,18.]]
9572 for pos,pt in enumerate(pts):
9575 self.assertAlmostEqual(expected4[pos][0],bary2.accumulate()[0],12);
9576 self.assertAlmostEqual(expected4[pos][1],bary2.accumulate()[1],12);
9579 d=DataArrayInt.New([1,2,0,1,0,2],3,2)
9580 e=DataArrayInt.New([1,11,101,2,12,102,3,13,103,4,14,104],4,3)
9581 expected5=[[1,11,101,77,77,77,77,77,77,4,14,104],[77,77,77,77,77,77,3,13,103,4,14,104],[77,77,77,2,12,102,77,77,77,4,14,104]]
9582 expected6=[[1,77,77,2,77,77,3,77,77,4,77,77],[77,77,101,77,77,102,77,77,103,77,77,104],[77,11,77,77,12,77,77,13,77,77,14,77]]
9583 for pos,tup in enumerate(d):
9585 self.assertTrue(isinstance(f,DataArrayInt))
9587 self.assertEqual(expected5[pos],f.getValues())
9588 self.assertEqual(6*[77],f[tup].getValues())
9591 self.assertEqual(expected6[pos],f.getValues())
9592 self.assertEqual(8*[77],f[:,tup].getValues())
9595 e=e.convertToDblArr()
9596 for pos,tup in enumerate(d):
9598 self.assertTrue(isinstance(f,DataArrayDouble))
9600 self.assertEqual(expected5[pos],f.convertToIntArr().getValues())
9601 self.assertEqual(6*[77],f[tup].convertToIntArr().getValues())
9604 self.assertEqual(expected6[pos],f.convertToIntArr().getValues())
9605 self.assertEqual(8*[77],f[:,tup].convertToIntArr().getValues())
9609 def testDataArrayDoubleGetMinMaxPerComponent1(self):
9610 values1=[1.,2.,3.,-0.9,2.1,3.,1.3,1.7,3.,1.,1.8,3.]
9611 d1=DataArrayDouble.New();
9612 self.assertRaises(InterpKernelException,d1.getMinMaxPerComponent)
9613 d1=DataArrayDouble.New(values1,4,3);
9614 res=d1.getMinMaxPerComponent();
9615 self.assertTrue(isinstance(res,list))
9616 self.assertEqual(3,len(res))
9618 self.assertTrue(isinstance(res[i],tuple))
9619 self.assertEqual(2,len(res[i]))
9621 expected1=[-0.9,1.3,1.7,2.1,3.,3.]
9623 self.assertAlmostEqual(expected1[i],res[i/2][i%2],14)
9627 res=d1.getMinMaxPerComponent();
9628 self.assertTrue(isinstance(res,list))
9629 self.assertEqual(2,len(res))
9631 self.assertTrue(isinstance(res[i],tuple))
9632 self.assertEqual(2,len(res[i]))
9634 expected2=[1.,3.,-0.9,3.]
9636 self.assertAlmostEqual(expected2[i],res[i/2][i%2],14)
9640 res=d1.getMinMaxPerComponent();
9641 self.assertTrue(isinstance(res,list))
9642 self.assertEqual(1,len(res))
9644 self.assertTrue(isinstance(res[i],tuple))
9645 self.assertEqual(2,len(res[i]))
9649 self.assertAlmostEqual(expected3[i],res[i/2][i%2],14)
9653 def testDataArrayIntGetHashCode1(self):
9654 d1=DataArrayInt.New(range(3545))
9655 d2=DataArrayInt.New(range(3545))
9656 self.assertEqual(d2.getHashCode(),d1.getHashCode())
9657 self.assertEqual(232341068,d1.getHashCode())
9659 self.assertEqual(232340188,d1.getHashCode())
9662 def testZipConnectivityPol1(self):
9663 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
9665 m2_1=m1.buildPartOfMySelf(cells1,True);
9667 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9668 # no permutation policy 0
9669 isOk,arr=m1.areCellsIncludedIn(m2,0)
9670 self.assertTrue(isOk);
9671 self.assertEqual(3,arr.getNumberOfTuples());
9672 self.assertEqual(1,arr.getNumberOfComponents());
9673 self.assertEqual(cells1,arr.getValues())
9674 # no permutation policy 1
9675 isOk,arr=m1.areCellsIncludedIn(m2,1)
9676 self.assertTrue(isOk);
9677 self.assertEqual(3,arr.getNumberOfTuples());
9678 self.assertEqual(1,arr.getNumberOfComponents());
9679 self.assertEqual(cells1,arr.getValues())
9680 # no permutation policy 2
9681 isOk,arr=m1.areCellsIncludedIn(m2,2)
9682 self.assertTrue(isOk);
9683 self.assertEqual(3,arr.getNumberOfTuples());
9684 self.assertEqual(1,arr.getNumberOfComponents());
9685 self.assertEqual(cells1,arr.getValues())
9686 # some modification into m2
9688 m2.getNodalConnectivity()[1:4]=modif1
9689 #policy 0 fails because cell0 in m2 has same orientation be not same connectivity
9691 isOk,arr=m1.areCellsIncludedIn(m2,0)
9692 self.assertTrue(not isOk);
9693 self.assertEqual(3,arr.getNumberOfTuples());
9694 self.assertEqual(1,arr.getNumberOfComponents());
9695 self.assertEqual(expected1,arr.getValues())
9696 #policy 1 succeeds because cell0 in m2 has not exactly the same conn
9697 isOk,arr=m1.areCellsIncludedIn(m2,1)
9698 self.assertTrue(isOk);
9699 self.assertEqual(3,arr.getNumberOfTuples());
9700 self.assertEqual(1,arr.getNumberOfComponents());
9701 self.assertEqual(cells1,arr.getValues())
9702 #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9703 isOk,arr=m1.areCellsIncludedIn(m2,2)
9704 self.assertTrue(isOk);
9705 self.assertEqual(3,arr.getNumberOfTuples());
9706 self.assertEqual(1,arr.getNumberOfComponents());
9707 self.assertEqual(cells1,arr.getValues())
9708 #some new modification into m2
9710 m2.getNodalConnectivity()[1:4]=modif2
9711 #policy 0 fails because cell0 in m2 has not exactly the same conn
9712 isOk,arr=m1.areCellsIncludedIn(m2,0)
9713 self.assertTrue(not isOk);
9714 self.assertEqual(3,arr.getNumberOfTuples());
9715 self.assertEqual(1,arr.getNumberOfComponents());
9716 self.assertEqual(expected1,arr.getValues())
9717 #policy 1 fails too because cell0 in m2 has not same orientation
9718 isOk,arr=m1.areCellsIncludedIn(m2,1)
9719 self.assertTrue(not isOk);
9720 self.assertEqual(3,arr.getNumberOfTuples());
9721 self.assertEqual(1,arr.getNumberOfComponents());
9722 self.assertEqual(expected1,arr.getValues())
9723 #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9724 isOk,arr=m1.areCellsIncludedIn(m2,2)
9725 self.assertTrue(isOk);
9726 self.assertEqual(3,arr.getNumberOfTuples());
9727 self.assertEqual(1,arr.getNumberOfComponents());
9728 self.assertEqual(cells1,arr.getValues())
9731 m1=MEDCouplingDataForTest.build1DSourceMesh_2();
9732 m2_1=m1.buildPartOfMySelf(cells2,True);
9734 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9735 # no permutation policy 0
9736 isOk,arr=m1.areCellsIncludedIn(m2,0)
9737 self.assertTrue(isOk);
9738 self.assertEqual(2,arr.getNumberOfTuples());
9739 self.assertEqual(1,arr.getNumberOfComponents());
9740 self.assertEqual(cells2,arr.getValues())
9741 # no permutation policy 1
9742 isOk,arr=m1.areCellsIncludedIn(m2,1)
9743 self.assertTrue(isOk);
9744 self.assertEqual(2,arr.getNumberOfTuples());
9745 self.assertEqual(1,arr.getNumberOfComponents());
9746 self.assertEqual(cells2,arr.getValues())
9747 # no permutation policy 2
9748 isOk,arr=m1.areCellsIncludedIn(m2,2)
9749 self.assertTrue(isOk);
9750 self.assertEqual(2,arr.getNumberOfTuples());
9751 self.assertEqual(1,arr.getNumberOfComponents());
9752 self.assertEqual(cells2,arr.getValues())
9753 # some modification into m2
9755 m2.getNodalConnectivity()[1:3]=modif3
9756 #policy 0 fails because cell0 in m2 has not exactly the same conn
9758 isOk,arr=m1.areCellsIncludedIn(m2,0)
9759 self.assertTrue(not isOk);
9760 self.assertEqual(2,arr.getNumberOfTuples());
9761 self.assertEqual(1,arr.getNumberOfComponents());
9762 self.assertEqual(expected2,arr.getValues())
9763 #policy 1 fails too because cell0 in m2 has not same orientation
9764 isOk,arr=m1.areCellsIncludedIn(m2,1)
9765 self.assertTrue(not isOk);
9766 self.assertEqual(2,arr.getNumberOfTuples());
9767 self.assertEqual(1,arr.getNumberOfComponents());
9768 self.assertEqual(expected2,arr.getValues())
9769 #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9770 isOk,arr=m1.areCellsIncludedIn(m2,2)
9771 self.assertTrue(isOk);
9772 self.assertEqual(2,arr.getNumberOfTuples());
9773 self.assertEqual(1,arr.getNumberOfComponents());
9774 self.assertEqual(cells2,arr.getValues())
9777 def toSeeIfDaIIopsAreOK(self,d):
9785 def testSwigDAIOp5(self):
9786 d=DataArrayInt.New([4,5,6,10,3,-1],2,3)
9787 self.toSeeIfDaIIopsAreOK(d)
9788 dExp=DataArrayInt.New([2,4,6,0,0,6],2,3)
9789 self.assertTrue(d.isEqual(dExp));
9792 def toSeeIfDaDIopsAreOK(self,d):
9799 def testSwigDADOp7(self):
9800 d=DataArrayDouble.New([4.,5.,6.,10.,3.,-1.],2,3)
9801 self.toSeeIfDaDIopsAreOK(d)
9802 dExp=DataArrayDouble.New([16.,18.,20.,28.,14.,6.],2,3)
9803 self.assertTrue(d.isEqual(dExp,1e-14));
9806 def testConvexEnvelop2D1(self):
9807 coords=[7.54758495819e-14,-1.12270326253e-12,8.43143594193,-1.02835845055e-12,4.21571797096,7.30183771609,-4.21571797097,7.30183771609,-8.43143594193,-1.09439981894e-12,-4.21571797097,-7.30183771609,4.21571797097,-7.30183771609,16.8628718839,-1.02835845055e-12,12.6471539129,7.30183771609,8.43143594193,14.6036754322,2.26427548746e-13,14.6036754322,-8.43143594193,14.6036754322,-12.6471539129,7.30183771609,-16.8628718839,-1.39630321727e-12,-12.6471539129,-7.30183771609,-8.43143594193,-14.6036754322,3.7737924791e-14,-14.6036754322,8.43143594193,-14.6036754322,12.6471539129,-7.30183771609,25.2943078258,-1.07553085654e-12,21.0785898548,7.30183771609,16.8628718839,14.6036754322,12.6471539129,21.9055131483,4.21571797096,21.9055131483,-4.21571797097,21.9055131483,-12.6471539129,21.9055131483,-16.8628718839,14.6036754322,-21.0785898548,7.30183771609,-25.2943078258,-1.02835845055e-12,-21.0785898548,-7.30183771609,-16.8628718839,-14.6036754322,-12.6471539129,-21.9055131483,-4.21571797097,-21.9055131483,4.21571797097,-21.9055131483,12.6471539129,-21.9055131483,16.8628718839,-14.6036754322,21.0785898548,-7.30183771609,33.7257437677,-7.45324014622e-13,29.5100257968,7.30183771609,25.2943078258,14.6036754322,21.0785898548,21.9055131483,16.8628718839,29.2073508644,8.43143594193,29.2073508644,-1.20761359331e-12,29.2073508644,-8.43143594193,29.2073508644,-16.8628718839,29.2073508644,-21.0785898548,21.9055131483,-25.2943078258,14.6036754322,-29.5100257968,7.30183771609,-33.7257437677,-7.26455052226e-13,-29.5100257968,-7.30183771609,-25.2943078258,-14.6036754322,-21.0785898548,-21.9055131483,-16.8628718839,-29.2073508644,-8.43143594193,-29.2073508644,4.15117172701e-13,-29.2073508644,8.43143594193,-29.2073508644,16.8628718839,-29.2073508644,21.0785898548,-21.9055131483,25.2943078258,-14.6036754322,29.5100257968,-7.30183771609,42.1571797097,-1.86802727715e-12,37.9414617387,7.30183771609,33.7257437677,14.6036754322,29.5100257968,21.9055131483,25.2943078258,29.2073508644,21.0785898548,36.5091885805,12.6471539129,36.5091885805,4.21571797096,36.5091885805,-4.21571797096,36.5091885805,-12.6471539129,36.5091885805,-21.0785898548,36.5091885805,-25.2943078258,29.2073508644,-29.5100257968,21.9055131483,-33.7257437677,14.6036754322,-37.9414617387,7.30183771609,-42.1571797097,-9.81186044565e-13,-37.9414617387,-7.30183771609,-33.7257437677,-14.6036754322,-29.5100257968,-21.9055131483,-25.2943078258,-29.2073508644,-21.0785898548,-36.5091885805,-12.6471539129,-36.5091885805,-4.21571797097,-36.5091885805,4.21571797097,-36.5091885805,12.6471539129,-36.5091885805,21.0785898548,-36.5091885805,25.2943078258,-29.2073508644,29.5100257968,-21.9055131483,33.7257437677,-14.6036754322,37.9414617387,-7.30183771609,50.5886156516,-6.98151608633e-13,46.3728976806,7.30183771609,42.1571797097,14.6036754322,37.9414617387,21.9055131483,33.7257437677,29.2073508644,29.5100257968,36.5091885805,25.2943078258,43.8110262966,16.8628718839,43.8110262966,8.43143594193,43.8110262966,-1.84915831476e-12,43.8110262966,-8.43143594193,43.8110262966,-16.8628718839,43.8110262966,-25.2943078258,43.8110262966,-29.5100257968,36.5091885805,-33.7257437677,29.2073508644,-37.9414617387,21.9055131483,-42.1571797097,14.6036754322,-46.3728976806,7.30183771609,-50.5886156516,-1.47177906685e-12,-46.3728976806,-7.30183771609,-42.1571797097,-14.6036754322,-37.9414617387,-21.9055131483,-33.7257437677,-29.2073508644,-29.5100257968,-36.5091885805,-25.2943078258,-43.8110262966,-16.8628718839,-43.8110262966,-8.43143594193,-43.8110262966,7.54758495819e-14,-43.8110262966,8.43143594193,-43.8110262966,16.8628718839,-43.8110262966,25.2943078258,-43.8110262966,29.5100257968,-36.5091885805,33.7257437677,-29.2073508644,37.9414617387,-21.9055131483,42.1571797097,-14.6036754322,46.3728976806,-7.30183771609,59.0200515935,-7.9249642061e-13,54.8043336225,7.30183771609,50.5886156516,14.6036754322,46.3728976806,21.9055131483,42.1571797097,29.2073508644,37.9414617387,36.5091885805,33.7257437677,43.8110262966,29.5100257968,51.1128640127,21.0785898548,51.1128640127,12.6471539129,51.1128640127,4.21571797096,51.1128640127,-4.21571797096,51.1128640127,-12.6471539129,51.1128640127,-21.0785898548,51.1128640127,-29.5100257968,51.1128640127,-33.7257437677,43.8110262966,-37.9414617387,36.5091885805,-42.1571797097,29.2073508644,-46.3728976806,21.9055131483,-50.5886156516,14.6036754322,-54.8043336226,7.30183771609,-59.0200515935,-1.31139288649e-12,-54.8043336226,-7.30183771609,-50.5886156516,-14.6036754322,-46.3728976806,-21.9055131483,-42.1571797097,-29.2073508644,-37.9414617387,-36.5091885805,-33.7257437677,-43.8110262966,-29.5100257968,-51.1128640127,-21.0785898548,-51.1128640127,-12.6471539129,-51.1128640127,-4.21571797097,-51.1128640127,4.21571797097,-51.1128640127,12.6471539129,-51.1128640127,21.0785898548,-51.1128640127,29.5100257968,-51.1128640127,33.7257437677,-43.8110262966,37.9414617387,-36.5091885805,42.1571797097,-29.2073508644,46.3728976806,-21.9055131483,50.5886156516,-14.6036754322,54.8043336225,-7.30183771609,67.4514875354,-2.14162723189e-12,63.2357695645,7.30183771609,59.0200515935,14.6036754322,54.8043336226,21.9055131483,50.5886156516,29.2073508644,46.3728976806,36.5091885805,42.1571797097,43.8110262966,37.9414617387,51.1128640127,33.7257437677,58.4147017287,25.2943078258,58.4147017287,16.8628718839,58.4147017287,8.43143594193,58.4147017287,6.79282646237e-13,58.4147017287,-8.43143594193,58.4147017287,-16.8628718839,58.4147017287,-25.2943078258,58.4147017287,-33.7257437677,58.4147017287,-37.9414617387,51.1128640127,-42.1571797097,43.8110262966,-46.3728976806,36.5091885805,-50.5886156516,29.2073508644,-54.8043336226,21.9055131483,-59.0200515935,14.6036754322,-63.2357695645,7.30183771609,-67.4514875354,-1.16044118732e-12,-63.2357695645,-7.30183771609,-59.0200515935,-14.6036754322,-54.8043336226,-21.9055131483,-50.5886156516,-29.2073508644,-46.3728976806,-36.5091885805,-42.1571797097,-43.8110262966,-37.9414617387,-51.1128640127,-33.7257437677,-58.4147017287,-25.2943078258,-58.4147017287,-16.8628718839,-58.4147017287,-8.43143594193,-58.4147017287,-5.66068871864e-14,-58.4147017287,8.43143594193,-58.4147017287,16.8628718839,-58.4147017287,25.2943078258,-58.4147017287,33.7257437677,-58.4147017287,37.9414617387,-51.1128640127,42.1571797097,-43.8110262966,46.3728976806,-36.5091885805,50.5886156516,-29.2073508644,54.8043336226,-21.9055131483,59.0200515935,-14.6036754322,63.2357695645,-7.30183771609,75.8829234774,-2.29257893105e-12,71.6672055064,7.30183771609,67.4514875354,14.6036754322,63.2357695645,21.9055131483,59.0200515935,29.2073508644,54.8043336226,36.5091885805,50.5886156516,43.8110262966,46.3728976806,51.1128640127,42.1571797097,58.4147017287,37.9414617387,65.7165394448,29.5100257968,65.7165394448,21.0785898548,65.7165394448,12.6471539129,65.7165394448,4.21571797097,65.7165394448,-4.21571797096,65.7165394448,-12.6471539129,65.7165394448,-21.0785898548,65.7165394448,-29.5100257968,65.7165394448,-37.9414617387,65.7165394448,-42.1571797097,58.4147017287,-46.3728976806,51.1128640127,-50.5886156516,43.8110262966,-54.8043336226,36.5091885805,-59.0200515935,29.2073508644,-63.2357695645,21.9055131483,-67.4514875354,14.6036754322,-71.6672055064,7.30183771609,-75.8829234774,-1.31139288649e-12,-71.6672055064,-7.30183771609,-67.4514875354,-14.6036754322,-63.2357695645,-21.9055131483,-59.0200515935,-29.2073508644,-54.8043336226,-36.5091885805,-50.5886156516,-43.8110262966,-46.3728976806,-51.1128640127,-42.1571797097,-58.4147017287,-37.9414617387,-65.7165394448,-29.5100257968,-65.7165394448,-21.0785898548,-65.7165394448,-12.6471539129,-65.7165394448,-4.21571797097,-65.7165394448,4.21571797097,-65.7165394448,12.6471539129,-65.7165394448,21.0785898548,-65.7165394448,29.5100257968,-65.7165394448,37.9414617387,-65.7165394448,42.1571797097,-58.4147017287,46.3728976806,-51.1128640127,50.5886156516,-43.8110262966,54.8043336226,-36.5091885805,59.0200515935,-29.2073508644,63.2357695645,-21.9055131483,67.4514875354,-14.6036754322,71.6672055064,-7.30183771609,84.3143594193,-1.49064802924e-12,80.0986414483,7.30183771609,75.8829234774,14.6036754322,71.6672055064,21.9055131483,67.4514875354,29.2073508644,63.2357695645,36.5091885805,59.0200515935,43.8110262966,54.8043336226,51.1128640127,50.5886156516,58.4147017287,46.3728976806,65.7165394448,42.1571797097,73.0183771609,33.7257437677,73.0183771609,25.2943078258,73.0183771609,16.8628718839,73.0183771609,8.43143594193,73.0183771609,2.0755858635e-12,73.0183771609,-8.43143594193,73.0183771609,-16.8628718839,73.0183771609,-25.2943078258,73.0183771609,-33.7257437677,73.0183771609,-42.1571797097,73.0183771609,-46.3728976806,65.7165394448,-50.5886156516,58.4147017287,-54.8043336226,51.1128640127,-59.0200515935,43.8110262966,-63.2357695645,36.5091885805,-67.4514875354,29.2073508644,-71.6672055064,21.9055131483,-75.8829234774,14.6036754322,-80.0986414483,7.30183771609,-84.3143594193,-1.11326878133e-12,-80.0986414483,-7.30183771609,-75.8829234774,-14.6036754322,-71.6672055064,-21.9055131483,-67.4514875354,-29.2073508644,-63.2357695645,-36.5091885805,-59.0200515935,-43.8110262966,-54.8043336226,-51.1128640127,-50.5886156516,-58.4147017287,-46.3728976806,-65.7165394448,-42.1571797097,-73.0183771609,-33.7257437677,-73.0183771609,-25.2943078258,-73.0183771609,-16.8628718839,-73.0183771609,-8.43143594193,-73.0183771609,-5.66068871864e-14,-73.0183771609,8.43143594193,-73.0183771609,16.8628718839,-73.0183771609,25.2943078258,-73.0183771609,33.7257437677,-73.0183771609,42.1571797097,-73.0183771609,46.3728976806,-65.7165394448,50.5886156516,-58.4147017287,54.8043336226,-51.1128640127,59.0200515935,-43.8110262966,63.2357695645,-36.5091885805,67.4514875354,-29.2073508644,71.6672055064,-21.9055131483,75.8829234774,-14.6036754322,80.0986414483,-7.3018377161]
9808 conn=[0,2,3,4,5,6,1,1,8,2,0,6,18,7,2,9,10,3,0,1,8,3,10,11,12,4,0,2,4,3,12,13,14,5,0,5,0,4,14,15,16,6,6,1,0,5,16,17,18,7,20,8,1,18,36,19,8,21,9,2,1,7,20,9,22,23,10,2,8,21,10,23,24,11,3,2,9,11,24,25,26,12,3,10,12,11,26,27,13,4,3,13,12,27,28,29,14,4,14,4,13,29,30,15,5,15,5,14,30,31,32,16,16,6,5,15,32,33,17,17,18,6,16,33,34,35,18,7,1,6,17,35,36,19,38,20,7,36,60,37,20,39,21,8,7,19,38,21,40,22,9,8,20,39,22,41,42,23,9,21,40,23,42,43,24,10,9,22,24,43,44,25,11,10,23,25,44,45,46,26,11,24,26,25,46,47,27,12,11,27,26,47,48,28,13,12,28,27,48,49,50,29,13,29,13,28,50,51,30,14,30,14,29,51,52,31,15,31,15,30,52,53,54,32,32,16,15,31,54,55,33,33,17,16,32,55,56,34,34,35,17,33,56,57,58,35,36,18,17,34,58,59,36,19,7,18,35,59,60,37,62,38,19,60,90,61,38,63,39,20,19,37,62,39,64,40,21,20,38,63,40,65,41,22,21,39,64,41,66,67,42,22,40,65,42,67,68,43,23,22,41,43,68,69,44,24,23,42,44,69,70,45,25,24,43,45,70,71,72,46,25,44,46,45,72,73,47,26,25,47,46,73,74,48,27,26,48,47,74,75,49,28,27,49,48,75,76,77,50,28,50,28,49,77,78,51,29,51,29,50,78,79,52,30,52,30,51,79,80,53,31,53,31,52,80,81,82,54,54,32,31,53,82,83,55,55,33,32,54,83,84,56,56,34,33,55,84,85,57,57,58,34,56,85,86,87,58,59,35,34,57,87,88,59,60,36,35,58,88,89,60,37,19,36,59,89,90,61,92,62,37,90,126,91,62,93,63,38,37,61,92,63,94,64,39,38,62,93,64,95,65,40,39,63,94,65,96,66,41,40,64,95,66,97,98,67,41,65,96,67,98,99,68,42,41,66,68,99,100,69,43,42,67,69,100,101,70,44,43,68,70,101,102,71,45,44,69,71,102,103,104,72,45,70,72,71,104,105,73,46,45,73,72,105,106,74,47,46,74,73,106,107,75,48,47,75,74,107,108,76,49,48,76,75,108,109,110,77,49,77,49,76,110,111,78,50,78,50,77,111,112,79,51,79,51,78,112,113,80,52,80,52,79,113,114,81,53,81,53,80,114,115,116,82,82,54,53,81,116,117,83,83,55,54,82,117,118,84,84,56,55,83,118,119,85,85,57,56,84,119,120,86,86,87,57,85,120,121,122,87,88,58,57,86,122,123,88,89,59,58,87,123,124,89,90,60,59,88,124,125,90,61,37,60,89,125,126,91,128,92,61,126,168,127,92,129,93,62,61,91,128,93,130,94,63,62,92,129,94,131,95,64,63,93,130,95,132,96,65,64,94,131,96,133,97,66,65,95,132,97,134,135,98,66,96,133,98,135,136,99,67,66,97,99,136,137,100,68,67,98,100,137,138,101,69,68,99,101,138,139,102,70,69,100,102,139,140,103,71,70,101,103,140,141,142,104,71,102,104,103,142,143,105,72,71,105,104,143,144,106,73,72,106,105,144,145,107,74,73,107,106,145,146,108,75,74,108,107,146,147,109,76,75,109,108,147,148,149,110,76,110,76,109,149,150,111,77,111,77,110,150,151,112,78,112,78,111,151,152,113,79,113,79,112,152,153,114,80,114,80,113,153,154,115,81,115,81,114,154,155,156,116,116,82,81,115,156,157,117,117,83,82,116,157,158,118,118,84,83,117,158,159,119,119,85,84,118,159,160,120,120,86,85,119,160,161,121,121,122,86,120,161,162,163,122,123,87,86,121,163,164,123,124,88,87,122,164,165,124,125,89,88,123,165,166,125,126,90,89,124,166,167,126,91,61,90,125,167,168,127,170,128,91,168,216,169,128,171,129,92,91,127,170,129,172,130,93,92,128,171,130,173,131,94,93,129,172,131,174,132,95,94,130,173,132,175,133,96,95,131,174,133,176,134,97,96,132,175,134,177,178,135,97,133,176,135,178,179,136,98,97,134,136,179,180,137,99,98,135,137,180,181,138,100,99,136,138,181,182,139,101,100,137,139,182,183,140,102,101,138,140,183,184,141,103,102,139,141,184,185,186,142,103,140,142,141,186,187,143,104,103,143,142,187,188,144,105,104,144,143,188,189,145,106,105,145,144,189,190,146,107,106,146,145,190,191,147,108,107,147,146,191,192,148,109,108,148,147,192,193,194,149,109,149,109,148,194,195,150,110,150,110,149,195,196,151,111,151,111,150,196,197,152,112,152,112,151,197,198,153,113,153,113,152,198,199,154,114,154,114,153,199,200,155,115,155,115,154,200,201,202,156,156,116,115,155,202,203,157,157,117,116,156,203,204,158,158,118,117,157,204,205,159,159,119,118,158,205,206,160,160,120,119,159,206,207,161,161,121,120,160,207,208,162,162,163,121,161,208,209,210,163,164,122,121,162,210,211,164,165,123,122,163,211,212,165,166,124,123,164,212,213,166,167,125,124,165,213,214,167,168,126,125,166,214,215,168,127,91,126,167,215,216,169,218,170,127,216,270,217,170,219,171,128,127,169,218,171,220,172,129,128,170,219,172,221,173,130,129,171,220,173,222,174,131,130,172,221,174,223,175,132,131,173,222,175,224,176,133,132,174,223,176,225,177,134,133,175,224,177,226,227,178,134,176,225,178,227,228,179,135,134,177,179,228,229,180,136,135,178,180,229,230,181,137,136,179,181,230,231,182,138,137,180,182,231,232,183,139,138,181,183,232,233,184,140,139,182,184,233,234,185,141,140,183,185,234,235,236,186,141,184,186,185,236,237,187,142,141,187,186,237,238,188,143,142,188,187,238,239,189,144,143,189,188,239,240,190,145,144,190,189,240,241,191,146,145,191,190,241,242,192,147,146,192,191,242,243,193,148,147,193,192,243,244,245,194,148,194,148,193,245,246,195,149,195,149,194,246,247,196,150,196,150,195,247,248,197,151,197,151,196,248,249,198,152,198,152,197,249,250,199,153,199,153,198,250,251,200,154,200,154,199,251,252,201,155,201,155,200,252,253,254,202,202,156,155,201,254,255,203,203,157,156,202,255,256,204,204,158,157,203,256,257,205,205,159,158,204,257,258,206,206,160,159,205,258,259,207,207,161,160,206,259,260,208,208,162,161,207,260,261,209,209,210,162,208,261,262,263,210,211,163,162,209,263,264,211,212,164,163,210,264,265,212,213,165,164,211,265,266,213,214,166,165,212,266,267,214,215,167,166,213,267,268,215,216,168,167,214,268,269,216,169,127,168,215,269,270,217,272,218,169,270,330,271,218,273,219,170,169,217,272,219,274,220,171,170,218,273,220,275,221,172,171,219,274,221,276,222,173,172,220,275,222,277,223,174,173,221,276,223,278,224,175,174,222,277,224,279,225,176,175,223,278,225,280,226,177,176,224,279,226,281,282,227,177,225,280,227,282,283,228,178,177,226,228,283,284,229,179,178,227,229,284,285,230,180,179,228,230,285,286,231,181,180,229,231,286,287,232,182,181,230,232,287,288,233,183,182,231,233,288,289,234,184,183,232,234,289,290,235,185,184,233,235,290,291,292,236,185,234,236,235,292,293,237,186,185,237,236,293,294,238,187,186,238,237,294,295,239,188,187,239,238,295,296,240,189,188,240,239,296,297,241,190,189,241,240,297,298,242,191,190,242,241,298,299,243,192,191,243,242,299,300,244,193,192,244,243,300,301,302,245,193,245,193,244,302,303,246,194,246,194,245,303,304,247,195,247,195,246,304,305,248,196,248,196,247,305,306,249,197,249,197,248,306,307,250,198,250,198,249,307,308,251,199,251,199,250,308,309,252,200,252,200,251,309,310,253,201,253,201,252,310,311,312,254,254,202,201,253,312,313,255,255,203,202,254,313,314,256,256,204,203,255,314,315,257,257,205,204,256,315,316,258,258,206,205,257,316,317,259,259,207,206,258,317,318,260,260,208,207,259,318,319,261,261,209,208,260,319,320,262,262,263,209,261,320,321,322,263,264,210,209,262,322,323,264,265,211,210,263,323,324,265,266,212,211,264,324,325,266,267,213,212,265,325,326,267,268,214,213,266,326,327,268,269,215,214,267,327,328,269,270,216,215,268,328,329,270,217,169,216,269,329,330,271,272,217,330,273,218,217,271,274,219,218,272,275,220,219,273,276,221,220,274,277,222,221,275,278,223,222,276,279,224,223,277,280,225,224,278,281,226,225,279,281,282,226,280,283,227,226,281,284,228,227,282,285,229,228,283,286,230,229,284,287,231,230,285,288,232,231,286,289,233,232,287,290,234,233,288,291,235,234,289,291,292,235,290,291,293,236,235,292,294,237,236,293,295,238,237,294,296,239,238,295,297,240,239,296,298,241,240,297,299,242,241,298,300,243,242,299,301,244,243,301,300,302,244,244,301,303,245,245,302,304,246,246,303,305,247,247,304,306,248,248,305,307,249,249,306,308,250,250,307,309,251,251,308,310,252,252,309,311,253,311,253,310,312,254,253,311,313,255,254,312,314,256,255,313,315,257,256,314,316,258,257,315,317,259,258,316,318,260,259,317,319,261,260,318,320,262,261,319,321,321,322,262,320,323,263,262,321,324,264,263,322,325,265,264,323,326,266,265,324,327,267,266,325,328,268,267,326,329,269,268,327,330,270,269,328,271,217,270,329]
9809 connI=[0,7,14,21,28,35,42,49,56,63,70,77,84,91,98,105,112,119,126,133,140,147,154,161,168,175,182,189,196,203,210,217,224,231,238,245,252,259,266,273,280,287,294,301,308,315,322,329,336,343,350,357,364,371,378,385,392,399,406,413,420,427,434,441,448,455,462,469,476,483,490,497,504,511,518,525,532,539,546,553,560,567,574,581,588,595,602,609,616,623,630,637,644,651,658,665,672,679,686,693,700,707,714,721,728,735,742,749,756,763,770,777,784,791,798,805,812,819,826,833,840,847,854,861,868,875,882,889,896,903,910,917,924,931,938,945,952,959,966,973,980,987,994,1001,1008,1015,1022,1029,1036,1043,1050,1057,1064,1071,1078,1085,1092,1099,1106,1113,1120,1127,1134,1141,1148,1155,1162,1169,1176,1183,1190,1197,1204,1211,1218,1225,1232,1239,1246,1253,1260,1267,1274,1281,1288,1295,1302,1309,1316,1323,1330,1337,1344,1351,1358,1365,1372,1379,1386,1393,1400,1407,1414,1421,1428,1435,1442,1449,1456,1463,1470,1477,1484,1491,1498,1505,1512,1519,1526,1533,1540,1547,1554,1561,1568,1575,1582,1589,1596,1603,1610,1617,1624,1631,1638,1645,1652,1659,1666,1673,1680,1687,1694,1701,1708,1715,1722,1729,1736,1743,1750,1757,1764,1771,1778,1785,1792,1799,1806,1813,1820,1827,1834,1841,1848,1855,1862,1869,1876,1883,1890,1897,1901,1905,1909,1913,1917,1921,1925,1929,1933,1937,1941,1945,1949,1953,1957,1961,1965,1969,1973,1977,1981,1985,1989,1993,1997,2001,2005,2009,2013,2017,2021,2025,2029,2033,2037,2041,2045,2049,2053,2057,2061,2065,2069,2073,2077,2081,2085,2089,2093,2097,2101,2105,2109,2113,2117,2121,2125,2129,2133,2137]
9811 m=MEDCouplingUMesh.New("convexhull",2);
9812 m.allocateCells(331);
9813 for i in xrange(331):
9814 m.insertNextCell(NORM_POLYGON,conn[connI[i]:connI[i+1]]);
9816 m.finishInsertingCells();
9817 coordsDa=DataArrayDouble.New(coords,331,2);
9818 m.setCoords(coordsDa);
9821 da=m.convexEnvelop2D();
9823 self.assertEqual(coordsDa.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
9824 daC=da.buildComplement(m.getNumberOfCells());
9825 expected2=DataArrayInt.New([271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307,308,309,310,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330]);
9826 self.assertTrue(expected2.isEqual(daC));
9828 vals=m.getMeasureField(ON_CELLS).getArray()
9829 ref=271*[184.69493088478035]+3*[-61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]+2*[61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]+[-61.564976961404426,-92.34746544254946,-92.34746544259811,-92.34746544253488,-92.3474654425349,-92.34746544180479,-92.34746544253493,-92.3474654419026,-92.34746544190256,-92.34746544253491]
9830 vals-=DataArrayDouble.New(ref)
9832 theTest=vals.getIdsInRange(-1.,1e-7)
9833 self.assertTrue(theTest.isIdentity())
9834 self.assertEqual(331,len(theTest))
9837 def testSwigDAIOp8(self):
9838 da=DataArrayInt.New([7,5,6,7,8,9,9,10,12,13,47,15])
9839 self.assertTrue(7 in da)
9840 self.assertTrue(47 in da)
9841 self.assertTrue(15 in da)
9842 self.assertEqual(0,da.index(7))
9843 self.assertEqual(10,da.index(47))
9844 self.assertTrue(14 not in da)
9845 self.assertEqual(5,da.search([9,9]))
9846 self.assertEqual(-1,da.search([5,8]))
9848 self.assertTrue([47,16] not in da)
9849 self.assertTrue([5,6] not in da)
9850 self.assertTrue([6,7] in da)
9851 self.assertEqual(4,da.index([12,13]))
9854 def testDataArraySort1(self):
9855 arr=DataArrayInt.New();
9856 self.assertRaises(InterpKernelException,arr.sort,True)
9857 self.assertRaises(InterpKernelException,arr.sort,False)
9858 values=[2,1,6,5,4,7]
9860 self.assertRaises(InterpKernelException,arr.sort,True)
9861 self.assertRaises(InterpKernelException,arr.sort,False)
9863 arr.setValues(values,6,1)
9867 expected1=[1,2,4,5,6,7]
9868 self.assertEqual(6,arr1.getNumberOfTuples());
9869 self.assertEqual(1,arr1.getNumberOfComponents());
9870 self.assertEqual(expected1,arr1.getValues());
9872 expected2=[7,6,5,4,2,1]
9873 self.assertEqual(6,arr2.getNumberOfTuples());
9874 self.assertEqual(1,arr2.getNumberOfComponents());
9875 self.assertTrue(expected2,arr2.getValues());
9877 ard=DataArrayDouble.New();
9878 self.assertRaises(InterpKernelException,ard.sort,True)
9879 self.assertRaises(InterpKernelException,ard.sort,False)
9880 valuesD=[2.,1.,6.,5.,4.,7.]
9882 self.assertRaises(InterpKernelException,ard.sort,True)
9883 self.assertRaises(InterpKernelException,ard.sort,False)
9885 ard.setValues(valuesD,6,1)
9889 expected3=[1.,2.,4.,5.,6.,7.]
9890 self.assertEqual(6,ard1.getNumberOfTuples());
9891 self.assertEqual(1,ard1.getNumberOfComponents());
9893 self.assertAlmostEqual(expected3[i],ard1.getIJ(i,0),12)
9896 expected4=[7.,6.,5.,4.,2.,1.]
9897 self.assertEqual(6,ard2.getNumberOfTuples());
9898 self.assertEqual(1,ard2.getNumberOfComponents());
9900 self.assertAlmostEqual(expected4[i],ard2.getIJ(i,0),12)
9904 def testPartitionBySpreadZone1(self):
9905 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9906 m4=MEDCouplingUMesh.MergeUMeshes([m,m[-3:],m[0:2]]);
9907 m4.renumberCells([5,2,9,6,4,7,0,1,3,8]);
9909 v2=m4.partitionBySpreadZone();
9910 self.assertTrue(3,len(v2));
9911 self.assertTrue(v2[0].isEqual(DataArrayInt.New([0,1,7])))
9912 self.assertTrue(v2[1].isEqual(DataArrayInt.New([2,4,5,6,9])))
9913 self.assertTrue(v2[2].isEqual(DataArrayInt.New([3,8])))
9915 m5=m4.buildSpreadZonesWithPoly();
9916 self.assertEqual(3,m5.getNumberOfCells());
9917 self.assertTrue(m5.getCoords().getHiddenCppPointer()==m4.getCoords().getHiddenCppPointer());
9918 self.assertEqual([5,15,16,17,14,11,13,12,5,2,1,0,3,6,7,8,5,5,18,21,22,20,19],m5.getNodalConnectivity().getValues())
9919 self.assertEqual([0,8,17,23],m5.getNodalConnectivityIndex().getValues())
9923 def testGiveCellsWithType1(self):
9926 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9927 da=m.giveCellsWithType(NORM_TRI3);
9928 self.assertEqual(2,da.getNumberOfTuples());
9929 self.assertEqual(1,da.getNumberOfComponents());
9930 self.assertEqual(expected0,da.getValues())
9932 da=m.giveCellsWithType(NORM_QUAD4);
9933 self.assertEqual(3,da.getNumberOfTuples());
9934 self.assertEqual(1,da.getNumberOfComponents());
9935 self.assertEqual(expected1,da.getValues())
9937 da=m.giveCellsWithType(NORM_TRI6);
9938 self.assertEqual(0,da.getNumberOfTuples());
9939 self.assertEqual(1,da.getNumberOfComponents());
9941 self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_SEG2)
9942 self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_HEXA8)
9945 def testSwigDAOp1(self):
9946 d=DataArrayDouble.New(5,2)
9947 d.rearrange(1) ; d.iota(2.) ; d.rearrange(2)
9948 d.setInfoOnComponents(["X [m]","Y [m]"])
9952 self.assertTrue(d1.isEqualWithoutConsideringStr(DataArrayDouble.New([10.0,12.0,12.0,14.0,14.0,16.0,16.0,18.0,18.0,20.0]),1e-12))
9953 d1bis=DataArrayDouble.New([8,9],1,2)+d
9954 self.assertTrue(d1bis.isEqual(d1,1e-12))
9956 self.assertTrue(d1ter.isEqual(d1,1e-12))
9959 self.assertTrue(d2.isEqual(d,1e-12))
9960 self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])#[8,9]-d1
9963 self.assertTrue(d3.isEqualWithoutConsideringStr(DataArrayDouble.New([16.0,27.0,32.0,45.0,48.0,63.0,64.0,81.0,80.0,99.0]),1e-12))
9964 d3bis=DataArrayDouble.New([8,9],1,2)*d
9965 self.assertTrue(d3bis.isEqual(d3,1e-12))
9967 self.assertTrue(d3ter.isEqual(d3,1e-12))
9970 self.assertTrue(d4.isEqual(d,1e-12))
9972 d=DataArrayInt.New(5,2)
9973 d.rearrange(1) ; d.iota(2) ; d.rearrange(2)
9974 d.setInfoOnComponents(["X [m]","Y [m]"])
9978 self.assertEqual(d1.getValues(),[10,12,12,14,14,16,16,18,18,20])
9979 d1bis=DataArrayInt.New([8,9],1,2)+d
9980 self.assertTrue(d1bis.isEqual(d1))
9982 self.assertTrue(d1ter.isEqual(d1))
9985 self.assertTrue(d2.isEqual(d))
9986 self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])
9989 self.assertEqual(d3.getValues(),[16,27,32,45,48,63,64,81,80,99])
9990 d3bis=DataArrayInt.New([8,9],1,2)*d
9991 self.assertTrue(d3bis.isEqual(d3))
9993 self.assertTrue(d3ter.isEqual(d3))
9996 self.assertTrue(d4.isEqual(d))
9999 self.assertEqual(d5.getValues(),[2,3,0,0,2,2,0,4,2,1])
10002 def testSwigSelectTupleId2DAIBug1(self):
10003 da=DataArrayInt.New([0,1,2,3,12,13,4,5,6,7,14,15,8,9,10,11,16,17])
10004 self.assertEqual([2,6,10],da[2::6].getValues())
10005 self.assertEqual([0,4,8],da[::6].getValues())
10006 self.assertEqual([5,9],da[7::6].getValues())
10007 self.assertEqual([5],da[7:-5:6].getValues())
10010 def testSwigCpp5Safe1(self):
10011 m=MEDCouplingUMesh.New("toto",2)
10012 coords=DataArrayDouble.New([0.,0.,1.,0.,1.,1.,0.,1.],4,2)
10013 m.setCoords(coords)
10014 vecs=DataArrayDouble.New([2.,3.,4.,5.,6.,7.],3,2)
10015 expected1=[[2.,3.,3.,3.,3.,4.,2.,4.0],[4.,5.,5.,5.,5.,6.,4.,6.0],[6.,7.,7.,7.,7.,8.,6.,8.0]]
10016 for pos,vec in enumerate(vecs):
10019 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10021 for pos,vec in enumerate(vecs):
10023 m2.translate(vec.buildDADouble())
10024 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10028 def testSwigBugNonRegressionZipDA(self):
10029 angles=map(lambda x:pi/3*x,xrange(6))
10032 dad=DataArrayDouble.New(6, 2)
10036 dad2=dad.fromPolarToCart()
10037 dads=[dad2.deepCpy() for elt in 7*[None]]
10039 translationToPerform=[[0.01,0.02],[3./2.*radius,-radius*sqrt(3.)/2],[3./2.*radius,radius*sqrt(3.)/2],[0.,radius*sqrt(3.)],[-3./2.*radius,radius*sqrt(3.)/2],[-3./2.*radius,-radius*sqrt(3.)/2],[0.,-radius*sqrt(3.)]]
10040 for d,t in zip(dads,translationToPerform):
10044 self.assertTrue(not dad2.isEqual(elt,1e-12))
10046 for d,t in zip(dads,translationToPerform):
10050 self.assertTrue(dad2.isEqual(elt,1e-12))
10054 def testBuildSlice3D2(self):
10055 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
10056 vec1=[-0.07,1.,0.07]
10057 origin1=[1.524,1.4552,1.74768]
10058 slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
10059 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
10060 f.setTime(4.5,6,7) ; f.setMesh(mesh3D)
10061 arr=DataArrayDouble(mesh3D.getNumberOfCells(),2)
10062 arr.rearrange(1) ; arr.iota(2.) ; arr.rearrange(2)
10065 expected1=DataArrayInt([1,3,4,7,9,10,13,15,16])
10066 self.assertTrue(expected1.isEqual(ids))
10067 arr2=arr[expected1]
10069 f2=f.extractSlice3D(origin1,vec1,1e-10)
10070 self.assertTrue(f2.getArray().isEqual(arr2,1e-12));
10071 self.assertTrue(slice1.isEqual(f2.getMesh(),1e-12))
10072 self.assertEqual(6,f2.getTime()[1]) ; self.assertEqual(7,f2.getTime()[2])
10073 self.assertAlmostEqual(4.5,f2.getTime()[0],12);
10076 def testComputeTupleIdsToSelectFromCellIds1(self):
10077 m=MEDCouplingDataForTest.build2DTargetMesh_3()
10078 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
10080 arr=DataArrayDouble(52,2) ; arr.rearrange(1) ; arr.iota(7.) ; arr.rearrange(2)
10083 f2=f.buildSubPart([1,5,9])
10084 f2.checkCoherency()
10085 cI=m.computeNbOfNodesPerCell()
10086 cI.computeOffsets2()
10087 sel=DataArrayInt([1,5,9])
10088 res=sel.buildExplicitArrByRanges(cI)
10090 self.assertTrue(arr2.isEqual(DataArrayDouble([13,14,15,16,17,18,19,20,59,60,61,62,63,64,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],15,2),1e-12))
10091 self.assertTrue(arr2.isEqual(f2.getArray(),1e-12))
10094 def testComputeSkin1(self):
10095 arrX=DataArrayDouble([2.,3.4,5.6,7.7,8.0]) ; arrY=DataArrayDouble([2.,3.4,5.6,7.7,9.0,14.2])
10096 cmesh=MEDCouplingCMesh() ; cmesh.setCoordsAt(0,arrX) ; cmesh.setCoordsAt(1,arrY)
10097 umesh=cmesh.buildUnstructured()
10099 skin=umesh.computeSkin()
10100 self.assertEqual(18,skin.getNumberOfCells())
10101 self.assertEqual(1,skin.getMeshDimension())
10102 self.assertTrue(skin.getCoords().getHiddenCppPointer()==umesh.getCoords().getHiddenCppPointer())
10103 self.assertEqual([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54],skin.getNodalConnectivityIndex().getValues())
10104 self.assertEqual([1,1,0,1,0,5,1,2,1,1,3,2,1,4,3,1,9,4,1,5,10,1,14,9,1,10,15,1,19,14,1,15,20,1,24,19,1,20,25,1,25,26,1,26,27,1,27,28,1,28,29,1,29,24],skin.getNodalConnectivity().getValues())
10105 ids=skin.computeFetchedNodeIds()
10106 self.assertEqual([0,1,2,3,4,5,9,10,14,15,19,20,24,25,26,27,28,29],ids.getValues())
10107 part=umesh.buildFacePartOfMySelfNode(ids,True)
10108 part.setName(skin.getName());
10109 self.assertTrue(part.isEqual(skin,1e-12))
10112 self.assertTrue(not part.isEqual(skin,1e-12))
10113 trad=part.zipConnectivityTraducer(0)
10114 self.assertEqual(9,part.getNumberOfCells())
10115 self.assertEqual([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8],trad.getValues())
10118 def testUMeshSetPartOfMySelf2(self):
10119 # resize with explicit ids list
10120 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10121 self.assertEqual([3,4],m.getAllTypes())
10124 part2=part[[1,2,5]]
10126 self.assertEqual([3,0,4,1,3,1,4,2,3,4,5,2,3,6,7,4,3,7,5,4],m.getNodalConnectivity().getValues())
10127 self.assertEqual([0,4,8,12,16,20],m.getNodalConnectivityIndex().getValues())
10128 self.assertEqual([3],m.getAllTypes())
10129 # no resize with explicit ids list
10130 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10132 part.convertAllToPoly()
10134 self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10135 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10136 self.assertEqual([3,4,5],m.getAllTypes())
10137 # resize with range ids
10138 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10141 self.assertEqual([4,0,3,4,1,4,6,7,4,3,4,7,8,5,4,4,6,7,4,3,4,7,8,5,4],m.getNodalConnectivity().getValues())
10142 self.assertEqual([0,5,10,15,20,25],m.getNodalConnectivityIndex().getValues())
10143 self.assertEqual([4],m.getAllTypes())
10144 # no resize with range ids
10145 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10147 part.convertAllToPoly()
10149 self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10150 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10151 self.assertEqual([3,4,5],m.getAllTypes())
10152 # no resize with range ids negative direction
10153 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10155 part.convertAllToPoly()
10157 self.assertEqual([4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3],m.getNodalConnectivity().getValues())
10158 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10159 self.assertEqual([3,4,5],m.getAllTypes())
10162 def testUnPolyze3(self):
10163 coord=[0.0,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.0,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]
10164 conn=[1,2,5,4,-1,4,3,0,1,-1,2,0,3,5,-1,0,2,1,-1,4,5,3]
10165 m=MEDCouplingUMesh.New("a mesh",3);
10166 m.allocateCells(1);
10167 m.insertNextCell(NORM_POLYHED,22,conn[0:22])
10168 m.finishInsertingCells();
10169 coords=DataArrayDouble(coord,6,3);
10170 m.setCoords(coords);
10171 m.checkCoherency();
10173 vol=m.getMeasureField(ON_CELLS);
10174 self.assertEqual(1,vol.getArray().getNumberOfTuples());
10175 self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10179 self.assertEqual([NORM_PENTA6],m.getAllTypes())
10180 self.assertTrue(DataArrayInt([0,7]).isEqual(m.getNodalConnectivityIndex()))
10181 self.assertTrue(DataArrayInt([16,0,2,1,3,5,4]).isEqual(m.getNodalConnectivity()))
10183 vol=m.getMeasureField(ON_CELLS);
10184 self.assertEqual(1,vol.getArray().getNumberOfTuples());
10185 self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10188 def testKrSpatialDiscretization1(self):
10189 srcPointCoordsX=[0.8401877171547095, 0.7830992237586059, 0.9116473579367843, 0.335222755714889, 0.2777747108031878, 0.4773970518621602, 0.3647844727918433, 0.9522297251747128, 0.6357117279599009, 0.1416025553558034]
10190 srcFieldValsOnPoints=[2.129892434968836, 2.295320474540621, 1.931948594981134, 2.728013590937196, 2.715603240418478, 2.661778472822935, 2.695696990104364, 1.893710234970982, 2.529628016549284, 2.728432341300668]
10191 targetPointCoordsX=[-0.5,-0.45,-0.4,-0.35,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-6.93889390391e-17,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.05,1.1,1.15,1.2,1.25,1.3,1.35,1.4,1.45]
10192 targetFieldValsExpected=[2.975379475824351, 2.95613491917003, 2.936890362515361, 2.917645805861018, 2.898401249206574, 2.879156692552137, 2.859912135897732, 2.840667579243201, 2.821423022588731, 2.802178465934342, 2.78293390927989, 2.763689352625457, 2.744444795971001, 2.725209522098197, 2.709077577124666, 2.706677252549218, 2.727467797847971, 2.713338094723676, 2.671342424824244, 2.664877370146978, 2.653840141412181, 2.619607861392791, 2.569777214476479, 2.513263929794591, 2.450732752808528, 2.368313560985155, 2.250909795670307, 2.098194272085416, 1.954257891732065, 1.895040660973802, 1.865256788315972, 1.835475248687992, 1.80569370905998, 1.775912169431971, 1.746130629803976, 1.716349090175918, 1.686567550547855, 1.656786010919941, 1.627004471291988, 1.597222931663817]
10193 coeffsExpected=DataArrayDouble.New([52.238272642008695, 26.186513281350948, -173.42106377948534, 324.56733663875184, -104.64968873410248, 34.375030568158316, -256.12372208190425, 105.2292032463934, -16.239907618144965, 7.838025836978943, 2.621910745077291, -0.4902609628247241])
10195 nbOfInputPoints=10;
10196 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
10197 srcArrX=DataArrayDouble.New(srcPointCoordsX,nbOfInputPoints,1);
10198 cmesh=MEDCouplingCMesh.New("aMesh");
10199 cmesh.setCoordsAt(0,srcArrX);
10200 umesh=cmesh.buildUnstructured();
10202 srcVals=DataArrayDouble.New(srcFieldValsOnPoints,nbOfInputPoints,1);
10203 f.setArray(srcVals);
10204 f.checkCoherency();
10206 res0=f.getValueOn(targetPointCoordsX[:1]);
10207 self.assertAlmostEqual(targetFieldValsExpected[0],res0[0],10)
10209 valuesToTest=f.getValueOnMulti(targetPointCoordsX);
10210 self.assertEqual(40,valuesToTest.getNumberOfTuples());
10211 self.assertEqual(1,valuesToTest.getNumberOfComponents());
10212 for i in xrange(40):
10213 self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
10215 fd=f.getDiscretization()
10217 self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
10218 coeffs,isDrift=fd.computeVectorOfCoefficients(umesh,srcVals)
10219 self.assertEqual(2,isDrift)
10220 self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
10224 def testDuplicateEachTupleNTimes1(self):
10225 d=DataArrayDouble.New([9.,8.,7.,6.],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10226 d2=d.duplicateEachTupleNTimes(3)
10227 self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayDouble.New([9.,9.,9.,8.,8.,8.,7.,7.,7.,6.,6.,6.],4*3,1),1e-14))
10228 self.assertEqual("aname",d2.getName())
10229 self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10231 d=DataArrayInt.New([9,8,7,6],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10232 d2=d.duplicateEachTupleNTimes(3)
10233 self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayInt.New([9,9,9,8,8,8,7,7,7,6,6,6],4*3,1)))
10234 self.assertEqual("aname",d2.getName())
10235 self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10238 def testSwigComputeTupleIdsNearTuples1(self):
10239 da=DataArrayDouble([5.,6.,-5.,-6.,5.,-6.,-5.,6.,5.,6.],5,2)
10240 arr,arrI=da.computeTupleIdsNearTuples(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2),1e-10)
10241 self.assertEqual([2,0,4,1],arr.getValues())
10242 self.assertEqual([0,1,3,4],arrI.getValues())
10243 arr,arrI=da.computeTupleIdsNearTuples([5.,-6.,5.,6.,-5.,-6.],1e-10)
10244 self.assertEqual([2,0,4,1],arr.getValues())
10245 self.assertEqual([0,1,3,4],arrI.getValues())
10246 expected0=[[2],[0,4],[1]]
10247 expected1=[[0,1],[0,2],[0,1]]
10248 for pos,it in enumerate(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2)):
10249 arr,arrI=da.computeTupleIdsNearTuples(it,1e-10)
10250 self.assertEqual(expected0[pos],arr.getValues())
10251 self.assertEqual(expected1[pos],arrI.getValues())
10255 def testSwigDataTupleIOp1(self):
10256 d=DataArrayDouble(10,1)
10261 toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
10262 self.assertTrue(toTest.isEqual(d,1e-12))
10266 toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10267 self.assertTrue(toTest.isEqual(d,1e-12))
10271 toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
10272 self.assertTrue(toTest.isEqual(d,1e-12))
10276 toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10277 self.assertTrue(toTest.isEqual(d,1e-12))
10279 d=DataArrayInt(10,1)
10284 self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
10288 self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10292 self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
10296 self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10300 self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
10303 def testIntersect2DMeshesTmp5(self):
10304 coords=DataArrayDouble.New([41,0,42,0,0,42,0,41,41.5,0,29.698484809834998,29.698484809834994,0,41.5,28.991378028648452,28.991378028648445,-42,0,-41,0,-29.698484809834994,29.698484809834998,-41.5,0,-28.991378028648445,28.991378028648452,0,-42,0,-41,-29.698484809835001,-29.698484809834994,0,-41.5,-28.991378028648455,-28.991378028648445,29.698484809834987,-29.698484809835001,28.991378028648441,-28.991378028648455,43,0,0,43,42.5,0,30.405591591021544,30.40559159102154,0,42.5,-43,0,-30.40559159102154,30.405591591021544,-42.5,0,0,-43,-30.405591591021551,-30.40559159102154,0,-42.5,30.405591591021537,-30.405591591021551,44,0,0,44,43.5,0,31.112698372208094,31.112698372208087,0,43.5,-44,0,-31.112698372208087,31.112698372208094,-43.5,0,0,-44,-31.112698372208097,-31.112698372208087,0,-43.5,31.112698372208083,-31.112698372208097,45,0,0,45,44.5,0,31.81980515339464,31.819805153394636,0,44.5,-45,0,-31.819805153394636,31.81980515339464,-44.5,0,0,-45,-31.819805153394647,-31.819805153394636,0,-44.5,31.819805153394629,-31.819805153394647,47,0,0,47,46,0,33.234018715767739,33.234018715767732,0,46,-47,0,-33.234018715767732,33.234018715767739,-46,0,0,-47,-33.234018715767739,-33.234018715767732,0,-46,33.234018715767725,-33.234018715767739,49,0,0,49,48,0,34.648232278140831,34.648232278140824,0,48,-49,0,-34.648232278140824,34.648232278140831,-48,0,0,-49,-34.648232278140839,-34.648232278140824,0,-48,34.648232278140817,-34.648232278140839,51,0,0,51,50,0,36.062445840513924,36.062445840513924,0,50,-51,0,-36.062445840513924,36.062445840513924,-50,0,0,-51,-36.062445840513931,-36.062445840513924,0,-50,36.062445840513917,-36.062445840513931,53,0,0,53,52,0,37.476659402887023,37.476659402887016,0,52,-53,0,-37.476659402887016,37.476659402887023,-52,0,0,-53,-37.47665940288703,-37.476659402887016,0,-52,37.476659402887009,-37.47665940288703,55,0,0,55,54,0,38.890872965260115,38.890872965260108,0,54,-55,0,-38.890872965260108,38.890872965260115,-54,0,0,-55,-38.890872965260122,-38.890872965260108,0,-54,38.890872965260101,-38.890872965260122,59,0,0,59,57,0,41.719300090006307,41.7193000900063,0,57,-59,0,-41.7193000900063,41.719300090006307,-57,0,0,-59,-41.719300090006314,-41.7193000900063,0,-57,41.719300090006293,-41.719300090006314,63,0,0,63,61,0,44.547727214752499,44.547727214752491,0,61,-63,0,-44.547727214752491,44.547727214752499,-61,0,0,-63,-44.547727214752506,-44.547727214752491,0,-61,44.547727214752484,-44.547727214752506,67,0,0,67,65,0,47.37615433949869,47.376154339498683,0,65,-67,0,-47.376154339498683,47.37615433949869,-65,0,0,-67,-47.376154339498697,-47.376154339498683,0,-65,47.376154339498676,-47.376154339498697,71,0,0,71,69,0,50.204581464244875,50.204581464244868,0,69,-71,0,-50.204581464244868,50.204581464244875,-69,0,0,-71,-50.204581464244889,-50.204581464244868,0,-69,50.20458146424486,-50.204581464244889,75,0,0,75,73,0,53.033008588991066,53.033008588991059,0,73,-75,0,-53.033008588991059,53.033008588991066,-73,0,0,-75,-53.033008588991073,-53.033008588991059,0,-73,53.033008588991052,-53.033008588991073,80,0,0,80,77.5,0,56.568542494923804,56.568542494923797,0,77.5,-80,0,-56.568542494923797,56.568542494923804,-77.5,0,0,-80,-56.568542494923818,-56.568542494923797,0,-77.5,56.56854249492379,-56.568542494923818],188,2)
10305 conn=DataArrayInt.New([8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12,8,9,8,13,14,11,15,16,17,8,14,13,1,0,16,18,4,19,8,1,20,21,2,22,23,24,5,8,2,21,25,8,24,26,27,10,8,8,25,28,13,27,29,30,15,8,13,28,20,1,30,31,22,18,8,20,32,33,21,34,35,36,23,8,21,33,37,25,36,38,39,26,8,25,37,40,28,39,41,42,29,8,28,40,32,20,42,43,34,31,8,32,44,45,33,46,47,48,35,8,33,45,49,37,48,50,51,38,8,37,49,52,40,51,53,54,41,8,40,52,44,32,54,55,46,43,8,44,56,57,45,58,59,60,47,8,45,57,61,49,60,62,63,50,8,49,61,64,52,63,65,66,53,8,52,64,56,44,66,67,58,55,8,56,68,69,57,70,71,72,59,8,57,69,73,61,72,74,75,62,8,61,73,76,64,75,77,78,65,8,64,76,68,56,78,79,70,67,8,68,80,81,69,82,83,84,71,8,69,81,85,73,84,86,87,74,8,73,85,88,76,87,89,90,77,8,76,88,80,68,90,91,82,79,8,80,92,93,81,94,95,96,83,8,81,93,97,85,96,98,99,86,8,85,97,100,88,99,101,102,89,8,88,100,92,80,102,103,94,91,8,92,104,105,93,106,107,108,95,8,93,105,109,97,108,110,111,98,8,97,109,112,100,111,113,114,101,8,100,112,104,92,114,115,106,103,8,104,116,117,105,118,119,120,107,8,105,117,121,109,120,122,123,110,8,109,121,124,112,123,125,126,113,8,112,124,116,104,126,127,118,115,8,116,128,129,117,130,131,132,119,8,117,129,133,121,132,134,135,122,8,121,133,136,124,135,137,138,125,8,124,136,128,116,138,139,130,127,8,128,140,141,129,142,143,144,131,8,129,141,145,133,144,146,147,134,8,133,145,148,136,147,149,150,137,8,136,148,140,128,150,151,142,139,8,140,152,153,141,154,155,156,143,8,141,153,157,145,156,158,159,146,8,145,157,160,148,159,161,162,149,8,148,160,152,140,162,163,154,151,8,152,164,165,153,166,167,168,155,8,153,165,169,157,168,170,171,158,8,157,169,172,160,171,173,174,161,8,160,172,164,152,174,175,166,163,8,164,176,177,165,178,179,180,167,8,165,177,181,169,180,182,183,170,8,169,181,184,172,183,185,186,173,8,172,184,176,164,186,187,178,175],540)
10306 connI=DataArrayInt.New([0,9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144,153,162,171,180,189,198,207,216,225,234,243,252,261,270,279,288,297,306,315,324,333,342,351,360,369,378,387,396,405,414,423,432,441,450,459,468,477,486,495,504,513,522,531,540],61)
10308 m1=MEDCouplingUMesh.New("Fix",2);
10309 m1.setCoords(coords);
10310 m1.setConnectivity(conn,connI,True);
10312 coords=DataArrayDouble([46.5,-2.5,53.5,-2.5,53.5,2.5,46.5,2.5,50,-2.5,53.5,0,50,2.5,46.5,0,60.5,-2.5,60.5,2.5,57,-2.5,60.5,0,57,2.5,53.5,7.5,46.5,7.5,53.5,5,50,7.5,46.5,5,60.5,7.5,60.5,5,57,7.5,-2,47,2,47,2,53,-2,53,0,47,2,50,0,53,-2,50,6,47,6,53,4,47,6,50,4,53,2,59,-2,59,2,56,0,59,-2,56,6,59,6,56,4,59],42,2)
10314 conn=DataArrayInt([8,0,1,2,3,4,5,6,7,8,1,8,9,2,10,11,12,5,8,3,2,13,14,6,15,16,17,8,2,9,18,13,12,19,20,15,8,21,22,23,24,25,26,27,28,8,22,29,30,23,31,32,33,26,8,24,23,34,35,27,36,37,38,8,23,30,39,34,33,40,41,36],72);
10316 connI=DataArrayInt([0,9,18,27,36,45,54,63,72],9)
10317 m2=MEDCouplingUMesh.New("Mobile",2);
10318 m2.setCoords(coords);
10319 m2.setConnectivity(conn,connI,True);
10321 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10322 self.assertEqual(105,m3.getNumberOfCells());
10323 self.assertEqual(105,d1.getNumberOfTuples());
10324 self.assertEqual(105,d2.getNumberOfTuples());
10325 self.assertEqual(704,m3.getNumberOfNodes());
10327 areaExpected=[-65.18804756198824,-65.18804756198824,-65.18804756198824,-65.18804756198824,-66.75884388878285,-66.75884388878285,-66.7588438887833,-66.75884388878308,-68.32964021557768,-68.32964021557768,-68.32964021557814,-68.32964021557791,-69.9004365423732,-69.9004365423732,-69.90043654237297,-69.90043654237297,-1.194568659706448,-1.0869994447159463,-142.2316939607081,-144.51326206513068,-144.5132620651309,-1.1945686597064424,-143.3186934054243,-5.002264310862817,-10.0261332846393,-3.9727823117092953,-7.290862524642649,-124.504404940456,-3.9727823117093237,-146.82366506060032,-150.79644737231024,-5.002264310862776,-145.79418306144626,-5.00208651738126,-10.054764051268958,-4.001067863263231,-8.027932154428669,-129.99378209314813,-4.001067863263216,-153.07856481622616,-157.0796326794898,-5.0020865173811915,-152.07754616210832,-5.001928880064381,-10.050590216368969,-4.00098721602491,-8.025810856794209,-136.28350081741684,-4.000987216024939,-159.36183077064402,-163.36281798667005,-5.0019288800643285,-158.36088910660442,-1.2991516319851801,-3.702636830195414,-3.7815130030068254,-6.265364371195623,-0.02516260900254963,-0.6553944641345026,-3.975752765070567,-7.368528340442765,-142.57249927881398,-0.02516260900254963,-3.9757527650706095,-165.64508791977525,-169.64600329384803,-1.299151631985167,-3.7026368301953885,-164.6442148316677,-10.00321285677458,-20.08414323176165,-8.001644468035863,-16.042954878437143,-304.0096070742277,-8.00164446803587,-350.1399180412005,-358.1415625092368,-10.003212856774468,-348.13834965246224,-3.794150313030109,-8.65049239704272,-0.02260276689354157,-0.5885167811200915,-370.2185414798688,-0.022602766893559393,-383.2517009710623,-383.2743037379555,-3.7941503130300576,-379.48015342492505,-408.40704496667513,-408.4070449666742,-408.4070449666742,-408.4070449666742,-433.53978619538975,-433.5397861953902,-433.5397861953911,-433.53978619539066,-458.67252742410983,-458.6725274241094,-458.67252742410983,-458.6725274241089,-608.6835766330232,-608.6835766330232,-608.6835766330232,-608.6835766330241]
10328 expected1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,16,16,17,18,19,19,20,20,20,20,20,21,21,22,23,23,24,24,24,24,24,25,25,26,27,27,28,28,28,28,28,29,29,30,31,31,32,32,32,32,32,32,32,32,32,33,33,33,34,35,35,35,36,36,36,36,36,37,37,38,39,39,40,40,40,40,40,41,41,42,43,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]
10329 expected2=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,2,-1,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,2,4,5,-1,4,-1,-1,0,-1,0,1,2,3,4,5,6,7,-1,4,6,-1,-1,0,1,-1,1,3,6,7,-1,6,-1,-1,1,-1,1,3,6,7,-1,6,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]
10330 f3=m3.getMeasureField(ON_CELLS).getArray().getValues();
10331 for i in xrange(105):
10332 self.assertAlmostEqual(areaExpected[i],f3[i],10)
10334 self.assertEqual(expected1,d1.getValues())
10335 self.assertEqual(expected2,d2.getValues())
10338 def testDAIBuildUnique1(self):
10339 d=DataArrayInt([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
10341 self.assertTrue(e.isEqual(DataArrayInt([1,2,3,4,5,7,19])))
10344 def testDAIPartitionByDifferentValues1(self):
10345 d=DataArrayInt([1,0,1,2,0,2,2,-3,2])
10346 expected=[[-3,[7]],[0,[1,4]],[1,[0,2]],[2,[3,5,6,8]]]
10347 for i,elt in enumerate(zip(*d.partitionByDifferentValues())):
10348 self.assertEqual(expected[i][0],elt[1])
10349 self.assertEqual(expected[i][1],elt[0].getValues())
10353 def testFieldGaussMultiDiscPerType1(self):
10354 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
10355 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
10356 mQ8.allocateCells(1)
10357 mQ8.insertNextCell(NORM_QUAD8,range(8))
10358 mQ8.finishInsertingCells()
10359 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
10360 mQ4.allocateCells(1)
10361 mQ4.insertNextCell(NORM_QUAD4,range(4))
10362 mQ4.finishInsertingCells()
10363 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
10364 mT3.allocateCells(1)
10365 mT3.insertNextCell(NORM_TRI3,range(3))
10366 mT3.finishInsertingCells()
10368 tr=[[0.,0.],[2.,0.], [0.,2.],[2.,2.],[4.,2.],[6.,2.],[8.,2.],[10.,2.],[12.,2.],[0.,4.],[2.,4.],[4.,4.],[6.,4.],[8.,4.],[10.,4.],[12.,4.],[14.,4.],[16.,4.],[18.,4.],[20.,4.],[22.,4.]]
10369 ms=2*[mQ4]+7*[mQ8]+11*[mT3]
10370 ms[:]=(elt.deepCpy() for elt in ms)
10371 for m,t in zip(ms,tr):
10372 d=m.getCoords() ; d+= t
10374 m=MEDCouplingUMesh.MergeUMeshes(ms)
10375 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME)
10377 # throw because cell 0,1 are QUAD4 and cell 3 is QUAD8
10378 self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,[0,1,3],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10379 f.setGaussLocalizationOnCells([0,1],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10380 f.setGaussLocalizationOnCells([3,2,5],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.9,0.9],[0.8,0.05,0.15])
10381 f.setGaussLocalizationOnCells([4,6,8,7],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.9,0.9,-0.1,0.3],[0.7,0.05,0.15,0.1])
10382 f.setGaussLocalizationOnCells([9,10,11,12,13],[0.,0.,1.,0.,1.,1.],[0.4,0.4],[1.])
10383 f.setGaussLocalizationOnCells([14,15,16,17,18,19],[0.,0.,1.,0.,1.,1.],[0.4,0.4,0.14,0.16],[0.22,0.78])
10384 self.assertEqual(46,f.getNumberOfTuplesExpected())
10385 vals=DataArrayDouble.New(46*3,1) ; vals.iota(7.7) ; vals.rearrange(3)
10388 #f.getLocalizationOfDiscr()
10389 self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneType,NORM_QUAD8) #throw because several loc
10390 self.assertEqual([1,2],f.getGaussLocalizationIdsOfOneType(NORM_QUAD8))
10391 self.assertEqual([0,0,1,1,2,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4],f.getDiscretization().getArrayOfDiscIds().getValues())
10393 fc.checkCoherency()
10394 self.assertTrue(DataArrayDouble([13.7,14.7,15.7,16.7,17.7,18.7,19.7,20.7,21.7,22.7,23.7,24.7,25.7,26.7,27.7,28.7,29.7,30.7,31.7,32.7,33.7,34.7,35.7,36.7,82.7,83.7,84.7,85.7,86.7,87.7,88.7,89.7,90.7,91.7,92.7,93.7],12,3).isEqual(fc.getArray(),1e-10))
10395 fc.renumberCells([3,2,0,1])
10396 self.assertTrue(DataArrayDouble([28.7, 29.7, 30.7, 31.7, 32.7, 33.7, 34.7, 35.7, 36.7, 82.7, 83.7, 84.7, 85.7, 86.7, 87.7, 88.7, 89.7, 90.7, 91.7, 92.7, 93.7, 19.7, 20.7, 21.7, 22.7, 23.7, 24.7, 25.7, 26.7, 27.7, 13.7, 14.7, 15.7, 16.7, 17.7, 18.7],12,3).isEqual(fc.getArray(),1e-10))
10400 def testSwigRotate(self):
10401 d=DataArrayDouble([1.,2.,3.,4.,6.,5.],2,3)
10402 MEDCouplingPointSet.Rotate3DAlg([0.,0.,0.],[0.,1.,0.],1.5707963267948966,d)
10403 self.assertTrue(d.isEqual(DataArrayDouble([3.,2.,-1.,5.,6.,-4.],2,3),1e-12))
10404 d=DataArrayDouble([1.,2.,3.,4.,6.,5.],3,2)
10405 MEDCouplingPointSet.Rotate2DAlg([0.,0.],1.5707963267948966,d)
10406 self.assertTrue(d.isEqual(DataArrayDouble([-2.,1.,-4.,3.,-5.,6.],3,2),1e-12))
10409 def testSwigCMeshProtection(self):
10410 cm=MEDCouplingCMesh()
10411 self.assertRaises(InterpKernelException,cm.setCoordsAt,0,DataArrayDouble([4.,4.5,6.,7.],2,2))
10412 self.assertRaises(InterpKernelException,cm.setCoords,DataArrayDouble([4.,4.5,6.,7.],2,2))
10415 def testSwigCellsInBoundingBox1(self):
10416 m3D=MEDCouplingDataForTest.build3DExtrudedUMesh_1()[0]
10417 self.assertTrue(m3D.getCellsInBoundingBox([(0,3),(0,3),(0,1)],-1e-12).isEqual(DataArrayInt([0,1,2,3,4,5])))
10418 self.assertRaises(InterpKernelException,m3D.getCellsInBoundingBox,[(0,3,0),(3,0,1)],-1e-12)
10421 def testDAICheckMonotonic1(self):
10422 data1=[-1,0,2,2,4,5]
10423 data2=[6,2,0,-8,-9,-56]
10424 data3=[-1,0,3,2,4,6]
10425 data4=[7,5,2,3,0,-6]
10426 d=DataArrayInt.New(data1);
10427 self.assertTrue(d.isMonotonic(True));
10428 self.assertTrue(not d.isMonotonic(False));
10429 d.checkMonotonic(True);
10430 self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10431 d=DataArrayInt.New(data2);
10432 self.assertTrue(d.isMonotonic(False));
10433 self.assertTrue(not d.isMonotonic(True));
10434 d.checkMonotonic(False);
10435 self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10436 d=DataArrayInt.New(data3);
10437 self.assertTrue(not d.isMonotonic(False));
10438 self.assertTrue(not d.isMonotonic(True));
10439 self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10440 self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10441 d=DataArrayInt.New(data4);
10442 self.assertTrue(not d.isMonotonic(False));
10443 self.assertTrue(not d.isMonotonic(True));
10444 self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10445 self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10446 d=DataArrayInt.New(0,1)
10447 self.assertTrue(d.isMonotonic(True));
10448 self.assertTrue(d.isMonotonic(False));
10449 d.checkMonotonic(True);
10450 d.checkMonotonic(False);
10451 d=DataArrayInt.New(data4,3,2);#throw because nbComp!=1
10452 self.assertRaises(InterpKernelException,d.isMonotonic,True)
10453 self.assertRaises(InterpKernelException,d.isMonotonic,False)
10454 self.assertRaises(InterpKernelException,d.checkMonotonic,True)
10455 self.assertRaises(InterpKernelException,d.checkMonotonic,False)
10458 def testSwigDASetItemOnEmpty1(self):
10459 d=DataArrayInt(0,1)
10463 except InterpKernelException as e:
10466 self.assertTrue(isThrow)
10470 d=DataArrayDouble(0,1)
10474 except InterpKernelException as e:
10477 self.assertTrue(isThrow)
10480 d=DataArrayInt([],0,1)
10482 self.assertTrue(d2.isEqual(d))
10483 d=DataArrayDouble([],0,1)
10484 d2=DataArrayDouble(0)
10485 self.assertTrue(d2.isEqual(d,1e-12))
10488 def testSwigDAITransformWithIndArr1(self):
10489 arr=DataArrayInt([0,4,5,1])
10490 d=DataArrayInt([7,8,9,10])
10491 self.assertRaises(InterpKernelException,arr.transformWithIndArr,d)
10494 def testIntersect2DMeshesTmp6(self):
10496 coords=DataArrayDouble.New([2.7554552980815448e-15,45,-45,5.5109105961630896e-15,-31.819805153394636,31.81980515339464,2.8779199779962799e-15,47,2.8166876380389124e-15,46,-47,5.7558399559925599e-15,-33.234018715767732,33.234018715767739,-46,5.6333752760778247e-15],8,2);
10498 conn=DataArrayInt.New([8,0,3,5,1,4,6,7,2])
10499 connI=DataArrayInt.New([0,9]);
10500 m1=MEDCouplingUMesh.New("Fixe",2);
10501 m1.setCoords(coords);
10502 m1.setConnectivity(conn,connI,True);
10504 coords=DataArrayDouble.New([-7.3800475508445391,41.854329503018846,-3.7041190667754655,42.338274668899189,-3.7041190667754655,45.338274668899189,-7.3800475508445382,44.854329503018839,-5.5473631693521845,42.136406608386956,-3.7041190667754655,43.838274668899189,-5.5420833088100014,45.09630208595901,-7.3800475508445382,43.354329503018839,-3.7041190667754651,52.338274668899189,-7.3800475508445382,51.854329503018839,-3.7041190667754655,48.838274668899189,-5.5420833088100014,52.09630208595901,-7.3800475508445382,48.354329503018839],13,2);
10506 conn=DataArrayInt.New([8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12]);
10507 connI=DataArrayInt.New([0,9,18]);
10509 m2=MEDCouplingUMesh.New("Mobile",2);
10510 m2.setCoords(coords);
10511 m2.setConnectivity(conn,connI,True);
10513 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10514 self.assertTrue(d1.isEqual(DataArrayInt([0,0,0,0])));
10515 self.assertTrue(d2.isEqual(DataArrayInt([0,1,-1,-1])));
10516 self.assertEqual(4,m3.getNumberOfCells());
10517 self.assertEqual(4,d1.getNumberOfTuples());
10518 self.assertEqual(4,d2.getNumberOfTuples());
10519 self.assertEqual(43,m3.getNumberOfNodes());
10520 dI,areMerged,newNbOfNodes=m3.mergeNodes(1e-12)
10521 self.assertEqual(35,m3.getNumberOfNodes());
10523 self.assertEqual(23,m3.getNumberOfNodes());
10525 f=m3.getMeasureField(True);
10526 valuesExpected=DataArrayDouble([1.6603638692585716,5.747555728471923,129.68907101754394,7.4162714498559694])
10527 self.assertTrue(f.getArray().isEqual(valuesExpected,1e-12))
10530 def testDAPushBack(self):
10531 d=DataArrayDouble(0,1)
10532 for i in xrange(8):
10533 d.pushBackSilent(i)
10535 self.assertEqual(d.getNumberOfTuples(),8)
10536 self.assertEqual(d.getNbOfElemAllocated(),8)
10537 d.pushBackSilent(4.44)
10538 self.assertEqual(d.getNumberOfTuples(),9)
10539 self.assertEqual(d.getNbOfElemAllocated(),16)
10540 self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10542 self.assertEqual(e.getNumberOfTuples(),9)
10543 self.assertEqual(e.getNbOfElemAllocated(),9)
10544 self.assertTrue(e.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,4.44]),1e-12))
10545 self.assertAlmostEqual(d.popBackSilent(),4.44,12)
10546 self.assertEqual(d.getNumberOfTuples(),8)
10547 self.assertEqual(d.getNbOfElemAllocated(),16)
10548 self.assertTrue(d.isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.]),1e-12))
10549 f=DataArrayDouble()
10551 f.pushBackSilent(4.)
10552 self.assertTrue(f.isEqual(DataArrayDouble([4.]),1e-12))
10553 self.assertEqual(f.getNumberOfTuples(),1)
10554 self.assertEqual(f.getNbOfElemAllocated(),1000)
10556 self.assertTrue(ff.isEqual(DataArrayDouble([4.]),1e-12))
10557 self.assertEqual(ff.getNumberOfTuples(),1)
10558 self.assertEqual(ff.getNbOfElemAllocated(),1)
10559 d=DataArrayDouble()
10560 d.pushBackSilent(4.44)
10561 d.pushBackSilent(5.55)
10562 d.pushBackSilent(6.66)
10563 self.assertTrue(d.isEqual(DataArrayDouble([4.44,5.55,6.66]),1e-12))
10565 d=DataArrayInt(0,1)
10566 for i in xrange(8):
10567 d.pushBackSilent(i)
10569 self.assertEqual(d.getNumberOfTuples(),8)
10570 self.assertEqual(d.getNbOfElemAllocated(),8)
10571 d.pushBackSilent(444)
10572 self.assertEqual(d.getNumberOfTuples(),9)
10573 self.assertEqual(d.getNbOfElemAllocated(),16)
10574 self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10576 self.assertEqual(e.getNumberOfTuples(),9)
10577 self.assertEqual(e.getNbOfElemAllocated(),9)
10578 self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6,7,444])))
10579 self.assertEqual(d.popBackSilent(),444)
10580 self.assertEqual(d.getNumberOfTuples(),8)
10581 self.assertEqual(d.getNbOfElemAllocated(),16)
10582 self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
10585 f.pushBackSilent(4)
10586 self.assertTrue(f.isEqual(DataArrayInt([4])))
10587 self.assertEqual(f.getNumberOfTuples(),1)
10588 self.assertEqual(f.getNbOfElemAllocated(),1000)
10590 self.assertTrue(ff.isEqual(DataArrayInt([4])))
10591 self.assertEqual(ff.getNumberOfTuples(),1)
10592 self.assertEqual(ff.getNbOfElemAllocated(),1)
10594 d.pushBackSilent(444)
10595 d.pushBackSilent(555)
10596 d.pushBackSilent(666)
10597 self.assertTrue(d.isEqual(DataArrayInt([444,555,666])))
10601 d.setInfoOnComponent(0,"ABC")
10604 e=DataArrayInt([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10605 self.assertEqual(10,d.getNbOfElemAllocated())
10606 d.pushBackSilent(55)
10607 e=DataArrayInt([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10608 self.assertEqual(20,d.getNbOfElemAllocated())
10610 e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10611 self.assertEqual(4,d.getNbOfElemAllocated())
10612 d.pushBackSilent(5)
10613 e=DataArrayInt([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10614 self.assertEqual(8,d.getNbOfElemAllocated())
10615 self.assertEqual(5,d.popBackSilent())
10616 e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10617 self.assertEqual(8,d.getNbOfElemAllocated())
10618 self.assertRaises(InterpKernelException,d.reserve,-1)
10619 e=DataArrayInt([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e))
10620 self.assertEqual(8,d.getNbOfElemAllocated())
10622 e=DataArrayInt([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e))
10623 self.assertEqual(0,d.getNbOfElemAllocated())
10625 d=DataArrayDouble()
10627 d.setInfoOnComponent(0,"ABC")
10630 e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10631 self.assertEqual(10,d.getNbOfElemAllocated())
10632 d.pushBackSilent(55)
10633 e=DataArrayDouble([7,8,9,10,11,12,13,14,15,16,55]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10634 self.assertEqual(20,d.getNbOfElemAllocated())
10636 e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10637 self.assertEqual(4,d.getNbOfElemAllocated())
10638 d.pushBackSilent(5)
10639 e=DataArrayDouble([7,8,9,10,5]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10640 self.assertEqual(8,d.getNbOfElemAllocated())
10641 self.assertEqual(5.,d.popBackSilent())
10642 e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10643 self.assertEqual(8,d.getNbOfElemAllocated())
10644 self.assertRaises(InterpKernelException,d.reserve,-1)
10645 e=DataArrayDouble([7,8,9,10]) ; e.copyStringInfoFrom(d) ; self.assertTrue(d.isEqual(e,1e-14))
10646 self.assertEqual(8,d.getNbOfElemAllocated())
10648 e=DataArrayDouble([]) ; e.setInfoOnComponent(0,"ABC") ; e.setName("dEf") ; self.assertTrue(d.isEqual(e,1e-14))
10649 self.assertEqual(0,d.getNbOfElemAllocated())
10652 def testDAIBuildSubstractionOptimized1(self):
10653 da1=DataArrayInt.New([1,3,5,6,7,9,13])
10654 da2=DataArrayInt.New([3,5,9])
10655 da3=DataArrayInt.New([1,3,5])
10656 da4=DataArrayInt.New([1,3,5,6,7,9,13])
10658 a=da1.buildSubstractionOptimized(da2);
10659 self.assertTrue(a.isEqual(DataArrayInt([1,6,7,13])));
10661 a=da1.buildSubstractionOptimized(da3);
10662 self.assertTrue(a.isEqual(DataArrayInt([6,7,9,13])));
10664 a=da1.buildSubstractionOptimized(da4);
10665 self.assertTrue(a.isEqual(DataArrayInt([])));
10668 def testDAIIsStrictlyMonotonic1(self):
10669 da1=DataArrayInt.New([1,3,5,6,7,9,13])
10670 self.assertTrue(da1.isStrictlyMonotonic(True));
10671 da1.checkStrictlyMonotonic(True);
10672 self.assertTrue(da1.isMonotonic(True));
10673 da1.checkMonotonic(True);
10674 self.assertTrue(not da1.isStrictlyMonotonic(False));
10675 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10676 self.assertTrue(not da1.isMonotonic(False));
10677 self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10679 da1=DataArrayInt.New([1,3,5,6,6,9,13])
10680 self.assertTrue(not da1.isStrictlyMonotonic(True));
10681 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10682 self.assertTrue(da1.isMonotonic(True));
10683 da1.checkMonotonic(True);
10684 self.assertTrue(not da1.isStrictlyMonotonic(False));
10685 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10686 self.assertTrue(not da1.isMonotonic(False));
10687 self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10689 da1=DataArrayInt.New([1,3,5,6,5,9,13])
10690 self.assertTrue(not da1.isStrictlyMonotonic(True));
10691 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10692 self.assertTrue(not da1.isMonotonic(True));
10693 self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10694 self.assertTrue(not da1.isStrictlyMonotonic(False));
10695 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10696 self.assertTrue(not da1.isMonotonic(False));
10697 self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10699 da1=DataArrayInt.New([13,9,7,6,5,3,1])
10700 self.assertTrue(not da1.isStrictlyMonotonic(True));
10701 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10702 self.assertTrue(not da1.isMonotonic(True));
10703 self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10704 self.assertTrue(da1.isStrictlyMonotonic(False));
10705 da1.checkStrictlyMonotonic(False);
10706 self.assertTrue(da1.isMonotonic(False));
10707 da1.checkMonotonic(False);
10709 da1=DataArrayInt.New([13,9,6,6,5,3,1])
10710 self.assertTrue(not da1.isStrictlyMonotonic(True));
10711 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10712 self.assertTrue(not da1.isMonotonic(True));
10713 self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10714 self.assertTrue(not da1.isStrictlyMonotonic(False));
10715 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10716 self.assertTrue(da1.isMonotonic(False));
10717 da1.checkMonotonic(False);
10719 da1=DataArrayInt.New([13,9,5,6,5,3,1])
10720 self.assertTrue(not da1.isStrictlyMonotonic(True));
10721 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
10722 self.assertTrue(not da1.isMonotonic(True));
10723 self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
10724 self.assertTrue(not da1.isStrictlyMonotonic(False));
10725 self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
10726 self.assertTrue(not da1.isMonotonic(False));
10727 self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
10729 da1=DataArrayInt.New([])
10730 self.assertTrue(da1.isStrictlyMonotonic(True));
10731 da1.checkStrictlyMonotonic(True);
10732 self.assertTrue(da1.isMonotonic(True));
10733 da1.checkMonotonic(True);
10734 self.assertTrue(da1.isStrictlyMonotonic(False));
10735 da1.checkStrictlyMonotonic(False);
10736 self.assertTrue(da1.isMonotonic(False));
10737 da1.checkMonotonic(False);
10739 da1=DataArrayInt.New([13])
10740 self.assertTrue(da1.isStrictlyMonotonic(True));
10741 da1.checkStrictlyMonotonic(True);
10742 self.assertTrue(da1.isMonotonic(True));
10743 da1.checkMonotonic(True);
10744 self.assertTrue(da1.isStrictlyMonotonic(False));
10745 da1.checkStrictlyMonotonic(False);
10746 self.assertTrue(da1.isMonotonic(False));
10747 da1.checkMonotonic(False);
10750 def testFindAndCorrectBadOriented3DCells1(self):
10752 vects=([0,0,-1],[0.3,0.7,0.2],[-0.3,0.7,0.2],[-0.3,-0.7,0.2])
10754 m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10755 m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
10756 m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented
10757 m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10758 m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0)
10759 self.assertRaises(InterpKernelException,m4.insertNextCell,NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11,12]);
10760 m4.insertNextCell(NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11]); #Well oriented
10761 c0=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3) ; m0.setCoords(c0)
10762 c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.,0.,1.],5,3) ; m1.setCoords(c1)
10763 c2=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0., 0.,0.,1.,0.,1.,1.,1.,0.,1.],6,3) ; m2.setCoords(c2)
10764 c3=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.],8,3) ; m3.setCoords(c3)
10765 c4=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0.,0.8,0.,0.,0.45,0.,0., 0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.,0.8,0.,1.,0.45,0.,1.],12,3) ; m4.setCoords(c4)
10766 m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10767 expected1=DataArrayDouble([0.16666666666666666,0.3333333333333333,0.5,1.,1.])
10769 for i in xrange(nbOfDisc):
10771 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10773 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10774 self.assertTrue(mm.findAndCorrectBadOriented3DCells().empty())
10775 self.assertTrue(mm.isEqual(mm2,1e-14))
10776 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10777 mm.convertAllToPoly()
10778 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10783 m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,2,1,3]); #Not well oriented
10784 m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
10785 m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented
10786 m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,3,2,1,4,7,6,5]); #Not well oriented
10787 m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,[0,5,4,3,2,1,6,11,10,9,8,7]); #Not well oriented
10788 m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10789 m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10790 expected2=DataArrayDouble([-0.16666666666666666,0.3333333333333333,0.5,-1.,-1.])
10792 for i in xrange(nbOfDisc):
10794 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10795 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10796 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10797 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected2,1e-14))
10798 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([0,3,4])))
10799 mOK.setCoords(mm.getCoords())
10800 self.assertTrue(mm.isEqual(mOK,1e-14))
10801 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10803 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10804 mm.convertAllToPoly()
10805 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10809 m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
10810 m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,3,2,1,4]); #Not well oriented
10811 m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,2,1,3,5,4]); #Not well oriented
10812 m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
10813 m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,range(12)); #Well oriented
10814 m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
10815 m=MEDCouplingMesh.MergeMeshes([m0,m1,m2,m3,m4])
10816 expected3=DataArrayDouble([0.16666666666666666,-0.3333333333333333,-0.5,1.,1.])
10818 for i in xrange(nbOfDisc):
10820 mm.rotate([0.,0.,0.],[0.3,0.7,0.2],float(i)/float(nbOfDisc)*2*pi)
10821 mm2=mm.deepCpy() ; mm3=mm.deepCpy() ; mm3.convertAllToPoly()
10822 self.assertTrue(mm3.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10823 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected3,1e-14))
10824 self.assertTrue(mm.findAndCorrectBadOriented3DCells().isEqual(DataArrayInt([1,2])))
10825 mOK.setCoords(mm.getCoords())
10826 self.assertTrue(mm.isEqual(mOK,1e-14))
10827 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10829 self.assertTrue(mmm.findAndCorrectBadOriented3DCells().empty())
10830 mm.convertAllToPoly()
10831 self.assertTrue(mm.getMeasureField(False).getArray().isEqual(expected1,1e-14))
10836 def testSwigCellOrientation1(self):
10837 coords=DataArrayDouble([-0.21606,-0.10803,0.29999999999999999,-0.21606,-0.10803,0.37700000000000006,0,-0.10803,0.29999999999999999,0,-0.10803,0.37700000000000006,0,0.10803,0.29999999999999999,0,0.10803,0.37700000000000006,-0.21606,0.10803,0.29999999999999999,-0.21606,0.10803,0.37700000000000006,0,0.03601,0.29999999999999999,0,0.03601,0.37700000000000006,0,-0.03601,0.29999999999999999,0,-0.03601,0.37700000000000006],12,3)
10838 conn=[[0,2,10,8,4,6],[1,3,11,9,5,7],[0,1,3,2],[2,3,11,10],[10,11,9,8],[8,9,5,4],[4,5,7,6],[6,7,1,0]]
10839 for i in xrange(256):
10840 mesh=MEDCouplingUMesh("FluidMesh_1",3);
10841 mesh.allocateCells(0)
10842 conn2=[elt[:] for elt in conn]
10843 code=bin(i)[2:] ; code='0'*(8-len(code))+code
10844 for face,rev in zip(conn2,code):
10849 conn3=[elt+[-1] for elt in conn2]
10850 conn3=sum(conn3,[])[:-1]
10851 mesh.insertNextCell(NORM_POLYHED,conn3)
10852 mesh.setCoords(coords)
10853 mesh.orientCorrectlyPolyhedrons()
10854 self.assertTrue(mesh.getBarycenterAndOwner().isEqual(DataArrayDouble([-0.10803,0.,0.3385],1,3),1e-12))
10858 def testSwigCheckConsecutiveCellTypesForMEDFileFrmt1(self):
10859 m1=MEDCouplingUMesh("",2) ; m1.allocateCells(0)
10860 m1.insertNextCell(NORM_QUAD4,[0,1,2,3])
10861 m1.insertNextCell(NORM_TRI3,[0,1,2])
10862 d=DataArrayDouble(4,3) ; d[:]=0.
10864 self.assertTrue(m1.checkConsecutiveCellTypes())
10865 self.assertTrue(not m1.checkConsecutiveCellTypesForMEDFileFrmt())
10866 m1.renumberCells([1,0])
10867 self.assertTrue(m1.checkConsecutiveCellTypes())
10868 self.assertTrue(m1.checkConsecutiveCellTypesForMEDFileFrmt())
10871 def testSwigDAAccumulate1(self):
10872 d=DataArrayInt(10) ; d.iota(0)
10873 self.assertEqual([45],d.accumulate())
10874 self.assertEqual(45,d.accumulate(0))
10875 d=DataArrayInt(30) ; d.iota(0) ; d.rearrange(3)
10876 self.assertEqual([135,145,155],d.accumulate())
10877 self.assertEqual(135,d.accumulate(0))
10878 self.assertEqual(145,d.accumulate(1))
10879 self.assertEqual(155,d.accumulate(2))
10880 d=DataArrayDouble(10) ; d.iota(0.)
10881 self.assertEqual([45.],d.accumulate())
10882 self.assertEqual(45.,d.accumulate(0))
10883 d=DataArrayDouble(30) ; d.iota(0) ; d.rearrange(3)
10884 self.assertEqual([135.,145.,155.],d.accumulate())
10885 self.assertEqual(135.,d.accumulate(0))
10886 self.assertEqual(145.,d.accumulate(1))
10887 self.assertEqual(155.,d.accumulate(2))
10890 def testSwigUMeshDistanceToMesh1(self):
10891 m=MEDCouplingUMesh("toto",2)
10892 coords=DataArrayDouble([2.3,3.4,5.6,6.5,-4.3,3.2,-9.8,7.6,-5.4],3,3)
10893 m.setCoords(coords)
10895 m.insertNextCell(NORM_TRI3,[0,1,2])
10896 a,b,c=m.distanceToPoint([-0.335,2.27,1.21])
10897 self.assertEqual(0,b) ; self.assertEqual(0,c)
10898 self.assertAlmostEqual(0.022360988100374124,a,14);
10899 a,b,c=m.distanceToPoint(DataArrayDouble([-0.335,2.27,1.21],1,3))
10900 self.assertEqual(0,b) ; self.assertEqual(0,c)
10901 self.assertAlmostEqual(0.022360988100374124,a,14);
10902 a,b=coords.distanceToTuple([-0.335,2.27,1.21])
10903 self.assertAlmostEqual(5.243302871282566,a,14)
10904 self.assertEqual(0,b)
10906 m=MEDCouplingUMesh("toto",2)
10907 coords=DataArrayDouble([0.,0.,0., 8.,0.,0., 8.,8.,0., 0.,8.,0.],4,3)
10908 m.setCoords(coords)
10910 m.insertNextCell(NORM_QUAD4,[0,1,2,3])
10911 m.checkCoherency2()
10912 self.assertEqual([4,0,1,2,3],m.getNodalConnectivity().getValues())
10913 a,b,c=m.distanceToPoint([5.,2.,0.1])
10914 self.assertAlmostEqual(0.1,a,14) ; self.assertEqual(0,b) ; self.assertEqual(1,c)
10915 a,b,c=m.distanceToPoint([5.,-2.,4.])
10916 self.assertAlmostEqual(sqrt(2*2+4*4),a,14) ; self.assertEqual(0,b) ; self.assertEqual(1,c)
10918 m.insertNextCell(NORM_POLYGON,[0,1,2,3])
10919 m.checkCoherency2()
10920 self.assertEqual([5,0,1,2,3],m.getNodalConnectivity().getValues())
10921 a,b,c=m.distanceToPoint([11.,3.,4.])
10922 self.assertAlmostEqual(sqrt(3*3+4*4),a,14) ; self.assertEqual(0,b) ; self.assertEqual(1,c)
10923 a,b,c=m.distanceToPoint([4.,12.,5.])
10924 self.assertAlmostEqual(sqrt(4*4+5*5),a,14) ; self.assertEqual(0,b) ; self.assertEqual(2,c)
10925 d=DataArrayDouble([-1.2,3.,2.],1,3)
10927 a,b,c=m.distanceToPoint(d)
10928 self.assertAlmostEqual(sqrt(1.2*1.2+2*2),a,14) ; self.assertEqual(0,b) ; self.assertEqual(0,c)
10931 m=MEDCouplingUMesh("toto",1)
10932 coords=DataArrayDouble([0.,0.,4.,0.,0.,4.],3,2) ; m.setCoords(coords)
10933 m.allocateCells(0) ; m.insertNextCell(NORM_SEG2,[0,1]) ; m.insertNextCell(NORM_SEG2,[1,2])
10934 a,b,c=m.distanceToPoint([-0.1,4.1])
10935 self.assertAlmostEqual(0.14142135623730925,a,14) ; self.assertEqual(-1,b) ; self.assertEqual(2,c)
10936 a,b,c=m.distanceToPoint([0.,3.9])
10937 self.assertAlmostEqual(0.07071067811865482,a,14) ; self.assertEqual(1,b) ; self.assertEqual(2,c)
10940 def testSwigNonRegressionPartitionBySpreadZone1(self):
10941 m=MEDCouplingCMesh()
10942 arr=DataArrayDouble(6) ; arr.iota(0.)
10943 m.setCoords(arr,arr,arr)
10944 m=m.buildUnstructured()
10945 mPart=m[50,80,85,87,92,122]
10946 zones=mPart.partitionBySpreadZone()
10947 self.assertEqual(4,len(zones))
10948 self.assertTrue(zones[0].isEqual(DataArrayInt([0])))
10949 self.assertTrue(zones[1].isEqual(DataArrayInt([1,2])))
10950 self.assertTrue(zones[2].isEqual(DataArrayInt([3,4])))
10951 self.assertTrue(zones[3].isEqual(DataArrayInt([5])))
10953 n,ni=m.computeNeighborsOfCells()
10954 a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(0,n,ni)
10955 self.assertEqual(13,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
10956 a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed([1],n,ni)
10957 self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
10958 a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed((2,),n,ni)
10959 self.assertEqual(11,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
10960 a,b=MEDCouplingUMesh.ComputeSpreadZoneGraduallyFromSeed(DataArrayInt([3]),n,ni)
10961 self.assertEqual(12,b) ; self.assertEqual(125,len(a)) ; self.assertTrue(a.isIdentity())
10964 def testSwigUMeshInsertNextCell1(self):
10965 m=MEDCouplingUMesh("toto",2)
10967 coords=DataArrayDouble([0.,0.,1.,1.,1.,0.]) ; m.setCoords(coords)
10968 da=DataArrayInt([0,1,2])
10970 for i in xrange(5):
10971 m.insertNextCell(NORM_TRI3,da)
10973 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2])))
10974 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
10976 da=DataArrayInt([0,1,2,3])
10978 for i in xrange(5):
10979 m.insertNextCell(NORM_TRI3,3,da)
10981 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2])))
10982 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
10984 da=DataArrayInt([0,1])
10986 self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,3,da)
10988 da=DataArrayInt([0,1,2,0,1,3,0,1,4,0,1,5,0,1,6],5,3)
10991 m.insertNextCell(NORM_TRI3,t)
10993 self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,0,1,3,3,0,1,4,3,0,1,5,3,0,1,6])))
10994 self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20])))
10995 self.assertRaises(InterpKernelException,m.insertNextCell,NORM_TRI3,None)
10998 def testSwigCurveLinearMesh1(self):
10999 m=MEDCouplingCurveLinearMesh("toto")
11000 m.setNodeGridStructure([2,3])
11001 coords=DataArrayDouble([0.,0., 2.,0., 0.,1., 1.9,1.1, 0.3,1.9, 2.2,2.1],6,2)
11002 m.setCoords(coords)
11005 self.assertTrue(m0.isEqual(m,1e-12))
11006 m.getCoords().setInfoOnComponents(["X [m]","Y [m]"])
11007 self.assertTrue(not m0.isEqual(m,1e-12))
11009 self.assertTrue(m0.isEqual(m,1e-12))
11010 self.assertEqual(m.getNodeGridStructure(),(2,3))
11013 def testSimplexize3(self):
11014 m=MEDCouplingUMesh("toto",3)
11016 m.insertNextCell(NORM_TETRA4,[0,1,2,3])
11017 m.insertNextCell(NORM_HEXA8,[4,5,6,7,8,9,10,11])
11018 m.insertNextCell(NORM_HEXA8,[12,13,14,15,16,17,18,19])
11019 m.insertNextCell(NORM_TETRA4,[20,21,22,23])
11020 c1=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.],4,3)
11021 c2=DataArrayDouble([0.,0.,0.,0.,1.,0.,1.,1.,0.,1.,0.,0., 0.,0.,1.,0.,1.,1.,1.,1.,1.,1.,0.,1.],8,3) ; c2+=[2.,0.,0.]
11024 c=DataArrayDouble.Aggregate([c1,c2,c3,c4])
11026 m.checkCoherency2()
11029 d1=m1.simplexize(PLANAR_FACE_5)
11030 m1.checkCoherency2()
11031 vol1=m1.getMeasureField(ON_CELLS).getArray()
11032 self.assertTrue(vol1.isEqual(DataArrayDouble([1./6, 1./6, 1./6,1./6, 1./6, 1./3,1./6, 1./6, 1./6, 1./6, 1./3, 1./6]),1e-12))
11033 self.assertEqual(m1.getNodalConnectivity().getValues(),[14,0,1,2,3,14,4,9,5,6,14,4,8,9,11,14,4,7,11,6,14,9,11,10,6,14,4,9,6,11,14,12,17,13,14,14,12,16,17,19,14,12,15,19,14,14,17,19,18,14,14,12,17,14,19,14,20,21,22,23])
11034 self.assertEqual(m1.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60])
11035 self.assertTrue(d1.isEqual(DataArrayInt([0,1,1,1,1,1,2,2,2,2,2,3])))
11038 d2=m2.simplexize(PLANAR_FACE_6)
11039 m2.checkCoherency2()
11040 vol2=m2.getMeasureField(ON_CELLS).getArray()
11041 self.assertTrue(vol2.isEqual(DataArrayDouble([1./6, 1./6, 1./6,1./6, 1./6, 1./6,1./6,1./6, 1./6, 1./6, 1./6, 1./6,1./6,1./6]),1e-12))
11042 self.assertEqual(m2.getNodalConnectivity().getValues(),[14,0,1,2,3,14,4,9,5,10,14,4,5,6,10,14,4,8,9,10,14,4,11,8,10,14,4,6,7,10,14,4,7,11,10,14,12,17,13,18,14,12,13,14,18,14,12,16,17,18,14,12,19,16,18,14,12,14,15,18,14,12,15,19,18,14,20,21,22,23])
11043 self.assertEqual(m2.getNodalConnectivityIndex().getValues(),[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70])
11044 self.assertTrue(d2.isEqual(DataArrayInt([0,1,1,1,1,1,1,2,2,2,2,2,2,3])))
11047 def testSwigCurveLinearMesh2(self):
11048 c=MEDCouplingCMesh()
11050 arr1=DataArrayDouble([0,1,3,7])
11051 arr2=DataArrayDouble([0,1,1.5])
11052 c.setCoords(arr1,arr2)
11053 u=c.buildUnstructured()
11055 cl=MEDCouplingCurveLinearMesh()
11057 cl.setNodeGridStructure([4,3])
11058 cl.checkCoherency2()
11059 li1=[1.,2.,4.,0.5,1.,2.]
11060 self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11061 self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li1),1e-14))
11062 li1_1=[0.5,0.5,2.,0.5,5.,0.5,0.5,1.25,2.,1.25,5.,1.25]
11063 self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11064 self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li1_1,6,2),1e-14))
11066 c.setCoords(arr1,arr2,arr2)
11067 u=c.buildUnstructured()
11069 cl=MEDCouplingCurveLinearMesh()
11071 cl.setNodeGridStructure([4,3,3])
11072 cl.checkCoherency2()
11073 li2=[1.,2.,4.,0.5, 1.,2.,0.5,1.,2.,0.25,0.5,1.]
11074 li2_1=[0.5,0.5,0.5,2.,0.5,0.5,5.,0.5,0.5,0.5,1.25,0.5,2.,1.25,0.5,5.,1.25,0.5,0.5,0.5,1.25,2.,0.5,1.25,5.,0.5,1.25,0.5,1.25,1.25,2.,1.25,1.25,5.,1.25,1.25]
11075 self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11076 self.assertTrue(u.getMeasureField(False).getArray().isEqual(DataArrayDouble(li2),1e-14))
11077 self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11078 self.assertTrue(u.getBarycenterAndOwner().isEqual(DataArrayDouble(li2_1,12,3),1e-14))
11080 coo=DataArrayDouble(5) ; coo.iota(0.)
11083 cl.setNodeGridStructure([5])
11084 cl.checkCoherency2()
11086 li3_1=[0.5,2.5,6.5,12.5]
11087 self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11088 self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li3),1e-14))
11089 self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11090 self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li3_1),1e-14))
11092 coo=DataArrayDouble.Meld(coo,coo)
11094 cl.checkCoherency2()
11095 li4=[sqrt(2.)*elt for elt in [1.,3.,5.,7.]]
11096 li4_1=[0.5,0.5,2.5,2.5,6.5,6.5,12.5,12.5]
11097 self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11098 self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
11099 self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11100 self.assertTrue(cl.buildUnstructured().getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
11103 def testSwigCurveLinearMeshNonRegression1(self):
11104 coords=DataArrayDouble([0.0, 0.0, 0.10000000149011612, 0.6000000238418579, 0.10000000149011612, 0.30000001192092896, 1.100000023841858, 0.10000000149011612, 0.20000000298023224, 0.10000000149011612, 0.6000000238418579, 0.20000000298023224, 0.699999988079071, 0.6000000238418579, 0.10000000149011612, 1.2000000476837158, 0.6000000238418579, 0.30000001192092896, 0.10000000149011612, 1.100000023841858, 0.30000001192092896, 0.5, 1.100000023841858, 0.20000000298023224, 1.0, 1.2000000476837158, 0.10000000149011612, 0.0, 0.10000000149011612, 0.5, 0.5, 0.10000000149011612, 0.6000000238418579, 1.2000000476837158, 0.10000000149011612, 0.699999988079071, 0.10000000149011612, 0.6000000238418579, 0.699999988079071, 0.6000000238418579, 0.6000000238418579, 0.5, 1.100000023841858, 0.6000000238418579, 0.6000000238418579, 0.10000000149011612, 1.0, 0.6000000238418579, 0.699999988079071, 1.2000000476837158, 0.699999988079071, 0.8999999761581421, 1.0, 0.5, 0.10000000149011612, 0.10000000149011612, 1.2000000476837158, 0.699999988079071, 0.10000000149011612, 1.0, 1.0, 0.10000000149011612, 1.100000023841858, 0.10000000149011612, 0.6000000238418579, 1.100000023841858, 0.6000000238418579, 0.6000000238418579, 1.100000023841858, 1.100000023841858, 0.6000000238418579, 1.2000000476837158, 0.10000000149011612, 1.2000000476837158, 1.0, 0.5, 1.100000023841858, 1.2000000476837158, 1.2000000476837158, 1.100000023841858, 1.0],27,3)
11105 m=MEDCouplingCurveLinearMesh("toto")
11106 m.setCoords(coords)
11107 m.setNodeGridStructure([3,3,3])
11109 vol=m.getMeasureField(False).getArray()
11110 self.assertTrue(vol.isEqual(DataArrayDouble([0.11450000709295281, 0.10583334351579375,0.11149999939029423,0.08866666863113633, 0.1404166805123294,0.1250000135352219,0.1270833433481557,0.13258334288001067]),1e-12))
11111 self.assertTrue(vol.isEqual(m.buildUnstructured().getMeasureField(False).getArray(),1e-12))
11113 self.assertTrue(m.getBarycenterAndOwner().isEqual(m.buildUnstructured().getBarycenterAndOwner(),1e-12))