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,"PartOf_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,"PartOf_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(),NO_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 f1=m.fillFromAnalytic(ON_CELLS,1,"x+y");
970 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
971 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
972 self.assertEqual(1,f1.getNumberOfComponents());
973 self.assertEqual(5,f1.getNumberOfTuples());
974 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
975 tmp=f1.getArray().getValues();
976 self.assertEqual(len(values1),len(tmp))
977 for i in xrange(len(tmp)):
978 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
981 f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
983 self.assertEqual(f1.getTypeOfField(),ON_NODES);
984 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
985 self.assertEqual(1,f1.getNumberOfComponents());
986 self.assertEqual(9,f1.getNumberOfTuples());
987 values2=[-0.6,-0.1,0.4,-0.1,0.4,0.9,0.4,0.9,1.4]
988 tmp=f1.getArray().getValues();
989 self.assertEqual(len(values2),len(tmp))
990 for i in xrange(len(tmp)):
991 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
994 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
996 self.assertEqual(f1.getTypeOfField(),ON_NODES);
997 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
998 self.assertEqual(2,f1.getNumberOfComponents());
999 self.assertEqual(9,f1.getNumberOfTuples());
1000 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]
1001 tmp=f1.getArray().getValues();
1002 self.assertEqual(len(values3),len(tmp))
1003 for i in xrange(len(tmp)):
1004 self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1006 values4=f1.accumulate();
1007 self.assertEqual(2,len(values4))
1008 self.assertTrue(abs(3.6-values4[0])<1.e-12);
1009 self.assertTrue(abs(7.2-values4[1])<1.e-12);
1010 values4=f1.integral(True);
1011 self.assertEqual(2,len(values4))
1012 self.assertTrue(abs(0.5-values4[0])<1.e-12);
1013 self.assertTrue(abs(1.-values4[1])<1.e-12);
1015 self.assertRaises(InterpKernelException,m.fillFromAnalytic,ON_NODES,1,"1./(x-0.2)");
1018 def testFillFromAnalytic2(self):
1019 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1020 f1=m.fillFromAnalytic(ON_CELLS,1,"y+x");
1021 f1.checkCoherency();
1022 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
1023 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1024 self.assertEqual(1,f1.getNumberOfComponents());
1025 self.assertEqual(5,f1.getNumberOfTuples());
1026 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
1027 tmp=f1.getArray().getValues();
1028 self.assertEqual(len(values1),len(tmp))
1029 for i in xrange(len(values1)):
1030 self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
1033 f1=m.fillFromAnalytic(ON_NODES,1,"y+2*x");
1034 f1.checkCoherency();
1035 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1036 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1037 self.assertEqual(1,f1.getNumberOfComponents());
1038 self.assertEqual(9,f1.getNumberOfTuples());
1039 values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1040 tmp=f1.getArray().getValues();
1041 self.assertEqual(len(values2),len(tmp))
1042 for i in xrange(len(values2)):
1043 self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
1045 f1=m.fillFromAnalytic(ON_NODES,1,"2.*x+y");
1046 f1.checkCoherency();
1047 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1048 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1049 self.assertEqual(1,f1.getNumberOfComponents());
1050 self.assertEqual(9,f1.getNumberOfTuples());
1051 tmp=f1.getArray().getValues();
1052 values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
1053 self.assertEqual(len(values2Bis),len(tmp))
1054 for i in xrange(len(values2Bis)):
1055 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
1058 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1059 f1.checkCoherency();
1060 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1061 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1062 self.assertEqual(2,f1.getNumberOfComponents());
1063 self.assertEqual(9,f1.getNumberOfTuples());
1064 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]
1065 tmp=f1.getArray().getValues();
1066 self.assertEqual(len(values3),len(tmp))
1067 for i in xrange(len(values3)):
1068 self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
1070 values4=f1.accumulate();
1071 self.assertTrue(abs(3.6-values4[0])<1.e-12);
1072 self.assertTrue(abs(7.2-values4[1])<1.e-12);
1073 values4=f1.integral(True);
1074 self.assertTrue(abs(0.5-values4[0])<1.e-12);
1075 self.assertTrue(abs(1.-values4[1])<1.e-12);
1078 def testApplyFunc(self):
1079 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1080 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+(2*(x+y))*JVec");
1081 f1.checkCoherency();
1082 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1083 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1084 self.assertEqual(2,f1.getNumberOfComponents());
1085 self.assertEqual(9,f1.getNumberOfTuples());
1086 f1.applyFunc(1,"x+y");
1087 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1088 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1089 self.assertEqual(1,f1.getNumberOfComponents());
1090 self.assertEqual(9,f1.getNumberOfTuples());
1091 values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1092 tmp=f1.getArray().getValues();
1093 self.assertEqual(len(values1),len(tmp))
1094 for i in xrange(len(tmp)):
1095 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1099 def testApplyFunc2(self):
1100 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1101 f1=m.fillFromAnalytic(ON_NODES,2,"(x+y)*IVec+2*(x+y)*JVec");
1102 f1.checkCoherency();
1103 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1104 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1105 self.assertEqual(2,f1.getNumberOfComponents());
1106 self.assertEqual(9,f1.getNumberOfTuples());
1109 self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a+b+c+d");
1110 self.assertRaises(InterpKernelException, f2.applyFunc, 1, "a/0");
1111 self.assertRaises(InterpKernelException, f2.applyFunc, "a/0");
1112 f2.applyFunc("abs(u)^2.4+2*u");
1113 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1114 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1115 self.assertEqual(2,f1.getNumberOfComponents());
1116 self.assertEqual(9,f1.getNumberOfTuples());
1117 values2=[-0.9065304805418678, -0.85105859001709905, -0.19601892829446504, -0.37898777756476987,
1118 0.91090317490482353, 2.1853504664669781, -0.19601892829446504, -0.37898777756476987,
1119 0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1120 0.91090317490482353, 2.1853504664669781, 2.5765725275664879, 7.6987743736515295,
1121 5.0423700574830965, 17.435300118916864]
1122 tmp=f2.getArray().getValues();
1123 self.assertEqual(len(tmp),len(values2))
1124 for i in xrange(len(tmp)):
1125 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1128 f1.applyFunc(1,"x+y");
1129 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1130 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1131 self.assertEqual(1,f1.getNumberOfComponents());
1132 self.assertEqual(9,f1.getNumberOfTuples());
1133 values1=[-1.8,-0.3,1.2,-0.3,1.2,2.7,1.2,2.7,4.2]
1134 tmp=f1.getArray().getValues();
1135 self.assertEqual(len(tmp),len(values1))
1136 for i in xrange(len(tmp)):
1137 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1141 def testOperationsOnFields(self):
1142 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1143 f1=m.fillFromAnalytic(ON_NODES,1,"x+y");
1144 f2=m.fillFromAnalytic(ON_NODES,1,"x+y");
1145 f1.checkCoherency();
1146 f2.checkCoherency();
1148 f3.checkCoherency();
1149 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1150 self.assertEqual(f3.getTimeDiscretization(),NO_TIME);
1151 values1=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1152 tmp=f3.getArray().getValues();
1153 self.assertEqual(len(values1),len(tmp))
1154 for i in xrange(len(tmp)):
1155 self.assertTrue(abs(tmp[i]-values1[i])<1.e-12)
1159 f3.checkCoherency();
1160 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1161 self.assertEqual(f3.getTimeDiscretization(),NO_TIME);
1162 values2=[0.36,0.01,0.16,0.01,0.16,0.81,0.16,0.81,1.96]
1163 tmp=f3.getArray().getValues();
1164 self.assertEqual(len(values2),len(tmp))
1165 for i in xrange(len(tmp)):
1166 self.assertTrue(abs(tmp[i]-values2[i])<1.e-12)
1171 f4.checkCoherency();
1172 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1173 self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1174 values3=[0.6,0.1,-0.4,0.1,-0.4,-0.9,-0.4,-0.9,-1.4]
1175 tmp=f4.getArray().getValues();
1176 self.assertEqual(len(values3),len(tmp))
1177 for i in xrange(len(tmp)):
1178 self.assertTrue(abs(tmp[i]-values3[i])<1.e-12)
1183 f4.checkCoherency();
1184 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1185 self.assertEqual(f4.getTimeDiscretization(),NO_TIME);
1186 tmp=f4.getArray().getValues();
1187 for i in xrange(len(tmp)):
1188 self.assertTrue(abs(tmp[i]-2.)<1.e-12)
1191 f4=f2.buildNewTimeReprFromThis(ONE_TIME,False);
1192 f4.checkCoherency();
1193 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1194 self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1195 self.assertRaises(InterpKernelException,f1.__add__,f4);
1196 f5=f4.buildNewTimeReprFromThis(NO_TIME,False);
1197 self.assertEqual(f5.getTypeOfField(),ON_NODES);
1198 self.assertEqual(f5.getTimeDiscretization(),NO_TIME);
1200 tmp=f3.getArray().getValues();
1201 values4=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1202 self.assertEqual(len(values3),len(tmp))
1203 for i in xrange(len(tmp)):
1204 self.assertTrue(abs(tmp[i]-values4[i])<1.e-12)
1207 f4=f2.buildNewTimeReprFromThis(ONE_TIME,True);
1208 f4.checkCoherency();
1209 self.assertEqual(f4.getTypeOfField(),ON_NODES);
1210 self.assertEqual(f4.getTimeDiscretization(),ONE_TIME);
1211 self.assertRaises(InterpKernelException,f1.__add__,f4);
1212 f5=f4.buildNewTimeReprFromThis(NO_TIME,True);
1213 self.assertEqual(f5.getTypeOfField(),ON_NODES);
1214 self.assertEqual(f5.getTimeDiscretization(),NO_TIME);
1216 tmp=f3.getArray().getValues();
1217 values5=[-1.2,-0.2,0.8,-0.2,0.8,1.8,0.8,1.8,2.8]
1218 self.assertEqual(len(values5),len(tmp))
1219 for i in xrange(len(tmp)):
1220 self.assertTrue(abs(tmp[i]-values5[i])<1.e-12)
1224 def testOperationsOnFields2(self):
1225 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1226 f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1227 f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1229 f3.checkCoherency();
1230 self.assertEqual(f3.getTypeOfField(),ON_NODES);
1231 self.assertEqual(f3.getTimeDiscretization(),NO_TIME);
1232 expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1233 0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1234 0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1235 self.assertEqual(1,f3.getNumberOfComponents());
1236 self.assertEqual(9,f3.getNumberOfTuples());
1237 val=f3.getArray().getValues();
1239 self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1241 f1=m.buildOrthogonalField();
1242 f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1244 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]
1245 val=f3.getArray().getValues();
1246 for i in xrange(15):
1247 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1251 val=f3.getArray().getValues();
1252 for i in xrange(15):
1253 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1257 def testOperationsOnFields3(self):
1258 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1259 f1=m.fillFromAnalytic(ON_NODES,1,"x+y+z");
1260 f2=m.fillFromAnalytic(ON_NODES,1,"a*a+b+c*c");
1262 f1.checkCoherency();
1263 self.assertEqual(f1.getTypeOfField(),ON_NODES);
1264 self.assertEqual(f1.getTimeDiscretization(),NO_TIME);
1265 expected1=[-2.4999999999999991, 1.2162162162162162, 0.77868852459016391,
1266 0.7407407407407407, 1.129032258064516, 0.81632653061224492,
1267 0.86538461538461531, 1.0919540229885056, 0.84302325581395343]
1268 self.assertEqual(1,f1.getNumberOfComponents());
1269 self.assertEqual(9,f1.getNumberOfTuples());
1270 val=f1.getArray().getValues();
1272 self.assertTrue(abs(expected1[i]-val[i])<1.e-12);
1275 f1=m.buildOrthogonalField();
1276 f2=m.fillFromAnalytic(ON_CELLS,1,"x");
1278 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]
1279 val=f1.getArray().getValues();
1280 for i in xrange(15):
1281 self.assertTrue(abs(expected2[i]-val[i])<1.e-12);
1284 f1=m.buildOrthogonalField();
1285 # to avoid valgrind leaks
1286 # self.assertRaises(InterpKernelException,f2.__imul__,f1);
1289 def testOperationsOnFields4(self):
1290 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1291 nbOfCells=m.getNumberOfCells();
1292 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
1294 array=DataArrayDouble.New();
1296 self.assertRaises(InterpKernelException,f1.setEndArray,array);
1297 self.assertRaises(InterpKernelException,f1.getEndArray);
1298 arr1=[0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.]
1299 arr2=[5.,15.,25.,6.,16.,26.,7.,17.,27.,8.,18.,28.,9.,19.,29.]
1300 array.setValues(arr1,nbOfCells,3);
1301 f1.setStartTime(2.,0,0);
1302 f1.setEndTime(3.,0,0);
1303 f1.checkCoherency();
1305 res=f1.getValueOn(pos);
1306 self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1307 self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1308 self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1310 res=f1.getValueOn(pos,2.2);
1311 self.assertTrue(abs(arr1[3]-res[0])<1.e-12);
1312 self.assertTrue(abs(arr1[4]-res[1])<1.e-12);
1313 self.assertTrue(abs(arr1[5]-res[2])<1.e-12);
1315 self.assertRaises(InterpKernelException,f1.getValueOn,pos,3.2)
1316 f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
1318 f2.setArray(f1.getArray());
1319 f2.setStartTime(2.,3,0);
1320 f2.setEndTime(4.,13,0);
1321 self.assertRaises(InterpKernelException,f2.checkCoherency)
1322 array2=DataArrayDouble.New();
1323 array2.setValues(arr2,nbOfCells,3);
1324 f2.setEndArray(array2);
1325 f2.checkCoherency();
1328 res=f2.getValueOn(pos,3.21);
1329 self.assertTrue(abs(4.025-res[0])<1.e-12);
1330 self.assertTrue(abs(14.025-res[1])<1.e-12);
1331 self.assertTrue(abs(24.025-res[2])<1.e-12);
1333 self.assertTrue(f2.isEqual(f3,1e-12,1e-12));
1334 f3.getEndArray().setIJ(0,0,5.001);
1335 self.assertTrue(not f2.isEqual(f3,1e-12,1e-12));
1336 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1337 f3.setStartTime(2.1,3,0);
1338 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1339 f3.setStartTime(2.,3,0);
1340 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1341 f3.setStartTime(2.,4,0);
1342 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1343 f3.setStartTime(2.,3,1);
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.setEndTime(4.1,13,0);
1348 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1349 f3.setEndTime(4.,13,0);
1350 self.assertTrue(f2.isEqual(f3,1e-12,1e-2));
1351 f3.setEndTime(4.,14,0);
1352 self.assertTrue(not f2.isEqual(f3,1e-12,1e-2));
1353 f3.setEndTime(4.,13,1);
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));
1359 res=f4.getValueOn(pos,3.21);
1360 self.assertTrue(abs(8.05-res[0])<1.e-12);
1361 self.assertTrue(abs(28.05-res[1])<1.e-12);
1362 self.assertTrue(abs(48.05-res[2])<1.e-12);
1365 res=f4.getValueOn(pos,3.21);
1366 self.assertTrue(abs(12.075-res[0])<1.e-12);
1367 self.assertTrue(abs(42.075-res[1])<1.e-12);
1368 self.assertTrue(abs(72.075-res[2])<1.e-12);
1371 def testMergeNodesOnField(self):
1372 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1373 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1374 f1.mergeNodes(1e-10);
1376 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1377 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1379 tmp.setIJ(0,0,1000.);
1380 f1.mergeNodes(1e-10);
1382 targetMesh=MEDCouplingDataForTest.build3DTargetMeshMergeNode_1();
1383 f1=targetMesh.fillFromAnalytic(ON_NODES,1,"x+y+z");
1385 tmp.setIJ(1,0,1000.);
1386 self.assertRaises(InterpKernelException,f1.mergeNodes,1.e-10)
1389 def testCheckConsecutiveCellTypes(self):
1390 sourceMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1391 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1392 self.assertTrue(sourceMesh.checkConsecutiveCellTypes());
1393 order1=[NORM_TRI3,NORM_QUAD4]
1394 order2=[NORM_QUAD4,NORM_TRI3]
1395 self.assertTrue(not targetMesh.checkConsecutiveCellTypes());
1396 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1397 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1398 da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order1);
1399 self.assertEqual(5,da.getNumberOfTuples());
1400 self.assertEqual(1,da.getNumberOfComponents());
1401 expected1=[2,0,1,3,4]
1402 self.assertTrue(expected1==list(da.getValues()));
1403 da=targetMesh.getRenumArrForConsecutiveCellTypesSpec(order2);
1404 self.assertEqual(5,da.getNumberOfTuples());
1405 self.assertEqual(1,da.getNumberOfComponents());
1406 expected2=[0,3,4,1,2]
1407 self.assertTrue(expected2==list(da.getValues()));
1408 renumber1=[4,0,1,2,3]
1409 targetMesh.renumberCells(renumber1,False);
1410 self.assertTrue(targetMesh.checkConsecutiveCellTypes());
1411 self.assertTrue(targetMesh.checkConsecutiveCellTypesAndOrder(order1));
1412 self.assertTrue(not targetMesh.checkConsecutiveCellTypesAndOrder(order2));
1415 def testRearrange2ConsecutiveCellTypes(self):
1416 m1_1=MEDCouplingDataForTest.build2DSourceMesh_1();
1417 m2_1=MEDCouplingDataForTest.build2DTargetMesh_1();
1418 arr1=m1_1.rearrange2ConsecutiveCellTypes();
1419 m1_2=MEDCouplingDataForTest.build2DSourceMesh_1();
1420 self.assertTrue(m1_2.isEqual(m1_1,1e-12));
1422 self.assertEqual(2,arr1.getNumberOfTuples());
1423 self.assertEqual(1,arr1.getNumberOfComponents());
1424 self.assertEqual(expected1,arr1.getValues());
1425 expected2=[0,3,4,1,2]
1426 arr1=m2_1.rearrange2ConsecutiveCellTypes();
1427 self.assertEqual(5,arr1.getNumberOfTuples());
1428 self.assertEqual(1,arr1.getNumberOfComponents());
1429 self.assertEqual(expected2,list(arr1.getValues()));
1430 m2_2=MEDCouplingDataForTest.build2DTargetMesh_1();
1431 self.assertEqual(5,arr1.getNumberOfTuples());
1432 self.assertEqual(1,arr1.getNumberOfComponents());
1433 self.assertEqual(expected2,list(arr1.getValues()));
1434 self.assertTrue(not m2_2.isEqual(m2_1,1e-12));
1435 m2_2.renumberCells(expected2,False);
1436 self.assertTrue(m2_2.isEqual(m2_1,1e-12));
1439 def testSplitByType(self):
1440 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1442 self.assertEqual(3,len(v));
1443 m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(v);
1444 m2.setName(m1.getName());
1445 self.assertTrue(m1.isEqual(m2,1.e-12));
1448 def testFuseUMeshesOnSameCoords(self):
1449 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1451 m3=m2.buildPartOfMySelf(cells1,True);
1452 self.assertTrue(isinstance(m3,MEDCouplingUMesh))
1454 m4=m2.buildPartOfMySelf(cells2,True);
1455 self.assertTrue(isinstance(m4,MEDCouplingUMesh))
1457 m5=m2.buildPartOfMySelf(cells3,True);
1458 self.assertTrue(isinstance(m5,MEDCouplingUMesh))
1461 m7,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1462 self.assertEqual(4,m7.getNumberOfCells());
1463 self.assertEqual(3,len(corr));
1464 expectedVals1=[3,3,2]
1465 expectedVals2=[[0,1,2],[3,0,2],[3,0]]
1468 self.assertEqual(1,arr.getNumberOfComponents());
1469 nbOfVals=expectedVals1[i];
1470 self.assertEqual(nbOfVals,arr.getNumberOfTuples());
1471 vals=arr.getValues();
1472 self.assertEqual(expectedVals2[i],list(vals));
1474 arr2,fidsOfGroups=DataArrayInt.MakePartition(corr,m7.getNumberOfCells());
1476 fidsGrp=[[1,3,5],[3,4,5],[4,5]]
1477 self.assertEqual(3,len(fidsOfGroups));
1478 self.assertEqual(1,arr2.getNumberOfComponents());
1479 self.assertEqual(4,arr2.getNumberOfTuples());
1480 self.assertEqual(fidExp,list(arr2.getValues()));
1482 nbOfVals=expectedVals1[i];
1483 self.assertEqual(list(fidsOfGroups[i]),fidsGrp[i]);
1487 def testFuseUMeshesOnSameCoords2(self):
1488 m1,m2=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
1490 m3=m1.buildPartOfMySelf(part1,True);
1492 m4=m1.buildPartOfMySelf(part2,True);
1493 meshes=[m1,m3,m3,m4]
1494 m5,corr=MEDCouplingUMesh.FuseUMeshesOnSameCoords(meshes,0);
1495 self.assertEqual(18,m5.getNumberOfCells());
1497 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
1503 self.assertEqual(exp2[i],list(it.getValues()));
1508 def testBuildOrthogonalField(self):
1509 targetMesh=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1510 field=targetMesh.buildOrthogonalField();
1511 expected=[0.70710678118654746,0.,-0.70710678118654746]
1512 self.assertEqual(5,field.getNumberOfTuples());
1513 self.assertEqual(3,field.getNumberOfComponents());
1514 vals=field.getArray().getValues();
1515 for i in xrange(15):
1516 self.assertTrue(abs(expected[i%3]-vals[i])<1e-12);
1518 targetCoords=[0.,0.,0.,0.5,0.,0.5,1.,0.,1.,0.,1.,0.]
1519 targetConn=[0,1,2,3]
1520 targetMesh=MEDCouplingUMesh.New();
1521 targetMesh.setMeshDimension(2);
1522 targetMesh.allocateCells(1);
1523 targetMesh.insertNextCell(NORM_QUAD4,targetConn[0:4])
1524 targetMesh.finishInsertingCells();
1525 myCoords=DataArrayDouble.New();
1526 myCoords.setValues(targetCoords,4,3);
1527 targetMesh.setCoords(myCoords);
1528 field=targetMesh.buildOrthogonalField();
1529 self.assertEqual(1,field.getNumberOfTuples());
1530 self.assertEqual(3,field.getNumberOfComponents());
1531 vals=field.getArray().getValues();
1532 self.assertTrue(abs(-0.70710678118654746-vals[0])<1e-12);
1533 self.assertTrue(abs(0.-vals[1])<1e-12);
1534 self.assertTrue(abs(0.70710678118654746-vals[2])<1e-12);
1537 def testGetCellsContainingPoint(self):
1538 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1539 pos=[0.,0.,0.4,0.4,0.,0.4,0.1,0.1,0.25,0.,0.65,0.]
1541 t1,t2=targetMesh.getCellsContainingPoints(pos,6,1e-12);
1542 self.assertEqual(6,t1.getNumberOfTuples());
1543 self.assertEqual(1,t1.getNumberOfComponents());
1544 self.assertEqual(7,t2.getNumberOfTuples());
1545 self.assertEqual(1,t2.getNumberOfComponents());
1546 expectedValues1=[0,4,3,0,1,2]
1547 expectedValues2=[0,1,2,3,4,5,6]
1548 self.assertEqual(list(t1.getValues()),expectedValues1);
1549 self.assertEqual(list(t2.getValues()),expectedValues2);
1550 #2D with no help of bounding box.
1552 MEDCouplingPointSet.Rotate2DAlg(center,0.78539816339744830962,6,pos);
1553 targetMesh.rotate(center,0.78539816339744830962);
1556 t1,t2=targetMesh.getCellsContainingPoints(pos,1e-12);
1557 self.assertEqual(6,t1.getNumberOfTuples());
1558 self.assertEqual(7,t2.getNumberOfTuples());
1559 self.assertEqual(list(t1.getValues()),expectedValues1);
1560 self.assertEqual(list(t2.getValues()),expectedValues2);
1561 t1,t2=targetMesh.getCellsContainingPoints(DataArrayDouble.New(pos,6,2),1e-12);
1562 self.assertEqual(6,t1.getNumberOfTuples());
1563 self.assertEqual(7,t2.getNumberOfTuples());
1564 self.assertEqual(list(t1.getValues()),expectedValues1);
1565 self.assertEqual(list(t2.getValues()),expectedValues2);
1566 self.assertRaises(InterpKernelException,targetMesh.getCellsContainingPoints,DataArrayDouble.New(pos,4,3),1e-12);
1568 pos1bis=[-0.3303300858899107,-0.11819805153394641]
1569 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos1bis,1e-12));
1571 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1574 t1=targetMesh.getCellsContainingPoint(pos2,1e-12)
1575 self.assertEqual(2,len(t1));
1576 expectedValues3=[0,1]
1577 self.assertEqual(list(t1.getValues()),expectedValues3);
1580 t1=targetMesh.getCellsContainingPoint(pos3,1e-12);
1581 self.assertEqual(5,len(t1));
1582 expectedValues4=[0,1,2,3,4]
1583 self.assertEqual(list(t1.getValues()),expectedValues4);
1584 self.assertEqual(0,targetMesh.getCellContainingPoint(pos3,1e-12));
1586 targetMesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1588 self.assertEqual(0,targetMesh.getCellContainingPoint(pos4,1e-12));
1591 t1=targetMesh.getCellsContainingPoint(pos5,1e-12);
1592 self.assertEqual(8,len(t1));
1593 expectedValues5=[0,1,2,3,4,5,6,7]
1594 self.assertEqual(list(t1.getValues()),expectedValues5);
1597 t1=targetMesh.getCellsContainingPoint(pos6,1e-12);
1598 self.assertEqual(2,len(t1));
1599 expectedValues6=[0,2]
1600 self.assertEqual(list(t1.getValues()),expectedValues6);
1603 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos7,1e-12));
1607 targetMesh.rotate(center2,vec2,0.78539816339744830962);
1609 self.assertEqual(-1,targetMesh.getCellContainingPoint(pos8,1e-12));
1612 def testGetValueOn1(self):
1613 targetMesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1614 fieldOnCells=MEDCouplingFieldDouble.New(ON_CELLS);
1615 nbOfCells=targetMesh.getNumberOfCells();
1616 fieldOnCells.setMesh(targetMesh);
1617 array=DataArrayDouble.New();
1618 tmp=2*nbOfCells*[None]
1619 for i in xrange(nbOfCells):
1620 tmp[2*i]=7.+float(i);
1621 tmp[2*i+1]=17.+float(i)
1623 array.setValues(tmp,nbOfCells,2);
1624 fieldOnCells.setArray(array);
1627 res=fieldOnCells.getValueOn(pos1);
1628 self.assertEqual(2,len(res))
1629 self.assertTrue(abs(8.-res[0])<1e-12);
1630 self.assertTrue(abs(18.-res[1])<1e-12);
1633 targetMesh=MEDCouplingDataForTest.build2DSourceMesh_1();
1634 fieldOnNodes=MEDCouplingFieldDouble.New(ON_NODES);
1635 nbOfNodes=targetMesh.getNumberOfNodes();
1636 fieldOnNodes.setMesh(targetMesh);
1637 array=DataArrayDouble.New();
1638 tmp=2*nbOfNodes*[None]
1639 for i in xrange(nbOfNodes):
1640 tmp[2*i]=17.+float(i);
1641 tmp[2*i+1]=27.+float(i)
1643 array.setValues(tmp,nbOfNodes,2);
1644 fieldOnNodes.setArray(array);
1646 pos2=[-0.13333333333333333,-0.13333333333333333]
1648 res=fieldOnNodes.getValueOn(pos2);
1649 self.assertEqual(2,len(res))
1650 self.assertTrue(abs(17.5-res[0])<1e-12);
1651 self.assertTrue(abs(27.5-res[1])<1e-12);
1652 pos3=[0.033333333333333326,0.36666666666666664]
1654 res=fieldOnNodes.getValueOn(pos3);
1655 self.assertEqual(2,len(res))
1656 self.assertTrue(abs(18.666666666666667-res[0])<1e-12);
1657 self.assertTrue(abs(28.666666666666667-res[1])<1e-12);
1660 def testCMesh0(self):
1661 mesh=MEDCouplingCMesh.New();
1662 meshEmpty=mesh.clone(True);
1663 self.assertTrue(meshEmpty.isEqual(mesh, 1e-12));
1665 coordsX=DataArrayDouble.New();
1666 arrX=[ -1., 1., 2., 4. ]
1667 coordsX.setValues(arrX, 4, 1);
1668 coordsY=DataArrayDouble.New();
1669 arrY=[ -2., 2., 4., 8. ]
1670 coordsY.setValues(arrY, 4, 1);
1671 coordsZ=DataArrayDouble.New();
1672 arrZ=[ -3., 3., 6., 12. ]
1673 coordsZ.setValues(arrZ, 4, 1);
1674 mesh.setCoords(coordsX, coordsY, coordsZ);
1676 fieldOnNodes=mesh.fillFromAnalytic(ON_NODES, 1, "x+y/2.+z/3.");
1677 self.assertEqual(1, fieldOnNodes.getNumberOfComponents());
1678 self.assertEqual(64, fieldOnNodes.getNumberOfTuples());
1679 expected1=[-3., -1., 0., 2., -1., 1., 2., 4., 0., 2., 3., 5., 2., 4., 5., 7., -1., 1., 2.,
1680 4., 1., 3., 4., 6., 2., 4., 5., 7., 4., 6., 7., 9., 0., 2., 3., 5., 2., 4., 5.,
1681 7., 3., 5., 6., 8., 5., 7., 8., 10., 2., 4., 5.,
1682 7., 4., 6., 7., 9., 5., 7., 8., 10., 7., 9., 10., 12.];
1684 val=fieldOnNodes.getArray().getValues();
1685 for i in xrange(64):
1686 self.assertAlmostEqual(expected1[i], val[i], 12)
1687 res=fieldOnNodes.getValueOnPos(1, 3, 2);
1688 self.assertAlmostEqual(7., res[0], 12);
1690 fieldOnCells=mesh.fillFromAnalytic(ON_CELLS, 1, "x+y/2.+z/3.");
1691 self.assertEqual(1, fieldOnCells.getNumberOfComponents());
1692 self.assertEqual(27, fieldOnCells.getNumberOfTuples());
1693 val=fieldOnCells.getArray().getValues();
1694 expected2=[0, 1.5, 3, 1.5, 3, 4.5, 3, 4.5, 6, 1.5, 3, 4.5, 3, 4.5,
1695 6, 4.5, 6, 7.5, 3, 4.5, 6, 4.5, 6, 7.5, 6, 7.5, 9];
1696 for i in xrange(27):
1697 self.assertAlmostEqual(expected2[i], val[i], 12);
1698 #res=fieldOnCells.getValueOnPos(1,2,1);
1699 #self.assertAlmostEqual(6.,res,12);
1701 meshDeepCopy=mesh.deepCpy();
1702 meshClone=mesh.clone(False);
1704 meshEmpty.copyTinyStringsFrom(mesh);
1705 #no data in meshEmpty, expected False
1706 self.assertTrue(not meshEmpty.isEqual(mesh, 1e-12));
1708 self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1709 meshDeepCopy.copyTinyStringsFrom(mesh);
1710 self.assertTrue(meshDeepCopy.isEqual(mesh, 1e-12));
1711 self.assertTrue(meshClone.isEqual(mesh, 1e-12));
1713 self.assertEqual(CARTESIAN, mesh.getType());
1714 self.assertEqual(CARTESIAN, meshEmpty.getType());
1715 self.assertEqual(CARTESIAN, meshDeepCopy.getType());
1716 self.assertEqual(CARTESIAN, meshClone.getType());
1719 def testCMesh1(self):
1720 mesh1=MEDCouplingCMesh.New();
1721 coordsX1=DataArrayDouble.New();
1722 arrX1=[ -1., 1., 2., 4. ]
1723 coordsX1.setValues(arrX1, 4, 1);
1724 coordsY1=DataArrayDouble.New();
1725 arrY1=[ -2., 2., 4., 8. ]
1726 coordsY1.setValues(arrY1, 4, 1);
1727 coordsZ1=DataArrayDouble.New();
1728 arrZ1=[ -3., 3., 6., 12. ]
1729 coordsZ1.setValues(arrZ1, 4, 1);
1730 mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1732 mesh2=MEDCouplingCMesh.New();
1733 coordsX2=DataArrayDouble.New();
1734 arrX2=[ -1., 1., 2., 4. ]
1735 coordsX2.setValues(arrX2, 4, 1);
1736 coordsY2=DataArrayDouble.New();
1737 arrY2=[ -2., 2., 4., 8. ]
1738 coordsY2.setValues(arrY2, 4, 1);
1739 coordsZ2=DataArrayDouble.New();
1740 arrZ2=[ -3., 3., 6., 12.+1e-6 ]
1741 coordsZ2.setValues(arrZ2, 4, 1);
1742 mesh2.setCoords(coordsX2, coordsY2, coordsZ2);
1744 mesh3=MEDCouplingCMesh.New();
1745 coordsX3=DataArrayDouble.New();
1747 coordsX3.setValues(arrX3, 1, 1);
1748 coordsY3=DataArrayDouble.New();
1750 coordsY3.setValues(arrY3, 1, 1);
1751 coordsZ3=DataArrayDouble.New();
1753 coordsZ3.setValues(arrZ3, 1, 1);
1754 mesh3.setCoords(coordsX3, coordsY3, coordsZ3);
1756 self.assertEqual(3, mesh1.getSpaceDimension());
1757 self.assertEqual(3, mesh1.getMeshDimension());
1759 self.assertTrue(not mesh1.isEqual(mesh2, 1e-12));
1760 self.assertTrue(not mesh2.isEqual(mesh1, 1e-12));
1761 self.assertTrue(not mesh2.isEqualWithoutConsideringStr(mesh1, 1e-12));
1762 self.assertTrue(mesh1.isEqual(mesh2, 1e-5));
1763 self.assertTrue(not mesh1.isEqual(mesh2, 1e-7));
1765 self.assertRaises(InterpKernelException, mesh3.checkCoherency1, 1e-12);
1766 mesh1.checkCoherency2(1e-12);
1767 self.assertEqual(NORM_HEXA8, mesh1.getTypeOfCell(1));
1769 self.assertEqual(NORM_HEXA8, mesh1.getAllGeoTypes()[0]);
1770 self.assertEqual(27, mesh1.getNumberOfCellsWithType(NORM_HEXA8));
1771 self.assertRaises(InterpKernelException, mesh1.getNumberOfCellsWithType, NORM_QUAD4);
1773 coo=mesh1.getCoordinatesOfNode(0);
1774 self.assertEqual(3, len(coo));
1775 self.assertAlmostEqual(-1., coo[0], 14);
1776 self.assertAlmostEqual(-2., coo[1], 14);
1777 self.assertAlmostEqual(-3., coo[2], 14);
1778 coo=mesh1.getCoordinatesOfNode(63);
1779 self.assertEqual(3, len(coo));
1780 self.assertAlmostEqual(4., coo[0], 14);
1781 self.assertAlmostEqual(8., coo[1], 14);
1782 self.assertAlmostEqual(12., coo[2], 14);
1785 repr=mesh1.simpleRepr();
1786 repr=mesh1.advancedRepr();
1787 self.assertTrue("Cartesian" in repr);
1788 self.assertTrue("Number of components : 1" in repr);
1789 self.assertTrue("Number of tuples : 4" in repr);
1790 self.assertTrue("Z Array :" in repr);
1793 def testCMesh2(self):
1794 mesh1=MEDCouplingCMesh.New();
1795 coordsX1=DataArrayDouble.New();
1796 arrX1=[ -1., 1., 2., 4. ]
1797 coordsX1.setValues(arrX1, 4, 1);
1798 coordsY1=DataArrayDouble.New();
1799 arrY1=[ -2., 2., 4., 8. ]
1800 coordsY1.setValues(arrY1, 4, 1);
1801 coordsZ1=DataArrayDouble.New();
1802 arrZ1=[ -3., 3., 6., 12. ]
1803 coordsZ1.setValues(arrZ1, 4, 1);
1804 mesh1.setCoords(coordsX1, coordsY1, coordsZ1);
1806 dis=mesh1.getDistributionOfTypes();
1807 self.assertEqual(1, len(dis));
1808 self.assertEqual(NORM_HEXA8, dis[0][0]);
1809 self.assertEqual(27, dis[0][1]);
1810 self.assertEqual(0, dis[0][2]);
1813 self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1816 self.assertTrue(not mesh1.checkTypeConsistencyAndContig(dis, idsPerType));
1817 dis[0][0]=NORM_QUAD4;
1818 self.assertRaises(InterpKernelException, mesh1.checkTypeConsistencyAndContig, dis, idsPerType);
1819 dis[0][0]=NORM_HEXA8;
1821 ids=DataArrayInt.New();
1823 ids.fillWithValue(111);
1825 check=mesh1.checkTypeConsistencyAndContig(dis, idsPerType);
1826 self.assertTrue(check);
1827 self.assertTrue(check.isEqual(ids));
1829 code, idsInPflPerType, pfls=mesh1.splitProfilePerType(ids);
1830 self.assertEqual(3, len(code));
1831 self.assertEqual(NORM_HEXA8, code[0]);
1832 self.assertEqual(27, code[1]);
1833 self.assertEqual(0, code[2]);
1834 self.assertEqual(1, len(idsInPflPerType));
1835 self.assertEqual(1, len(pfls));
1836 self.assertTrue(idsInPflPerType[0].isEqual(ids));
1837 self.assertTrue(pfls[0].isEqual(ids));
1839 cells1=[0, 1, 25, 26]
1840 partMesh1=mesh1.buildPart(cells1)
1841 self.assertTrue(isinstance(partMesh1,MEDCouplingMesh))
1842 self.assertEqual(4, partMesh1.getNumberOfCellsWithType(NORM_HEXA8));
1843 self.assertEqual(64, mesh1.getNumberOfNodes());
1844 self.assertEqual(64, partMesh1.getNumberOfNodes());
1847 partMesh2, arr1=mesh1.buildPartAndReduceNodes(cells2)
1848 self.assertTrue(isinstance(partMesh2,MEDCouplingUMesh))
1849 self.assertEqual(2,partMesh2.getNumberOfCellsWithType(NORM_HEXA8));
1850 self.assertEqual(12,partMesh2.getNumberOfNodes());
1853 partMesh3, arr2=partMesh1.buildPartAndReduceNodes(cells3)
1854 self.assertTrue(isinstance(partMesh3,MEDCouplingUMesh))
1855 self.assertEqual(2, partMesh3.getNumberOfCellsWithType(NORM_HEXA8));
1856 self.assertEqual(12, partMesh3.getNumberOfNodes());
1858 self.assertRaises(InterpKernelException, mesh1.simplexize, 0);
1859 self.assertRaises(InterpKernelException, mesh1.getMeasureFieldOnNode, True);
1863 bbox1=mesh1.getBoundingBox(); #[(-1.0, 4.0), (-2.0, 8.0), (-3.0, 12.0)]
1864 bbox2=partMesh1.getBoundingBox();
1865 self.assertTrue(bbox1==bbox2);
1866 bbox1=partMesh3.getBoundingBox();
1867 bbox2=partMesh2.getBoundingBox();
1868 self.assertTrue(bbox1==bbox2);
1870 self.assertRaises(InterpKernelException, mesh1.buildOrthogonalField);
1871 mesh2d=MEDCouplingCMesh.New();
1872 mesh2d.setCoords(coordsX1, coordsY1);
1873 f1=mesh2d.buildOrthogonalField();
1877 def testScale(self):
1878 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
1880 mesh.scale(pos,0.5);
1881 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,
1882 -0.05,0.45, 0.2,0.45, 0.45,0.45]
1883 val=mesh.getCoords().getValues();
1884 self.assertEqual(18,len(val))
1885 for i in xrange(18):
1886 self.assertTrue(abs(expected1[i]-val[i])<1e-12);
1890 def testTryToShareSameCoords(self):
1891 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1892 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1893 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1894 m1.tryToShareSameCoords(m2,1e-12);
1895 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1896 m1.tryToShareSameCoords(m2,1e-12);
1897 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1898 m2.tryToShareSameCoords(m1,1e-12);
1899 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1901 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1902 m2=MEDCouplingDataForTest.build2DTargetMesh_2();
1903 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1904 m1.tryToShareSameCoords(m2,1e-12);
1905 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1906 m1.tryToShareSameCoords(m2,1e-12);
1907 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1908 m2.tryToShareSameCoords(m1,1e-12);
1909 self.assertTrue(m1.getCoords().getHiddenCppPointer()==m2.getCoords().getHiddenCppPointer());
1911 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
1912 m2=MEDCouplingDataForTest.build2DSourceMesh_1();
1913 self.assertTrue(m1.getCoords().getHiddenCppPointer()!=m2.getCoords().getHiddenCppPointer());
1914 self.assertRaises(InterpKernelException,m1.tryToShareSameCoords,m2,1e-12)
1917 def testFindNodeOnPlane(self):
1918 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
1921 n=mesh.findNodesOnPlane(pt,v,1e-12);
1922 self.assertEqual(9,len(n));
1923 m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1924 self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1925 me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1926 da=me.getMesh3DIds();
1927 self.assertEqual(8,me.getNumberOfCells());
1928 expected=[0,1,2,3,4,5,6,7]
1930 self.assertEqual(expected,list(val));
1932 m3dSurf=mesh.buildFacePartOfMySelfNode(n,True);
1933 self.assertTrue(isinstance(m3dSurf,MEDCouplingUMesh))
1934 me=MEDCouplingExtrudedMesh.New(mesh,m3dSurf,0);
1935 da=me.getMesh3DIds();
1936 self.assertEqual(8,me.getNumberOfCells());
1937 expected=[0,1,2,3,4,5,6,7]
1939 self.assertEqual(expected,list(val));
1942 def testRenumberCells(self):
1943 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1944 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1945 self.assertTrue(m.isEqual(m2,0));
1947 m.renumberCells(arr,True);
1948 self.assertTrue(not m.isEqual(m2,0));
1949 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(0));
1950 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
1951 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(2));
1952 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
1953 self.assertEqual(NORM_QUAD4,m.getTypeOfCell(4));
1955 m.renumberCells(arr2,True);
1956 self.assertTrue(m.isEqual(m2,0));
1959 def testChangeSpaceDimension(self):
1960 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
1961 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
1963 self.assertEqual(3,m1.getSpaceDimension());
1964 m1.changeSpaceDimension(2);
1965 self.assertEqual(2,m1.getSpaceDimension());
1966 m1.setName(m2.getName());
1967 self.assertTrue(m1.isEqual(m2,1e-12));
1968 m1.changeSpaceDimension(3);
1969 self.assertEqual(3,m1.getSpaceDimension());
1970 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.]
1971 val=m1.getCoords().getValues();
1972 for i in xrange(27):
1973 self.assertTrue(abs(expected[i]-val[i])<1e-14);
1977 def testGaussPointField1(self):
1978 _a=0.446948490915965;
1979 _b=0.091576213509771;
1980 _p1=0.11169079483905;
1981 _p2=0.0549758718227661;
1982 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
1983 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
1984 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]
1985 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
1990 m=MEDCouplingDataForTest.build2DTargetMesh_1();
1991 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
1993 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
1994 self.assertEqual(0,f.getNbOfGaussLocalization());
1995 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
1996 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1); # not a bug only to check that it works well
1997 self.assertRaises(InterpKernelException,f.setGaussLocalizationOnType,NORM_QUAD4,_refCoo1,_gsCoo1,_wg1)
1998 self.assertEqual(1,f.getNbOfGaussLocalization());
1999 refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2001 _gsCoo1=_gsCoo1[0:4]
2003 f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2004 self.assertEqual(2,f.getNbOfGaussLocalization());
2005 array=DataArrayDouble.New();
2007 for i in xrange(18*2):
2009 array.setValues(ptr,18,2);
2010 ptr=array.getPointer();
2012 f.setName("MyFirstFieldOnGaussPoint");
2014 self.assertAlmostEqual(27.,f.getIJK(2,5,0),14);
2015 self.assertAlmostEqual(16.,f.getIJK(1,5,1),14);
2017 f.clearGaussLocalizations();
2018 self.assertEqual(0,f.getNbOfGaussLocalization());
2019 self.assertRaises(InterpKernelException,f.checkCoherency);
2021 self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,ids1,_refCoo2,_gsCoo1,_wg1);
2022 self.assertEqual(0,f.getNbOfGaussLocalization());
2024 f.setGaussLocalizationOnCells(ids2,_refCoo2,_gsCoo1,_wg1);
2025 self.assertEqual(1,f.getNbOfGaussLocalization());
2026 self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2027 self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneCell,1);
2029 f.setGaussLocalizationOnCells(ids3,_refCoo1,_gsCoo1,_wg1);
2030 self.assertEqual(2,f.getNbOfGaussLocalization());
2031 self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0));
2032 self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(1));
2033 self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(2));
2034 self.assertRaises(InterpKernelException,f.checkCoherency);#<- cell 3 has no localization
2038 _gsCoo2[0]=0.8888777776666;
2039 _wg2[0]=0.1234567892377;
2040 f.setGaussLocalizationOnCells(ids4,_refCoo2,_gsCoo2,_wg2);
2041 self.assertEqual(3,f.getNbOfGaussLocalization());
2042 tmpIds=f.getCellIdsHavingGaussLocalization(0);
2043 self.assertEqual(ids2,list(tmpIds.getValues()));
2044 self.assertRaises(InterpKernelException,f.checkCoherency);#<- it's always not ok because undelying array not with the good size.
2045 array2=f.getArray().substr(0,10);
2047 f.checkCoherency();#<- here it is OK
2049 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2050 gl1=f2.getGaussLocalization(0);
2051 tmp=gl1.getGaussCoord(1,1);
2052 self.assertAlmostEqual(2.07*_b-1,tmp,14);
2053 gl1.setGaussCoord(1,1,0.07);
2054 self.assertTrue(not f.isEqual(f2,1e-14,1e-14));
2055 gl1.setGaussCoord(1,1,tmp);
2056 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2057 f2.checkCoherency();
2060 def testGaussPointNEField1(self):
2061 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2062 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2064 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2065 f.setName("MyFirstFieldOnNE");
2066 f.setDescription("MyDescriptionNE");
2067 array=DataArrayDouble.New();
2069 for i in xrange(18*2):
2072 array.setValues(tmp,18,2);
2073 ptr=array.getPointer();
2078 self.assertTrue(f.isEqual(f2,1e-14,1e-14));
2079 self.assertAlmostEqual(21.,f.getIJK(2,0,0),14);
2080 self.assertAlmostEqual(18.,f.getIJK(1,1,1),14);
2083 def testCellOrientation1(self):
2084 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2086 self.assertRaises(InterpKernelException,m.are2DCellsNotCorrectlyOriented,vec,False);
2087 m.changeSpaceDimension(3);
2088 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2089 self.assertTrue(len(res1)==0);
2091 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2092 self.assertEqual(5,len(res1));
2095 # connectivity inversion
2096 conn=m.getNodalConnectivity().getValues();
2100 m.getNodalConnectivity().setValues(conn,len(conn),1)
2101 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2102 self.assertEqual(1,len(res1));
2103 self.assertEqual(2,res1.getValues()[0]);
2104 m.orientCorrectly2DCells(vec,False);
2105 res1=m.are2DCellsNotCorrectlyOriented(vec,False);
2106 self.assertTrue(len(res1)==0);
2107 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
2108 m2.changeSpaceDimension(3);
2109 self.assertTrue(m.isEqual(m2,1e-12));
2112 def testCellOrientation2(self):
2113 m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
2114 res1=m2.arePolyhedronsNotCorrectlyOriented();
2115 self.assertEqual(6,len(res1));
2116 m2.orientCorrectlyPolyhedrons();
2117 res1=m2.arePolyhedronsNotCorrectlyOriented();
2118 self.assertTrue(len(res1)==0);
2119 m2.checkCoherency();
2120 self.assertEqual(18,m2.getNumberOfCells());
2122 m2.convertToPolyTypes(cellIds2);
2123 m2.orientCorrectlyPolyhedrons();
2124 res1=m2.arePolyhedronsNotCorrectlyOriented();
2125 self.assertTrue(len(res1)==0);
2126 f2=m2.getMeasureField(False);
2127 f2Ptr=f2.getArray().getValues();
2128 #Test to check global reverse in MEDCouplingUMesh::tryToCorrectPolyhedronOrientation
2129 m3=MEDCouplingDataForTest.build2DTargetMesh_1();
2131 m3.changeSpaceDimension(3);
2133 m3.convertToPolyTypes(ids2);
2134 m3.orientCorrectly2DCells(vec,False);
2135 m4=MEDCouplingDataForTest.buildCU1DMesh_U();
2136 m4.changeSpaceDimension(3);
2139 m4.rotate(center,vector,-pi/2.);
2140 m5=m3.buildExtrudedMesh(m4,0);
2141 res1=m5.arePolyhedronsNotCorrectlyOriented();
2142 self.assertEqual(15,len(res1));
2143 m5.orientCorrectlyPolyhedrons();
2144 res1=m5.arePolyhedronsNotCorrectlyOriented();
2145 self.assertTrue(len(res1)==0);
2146 f3=m5.getMeasureField(False);
2147 self.assertEqual(15,f3.getArray().getNumberOfTuples());
2148 self.assertEqual(1,f3.getNumberOfComponents());
2149 f3Ptr=f3.getArray().getValues();
2150 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];
2151 for i in xrange(15):
2152 self.assertTrue(abs(expected1[i]-f3Ptr[i])<1e-12);
2154 f4=m5.getBarycenterAndOwner();
2155 self.assertEqual(15,f4.getNumberOfTuples());
2156 self.assertEqual(3,f4.getNumberOfComponents());
2157 f4Ptr=f4.getValues();
2158 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];
2159 for i in xrange(45):
2160 self.assertTrue(abs(expected2[i]-f4Ptr[i])<1e-12);
2164 def testPolyhedronBarycenter(self):
2165 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];
2166 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];
2167 meshN=MEDCouplingUMesh.New();
2168 meshN.setName("ForBary");
2169 meshN.setMeshDimension(3);
2170 meshN.allocateCells(4);
2171 meshN.insertNextCell(NORM_POLYHED,29,connN[0:29])
2172 meshN.finishInsertingCells();
2173 myCoords=DataArrayDouble.New();
2174 myCoords.setValues(coords,9,3);
2175 meshN.setCoords(myCoords);
2176 meshN.checkCoherency();
2178 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2179 meshN.orientCorrectlyPolyhedrons();
2180 self.assertTrue(len(res1)==0);
2181 da=meshN.getBarycenterAndOwner();
2182 self.assertEqual(1,da.getNumberOfTuples());
2183 self.assertEqual(3,da.getNumberOfComponents());
2184 daPtr=da.getValues();
2185 ref=meshN.getCoords().getValues()[24:];
2187 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2192 da=meshN.getBarycenterAndOwner();
2193 daPtr=da.getValues();
2194 ref=meshN.getCoords().getValues()[24:];
2196 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2199 meshN.rotate(center,vec,pi/7.);
2200 meshN.translate(vec);
2201 da=meshN.getBarycenterAndOwner();
2202 daPtr=da.getValues();
2203 ref=meshN.getCoords().getValues()[24:];
2205 self.assertTrue(abs(ref[i]-daPtr[i])<1e-12);
2208 center2=[1.12,3.45,6.78]
2210 meshN.rotate(center2,vec2,e);
2211 meshN.translate(vec2);
2212 da=meshN.getBarycenterAndOwner();
2213 daPtr=da.getValues();
2214 ref=meshN.getCoords().getValues()[24:];
2216 self.assertTrue(abs(ref[i]-daPtr[i])<1e-10);
2220 def testNormL12Integ1D(self):
2221 m1=MEDCouplingDataForTest.build1DTargetMesh_3();
2222 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2224 array=DataArrayDouble.New();
2225 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]
2226 array.setValues(arr,m1.getNumberOfCells(),3);
2229 f3=m1.getBarycenterAndOwner();
2230 self.assertEqual(4,f3.getNumberOfTuples());
2231 self.assertEqual(1,f3.getNumberOfComponents());
2232 expected9=[0.75,5.105,0.8,5.155]
2235 self.assertTrue(abs(expected9[i]-ptr[i])<1e-12);
2238 f2=m1.getMeasureField(False);
2239 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2240 self.assertEqual(1,f2.getNumberOfComponents());
2241 expected1=[0.5,0.21,-0.6,-0.31]
2242 ptr=f2.getArray().getValues();
2244 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2246 expected2=[0.5,0.21,0.6,0.31]
2247 f2=m1.getMeasureField(True);
2248 ptr=f2.getArray().getValues();
2250 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2253 self.assertTrue(4,f1.getNumberOfTuples())
2254 res=f1.integral(False);
2255 self.assertTrue(3,len(res))
2256 expected3=[0.9866,-0.3615,0.4217]
2258 self.assertTrue(abs(expected3[i]-res[i])<1e-12);
2260 self.assertTrue(abs(expected3[0]-f1.integral(0,False))<1e-12);
2261 self.assertTrue(abs(expected3[1]-f1.integral(1,False))<1e-12);
2262 self.assertTrue(abs(expected3[2]-f1.integral(2,False))<1e-12);
2263 res=f1.integral(True);
2264 expected4=[-3.4152,8.7639,-14.6879]
2266 self.assertTrue(abs(expected4[i]-res[i])<1e-12);
2270 self.assertTrue(3,len(res))
2271 expected5=[6.979506172839505, 16.89018518518518, 27.02969135802469]
2273 self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2275 self.assertTrue(abs(expected5[0]-f1.normL1(0))<1e-12);
2276 self.assertTrue(abs(expected5[1]-f1.normL1(1))<1e-12);
2277 self.assertTrue(abs(expected5[2]-f1.normL1(2))<1e-12);
2280 self.assertTrue(3,len(res))
2281 expected7=[7.090910979452395, 16.9275542960123, 27.053271464160858]
2283 self.assertTrue(abs(expected7[i]-res[i])<1e-9);
2285 self.assertTrue(abs(expected7[0]-f1.normL2(0))<1e-9);
2286 self.assertTrue(abs(expected7[1]-f1.normL2(1))<1e-9);
2287 self.assertTrue(abs(expected7[2]-f1.normL2(2))<1e-9);
2289 f4=f1.buildMeasureField(False);
2290 self.assertTrue(abs(-0.2-f4.accumulate(0))<1e-12);
2291 f4=f1.buildMeasureField(True);
2292 self.assertTrue(abs(1.62-f4.accumulate(0))<1e-12);
2293 # Testing with 2D Curve
2294 m1=MEDCouplingDataForTest.build2DCurveTargetMesh_3();
2295 f2=m1.getMeasureField(False);
2296 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2297 self.assertEqual(1,f2.getNumberOfComponents());
2298 ptr=f2.getArray().getValues();
2300 self.assertTrue(abs(sqrt(2.)*expected2[i]-ptr[i])<1e-12);
2302 f2=m1.getMeasureField(True);
2303 self.assertEqual(4,f2.getArray().getNumberOfTuples());
2304 self.assertEqual(1,f2.getNumberOfComponents());
2305 ptr=f2.getArray().getValues();
2307 self.assertTrue(abs(expected2[i]*sqrt(2.)-ptr[i])<1e-12);
2310 f3=m1.getBarycenterAndOwner();
2311 self.assertEqual(4,f3.getNumberOfTuples());
2312 self.assertEqual(2,f3.getNumberOfComponents());
2313 expected10=[0.75,0.75,5.105,5.105,0.8,0.8,5.155,5.155]
2316 self.assertTrue(abs(expected10[i]-ptr[i])<1e-12);
2319 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2321 array=DataArrayDouble.New();
2322 array.setValues(arr,m1.getNumberOfCells(),3);
2324 res=f1.integral(False);
2326 self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2328 res=f1.integral(True);
2330 self.assertTrue(abs(sqrt(2.)*expected4[i]-res[i])<1e-12);
2334 self.assertTrue(abs(expected5[i]-res[i])<1e-12);
2338 self.assertTrue(abs(expected7[i]-res[i])<1e-12);
2342 def testAreaBary2D(self):
2343 m1=MEDCouplingDataForTest.build2DTargetMesh_3();
2344 f1=m1.getMeasureField(False);
2345 self.assertEqual(10,f1.getArray().getNumberOfTuples());
2346 self.assertEqual(1,f1.getNumberOfComponents());
2347 expected1=[-0.5,-1,-1.5,-0.5,-1, 0.5,1,1.5,0.5,1]
2348 ptr=f1.getArray().getValues();
2349 for i in xrange(10):
2350 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2352 f1=m1.getMeasureField(True);
2353 ptr=f1.getArray().getValues();
2354 for i in xrange(10):
2355 self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2357 f2=m1.getBarycenterAndOwner();
2358 self.assertEqual(10,f2.getNumberOfTuples());
2359 self.assertEqual(2,f2.getNumberOfComponents());
2360 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]
2362 for i in xrange(20):
2363 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2365 m1.changeSpaceDimension(3);
2366 f1=m1.getMeasureField(False);
2367 self.assertEqual(10,f1.getArray().getNumberOfTuples());
2368 self.assertEqual(1,f1.getNumberOfComponents());
2369 ptr=f1.getArray().getValues();
2370 for i in xrange(10):
2371 self.assertTrue(abs(abs(expected1[i])-ptr[i])<1e-12);
2373 f2=m1.getBarycenterAndOwner();
2374 self.assertEqual(10,f2.getNumberOfTuples());
2375 self.assertEqual(3,f2.getNumberOfComponents());
2377 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.]
2378 for i in xrange(30):
2379 self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2383 def testAreaBary3D(self):
2384 coords=[ 0.241310763507 , 0.0504777305619 , 0.0682283524903 , 0.252501053866 , -0.0625176732937 , 0.137272639894 ,
2385 0.152262663601 , 0.241816569527 , 0.133812556197 , 0.18047750211 , -0.0789949051358 , 0.339098173401 ,
2386 0.151741971857 , 0.238885278571 , 0.137715037333 , 0.242532155481 , -0.0928169086456 , 0.0678043417367 ,
2387 0.240941965335 , -0.015461491464 , 0.0617186345825 , 0.24127650112 , 0.0499427876717 , 0.0679634099148 ,
2388 -0.145828917428 , 0.206291632565 , 0.0310071927543 , 0.0125651775307 , 0.266262085828 , 0.105228430543 ,
2389 -0.0994066533286 , 0.233224271238 , 0.0572213839567 , -0.0951345338317 , 0.234819509426 , 0.0592126284538 ,
2390 0.136580574205 , -0.205486212579 , 0.0572866072014 , 0.0637270784978 , -0.168886355238 , 0.446614057077 ,
2391 0.041337157151 , -0.213402568198 , 0.372407095999 , 0.0411601970268 , -0.202387875756 , 0.411334979491 ,
2392 -0.108355701857 , 0.193636239335 , 0.204886756738 , 0.00639779029829 , 0.155296981517 , 0.252585892979 ,
2393 0.0262473111702 , -0.112919732543 , 0.424286639249 ,-0.224103052733 , -0.139430015438 , -0.0122352295701 ,
2394 -0.0312760589481 , -0.274272003594 , 0.0323959636568 , -0.166663422532 , -0.217754445175 , 0.00392109070364 ,
2395 -0.30586619777 , -0.0475168041091 , -0.0144585228182 , -0.280881480586 , 0.135571293538 , 0.00623923647986 ,
2396 -0.25548538234 , 0.156819217766 , 0.0645277879769 , -0.131567009284 , 0.184133752309 , 0.206021802753 ,
2397 -0.196204010965 , 0.151602971681 , 0.212974777736 , -0.183713879463 , 0.0802946639531 , 0.260115662599 ,
2398 -0.244241178767 , -0.0738873389604 , 0.144590565817 , -0.155804057829 , -0.164892720025 , 0.210613950558 ,
2399 -0.170950800428 , -0.215099334026 , 0.00610122860092 , -0.30552634869 , -0.0490020791904 , -0.0132786533145 ,
2400 0.271831011884 , 0.15105657296 , 0.0230534827908 , 0.281919192283 , 0.0898544306288 , -0.0625201489143 ,
2401 0.260240727276 , -0.0120688706637 , -0.0532316588626 , 0.244947737722 , 0.0197984684293 , 0.0309341209233 ,
2402 0.23439631578 , 0.229825279875 , 0.0508520585381 , 0.160921316875 , 0.265078502128 , 0.121716560626 ,
2403 -0.315088694175 , 0.0747700471918 , -0.245836615071 , -0.327728781776 , 0.0857114674649 , -0.239431905957 ,
2404 -0.308385460634 , 0.145142997084 , -0.149886828433 , 0.0488236045164 , 0.309462801914 , 0.0849169148265 ,
2405 -0.0244964803395 , 0.33145611751 , -0.0476415818061 , 0.0060567994229 , 0.32418412014 , 0.0367779543812 ,
2406 -0.0950221448063 , 0.236675326003 , 0.0572594453983 , 0.248723023186 , 0.0886648784791 , -0.176629430538 ,
2407 0.116796984 , 0.256596599567 , -0.292863523603 , 0.118024552914 , 0.229154257843 , -0.34233232501 ,
2408 0.217507892549 , -0.0417822335742 , -0.176771782888 , -0.224429321304 , 0.0125595300114 , -0.362064725588 ,
2409 0.0937301100955 , -0.0500824832657 , -0.299713548444 , -0.244162220397 , 0.0383853931293 , -0.389856984411 ,
2410 -0.0281989366102 , 0.097392811563 , -0.458244577284 , -0.385010847162 , 0.10122766194 , -0.140052859922 ,
2411 -0.377936358012 , 0.110875172128 , -0.176207095463 , 0.244483045556 , -0.0991073977045 , 0.0575134372934 ,
2412 0.262605120167 , -0.100243191645 , -0.0495620806935 , 0.240306880972 , -0.136153701579 , -0.114745281696 ,
2413 0.215763176129 , -0.0836766059189 , -0.183249640616 , 0.237870396603 , -0.132449578286 , -0.121598854639 ,
2414 -0.0637683083097 , -0.27921020214 , -0.149112321992 , -0.0856211014977 , -0.2973233473 , -0.0446878139589 ,
2415 0.104675342288 , -0.0625908305324 , -0.290346256534 , 0.0248264249186 , -0.247797708548 , -0.165830884019 ,
2416 0.0719302438309 , -0.178468260473 , -0.211432157345 , 0.142871843159 , -0.208769948542 , 0.0454101128246 ,
2417 0.167803379307 , -0.207851396623 , -0.088802726124 , 0.12868717152 , -0.230920439715 , 0.00760508389036 ,
2418 -0.0372812069535 , -0.286740286332 , 0.00963701291166 ]
2420 connN = [ #polyhedron 0
2421 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
2422 , 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
2423 , 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
2424 , 22 , 19 , 21 , 30 , 31 , -1 , 22 , 31 , 28 , 27 , 26 , 24 , 23 , -1 , 31 , 30 , 29 , 28,
2426 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
2427 , 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
2428 , 33 , 34 , 48 , 45 , -1 , 35 , 34 , 48 , 50 , 49 , 38 , -1 , 41 , 43 , 42 , 46 , 36 , 37 , -1 , 38 , 39 , 51 , 49 , -1
2429 , 39 , 40 , 42 , 46 , 47 , 52 , 51 , -1 , 45 , 47 , 52 , 50 , 48 , -1 , 52 , 51 , 49 , 50,
2431 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
2432 , 23 , 53 , 54 , 40 , 8 , -1 , 53 , 22 , 23 , -1 , 39 , 54 , 40,
2434 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
2435 , 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
2436 , 55 , 5 , 12 , 65 , -1 , 66 , 67 , 65 , 55 , 56 , 57 , -1 , 63 , 66 , 57 , 59 , 64 , -1 , 64 , 62 , 58 , 59 , -1
2437 , 60 , 63 , 66 , 67 , 68 , 61 , -1 , 61 , 68 , 20 , 21 , -1 , 67 , 68 , 20 , 12 , 65]
2439 barys = [ -0.0165220465527 , -0.0190922868195 , 0.158882733414 ,
2440 0.0287618656076 , 0.135874379934 , -0.14601588119 ,
2441 -0.147128055553 , 0.0465995097041 , -0.049391174453 ,
2442 -0.00142506732317 , -0.0996953090351 , -0.115159183132 ]
2443 meshN=MEDCouplingUMesh.New();
2444 meshN.setName("ForBary");
2445 meshN.setMeshDimension(3);
2446 meshN.allocateCells(4);
2447 meshN.insertNextCell(NORM_POLYHED,113,connN);
2448 meshN.insertNextCell(NORM_POLYHED,99,connN[113:]);
2449 meshN.insertNextCell(NORM_POLYHED,43,connN[212:]);
2450 meshN.insertNextCell(NORM_POLYHED,92,connN[255:]);
2451 meshN.finishInsertingCells();
2452 myCoords=DataArrayDouble.New();
2453 myCoords.setValues(coords,69,3);
2454 meshN.setCoords(myCoords);
2455 meshN.checkCoherency();
2456 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2457 meshN.orientCorrectlyPolyhedrons();
2458 res1=meshN.arePolyhedronsNotCorrectlyOriented();
2459 self.assertTrue(len(res1)==0);
2461 da=meshN.getBarycenterAndOwner();
2462 self.assertEqual(4,da.getNumberOfTuples());
2463 self.assertEqual(3,da.getNumberOfComponents());
2464 daPtr=da.getValues();
2465 for i in xrange(12):
2466 self.assertTrue(abs(barys[i]-daPtr[i])<1e-12);
2470 def testRenumberCellsForFields(self):
2471 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2472 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2474 arr=DataArrayDouble.New();
2475 nbOfCells=m.getNumberOfCells();
2476 values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
2477 arr.setValues(values1,nbOfCells,3);
2479 renumber1=[3,1,0,4,2]
2480 loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
2482 res=f.getValueOn(loc[2*j:2*j+2]);
2484 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2487 f.renumberCells(renumber1,False);
2488 ptr=f.getArray().getValues();
2489 expected1=[9.,109.,10009.,8.,108.,10008.,11.,111.,10011.,7.,107.,10007.,10.,110.,10010.]
2490 for i in xrange(15):
2491 self.assertTrue(abs(expected1[i]-ptr[i])<1e-12);
2493 #check that fields remains the same geometrically
2495 res=f.getValueOn(loc[2*j:2*(j+1)]);
2497 self.assertTrue(abs(values1[i+3*j]-res[i])<1e-12);
2501 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME);
2503 _a=0.446948490915965;
2504 _b=0.091576213509771;
2505 _p1=0.11169079483905;
2506 _p2=0.0549758718227661;
2507 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
2508 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 ];
2509 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
2510 _refCoo1=refCoo1[0:6];
2511 _gsCoo1=gsCoo1[0:12];
2513 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
2514 refCoo2=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
2515 _refCoo2=refCoo2[0:8];
2516 _gsCoo1=_gsCoo1[0:4]
2518 f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo2,_gsCoo1,_wg1);
2519 arr=DataArrayDouble.New();
2520 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.]
2521 arr.setValues(values2,18,2);
2525 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2526 f.renumberCells(renumber1,False);
2527 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2528 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.]
2529 ptr=f.getArray().getValues();
2530 for i in xrange(36):
2531 self.assertTrue(abs(expected2[i]-ptr[i])<1e-12);
2533 renumber2=[2,1,4,0,3]
2534 f.renumberCells(renumber2,False);
2535 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2537 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
2539 arr=DataArrayDouble.New();
2540 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.]
2541 arr.setValues(values3,18,2);
2545 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2546 f.renumberCells(renumber1,False);
2547 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2548 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.]
2549 ptr=f.getArray().getValues();
2550 for i in xrange(36):
2551 self.assertTrue(abs(expected3[i]-ptr[i])<1e-12);
2553 f.renumberCells(renumber2,False);#perform reverse operation of renumbering to check that the resulting field is equal.
2554 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2558 def testRenumberNodesForFields(self):
2559 m=MEDCouplingDataForTest.build2DTargetMesh_1();
2560 f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2562 self.assertEqual(9,f.getNumberOfMeshPlacesExpected());
2563 arr=DataArrayDouble.New();
2564 nbOfNodes=m.getNumberOfNodes();
2565 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.]
2566 arr.setValues(values1,nbOfNodes,3);
2569 renumber1=[0,4,1,3,5,2,6,7,8]
2570 loc=[0.5432,-0.2432, 0.5478,0.1528]
2571 expected1=[9.0272, 109.0272, 10009.0272, 11.4124,111.4124,10011.4124]
2573 res=f.getValueOn(loc[2*j:2*j+2]);
2575 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2579 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2580 f.renumberNodes(renumber1);
2581 self.assertTrue(not f.isEqual(fCpy,1e-12,1e-12));
2583 res=f.getValueOn(loc[2*j:2*j+2]);
2585 self.assertTrue(abs(expected1[i+3*j]-res[i])<1e-12);
2588 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.]
2589 for i in xrange(27):
2590 self.assertTrue(abs(expected2[i]-f.getArray().getValues()[i])<1e-12);
2592 renumber2=[0,2,5,3,1,4,6,7,8]
2593 f.renumberNodes(renumber2);
2594 self.assertTrue(f.isEqual(fCpy,1e-12,1e-12));
2597 def testConvertQuadraticCellsToLinear(self):
2598 mesh=MEDCouplingDataForTest.build2DTargetMesh_3();
2599 mesh.checkCoherency();
2600 types=mesh.getAllTypes();
2602 self.assertEqual(5,len(types));
2603 expected1=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4, NORM_TRI6, NORM_QUAD8]
2605 self.assertEqual(expected1,types);
2606 self.assertTrue(mesh.isPresenceOfQuadratic());
2607 self.assertEqual(62,mesh.getMeshLength());
2608 f1=mesh.getMeasureField(False);
2610 mesh.convertQuadraticCellsToLinear();
2611 self.assertTrue(not mesh.isPresenceOfQuadratic());
2613 mesh.checkCoherency();
2614 f2=mesh.getMeasureField(False);
2615 self.assertTrue(f1.getArray().isEqual(f2.getArray(),1e-12));
2616 self.assertEqual(48,mesh.getMeshLength());
2617 types2=mesh.getAllTypes();
2619 self.assertEqual(3,len(types2));
2620 expected2=[NORM_POLYGON, NORM_TRI3, NORM_QUAD4]
2622 self.assertEqual(expected2,types2);
2625 def testCheckGeoEquivalWith(self):
2626 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2627 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2629 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,0,1e-12);#deepEqual
2630 self.assertTrue(cellCor==None);
2631 self.assertTrue(nodeCor==None);
2632 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,1,1e-12);#fastEqual
2633 self.assertTrue(cellCor==None);
2634 self.assertTrue(nodeCor==None);
2635 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2636 self.assertTrue(cellCor==None);
2637 self.assertTrue(nodeCor==None);
2638 #Second test mesh1 and mesh2 are 2 different meshes instance
2639 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,0,1e-12);#deepEqual
2640 self.assertTrue(cellCor==None);
2641 self.assertTrue(nodeCor==None);
2642 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual
2643 self.assertTrue(cellCor==None);
2644 self.assertTrue(nodeCor==None);
2645 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2646 self.assertTrue(cellCor==None);
2647 self.assertTrue(nodeCor==None);
2648 #Third test : cell permutation by keeping the first the middle and the last as it is.
2649 renum=[0,2,1,3,4,5,6,8,7,9]
2650 mesh2.renumberCells(renum,False);
2651 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2652 self.assertTrue(cellCor==None);
2653 self.assertTrue(nodeCor==None);
2654 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2655 self.assertTrue(cellCor==None);
2656 self.assertTrue(nodeCor==None);
2657 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2658 self.assertTrue(cellCor);
2659 self.assertEqual(10,cellCor.getNumberOfTuples());
2660 self.assertEqual(1,cellCor.getNumberOfComponents());
2661 self.assertEqual(renum,list(cellCor.getValues()))
2662 self.assertTrue(nodeCor==None);
2664 self.assertTrue(nodeCor==None);
2665 #4th test : cell and node permutation by keeping the first the middle and the last as it is.
2666 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2667 renum2=[0,2,1,3,4,5,6,8,7,9,10]
2668 mesh2.renumberCells(renum,False);
2669 mesh2.renumberNodes(renum2,11);
2672 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);#deepEqual fails
2673 self.assertTrue(cellCor==None);
2674 self.assertTrue(nodeCor==None);
2675 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,1,1e-12);#fastEqual do not see anything
2676 self.assertTrue(cellCor==None);
2677 self.assertTrue(nodeCor==None);
2678 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);#deepEqual with geo permutations
2679 self.assertTrue(cellCor);
2680 self.assertEqual(10,cellCor.getNumberOfTuples());
2681 self.assertEqual(1,cellCor.getNumberOfComponents());
2682 self.assertEqual(renum,list(cellCor.getValues()))
2683 self.assertTrue(nodeCor);
2684 self.assertEqual(11,nodeCor.getNumberOfTuples());
2685 self.assertEqual(1,nodeCor.getNumberOfComponents());
2686 self.assertEqual(renum2,list(nodeCor.getValues()))
2689 #5th test : modification of the last cell to check fastCheck detection.
2690 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2691 renum3=[0,2,1,3,4,5,6,8,9,7]
2692 mesh2.renumberCells(renum3,False);
2693 mesh2.renumberNodes(renum2,11);
2696 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12)
2697 self.assertTrue(cellCor==None);
2698 self.assertTrue(nodeCor==None);
2699 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,1,1e-12)
2700 self.assertTrue(cellCor==None);
2701 self.assertTrue(nodeCor==None);
2702 cellCor,nodeCor=mesh2.checkGeoEquivalWith(mesh1,10,1e-12);#deepEqual with geo permutations
2703 self.assertTrue(cellCor!=None);
2704 self.assertEqual(10,cellCor.getNumberOfTuples());
2705 self.assertEqual(1,cellCor.getNumberOfComponents());
2706 self.assertEqual(renum3,list(cellCor.getValues()))
2707 self.assertTrue(nodeCor!=None);
2708 self.assertEqual(11,nodeCor.getNumberOfTuples());
2709 self.assertEqual(1,nodeCor.getNumberOfComponents());
2710 self.assertEqual(renum2,list(nodeCor.getValues()));
2713 def testCheckGeoEquivalWith2(self):
2714 mesh1=MEDCouplingDataForTest.build2DTargetMesh_4();
2715 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
2716 cellCor,nodeCor=mesh1.checkGeoEquivalWith(mesh2,10,1e-12);
2717 self.assertEqual(None,cellCor);
2718 self.assertNotEqual(None,nodeCor);
2719 expected1=[0, 1, 3, 4, 5, 6, 7, 8, 9]
2721 self.assertEqual(expected1[i],nodeCor.getIJ(i,0));
2725 def testCopyTinyStringsFromOnFields(self):
2726 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2727 nbOfCells=m.getNumberOfCells();
2728 f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2730 self.assertEqual(5,f.getNumberOfMeshPlacesExpected());
2732 f.setDescription("b");
2733 a1=DataArrayDouble.New();
2734 a1.alloc(nbOfCells,2);
2736 a1.setInfoOnComponent(0,"c");
2737 a1.setInfoOnComponent(1,"d");
2739 a2.setInfoOnComponent(0,"e");
2740 a2.setInfoOnComponent(1,"f");
2743 f.setEndTime(3.,3,4);
2745 m.getCoords().setInfoOnComponent(0,"h");
2746 m.getCoords().setInfoOnComponent(1,"i");
2747 m.getCoords().setInfoOnComponent(2,"j");
2751 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2753 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2754 f2.copyTinyStringsFrom(f);
2755 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2756 f2.setDescription("GGG");
2757 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2758 f2.copyTinyStringsFrom(f);
2759 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2760 f2.getArray().setInfoOnComponent(0,"mmmm");
2761 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2762 f2.copyTinyStringsFrom(f);
2763 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2764 f2.getEndArray().setInfoOnComponent(1,"mmmm");
2765 self.assertTrue(not f2.isEqual(f,1e-12,1e-12));
2766 f2.copyTinyStringsFrom(f);
2767 self.assertTrue(f2.isEqual(f,1e-12,1e-12));
2769 self.assertTrue(m2.isEqual(m,1e-12));
2771 self.assertTrue(not m2.isEqual(m,1e-12));
2772 m2.copyTinyStringsFrom(m);
2773 self.assertTrue(m2.isEqual(m,1e-12));
2774 m2.getCoords().setInfoOnComponent(1,"eee");
2775 self.assertTrue(not m2.isEqual(m,1e-12));
2776 m2.copyTinyStringsFrom(m);
2777 self.assertTrue(m2.isEqual(m,1e-12));
2780 def testTryToShareSameCoordsPermute(self):
2781 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2782 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2783 #self.assertTrue(m.getCoords()!=m2.getCoords());
2784 m.tryToShareSameCoordsPermute(m2,1e-12);
2785 #self.assertTrue(m.getCoords()==m2.getCoords());
2786 self.assertTrue(m2.isEqual(m,1e-12));
2787 renum1=[1,2,0,5,8,7,4,3,6]
2788 r1=DataArrayInt.New()
2789 r1.setValues(renum1,len(renum1),1)
2790 m.renumberNodes(r1,9);
2791 #self.assertTrue(m.getCoords()!=m2.getCoords());
2792 self.assertTrue(not m2.isEqual(m,1e-12));
2793 m.tryToShareSameCoordsPermute(m2,1e-12);
2794 #self.assertTrue(m.getCoords()==m2.getCoords());
2795 self.assertTrue(m2.isEqual(m,1e-12));
2798 def testTryToShareSameCoordsPermute2(self):
2799 m1=MEDCouplingDataForTest.build2DTargetMesh_4();
2800 targetCoords=[-0.3,-0.3, 0.2,-0.3, -0.3,0.2, 0.2,0.2 ]
2801 targetConn=[0,2,3,1]
2802 m2=MEDCouplingUMesh.New();
2803 m2.setMeshDimension(2);
2804 m2.allocateCells(1);
2805 m2.insertNextCell(NORM_QUAD4,targetConn[0:4])
2806 m2.finishInsertingCells();
2807 myCoords=DataArrayDouble.New();
2808 myCoords.setValues(targetCoords,4,2);
2809 m2.setCoords(myCoords);
2810 m2.checkCoherency();
2811 m1.checkCoherency();
2813 expected1=[0.25,0.125,0.125,0.25,0.25]
2814 f1=m1.getMeasureField(False);
2815 f2=m2.getMeasureField(False);
2816 self.assertEqual(5,f1.getArray().getNumberOfTuples());
2817 self.assertEqual(1,f2.getArray().getNumberOfTuples());
2819 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2821 self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2822 self.assertRaises(InterpKernelException,m1.tryToShareSameCoordsPermute,m2,1e-12);# <- here in this order the sharing is impossible.
2823 # Let's go for deeper test of tryToShareSameCoordsPermute
2824 m2.tryToShareSameCoordsPermute(m1,1e-12);
2825 f1=m1.getMeasureField(False);
2826 f2=m2.getMeasureField(False);
2827 self.assertEqual(5,f1.getArray().getNumberOfTuples());
2828 self.assertEqual(1,f2.getArray().getNumberOfTuples());
2830 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),12);
2832 self.assertAlmostEqual(expected1[0],f2.getIJ(0,0),12);
2835 def testChangeUnderlyingMesh1(self):
2836 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2837 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2838 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2840 array=DataArrayDouble.New();
2841 arr=[7., 107., 8., 108., 9., 109., 10., 110., 11., 111., 12., 112., 13., 113., 14., 114., 15., 115., 16., 116.]
2842 array.setValues(arr,mesh1.getNumberOfCells(),2);
2845 renum=[0,2,1,3,4,5,6,8,7,9]
2846 mesh2.renumberCells(renum,False);
2847 #self.assertTrue(f1.getMesh()==mesh1);
2848 f1.changeUnderlyingMesh(mesh1,10,1e-12);# nothing done only to check that nothing done.
2849 #self.assertTrue(f1.getMesh()==mesh1);
2850 f1.changeUnderlyingMesh(mesh2,10,1e-12);
2851 #self.assertTrue(f1.getMesh()==mesh2);
2852 expected1=[7.,107.,9.,109.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.]
2853 for i in xrange(20):
2854 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
2857 f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
2859 array=DataArrayDouble.New();
2860 arr2=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.,17.,117.]
2861 array.setValues(arr2,mesh1.getNumberOfNodes(),2);
2864 renum2=[0,2,10,3,4,5,6,8,7,9,1]
2865 mesh2.renumberNodes(renum2,11);
2866 #self.assertTrue(f1.getMesh()==mesh1);
2867 f1.changeUnderlyingMesh(mesh2,10,1e-12);
2868 #self.assertTrue(f1.getMesh()==mesh2);
2869 expected2=[7.,107.,17.,117.,8.,108.,10.,110.,11.,111.,12.,112.,13.,113.,15.,115.,14.,114.,16.,116.,9.,109.]
2870 for i in xrange(22):
2871 self.assertAlmostEqual(expected2[i],f1.getArray().getIJ(0,i),12);
2875 def testGetMaxValue1(self):
2876 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
2877 nbOfCells=m.getNumberOfCells();
2878 f=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2880 a1=DataArrayDouble.New();
2881 val1=[3.,4.,5.,6.,7.]
2882 a1.setValues(val1,nbOfCells,1);
2883 a2=DataArrayDouble.New();
2884 val2=[0.,1.,2.,8.,7.]
2885 a2.setValues(val2,nbOfCells,1);
2888 f.setEndTime(3.,3,4);
2891 self.assertAlmostEqual(8.,f.getMaxValue(),14);
2892 self.assertAlmostEqual(0.,f.getMinValue(),14);
2893 self.assertAlmostEqual(5.,f.getAverageValue(),14);
2894 self.assertAlmostEqual(5.125,f.getWeightedAverageValue(),14);
2896 self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2897 self.assertAlmostEqual(0.,f.getMinValue(),14);
2899 self.assertAlmostEqual(9.5,f.getMaxValue(),14);
2900 self.assertAlmostEqual(1.,f.getMinValue(),14);
2903 def testSubstractInPlaceDM1(self):
2904 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2905 mesh2=MEDCouplingDataForTest.build2DTargetMesh_3();
2906 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2908 array=DataArrayDouble.New();
2909 arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
2910 array.setValues(arr,mesh1.getNumberOfCells(),2);
2913 self.assertEqual(10,f1.getNumberOfTuples());
2914 self.assertEqual(2,f1.getNumberOfComponents());
2915 self.assertEqual(20,f1.getNumberOfValues());
2917 renum=[0,2,3,1,4,5,6,8,7,9]
2918 mesh2.renumberCells(renum,False);
2920 f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
2922 array=DataArrayDouble.New();
2923 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]
2924 array.setValues(arr2,mesh2.getNumberOfCells(),2);
2927 f1.substractInPlaceDM(f2,10,1e-12);
2928 f1.applyFunc(1,"abs(x+y+0.2)");
2929 self.assertAlmostEqual(0.,f1.getMaxValue(),13);
2932 def testDotCrossProduct1(self):
2933 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2934 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2935 f1.setTime(2.3,5,6);
2937 array=DataArrayDouble.New();
2938 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.]
2939 array.setValues(arr1,mesh1.getNumberOfCells(),3);
2941 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2942 f2.setTime(7.8,4,5);
2944 array=DataArrayDouble.New();
2945 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.]
2946 array.setValues(arr2,mesh1.getNumberOfCells(),3);
2950 expected1=[842.,1820.,2816.,3830.,4862.,5912.,6980.,8066.,9170.,10292.]
2951 for i in xrange(10):
2952 self.assertAlmostEqual(expected1[i],f3.getIJ(i,0),9);
2955 f4=f1.crossProduct(f2);
2956 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.]
2957 for i in xrange(30):
2958 self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
2962 def testMinMaxFields1(self):
2963 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2964 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2965 f1.setTime(2.3,5,6);
2967 array=DataArrayDouble.New();
2968 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.]
2969 array.setValues(arr1,mesh1.getNumberOfCells(),3);
2971 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
2972 f2.setTime(7.8,4,5);
2974 array=DataArrayDouble.New();
2975 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.]
2976 array.setValues(arr2,mesh1.getNumberOfCells(),3);
2980 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.]
2981 for i in xrange(30):
2982 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),9);
2986 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.]
2987 for i in xrange(30):
2988 self.assertAlmostEqual(expected2[i],f4.getIJ(0,i),9);
2993 def testApplyLin1(self):
2994 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
2995 f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
2997 array=DataArrayDouble.New();
2998 arr=[7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.]
2999 array.setValues(arr,mesh1.getNumberOfCells(),2);
3002 f1.applyLin(2.,3.,0);
3003 expected1=[17.,107.,19.,108.,21.,109.,23.,110.,25.,111.,27.,112.,29.,113.,31.,114.,33.,115.,35.,116.]
3004 for i in xrange(20):
3005 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),9);
3008 arr2=[2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3009 array=DataArrayDouble.New();
3010 array.setValues(arr2,mesh1.getNumberOfCells(),2);
3011 f1.setEndArray(array);
3013 f1.applyLin(4.,5.,1);
3015 expected2=[17.,433.,19.,437.,21.,441.,23.,445.,25.,449.,27.,453.,29.,457.,31.,461.,33.,465.,35.,469.]
3016 for i in xrange(20):
3017 self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),9);
3019 expected3=[2.,413.,3.,417.,4.,421.,5.,425.,6.,429.,7.,433.,8.,437.,9.,441.,10.,445.,11.,449.]
3020 for i in xrange(20):
3021 self.assertAlmostEqual(expected3[i],f1.getEndArray().getIJ(0,i),9);
3026 def testGetIdsInRange1(self):
3027 mesh1=MEDCouplingDataForTest.build2DTargetMesh_3();
3028 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3029 f1.setTime(2.3,5,6);
3031 array=DataArrayDouble.New();
3032 arr1=[2.,8.,6.,5.,11.,7.,9.,3.,10.,4.]
3033 array.setValues(arr1,mesh1.getNumberOfCells(),1);
3036 f1.checkCoherency();
3037 da=f1.getIdsInRange(2.9,7.1);
3038 self.failUnlessEqual(5,da.getNbOfElems());
3039 expected1=[2,3,5,7,9]
3040 self.failUnlessEqual(expected1,list(da.getValues()));
3041 da=f1.getIdsInRange(8.,12.);
3042 self.failUnlessEqual(4,da.getNbOfElems());
3044 self.failUnlessEqual(expected2,list(da.getValues()));
3048 def testBuildSubPart1(self):
3049 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3050 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3051 f1.setTime(2.3,5,6);
3053 array=DataArrayDouble.New();
3054 arr1=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.]
3055 array.setValues(arr1,mesh1.getNumberOfCells(),2);
3061 self.failUnlessEqual(3,f2.getNumberOfTuples());
3062 self.failUnlessEqual(2,f2.getNumberOfComponents());
3063 expected1=[5.,105.,4.,104.,7.,107.]
3065 self.assertAlmostEqual(f2.getIJ(0,i),expected1[i],12);
3067 self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3068 self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3069 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3070 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3072 self.failUnlessEqual(13,m2C.getMeshLength());
3073 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]
3074 for i in xrange(12):
3075 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3077 expected3=[3,2,3,1,3,0,2,1,4,4,5,3,2]
3078 self.failUnlessEqual(expected3,list(m2C.getNodalConnectivity().getValues()));
3079 expected4=[0,4,8,13]
3080 self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3081 # Test with field on nodes.
3082 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3083 f1.setTime(2.3,5,6);
3085 array=DataArrayDouble.New();
3086 arr2=[3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.]
3087 array.setValues(arr2,mesh1.getNumberOfNodes(),2);
3090 f2=f1.buildSubPart(part2);
3091 self.failUnlessEqual(4,f2.getNumberOfTuples());
3092 self.failUnlessEqual(2,f2.getNumberOfComponents());
3093 expected5=[4.,104.,5.,105.,7.,107.,8.,108.]
3095 self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3097 self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3098 self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3099 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3100 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3102 self.failUnlessEqual(8,m2C.getMeshLength());
3103 for i in xrange(8):#8 is not an error
3104 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3106 self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:]);
3107 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3108 self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3109 #idem previous because nodes of cell#4 are not fully present in part3
3111 arrr=DataArrayInt.New();
3112 arrr.setValues(part3,2,1);
3113 f2=f1.buildSubPart(arrr);
3114 self.failUnlessEqual(4,f2.getNumberOfTuples());
3115 self.failUnlessEqual(2,f2.getNumberOfComponents());
3117 self.assertAlmostEqual(f2.getIJ(0,i),expected5[i],12);
3119 self.failUnlessEqual(2,f2.getMesh().getNumberOfCells());
3120 self.failUnlessEqual(4,f2.getMesh().getNumberOfNodes());
3121 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3122 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3124 self.failUnlessEqual(8,m2C.getMeshLength());
3125 for i in xrange(8):#8 is not an error
3126 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3128 self.failUnlessEqual(expected3[:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3129 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[:4]);
3130 self.failUnlessEqual(expected4[:3],list(m2C.getNodalConnectivityIndex().getValues()));
3133 f2=f1.buildSubPart(part4);
3134 self.failUnlessEqual(6,f2.getNumberOfTuples());
3135 self.failUnlessEqual(2,f2.getNumberOfComponents());
3136 expected6=[4.,104.,5.,105.,7.,107.,8.,108.,10.,110.,11.,111.]
3137 for i in xrange(12):
3138 self.assertAlmostEqual(f2.getIJ(0,i),expected6[i],12);
3140 self.failUnlessEqual(3,f2.getMesh().getNumberOfCells());
3141 self.failUnlessEqual(6,f2.getMesh().getNumberOfNodes());
3142 self.failUnlessEqual(2,f2.getMesh().getSpaceDimension());
3143 self.failUnlessEqual(2,f2.getMesh().getMeshDimension());
3145 self.failUnlessEqual(13,m2C.getMeshLength());
3146 for i in xrange(12):
3147 self.assertAlmostEqual(expected2[i],m2C.getCoords().getIJ(0,i),12);
3149 self.failUnlessEqual(expected3[0:4],list(m2C.getNodalConnectivity().getValues())[4:8]);
3150 self.failUnlessEqual(expected3[4:8],list(m2C.getNodalConnectivity().getValues())[0:4]);
3151 self.failUnlessEqual(expected3[8:13],list(m2C.getNodalConnectivity().getValues())[8:13]);
3152 self.failUnlessEqual(expected4,list(m2C.getNodalConnectivityIndex().getValues()));
3155 def testDoublyContractedProduct1(self):
3156 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3157 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3159 array=DataArrayDouble.New();
3160 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]
3161 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3163 f1.checkCoherency();
3165 f2=f1.doublyContractedProduct();
3166 f2.checkCoherency();
3167 self.assertEqual(1,f2.getNumberOfComponents());
3168 self.assertEqual(5,f2.getNumberOfTuples());
3170 self.assertAlmostEqual(3906.56,f2.getIJ(i,0),9);
3175 def testDeterminant1(self):
3176 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3177 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
3178 f1.setTime(2.3,5,6);
3179 f1.setEndTime(3.8,7,3);
3181 array=DataArrayDouble.New();
3182 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]
3183 array.setValues(arr1,mesh1.getNumberOfCells(),4);
3186 f1.checkCoherency();
3187 f2=f1.determinant();
3188 f2.checkCoherency();
3189 self.assertEqual(CONST_ON_TIME_INTERVAL,f2.getTimeDiscretization());
3190 self.assertEqual(1,f2.getNumberOfComponents());
3191 self.assertEqual(5,f2.getNumberOfValues());
3193 self.assertAlmostEqual(-2.42,f2.getIJ(i,0),13);
3195 #6 components multi arrays with end array not defined
3196 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3197 f1.setTime(2.3,5,6);
3198 f1.setEndTime(3.8,7,3);
3200 array=DataArrayDouble.New();
3201 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,
3202 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]
3203 array.setValues(arr2,mesh1.getNumberOfNodes(),6);
3205 self.assertRaises(InterpKernelException,f1.checkCoherency);#no end array specified !
3207 f2=f1.determinant();
3208 self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3209 self.assertEqual(1,f2.getArray().getNumberOfComponents());
3210 self.assertEqual(9,f2.getNumberOfTuples());
3212 self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3214 #6 components multi arrays with end array defined
3215 array=DataArrayDouble.New();
3216 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,
3217 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]
3218 array.setValues(arr3,mesh1.getNumberOfNodes(),6);
3219 f1.setEndArray(array);
3220 f1.checkCoherency();
3221 f2=f1.determinant();
3222 f2.checkCoherency();
3223 self.assertEqual(LINEAR_TIME,f2.getTimeDiscretization());
3224 self.assertEqual(1,f2.getNumberOfComponents());
3225 self.assertEqual(9,f2.getNumberOfTuples());
3226 time2,it,order=f2.getTime()
3227 self.assertAlmostEqual(2.3,time2,12);
3228 self.assertEqual(5,it);
3229 self.assertEqual(6,order);
3230 time2,it,order=f2.getEndTime()
3231 self.assertAlmostEqual(3.8,time2,12);
3232 self.assertEqual(7,it);
3233 self.assertEqual(3,order);
3235 self.assertAlmostEqual(137.335,f2.getIJ(i,0),10);
3236 self.assertAlmostEqual(1289.685,f2.getEndArray().getIJ(i,0),9);
3239 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3240 f1.setTime(7.8,10,2);
3242 array=DataArrayDouble.New();
3243 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]
3244 array.setValues(arr4,mesh1.getNumberOfCells(),9);
3247 f1.checkCoherency();
3248 f2=f1.determinant();
3249 f2.checkCoherency();
3250 self.assertEqual(ONE_TIME,f2.getTimeDiscretization());
3251 self.assertEqual(1,f2.getNumberOfComponents());
3252 self.assertEqual(5,f2.getNumberOfTuples());
3253 time2,it,order=f2.getTime()
3254 self.assertAlmostEqual(7.8,time2,12);
3255 self.assertEqual(10,it);
3256 self.assertEqual(2,order);
3258 self.assertAlmostEqual(3.267,f2.getIJ(i,0),13);
3262 def testEigenValues1(self):
3263 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3264 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3266 array=DataArrayDouble.New();
3267 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]
3268 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3270 f1.checkCoherency();
3272 f2=f1.eigenValues();
3273 f2.checkCoherency();
3274 self.assertEqual(3,f2.getNumberOfComponents());
3275 self.assertEqual(5,f2.getNumberOfTuples());
3276 expected1=[13.638813677891717,-4.502313844635971,-2.2364998332557486]
3278 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3279 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3280 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3284 def testEigenVectors1(self):
3285 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3286 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3288 array=DataArrayDouble.New();
3289 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]
3290 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3292 f1.checkCoherency();
3294 f2=f1.eigenVectors();
3295 f2.checkCoherency();
3296 self.assertEqual(9,f2.getNumberOfComponents());
3297 self.assertEqual(5,f2.getNumberOfTuples());
3298 expected1=[0.5424262364180696, 0.5351201064614425, 0.6476266283176001,#eigenvect 0
3299 0.7381111277307373, 0.06458838384003074, -0.6715804522117897,#eigenvect 1
3300 -0.4012053603397987, 0.8423032781211455, -0.3599436712889738#eigenvect 2
3303 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3304 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3305 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3306 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3307 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3308 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3309 self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3310 self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3311 self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3316 def testInverse1(self):
3317 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3318 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3320 array=DataArrayDouble.New();
3321 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]
3322 array.setValues(arr1,mesh1.getNumberOfCells(),9);
3324 f1.checkCoherency();
3327 f2.checkCoherency();
3328 self.assertEqual(9,f2.getNumberOfComponents());
3329 self.assertEqual(5,f2.getNumberOfTuples());
3330 expected1=[-2.6538108356290113, 2.855831037649208, -1.1111111111111067, 3.461891643709813, -4.775022956841121, 2.2222222222222143, -1.1111111111111054, 2.222222222222214, -1.1111111111111072]
3332 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3333 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3334 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3335 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3336 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3337 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3338 self.assertAlmostEqual(expected1[6],f2.getIJ(i,6),13);
3339 self.assertAlmostEqual(expected1[7],f2.getIJ(i,7),13);
3340 self.assertAlmostEqual(expected1[8],f2.getIJ(i,8),13);
3343 array=DataArrayDouble.New();
3344 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]
3345 array.setValues(arr3,mesh1.getNumberOfCells(),6);
3347 f1.checkCoherency();
3350 f2.checkCoherency();
3351 self.assertEqual(6,f2.getNumberOfComponents());
3352 self.assertEqual(5,f2.getNumberOfTuples());
3353 expected3=[-0.3617705098531818, -0.8678630828458127, -0.026843764174972983, 0.5539957431465833, 0.13133439560823013, -0.05301294502145887]
3355 self.assertAlmostEqual(expected3[0],f2.getIJ(i,0),13);
3356 self.assertAlmostEqual(expected3[1],f2.getIJ(i,1),13);
3357 self.assertAlmostEqual(expected3[2],f2.getIJ(i,2),13);
3358 self.assertAlmostEqual(expected3[3],f2.getIJ(i,3),13);
3359 self.assertAlmostEqual(expected3[4],f2.getIJ(i,4),13);
3360 self.assertAlmostEqual(expected3[5],f2.getIJ(i,5),13);
3363 array=DataArrayDouble.New();
3364 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]
3365 array.setValues(arr2,mesh1.getNumberOfCells(),4);
3367 f1.checkCoherency();
3370 f2.checkCoherency();
3371 self.assertEqual(4,f2.getNumberOfComponents());
3372 self.assertEqual(5,f2.getNumberOfTuples());
3373 expected2=[-1.8595041322314059, 0.9504132231404963, 1.404958677685951, -0.49586776859504156]
3375 self.assertAlmostEqual(expected2[0],f2.getIJ(i,0),13);
3376 self.assertAlmostEqual(expected2[1],f2.getIJ(i,1),13);
3377 self.assertAlmostEqual(expected2[2],f2.getIJ(i,2),13);
3378 self.assertAlmostEqual(expected2[3],f2.getIJ(i,3),13);
3383 def testTrace1(self):
3384 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3385 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3387 array=DataArrayDouble.New();
3388 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]
3389 array.setValues(arr1,mesh1.getNumberOfCells(),9);
3391 f1.checkCoherency();
3394 f2.checkCoherency();
3395 self.assertEqual(1,f2.getNumberOfComponents());
3396 self.assertEqual(5,f2.getNumberOfTuples());
3398 self.assertAlmostEqual(15.9,f2.getIJ(i,0),13);
3401 array=DataArrayDouble.New();
3402 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]
3403 array.setValues(arr3,mesh1.getNumberOfCells(),6);
3405 f1.checkCoherency();
3408 f2.checkCoherency();
3409 self.assertEqual(1,f2.getNumberOfComponents());
3410 self.assertEqual(5,f2.getNumberOfTuples());
3412 self.assertAlmostEqual(25.8,f2.getIJ(i,0),13);
3415 array=DataArrayDouble.New();
3416 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]
3417 array.setValues(arr2,mesh1.getNumberOfCells(),4);
3419 f1.checkCoherency();
3422 f2.checkCoherency();
3423 self.assertEqual(1,f2.getNumberOfComponents());
3424 self.assertEqual(5,f2.getNumberOfTuples());
3426 self.assertAlmostEqual(5.7,f2.getIJ(i,0),13);
3431 def testDeviator1(self):
3432 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3433 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3435 array=DataArrayDouble.New();
3436 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]
3437 array.setValues(arr1,mesh1.getNumberOfCells(),6);
3439 f1.checkCoherency();
3442 f2.checkCoherency();
3443 self.assertEqual(6,f2.getNumberOfComponents());
3444 self.assertEqual(5,f2.getNumberOfTuples());
3445 expected1=[-1.1,0.,1.1,4.5,5.6,6.7]
3447 self.assertAlmostEqual(expected1[0],f2.getIJ(i,0),13);
3448 self.assertAlmostEqual(expected1[1],f2.getIJ(i,1),13);
3449 self.assertAlmostEqual(expected1[2],f2.getIJ(i,2),13);
3450 self.assertAlmostEqual(expected1[3],f2.getIJ(i,3),13);
3451 self.assertAlmostEqual(expected1[4],f2.getIJ(i,4),13);
3452 self.assertAlmostEqual(expected1[5],f2.getIJ(i,5),13);
3457 def testMagnitude1(self):
3458 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3459 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3461 array=DataArrayDouble.New();
3462 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]
3463 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3465 f1.checkCoherency();
3468 f2.checkCoherency();
3469 self.assertEqual(1,f2.getNumberOfComponents());
3470 self.assertEqual(5,f2.getNumberOfTuples());
3472 self.assertAlmostEqual(8.3606219864313918,f2.getIJ(i,0),13);
3477 def testMaxPerTuple1(self):
3478 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3479 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3481 array=DataArrayDouble.New();
3482 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]
3483 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3485 f1.checkCoherency();
3487 f2=f1.maxPerTuple();
3488 f2.checkCoherency();
3489 self.assertEqual(1,f2.getNumberOfComponents());
3490 self.assertEqual(5,f2.getNumberOfTuples());
3492 self.assertAlmostEqual(5.6,f2.getIJ(i,0),13);
3497 def testChangeNbOfComponents(self):
3498 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3499 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3501 array=DataArrayDouble.New();
3502 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]
3503 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3505 f1.checkCoherency();
3507 f1.changeNbOfComponents(3,7.77);
3508 f1.checkCoherency();
3509 self.assertEqual(3,f1.getNumberOfComponents());
3510 self.assertEqual(5,f1.getNumberOfTuples());
3511 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]
3512 for i in xrange(15):
3513 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),13);
3515 f1.changeNbOfComponents(4,7.77);
3516 f1.checkCoherency();
3517 self.assertEqual(4,f1.getNumberOfComponents());
3518 self.assertEqual(5,f1.getNumberOfTuples());
3519 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]
3520 for i in xrange(20):
3521 self.assertAlmostEqual(expected2[i],f1.getIJ(0,i),13);
3526 def testSortPerTuple1(self):
3527 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3528 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
3530 array=DataArrayDouble.New();
3531 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]
3532 array.setValues(arr1,mesh1.getNumberOfCells(),5);
3534 f1.checkCoherency();
3536 f1.sortPerTuple(True);
3537 f1.checkCoherency();
3538 self.assertEqual(5,f1.getNumberOfComponents());
3539 self.assertEqual(5,f1.getNumberOfTuples());
3541 self.assertAlmostEqual(arr1[0],f1.getIJ(i,0),13);
3542 self.assertAlmostEqual(arr1[1],f1.getIJ(i,1),13);
3543 self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3544 self.assertAlmostEqual(arr1[3],f1.getIJ(i,3),13);
3545 self.assertAlmostEqual(arr1[4],f1.getIJ(i,4),13);
3548 f1.sortPerTuple(False);
3549 f1.checkCoherency();
3550 self.assertEqual(5,f1.getNumberOfComponents());
3551 self.assertEqual(5,f1.getNumberOfTuples());
3553 self.assertAlmostEqual(arr1[4],f1.getIJ(i,0),13);
3554 self.assertAlmostEqual(arr1[3],f1.getIJ(i,1),13);
3555 self.assertAlmostEqual(arr1[2],f1.getIJ(i,2),13);
3556 self.assertAlmostEqual(arr1[1],f1.getIJ(i,3),13);
3557 self.assertAlmostEqual(arr1[0],f1.getIJ(i,4),13);
3562 def testIsEqualWithoutConsideringStr1(self):
3563 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3564 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
3566 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3567 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3568 mesh2.setName("rr");
3569 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3570 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3571 da1,da2=mesh1.checkGeoEquivalWith(mesh2,2,1e-12);
3572 self.assertRaises(InterpKernelException,mesh1.checkGeoEquivalWith,mesh2,0,1e-12);
3574 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3575 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3576 mesh2.getCoords().setInfoOnComponent(0,"tty");
3577 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3578 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3579 mesh2.getCoords().setInfoOnComponent(0,"");
3580 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3581 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3582 mesh2.getCoords().setInfoOnComponent(1,"tty");
3583 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3584 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3585 mesh2.getCoords().setInfoOnComponent(1,"");
3586 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3587 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3588 tmp=mesh2.getCoords().getIJ(0,3);
3589 mesh2.getCoords().setIJ(0,3,9999.);
3590 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3591 self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3592 mesh2.getCoords().setIJ(0,3,tmp);
3593 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3594 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3595 tmp2=mesh2.getNodalConnectivity().getIJ(0,4);
3596 mesh2.getNodalConnectivity().setIJ(0,4,0);
3597 self.assertTrue(not mesh1.isEqual(mesh2,1e-12));
3598 self.assertTrue(not mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3599 mesh2.getNodalConnectivity().setIJ(0,4,tmp2);
3600 self.assertTrue(mesh1.isEqual(mesh2,1e-12));
3601 self.assertTrue(mesh1.isEqualWithoutConsideringStr(mesh2,1e-12));
3603 f1=mesh1.getMeasureField(True);
3604 f2=mesh2.getMeasureField(True);
3605 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3606 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3607 f2.setName("ftest");
3608 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3609 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3610 f1.setName("ftest");
3611 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3612 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3614 f2.getArray().setInfoOnComponent(0,"eee");
3615 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3616 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3617 f2.getArray().setInfoOnComponent(0,"");
3618 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3619 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3621 f2.getArray().setIJ(1,0,0.123);
3622 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12));
3623 self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3624 f2.getArray().setIJ(1,0,0.125);
3625 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
3626 self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
3630 def testGetNodeIdsOfCell1(self):
3631 mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
3632 li=mesh1.getNodeIdsOfCell(1)
3634 self.assertEqual(expected1,list(li))
3635 li=mesh1.getCoordinatesOfNode(4)
3636 self.assertEqual(2,len(li))
3637 self.assertAlmostEqual(0.2,li[0],13);
3638 self.assertAlmostEqual(0.2,li[1],13);
3639 li=mesh1.getCoords().getValuesAsTuple()
3640 self.assertEqual(9,len(li))
3641 li2=mesh1.getNodalConnectivityIndex().getValuesAsTuple()
3642 self.assertEqual(6,len(li2))
3645 def testGetEdgeRatioField1(self):
3646 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3647 f1=m1.getEdgeRatioField();
3648 self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3649 self.assertEqual(5,f1.getNumberOfTuples());
3650 self.assertEqual(1,f1.getNumberOfComponents());
3651 expected1=[1.,1.4142135623730951, 1.4142135623730951,1.,1.]
3653 self.assertAlmostEqual(expected1[i],f1.getIJ(i,0),14);
3656 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
3657 f1=m1.getEdgeRatioField();
3658 self.assertEqual(m1.getNumberOfCells(),f1.getNumberOfTuples());
3659 self.assertEqual(5,f1.getNumberOfTuples());
3660 self.assertEqual(1,f1.getNumberOfComponents());
3661 expected2=[1.4142135623730951, 1.7320508075688772, 1.7320508075688772, 1.4142135623730951, 1.4142135623730951]
3663 self.assertAlmostEqual(expected2[i],f1.getIJ(i,0),14);
3667 def testFillFromAnalytic3(self):
3668 m=MEDCouplingDataForTest.build2DTargetMesh_1()
3669 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME)
3670 self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"y+x");
3672 f1.setName("myField");
3673 f1.fillFromAnalytic(1,"y+x");
3674 f1.checkCoherency();
3675 self.assertEqual(f1.getName(),"myField");
3676 self.assertEqual(f1.getTypeOfField(),ON_CELLS);
3677 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3678 self.assertEqual(1,f1.getNumberOfComponents());
3679 self.assertEqual(5,f1.getNumberOfTuples());
3680 values1=[-0.1,0.23333333333333336,0.56666666666666665,0.4,0.9]
3681 tmp=f1.getArray().getValues();
3682 self.assertEqual(len(values1),len(tmp))
3683 for i in xrange(len(values1)):
3684 self.assertTrue(abs(values1[i]-tmp[i])<1.e-12);
3687 f1=MEDCouplingFieldDouble.New(ON_NODES,CONST_ON_TIME_INTERVAL)
3689 f1.fillFromAnalytic(1,"y+2*x");
3690 f1.setEndTime(1.2,3,4);
3691 f1.checkCoherency();
3692 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3693 self.assertEqual(f1.getTimeDiscretization(),CONST_ON_TIME_INTERVAL);
3694 self.assertEqual(1,f1.getNumberOfComponents());
3695 self.assertEqual(9,f1.getNumberOfTuples());
3696 values2=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3697 tmp=f1.getArray().getValues();
3698 self.assertEqual(len(values2),len(tmp))
3699 for i in xrange(len(values2)):
3700 self.assertTrue(abs(values2[i]-tmp[i])<1.e-12);
3702 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3704 f1.fillFromAnalytic(1,"2.*x+y");
3705 f1.setEndTime(1.2,3,4);
3706 f1.checkCoherency();
3707 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3708 self.assertEqual(f1.getTimeDiscretization(),LINEAR_TIME);
3709 self.assertEqual(1,f1.getNumberOfComponents());
3710 self.assertEqual(9,f1.getNumberOfTuples());
3711 tmp=f1.getArray().getValues();
3712 values2Bis=[-0.9,0.1,1.1,-0.4,0.6,1.6,0.1,1.1,2.1]
3713 self.assertEqual(len(values2Bis),len(tmp))
3714 for i in xrange(len(values2Bis)):
3715 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3717 tmp=f1.getEndArray().getValues();
3718 self.assertEqual(len(values2Bis),len(tmp))
3719 for i in xrange(len(values2Bis)):
3720 self.assertTrue(abs(values2Bis[i]-tmp[i])<1.e-12);
3723 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
3725 f1.fillFromAnalytic(2,"(x+y)*IVec+2*(x+y)*JVec");
3726 f1.checkCoherency();
3727 self.assertEqual(f1.getTypeOfField(),ON_NODES);
3728 self.assertEqual(f1.getTimeDiscretization(),ONE_TIME);
3729 self.assertEqual(2,f1.getNumberOfComponents());
3730 self.assertEqual(9,f1.getNumberOfTuples());
3731 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]
3732 tmp=f1.getArray().getValues();
3733 self.assertEqual(len(values3),len(tmp))
3734 for i in xrange(len(values3)):
3735 self.assertTrue(abs(values3[i]-tmp[i])<1.e-12);
3737 values4=f1.accumulate();
3738 self.assertTrue(abs(3.6-values4[0])<1.e-12);
3739 self.assertTrue(abs(7.2-values4[1])<1.e-12);
3740 values4=f1.integral(True);
3741 self.assertTrue(abs(0.5-values4[0])<1.e-12);
3742 self.assertTrue(abs(1.-values4[1])<1.e-12);
3744 f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
3746 self.assertRaises(InterpKernelException,f1.fillFromAnalytic,1,"1./(x-0.2)");
3749 def testFieldDoubleOpEqual1(self):
3750 m=MEDCouplingDataForTest.build2DTargetMesh_1();
3751 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
3752 self.assertRaises(InterpKernelException,f1.assign,0.07);
3755 f1.checkCoherency();
3756 self.assertEqual(1,f1.getNumberOfComponents());
3757 self.assertEqual(5,f1.getNumberOfTuples());
3759 self.assertAlmostEqual(0.07,f1.getIJ(i,0),16);
3762 f1.checkCoherency();
3763 self.assertEqual(1,f1.getNumberOfComponents());
3764 self.assertEqual(5,f1.getNumberOfTuples());
3766 self.assertAlmostEqual(0.09,f1.getIJ(i,0),16);
3769 f1=MEDCouplingFieldDouble.New(ON_NODES,LINEAR_TIME);
3770 f1.setEndTime(4.5,2,3);
3773 f1.checkCoherency();
3774 self.assertEqual(1,f1.getNumberOfComponents());
3775 self.assertEqual(9,f1.getNumberOfTuples());
3777 self.assertAlmostEqual(0.08,f1.getIJ(i,0),16);
3779 self.assertEqual(1,f1.getEndArray().getNumberOfComponents());
3780 self.assertEqual(9,f1.getEndArray().getNumberOfTuples());
3782 self.assertAlmostEqual(0.08,f1.getEndArray().getIJ(i,0),16);
3786 def testAreaBary3D2(self):
3787 coordsForHexa8=[-75.45749305371, 180.95495078401, 39.515472018008,
3788 -9.755591679144, 23.394927935279, 5.108794294848,
3789 14.337630157832, 61.705351002702, 160.42422501908,
3790 -27.273893776752, 167.567731083961, 192.830034145464,
3791 99.857193154796,264.499264735586,-8.287335493412,
3792 144.939882761126,156.38626563134,-31.896173894226,
3793 161.34096835726,182.4654895809,73.832387065572,
3794 132.680430393685,255.37973247196,96.15235602819];
3795 volHexa8=3258520.29637466;
3796 baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644]
3798 coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588,
3799 8.461744647847,76.653979804423,165.00018874933,
3800 -27.273893776752,167.567731083961,192.830034145464,
3801 106.586501038965,262.629609408327,13.124533008813,
3802 155.465082847275,197.414118382622,78.408350795821,
3803 132.680430393685,255.37973247196,96.15235602819];
3804 volPenta6=944849.868507338;
3805 baryPenta6=[39.631002313543,182.692711783428,106.98540473964]
3807 coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819,
3808 -27.273893776752,167.567731083961,192.830034145464,
3809 8.461744647847,76.653979804423,165.00018874933,
3810 155.465082847275,197.414118382622,78.408350795821,
3811 -68.199829618726,178.938498373416,62.608505919588];
3812 volPyra5=756943.92980254;
3813 baryPyra5=[29.204294116618,172.540129749156,118.01035951483]
3814 mesh=MEDCouplingUMesh.New("Bary3D2",3);
3815 coo=DataArrayDouble.New();
3816 tmp=coordsForHexa8+coordsForPenta6+coordsForPyra5
3817 coo.setValues(tmp,19,3);
3818 mesh.setCoords(coo);
3820 tmpConn=[0,1,2,3,4,5,6,7]
3821 mesh.allocateCells(3);
3822 self.assertRaises(InterpKernelException,mesh.insertNextCell,NORM_HEXA8,9,tmpConn[0:8])
3823 mesh.insertNextCell(NORM_HEXA8,tmpConn[0:8])
3824 mesh.insertNextCell(NORM_PENTA6,6,[i+8 for i in tmpConn])
3825 mesh.insertNextCell(NORM_PYRA5,5,[i+14 for i in tmpConn])
3826 mesh.finishInsertingCells();
3827 mesh.checkCoherency();
3828 mesh.mergeNodes(1e-7)
3829 self.assertEqual(12,mesh.getNumberOfNodes());
3830 vols=mesh.getMeasureField(True);
3831 self.assertEqual(3,vols.getNumberOfTuples());
3832 self.assertEqual(1,vols.getNumberOfComponents());
3833 self.assertAlmostEqual(volHexa8,vols.getIJ(0,0),6);
3834 self.assertAlmostEqual(volPenta6,vols.getIJ(1,0),7);
3835 self.assertAlmostEqual(volPyra5,vols.getIJ(2,0),7);
3836 bary=mesh.getBarycenterAndOwner();
3837 self.assertEqual(3,bary.getNumberOfTuples());
3838 self.assertEqual(3,bary.getNumberOfComponents());
3839 self.assertAlmostEqual(baryHexa8[0],bary.getIJ(0,0),11);
3840 self.assertAlmostEqual(baryHexa8[1],bary.getIJ(0,1),11);
3841 self.assertAlmostEqual(baryHexa8[2],bary.getIJ(0,2),11);
3842 self.assertAlmostEqual(baryPenta6[0],bary.getIJ(1,0),11);
3843 self.assertAlmostEqual(baryPenta6[1],bary.getIJ(1,1),11);
3844 self.assertAlmostEqual(baryPenta6[2],bary.getIJ(1,2),11);
3845 self.assertAlmostEqual(baryPyra5[0],bary.getIJ(2,0),11);
3846 self.assertAlmostEqual(baryPyra5[1],bary.getIJ(2,1),11);
3847 self.assertAlmostEqual(baryPyra5[2],bary.getIJ(2,2),11);
3850 def testGetMeasureFieldCMesh1(self):
3851 m=MEDCouplingCMesh.New();
3852 da=DataArrayDouble.New();
3853 discX=[2.3,3.4,5.8,10.2]
3854 discY=[12.3,23.4,45.8]
3855 discZ=[-0.7,1.2,1.25,2.13,2.67]
3856 da.setValues(discX,4,1);
3857 m.setCoordsAt(0,da);
3859 self.assertEqual(4,m.getNumberOfNodes());
3860 self.assertEqual(3,m.getNumberOfCells());
3861 self.assertEqual(1,m.getSpaceDimension());
3862 f=m.getMeasureField(True);
3863 self.assertEqual(3,f.getNumberOfTuples());
3864 self.assertEqual(1,f.getNumberOfComponents());
3865 expected1=[1.1,2.4,4.4]
3867 self.assertAlmostEqual(expected1[i],f.getIJ(i,0),12);
3869 coords=m.getCoordinatesAndOwner();
3870 self.assertEqual(4,coords.getNumberOfTuples());
3871 self.assertEqual(1,coords.getNumberOfComponents());
3873 self.assertAlmostEqual(discX[i],coords.getIJ(i,0),12);
3875 coords=m.getBarycenterAndOwner();
3876 self.assertEqual(3,coords.getNumberOfTuples());
3877 self.assertEqual(1,coords.getNumberOfComponents());
3878 expected1_3=[2.85,4.6,8.]
3880 self.assertAlmostEqual(expected1_3[i],coords.getIJ(i,0),12);
3883 da=DataArrayDouble.New();
3884 da.setValues(discY,3,1);
3885 m.setCoordsAt(1,da);
3887 self.assertEqual(12,m.getNumberOfNodes());
3888 self.assertEqual(6,m.getNumberOfCells());
3889 self.assertEqual(2,m.getSpaceDimension());
3890 f=m.getMeasureField(True);
3891 self.assertEqual(6,f.getNumberOfTuples());
3892 self.assertEqual(1,f.getNumberOfComponents());
3893 expected2=[12.21,26.64,48.84,24.64,53.76,98.56]
3895 self.assertAlmostEqual(expected2[i],f.getIJ(i,0),12);
3897 coords=m.getCoordinatesAndOwner();
3898 self.assertEqual(12,coords.getNumberOfTuples());
3899 self.assertEqual(2,coords.getNumberOfComponents());
3900 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]
3901 for i in xrange(24):
3902 self.assertAlmostEqual(expected2_2[i],coords.getIJ(0,i),12);
3904 coords=m.getBarycenterAndOwner();
3905 self.assertEqual(6,coords.getNumberOfTuples());
3906 self.assertEqual(2,coords.getNumberOfComponents());
3907 expected2_3=[2.85,17.85,4.6,17.85,8.,17.85, 2.85,34.6,4.6,34.6,8.,34.6]
3908 for i in xrange(12):
3909 self.assertAlmostEqual(expected2_3[i],coords.getIJ(0,i),12);
3912 da=DataArrayDouble.New();
3913 da.setValues(discZ,5,1);
3914 m.setCoordsAt(2,da);
3916 self.assertEqual(60,m.getNumberOfNodes());
3917 self.assertEqual(24,m.getNumberOfCells());
3918 self.assertEqual(3,m.getSpaceDimension());
3919 f=m.getMeasureField(True);
3920 self.assertEqual(24,f.getNumberOfTuples());
3921 self.assertEqual(1,f.getNumberOfComponents());
3922 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]
3923 for i in xrange(24):
3924 self.assertAlmostEqual(expected3[i],f.getIJ(i,0),12);
3926 coords=m.getCoordinatesAndOwner();
3927 self.assertEqual(60,coords.getNumberOfTuples());
3928 self.assertEqual(3,coords.getNumberOfComponents());
3930 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,
3931 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,
3932 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,
3933 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,
3934 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];
3935 for i in xrange(180):
3936 self.assertAlmostEqual(expected3_2[i],coords.getIJ(0,i),12);
3938 coords=m.getBarycenterAndOwner();
3939 self.assertEqual(24,coords.getNumberOfTuples());
3940 self.assertEqual(3,coords.getNumberOfComponents());
3942 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,
3943 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,
3944 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,
3945 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];
3946 for i in xrange(72):
3947 self.assertAlmostEqual(expected3_3[i],coords.getIJ(0,i),12);
3951 def testFieldDoubleZipCoords1(self):
3952 m=MEDCouplingDataForTest.build2DTargetMeshMergeNode_1();
3953 f=m.fillFromAnalytic(ON_NODES,2,"x*2.");
3954 f.getArray().setInfoOnComponent(0,"titi");
3955 f.getArray().setInfoOnComponent(1,"tutu");
3957 self.assertEqual(18,f.getNumberOfTuples());
3958 self.assertEqual(2,f.getNumberOfComponents());
3959 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]
3960 for i in xrange(36):
3961 self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
3963 self.assertTrue(f.zipCoords());
3965 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]
3966 for i in xrange(30):
3967 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
3969 self.assertTrue(not f.zipCoords());
3971 for i in xrange(30):
3972 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
3974 self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
3975 self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
3978 def testFieldDoubleZipConnectivity1(self):
3979 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
3980 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
3982 m3_1=m2.buildPartOfMySelf(cells1,True);
3984 m4=MEDCouplingDataForTest.build2DSourceMesh_1();
3985 m5=MEDCouplingUMesh.MergeUMeshes(m1,m3);
3986 m6=MEDCouplingUMesh.MergeUMeshes(m5,m4);
3988 self.assertEqual(10,m6.getNumberOfCells());
3989 self.assertEqual(22,m6.getNumberOfNodes());
3990 arr,areNodesMerged,newNbOfNodes=m6.mergeNodes(1e-13);
3991 self.assertEqual(9,m6.getNumberOfNodes());
3992 f=m6.fillFromAnalytic(ON_CELLS,2,"x");
3993 f2=m6.fillFromAnalytic(ON_NODES,2,"x");
3994 self.assertEqual(10,f.getNumberOfTuples());
3995 self.assertEqual(2,f.getNumberOfComponents());
3996 expected1=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
3997 -0.05, -0.05, 0.45, 0.45, 0.53333333333333321, 0.53333333333333321, -0.05, -0.05, 0.45, 0.45,
3998 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
3999 for i in xrange(20):
4000 self.assertAlmostEqual(expected1[i],f.getIJ(0,i),12);
4002 f.getArray().setInfoOnComponent(0,"titi");
4003 f.getArray().setInfoOnComponent(1,"tutu");
4005 self.assertTrue(f.zipConnectivity(0));
4006 expected2=[-0.05, -0.05, 0.3666666666666667, 0.3666666666666667, 0.53333333333333321, 0.53333333333333321,
4007 -0.05, -0.05, 0.45, 0.45, 0.36666666666666659, 0.36666666666666659, 0.033333333333333326, 0.033333333333333326];
4008 self.assertEqual(7,f.getNumberOfTuples());
4009 self.assertEqual(2,f.getNumberOfComponents());
4010 for i in xrange(14):
4011 self.assertAlmostEqual(expected2[i],f.getIJ(0,i),12);
4013 self.assertTrue(f.getArray().getInfoOnComponent(0)=="titi");
4014 self.assertTrue(f.getArray().getInfoOnComponent(1)=="tutu");
4015 self.assertTrue(not f.zipConnectivity(0));
4017 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,
4018 -0.3, -0.3, 0.2, 0.2, 0.7, 0.7];
4019 self.assertEqual(9,f2.getNumberOfTuples());
4020 self.assertEqual(2,f2.getNumberOfComponents());
4021 for i in xrange(18):
4022 self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4024 self.assertTrue(f2.zipConnectivity(0));
4025 self.assertEqual(9,f2.getNumberOfTuples());
4026 self.assertEqual(2,f2.getNumberOfComponents());
4027 for i in xrange(18):
4028 self.assertAlmostEqual(expected3[i],f2.getIJ(0,i),12);
4032 def testDaDoubleRenumber1(self):
4033 a=DataArrayDouble.New();
4034 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]
4035 a.setValues(arr1,7,2);
4036 a.setInfoOnComponent(0,"toto");
4037 a.setInfoOnComponent(1,"tata");
4039 arr2=[3,1,0,6,5,4,2]
4041 self.assertEqual(7,b.getNumberOfTuples());
4042 self.assertEqual(2,b.getNumberOfComponents());
4043 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4044 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4045 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]
4046 for i in xrange(14):
4047 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4050 c=DataArrayInt.New();
4051 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4052 c.setValues(arr3,7,2);
4053 c.setInfoOnComponent(0,"toto");
4054 c.setInfoOnComponent(1,"tata");
4056 self.assertEqual(7,d.getNumberOfTuples());
4057 self.assertEqual(2,d.getNumberOfComponents());
4058 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4059 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4060 expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4061 for i in xrange(14):
4062 self.assertEqual(expected2[i],d.getIJ(0,i));
4066 def testDaDoubleRenumberAndReduce1(self):
4067 a=DataArrayDouble.New();
4068 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]
4069 a.setValues(arr1,7,2);
4070 a.setInfoOnComponent(0,"toto");
4071 a.setInfoOnComponent(1,"tata");
4073 arr2=[2,-1,1,-1,0,4,3]
4074 b=a.renumberAndReduce(arr2,5);
4075 self.assertEqual(5,b.getNumberOfTuples());
4076 self.assertEqual(2,b.getNumberOfComponents());
4077 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4078 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4079 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4080 for i in xrange(10):
4081 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4084 c=DataArrayInt.New();
4085 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4086 c.setValues(arr3,7,2);
4087 c.setInfoOnComponent(0,"toto");
4088 c.setInfoOnComponent(1,"tata");
4089 d=c.renumberAndReduce(arr2,5);
4090 self.assertEqual(5,d.getNumberOfTuples());
4091 self.assertEqual(2,d.getNumberOfComponents());
4092 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4093 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4094 expected2=[5,15,3,13,1,11,7,17,6,16]
4095 for i in xrange(10):
4096 self.assertEqual(expected2[i],d.getIJ(0,i));
4100 def testDaDoubleRenumberInPlace1(self):
4101 a=DataArrayDouble.New();
4102 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]
4103 a.setValues(arr1,7,2);
4105 arr2=[3,1,0,6,5,4,2]
4106 a.renumberInPlace(arr2);
4107 self.assertEqual(7,a.getNumberOfTuples());
4108 self.assertEqual(2,a.getNumberOfComponents());
4109 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]
4110 for i in xrange(14):
4111 self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4114 c=DataArrayInt.New();
4115 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4116 c.setValues(arr3,7,2);
4117 c.renumberInPlace(arr2);
4118 self.assertEqual(7,c.getNumberOfTuples());
4119 self.assertEqual(2,c.getNumberOfComponents());
4120 expected2=[3, 13, 2, 12, 7, 17, 1, 11, 6, 16, 5, 15, 4, 14]
4121 for i in xrange(14):
4122 self.assertEqual(expected2[i],c.getIJ(0,i));
4126 def testDaDoubleRenumberR1(self):
4127 a=DataArrayDouble.New();
4128 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]
4129 a.setValues(arr1,7,2);
4130 a.setInfoOnComponent(0,"toto");
4131 a.setInfoOnComponent(1,"tata");
4133 arr2=[3,1,0,6,5,4,2]
4134 b=a.renumberR(arr2);
4135 self.assertEqual(7,b.getNumberOfTuples());
4136 self.assertEqual(2,b.getNumberOfComponents());
4137 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4138 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4139 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]
4140 for i in xrange(14):
4141 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4144 c=DataArrayInt.New();
4145 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4146 c.setValues(arr3,7,2);
4147 c.setInfoOnComponent(0,"toto");
4148 c.setInfoOnComponent(1,"tata");
4149 d=c.renumberR(arr2);
4150 self.assertEqual(7,d.getNumberOfTuples());
4151 self.assertEqual(2,d.getNumberOfComponents());
4152 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4153 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4154 expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4155 for i in xrange(14):
4156 self.assertEqual(expected2[i],d.getIJ(0,i));
4160 def testDaDoubleRenumberInPlaceR1(self):
4161 a=DataArrayDouble.New();
4162 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]
4163 a.setValues(arr1,7,2);
4165 arr2=[3,1,0,6,5,4,2]
4166 a.renumberInPlaceR(arr2);
4167 self.assertEqual(7,a.getNumberOfTuples());
4168 self.assertEqual(2,a.getNumberOfComponents());
4169 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]
4170 for i in xrange(14):
4171 self.assertAlmostEqual(expected1[i],a.getIJ(0,i),14);
4174 c=DataArrayInt.New();
4175 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4176 c.setValues(arr3,7,2);
4177 c.renumberInPlaceR(arr2);
4178 self.assertEqual(7,c.getNumberOfTuples());
4179 self.assertEqual(2,c.getNumberOfComponents());
4180 expected2=[4, 14, 2, 12, 1, 11, 7, 17, 6, 16, 5, 15, 3, 13]
4181 for i in xrange(14):
4182 self.assertEqual(expected2[i],c.getIJ(0,i));
4186 def testDaDoubleSelectByTupleId1(self):
4187 a=DataArrayDouble.New();
4188 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]
4189 a.setValues(arr1,7,2);
4190 a.setInfoOnComponent(0,"toto");
4191 a.setInfoOnComponent(1,"tata");
4194 b=a.selectByTupleId(arr2);
4195 self.assertEqual(5,b.getNumberOfTuples());
4196 self.assertEqual(2,b.getNumberOfComponents());
4197 self.assertTrue(b.getInfoOnComponent(0)=="toto");
4198 self.assertTrue(b.getInfoOnComponent(1)=="tata");
4199 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
4200 for i in xrange(10):
4201 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
4204 c=DataArrayInt.New();
4205 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
4206 c.setValues(arr3,7,2);
4207 c.setInfoOnComponent(0,"toto");
4208 c.setInfoOnComponent(1,"tata");
4209 d=c.selectByTupleId(arr2);
4210 self.assertEqual(5,d.getNumberOfTuples());
4211 self.assertEqual(2,d.getNumberOfComponents());
4212 self.assertTrue(d.getInfoOnComponent(0)=="toto");
4213 self.assertTrue(d.getInfoOnComponent(1)=="tata");
4214 expected2=[5,15,3,13,1,11,7,17,6,16]
4215 for i in xrange(10):
4216 self.assertEqual(expected2[i],d.getIJ(0,i));
4220 def testDaDoubleGetMinMaxValues1(self):
4221 a=DataArrayDouble.New();
4222 arr1=[2.34,4.56,-6.77,4.55,4.56,2.24,2.34,1.02,4.56]
4223 a.setValues(arr1,9,1);
4224 m,where=a.getMaxValue();
4225 self.assertEqual(1,where);
4226 self.assertAlmostEqual(4.56,m,12);
4227 m,ws=a.getMaxValue2();
4228 self.assertAlmostEqual(4.56,m,12);
4229 self.assertEqual(3,ws.getNumberOfTuples());
4230 self.assertEqual(1,ws.getNumberOfComponents());
4233 self.assertEqual(expected1[i],ws.getIJ(i,0));
4235 a=DataArrayDouble.New();
4236 arr2=[-2.34,-4.56,6.77,-4.55,-4.56,-2.24,-2.34,-1.02,-4.56]
4237 a.setValues(arr2,9,1);
4238 m,where=a.getMinValue();
4239 self.assertEqual(1,where);
4240 self.assertAlmostEqual(-4.56,m,12);
4241 m,ws=a.getMinValue2();
4242 self.assertAlmostEqual(-4.56,m,12);
4243 self.assertEqual(3,ws.getNumberOfTuples());
4244 self.assertEqual(1,ws.getNumberOfComponents());
4246 self.assertEqual(expected1[i],ws.getIJ(i,0));
4250 def testFieldDoubleGetMinMaxValues2(self):
4251 m2,m1=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
4252 self.assertEqual(18,m2.getNumberOfCells());
4253 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]
4254 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4255 a=DataArrayDouble.New();
4256 a.setValues(arr1,18,1);
4262 self.assertAlmostEqual(8.71,m,12);
4263 m,ws=f.getMaxValue2();
4264 self.assertAlmostEqual(8.71,m,12);
4265 self.assertEqual(4,ws.getNumberOfTuples());
4266 self.assertEqual(1,ws.getNumberOfComponents());
4267 expected1=[0,3,7,17]
4269 self.assertEqual(expected1[i],ws.getIJ(i,0));
4272 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]
4273 a.setValues(arr2,18,1);
4276 self.assertAlmostEqual(-8.71,m,12);
4277 m,ws=f.getMinValue2();
4278 self.assertAlmostEqual(-8.71,m,12);
4279 self.assertEqual(4,ws.getNumberOfTuples());
4280 self.assertEqual(1,ws.getNumberOfComponents());
4282 self.assertEqual(expected1[i],ws.getIJ(i,0));
4286 def testBuildUnstructuredCMesh1(self):
4287 m=MEDCouplingCMesh.New();
4288 da=DataArrayDouble.New();
4289 discX=[2.3,3.4,5.8,10.2]
4290 discY=[12.3,23.4,45.8]
4291 discZ=[-0.7,1.2,1.25,2.13,2.67]
4292 da.setValues(discX,4,1);
4293 m.setCoordsAt(0,da);
4295 self.assertEqual(0,m.getCellContainingPoint([2.4],1e-12));
4296 self.assertEqual(1,m.getCellContainingPoint([3.7],1e-12));
4297 self.assertEqual(2,m.getCellContainingPoint([5.9],1e-12));
4298 self.assertEqual(-1,m.getCellContainingPoint([10.3],1e-12));
4299 self.assertEqual(-1,m.getCellContainingPoint([1.3],1e-12));
4301 m2=m.buildUnstructured();
4302 m2.checkCoherency();
4303 f1=m.getMeasureField(False);
4304 f2=m2.getMeasureField(False);
4305 self.assertTrue(isinstance(f1.getMesh(),MEDCouplingCMesh))
4306 self.assertEqual(f1.getNumberOfTuples(),3);
4307 self.assertEqual(f2.getNumberOfTuples(),3);
4308 self.assertEqual(1,m2.getMeshDimension());
4309 self.assertEqual(1,m2.getSpaceDimension());
4311 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4313 da=DataArrayDouble.New();
4314 da.setValues(discY,3,1);
4315 m.setCoordsAt(1,da);
4317 m2=m.buildUnstructured();
4318 m2.checkCoherency();
4319 f1=m.getMeasureField(False);
4320 f2=m2.getMeasureField(False);
4321 self.assertEqual(f1.getNumberOfTuples(),6);
4322 self.assertEqual(f2.getNumberOfTuples(),6);
4323 self.assertEqual(2,m2.getMeshDimension());
4324 self.assertEqual(2,m2.getSpaceDimension());
4326 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4329 da=DataArrayDouble.New();
4330 da.setValues(discZ,5,1);
4331 m.setCoordsAt(2,da);
4332 m2=m.buildUnstructured();
4333 m2.checkCoherency();
4334 f1=m.getMeasureField(False);
4335 f2=m2.getMeasureField(False);
4336 self.assertEqual(f1.getNumberOfTuples(),24);
4337 self.assertEqual(f2.getNumberOfTuples(),24);
4338 self.assertEqual(3,m2.getMeshDimension());
4339 self.assertEqual(3,m2.getSpaceDimension());
4340 for i in xrange(24):
4341 self.assertAlmostEqual(f1.getIJ(i,0),f2.getIJ(i,0),10);
4345 self.assertEqual(16,m.getCellContainingPoint(pos1,1e-12));
4347 elems=m2.getCellsInBoundingBox([3.5,6.,12.2,25.,0.,1.5],1e-7)
4348 self.assertEqual([1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17],elems.getValues())
4352 m3=m.buildUnstructured();
4354 self.assertTrue(m3.isEqual(m2,1e-12));
4357 def testDataArrayIntInvertO2NNO21(self):
4359 da=DataArrayInt.New();
4360 da.setValues(arr1,6,1);
4361 da2=da.invertArrayO2N2N2O(6);
4362 self.assertEqual(6,da2.getNumberOfTuples());
4363 self.assertEqual(1,da2.getNumberOfComponents());
4364 expected1=[1,3,0,5,2,4]
4366 self.assertEqual(expected1[i],da2.getIJ(i,0));
4368 da3=da2.invertArrayN2O2O2N(6);
4370 self.assertEqual(arr1[i],da3.getIJ(i,0));
4373 arr2=[3,-1,5,4,-1,0,-1,1,2,-1]
4374 da=DataArrayInt.New();
4375 da.setValues(arr2,10,1);
4376 da2=da.invertArrayO2N2N2O(6);
4377 self.assertEqual(6,da2.getNumberOfTuples());
4378 self.assertEqual(1,da2.getNumberOfComponents());
4379 expected2=[5,7,8,0,3,2]
4381 self.assertEqual(expected2[i],da2.getIJ(i,0));
4383 da3=da2.invertArrayN2O2O2N(10);
4384 for i in xrange(10):
4385 self.assertEqual(arr2[i],da3.getIJ(i,0));
4389 def testKeepSetSelectedComponent1(self):
4390 arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4391 a1=DataArrayDouble.New();
4392 a1.setValues(arr1,5,4);
4393 expp=[21.,22.,23.,24.]
4394 self.assertEqual(4,len(a1.getTuple(2)));
4396 self.assertAlmostEqual(expp[i],a1.getTuple(2)[i],12)
4398 a1.setInfoOnComponent(0,"aaaa");
4399 a1.setInfoOnComponent(1,"bbbb");
4400 a1.setInfoOnComponent(2,"cccc");
4401 a1.setInfoOnComponent(3,"dddd");
4403 a2=a1.keepSelectedComponents(arr2V);
4404 self.assertEqual(6,a2.getNumberOfComponents());
4405 self.assertEqual(5,a2.getNumberOfTuples());
4406 self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4407 self.assertTrue(a2.getInfoOnComponent(1)=="cccc");
4408 self.assertTrue(a2.getInfoOnComponent(2)=="bbbb");
4409 self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4410 self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4411 self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4412 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.]
4413 for i in xrange(30):
4414 self.assertAlmostEqual(expected1[i],a2.getIJ(0,i),14);
4416 a3=a1.convertToIntArr();
4417 self.assertEqual([21,22,23,24],a3.getTuple(2))
4418 a4=a3.keepSelectedComponents(arr2V);
4419 self.assertEqual(6,a4.getNumberOfComponents());
4420 self.assertEqual(5,a4.getNumberOfTuples());
4421 self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4422 self.assertTrue(a4.getInfoOnComponent(1)=="cccc");
4423 self.assertTrue(a4.getInfoOnComponent(2)=="bbbb");
4424 self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4425 self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4426 self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4427 for i in xrange(30):
4428 self.assertEqual(int(expected1[i]),a4.getIJ(0,i));
4430 # setSelectedComponents
4432 a5=a1.keepSelectedComponents(arr3V);
4433 a5.setInfoOnComponent(0,"eeee");
4434 a5.setInfoOnComponent(1,"ffff");
4436 a2.setSelectedComponents(a5,arr4V);
4437 self.assertEqual(6,a2.getNumberOfComponents());
4438 self.assertEqual(5,a2.getNumberOfTuples());
4439 self.assertTrue(a2.getInfoOnComponent(0)=="bbbb");
4440 self.assertTrue(a2.getInfoOnComponent(1)=="eeee");
4441 self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
4442 self.assertTrue(a2.getInfoOnComponent(3)=="cccc");
4443 self.assertTrue(a2.getInfoOnComponent(4)=="aaaa");
4444 self.assertTrue(a2.getInfoOnComponent(5)=="aaaa");
4445 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.]
4446 for i in xrange(30):
4447 self.assertAlmostEqual(expected2[i],a2.getIJ(0,i),14);
4449 a6=a5.convertToIntArr();
4450 a6.setInfoOnComponent(0,"eeee");
4451 a6.setInfoOnComponent(1,"ffff");
4452 a4.setSelectedComponents(a6,arr4V);
4453 self.assertEqual(6,a4.getNumberOfComponents());
4454 self.assertEqual(5,a4.getNumberOfTuples());
4455 self.assertTrue(a4.getInfoOnComponent(0)=="bbbb");
4456 self.assertTrue(a4.getInfoOnComponent(1)=="eeee");
4457 self.assertTrue(a4.getInfoOnComponent(2)=="ffff");
4458 self.assertTrue(a4.getInfoOnComponent(3)=="cccc");
4459 self.assertTrue(a4.getInfoOnComponent(4)=="aaaa");
4460 self.assertTrue(a4.getInfoOnComponent(5)=="aaaa");
4461 for i in xrange(30):
4462 self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
4468 self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr5V);
4469 self.assertRaises(InterpKernelException,a2.keepSelectedComponents,arr6V);
4470 self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4472 self.assertRaises(InterpKernelException,a2.setSelectedComponents,a1,arr7V);
4476 def testKeepSetSelectedComponent2(self):
4477 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
4478 arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
4479 a1=DataArrayDouble.New();
4480 a1.setValues(arr1,5,4);
4481 a1.setInfoOnComponent(0,"aaaa");
4482 a1.setInfoOnComponent(1,"bbbb");
4483 a1.setInfoOnComponent(2,"cccc");
4484 a1.setInfoOnComponent(3,"dddd");
4485 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4486 f1.setTime(2.3,4,5);
4490 f1.checkCoherency();
4493 f2=f1.keepSelectedComponents(arr2V);
4494 self.assertTrue(f2.getTimeDiscretization()==ONE_TIME);
4495 t,dt,it=f2.getTime()
4496 self.assertAlmostEqual(2.3,t,13);
4497 self.assertEqual(4,dt);
4498 self.assertEqual(5,it);
4499 f2.checkCoherency();
4500 self.assertEqual(6,f2.getNumberOfComponents());
4501 self.assertEqual(5,f2.getNumberOfTuples());
4502 self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4503 self.assertTrue(f2.getArray().getInfoOnComponent(1)=="cccc");
4504 self.assertTrue(f2.getArray().getInfoOnComponent(2)=="bbbb");
4505 self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4506 self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4507 self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4508 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.]
4509 for i in xrange(30):
4510 self.assertAlmostEqual(expected1[i],f2.getIJ(0,i),14);
4512 #setSelectedComponents
4514 f5=f1.keepSelectedComponents(arr3V);
4515 f5.setTime(6.7,8,9);
4516 f5.getArray().setInfoOnComponent(0,"eeee");
4517 f5.getArray().setInfoOnComponent(1,"ffff");
4518 f5.checkCoherency();
4520 f2.setSelectedComponents(f5,arr4V);
4521 self.assertEqual(6,f2.getNumberOfComponents());
4522 self.assertEqual(5,f2.getNumberOfTuples());
4523 f2.checkCoherency();
4524 t,dt,it=f2.getTime()
4525 self.assertAlmostEqual(2.3,t,13);
4526 self.assertEqual(4,dt);
4527 self.assertEqual(5,it);
4528 self.assertTrue(f2.getArray().getInfoOnComponent(0)=="bbbb");
4529 self.assertTrue(f2.getArray().getInfoOnComponent(1)=="eeee");
4530 self.assertTrue(f2.getArray().getInfoOnComponent(2)=="ffff");
4531 self.assertTrue(f2.getArray().getInfoOnComponent(3)=="cccc");
4532 self.assertTrue(f2.getArray().getInfoOnComponent(4)=="aaaa");
4533 self.assertTrue(f2.getArray().getInfoOnComponent(5)=="aaaa");
4534 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.]
4535 for i in xrange(30):
4536 self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),14);
4541 def testElementaryDAThrowAndSpecialCases(self):
4542 da=DataArrayInt.New();
4543 self.assertRaises(InterpKernelException, da.checkAllocated);
4544 self.assertRaises(InterpKernelException, da.fillWithValue, 1);
4545 self.assertRaises(InterpKernelException, da.iota, 1);
4547 da.fillWithValue(11); #11,11,11,11...
4548 da.iota(10); #10,11,12,13...
4550 db=DataArrayInt.New();
4553 dbl2=DataArrayDouble.New();
4555 self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15);
4556 self.assertRaises(InterpKernelException, dbl2.sort);
4557 self.assertRaises(InterpKernelException, dbl2.reverse);
4558 self.assertRaises(InterpKernelException, dbl2.iota, 10.);
4560 dbl=DataArrayDouble.New();
4561 #DataArrayDouble not allocated yet
4562 self.assertRaises(InterpKernelException, dbl.iota, 10.);
4563 self.assertRaises(InterpKernelException, dbl.isUniform, 10., 1e-15);
4564 self.assertRaises(InterpKernelException, dbl.sort);
4565 self.assertRaises(InterpKernelException, dbl.reverse);
4566 self.assertRaises(InterpKernelException, dbl.fromNoInterlace);
4567 self.assertRaises(InterpKernelException, dbl.toNoInterlace);
4571 self.assertTrue(not dbl.isUniform(10.,1e-15));
4573 self.assertTrue(dbl.isMonotonic(True, .99));
4574 self.assertTrue(dbl.isMonotonic(True, -.99));
4575 self.assertTrue(not dbl.isMonotonic(True, 1.1));
4576 self.assertTrue(not dbl.isMonotonic(True, -1.1));
4578 self.assertTrue(dbl.isMonotonic(False, .99));
4579 self.assertTrue(not dbl.isMonotonic(False, 1.1));
4580 self.assertTrue(not dbl.isMonotonic(False, -1.1));
4582 dc=DataArrayInt.New();
4585 dd=DataArrayDouble.New();
4586 self.assertRaises(InterpKernelException, dd.checkAllocated);
4587 self.assertRaises(InterpKernelException, dd.fillWithValue, 1.);
4588 self.assertRaises(InterpKernelException, dd.iota, 1.);
4589 self.assertTrue(not ((dd.repr().find("No data"))==-1));
4591 dd.alloc(0,1); #Allocated but nbOfElements==0!
4592 self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1));
4593 self.assertTrue(not ((dd.repr().find("Empty Data"))==-1));
4594 dd.fillWithValue(11); #?!...ok
4595 dd.iota(10); #?!...ok
4596 self.assertTrue(dd.isMonotonic(True, 1.)); #nothing is monotonic
4597 self.assertTrue(dd.isMonotonic(False, 1.));
4599 self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4600 self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
4602 self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4605 self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
4607 info=["infoOfOneComponent"]*2;
4608 self.assertRaises(InterpKernelException, da.setInfoOnComponents, info);
4609 self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]);
4610 db.setInfoOnComponents(info);
4612 self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1);
4613 self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2);
4614 self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0));
4615 self.assertRaises(InterpKernelException, db.getVarOnComponent, -1);
4616 self.assertRaises(InterpKernelException, db.getVarOnComponent, 2);
4617 self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1);
4618 self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2);
4620 self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit ");
4621 self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit[");
4622 self.assertTrue(da.GetVarNameFromInfo("[unit]")=="");
4623 self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname");
4625 self.assertTrue(da.GetUnitFromInfo("varname unit ")=="");
4626 self.assertTrue(da.GetUnitFromInfo("varname]unit[")=="");
4627 self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit");
4628 self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit");
4630 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow");
4631 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4632 self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
4634 self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow");
4635 da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow");
4637 self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow");
4638 db.checkNbOfElems(7*2,"theMessageInThrow");
4640 self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow");
4641 self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow");
4642 self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow"));
4643 self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow"));
4644 self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow"));
4646 self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1));
4647 self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1));
4648 self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1));
4650 self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1));
4651 self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1));
4652 self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1));
4654 self.assertRaises(InterpKernelException, dbl.selectByTupleId2, 0, 1, -1);
4655 self.assertRaises(InterpKernelException, dbl.substr, -1, 1);
4656 self.assertRaises(InterpKernelException, dbl.substr, 8, 1);
4657 self.assertRaises(InterpKernelException, dbl.substr, 0, 8);
4658 self.assertRaises(InterpKernelException, dbl.meldWith, dd);
4660 self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components
4661 self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da); #da tuple selector DataArrayInt instance not have exactly 2 components
4663 dbl3=DataArrayDouble.New();
4665 dbl3.fillWithValue(11.);
4666 #bad number of components
4667 self.assertRaises(InterpKernelException, dbl3.getMaxValue);
4668 self.assertRaises(InterpKernelException, dd.getMaxValue);
4669 self.assertRaises(InterpKernelException, dbl3.getMinValue);
4670 self.assertRaises(InterpKernelException, dd.getMinValue);
4671 self.assertRaises(InterpKernelException, dbl3.getAverageValue);
4672 self.assertRaises(InterpKernelException, dd.getAverageValue);
4673 self.assertRaises(InterpKernelException, dd.accumulate, 100);
4674 self.assertRaises(InterpKernelException, dbl.fromPolarToCart);
4675 self.assertRaises(InterpKernelException, dbl3.fromCylToCart);
4676 self.assertRaises(InterpKernelException, dbl3.fromSpherToCart);
4677 self.assertRaises(InterpKernelException, dbl3.doublyContractedProduct);
4678 self.assertRaises(InterpKernelException, dbl3.determinant);
4679 self.assertRaises(InterpKernelException, dbl3.eigenValues);
4680 self.assertRaises(InterpKernelException, dbl3.eigenVectors);
4681 self.assertRaises(InterpKernelException, dbl3.inverse);
4682 self.assertRaises(InterpKernelException, dbl3.trace);
4683 self.assertRaises(InterpKernelException, dbl3.deviator);
4685 dbl3.setIJ(5,1,12.);
4686 self.assertTrue(dbl3.getMaxValueInArray()==12.);
4687 self.assertTrue(dbl3.getMinValueInArray()==11.);
4689 db.fillWithValue(100); #bad Ids
4690 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4691 db.fillWithValue(-1); #bad Ids
4692 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4693 db.fillWithValue(6); #bad Ids for dbl3
4694 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
4696 dbl3.checkNoNullValues();
4698 self.assertRaises(InterpKernelException, dbl3.checkNoNullValues);
4699 self.assertRaises(InterpKernelException, dbl3.applyInv, 1.); #div by zero
4700 self.assertRaises(InterpKernelException, dbl2.getIdsInRange, 1., 2.);
4702 self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4703 self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4705 a=[dbl2,dbl]; #Nb of components mismatch
4706 self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
4708 self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl);
4710 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch
4711 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3
4712 dbl4=DataArrayDouble.New();
4714 dbl5=DataArrayDouble.New();
4716 self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch
4718 a[0]=dbl4; #Nb of tuple mismatch
4719 a[1]=dbl5; #Nb of tuple mismatch
4720 self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
4721 self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl4, dbl5);
4724 def testDAIGetIdsEqual1(self):
4725 tab1=[5,-2,-4,-2,3,2,-2];
4726 da=DataArrayInt.New();
4727 da.setValues(tab1,7,1);
4728 da2=da.getIdsEqual(-2);
4729 self.assertEqual(3,da2.getNumberOfTuples());
4730 self.assertEqual(1,da2.getNumberOfComponents());
4732 self.assertEqual(expected1,da2.getValues());
4735 def testDAIGetIdsEqualList1(self):
4736 tab1=[5,-2,-4,-2,3,2,-2];
4737 da=DataArrayInt.New();
4738 da.setValues(tab1,7,1);
4739 da2=da.getIdsEqualList([3,-2,0]);
4740 self.assertEqual(4,da2.getNumberOfTuples());
4741 self.assertEqual(1,da2.getNumberOfComponents());
4742 expected1=[1,3,4,6];
4743 self.assertEqual(expected1,da2.getValues());
4746 def testDAFromNoInterlace1(self):
4747 tab1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4748 da=DataArrayInt.New();
4749 da.setValues(tab1,5,3);
4750 da2=da.fromNoInterlace();
4751 expected1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4752 self.assertEqual(5,da2.getNumberOfTuples());
4753 self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4754 self.assertEqual(expected1,da2.getValues());
4755 da3=da.convertToDblArr();
4756 da4=da3.fromNoInterlace();
4757 self.assertEqual(5,da4.getNumberOfTuples());
4758 self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4759 for i in xrange(15):
4760 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4764 def testDAToNoInterlace1(self):
4765 tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
4766 da=DataArrayInt.New();
4767 da.setValues(tab1,5,3);
4768 da2=da.toNoInterlace();
4769 expected1=[1,11,21,31,41,2,12,22,32,42,3,13,23,33,43]
4770 self.assertEqual(5,da2.getNumberOfTuples());
4771 self.assertEqual(3,da2.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4772 self.assertEqual(expected1,da2.getValues());
4773 da3=da.convertToDblArr();
4774 da4=da3.toNoInterlace();
4775 self.assertEqual(5,da4.getNumberOfTuples());
4776 self.assertEqual(3,da4.getNumberOfComponents());# it's not a bug. Avoid to have 1 million components !
4777 for i in xrange(15):
4778 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
4782 def testDAIsUniform1(self):
4784 da=DataArrayInt.New();
4785 da.setValues(tab1,5,1);
4786 self.assertTrue(da.isUniform(1));
4788 self.assertTrue(not da.isUniform(1));
4790 self.assertTrue(da.isUniform(1));
4791 da2=da.convertToDblArr();
4792 self.assertTrue(da2.isUniform(1.,1.e-12));
4793 da2.setIJ(1,0,1.+1.e-13);
4794 self.assertTrue(da2.isUniform(1.,1.e-12));
4795 da2.setIJ(1,0,1.+1.e-11);
4796 self.assertTrue(not da2.isUniform(1.,1.e-12));
4799 def testDADFromPolarToCart1(self):
4800 tab1=[2.,0.2,2.5,0.7]
4801 da=DataArrayDouble.New();
4802 da.setValues(tab1,2,2);
4803 da2=da.fromPolarToCart();
4804 expected1=[1.9601331556824833,0.39733866159012243, 1.9121054682112213,1.6105442180942275]
4806 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4810 def testDADFromCylToCart1(self):
4811 tab1=[2.,0.2,4.,2.5,0.7,9.]
4812 da=DataArrayDouble.New();
4813 da.setValues(tab1,2,3);
4814 da2=da.fromCylToCart();
4815 expected1=[1.9601331556824833,0.39733866159012243,4., 1.9121054682112213,1.6105442180942275,9.]
4817 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4821 def testDADFromSpherToCart1(self):
4822 tab1=[2.,0.2,0.3,2.5,0.7,0.8]
4823 da=DataArrayDouble.New();
4824 da.setValues(tab1,2,3);
4825 da2=da.fromSpherToCart();
4826 expected1=[0.37959212195737485,0.11742160338765303,1.9601331556824833, 1.1220769624465328,1.1553337045129035,1.9121054682112213]
4828 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
4832 def testUnPolyze1(self):
4833 elts=[0,1,2,3,4,5,6,7]
4835 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4836 mesh.convertToPolyTypes(eltsV);
4838 mesh2=MEDCouplingDataForTest.build3DTargetMesh_1();
4839 mesh.checkCoherency();
4840 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4841 mesh.convertToPolyTypes(eltsV);
4842 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4843 mesh.getNodalConnectivity().setIJ(0,6,10);
4844 mesh.getNodalConnectivity().setIJ(0,7,9);
4845 mesh.getNodalConnectivity().setIJ(0,8,12);
4846 mesh.getNodalConnectivity().setIJ(0,9,13);
4848 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4849 mesh.convertToPolyTypes(eltsV);
4850 mesh.getNodalConnectivity().setIJ(0,6,12);
4851 mesh.getNodalConnectivity().setIJ(0,7,13);
4852 mesh.getNodalConnectivity().setIJ(0,8,10);
4853 mesh.getNodalConnectivity().setIJ(0,9,9);
4855 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4856 mesh.convertToPolyTypes(eltsV);
4857 mesh.getNodalConnectivity().setIJ(0,6,12);
4858 mesh.getNodalConnectivity().setIJ(0,7,10);
4859 mesh.getNodalConnectivity().setIJ(0,8,13);
4860 mesh.getNodalConnectivity().setIJ(0,9,9);
4862 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4864 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4865 mesh2=MEDCouplingDataForTest.build2DTargetMesh_1();
4867 mesh.convertToPolyTypes(eltsV);
4868 self.assertTrue(not mesh.isEqual(mesh2,1e-12));
4870 self.assertTrue(mesh.isEqual(mesh2,1e-12));
4873 def testConvertDegeneratedCells1(self):
4874 mesh=MEDCouplingDataForTest.build3DTargetMesh_1();
4875 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]
4876 mesh.allocateCells(4);
4877 mesh.insertNextCell(NORM_HEXA8,8,conn[0:8])
4878 mesh.insertNextCell(NORM_HEXA8,8,conn[8:16])
4879 mesh.insertNextCell(NORM_HEXA8,8,conn[16:24])
4880 mesh.insertNextCell(NORM_HEXA8,8,conn[24:32])
4881 mesh.finishInsertingCells();
4882 mesh.checkCoherency();
4883 self.assertEqual(4,mesh.getNumberOfCells());
4884 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(0));
4885 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(1));
4886 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(2));
4887 self.assertEqual(NORM_HEXA8,mesh.getTypeOfCell(3));
4888 f1=mesh.getMeasureField(True);
4889 mesh.convertDegeneratedCells();
4890 mesh.checkCoherency();
4891 f2=mesh.getMeasureField(True);
4892 self.assertEqual(4,mesh.getNumberOfCells());
4893 self.assertEqual(NORM_PENTA6,mesh.getTypeOfCell(0));
4894 self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(1));
4895 self.assertEqual(NORM_TETRA4,mesh.getTypeOfCell(2));
4896 self.assertEqual(NORM_PYRA5,mesh.getTypeOfCell(3));
4898 self.assertAlmostEqual(f1.getArray().getIJ(0,i),f2.getArray().getIJ(0,i),5);
4902 def testGetNodeIdsNearPoints1(self):
4903 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
4904 coords=mesh.getCoords();
4905 tmp=DataArrayDouble.New();
4906 vals=[0.2,0.2,0.1,0.2,0.2,0.2]
4907 tmp.setValues(vals,3,2);
4908 tmp2=DataArrayDouble.Aggregate(coords,tmp);
4909 mesh.setCoords(tmp2);
4910 pts=[0.2,0.2,0.1,0.3,-0.3,0.7]
4911 c=mesh.getNodeIdsNearPoint(pts[:2],1e-7);
4912 self.assertEqual([4,9,11],c.getValues());
4913 c,cI=mesh.getNodeIdsNearPoints(pts,3,1e-7);
4914 self.assertEqual([0,3,3,4],cI.getValues());
4915 self.assertEqual([4,9,11,6],c.getValues());
4916 c,cI=mesh.getNodeIdsNearPoints(pts,1e-7);
4917 self.assertEqual([0,3,3,4],cI.getValues());
4918 self.assertEqual([4,9,11,6],c.getValues());
4919 c,cI=mesh.getNodeIdsNearPoints(DataArrayDouble.New(pts,3,2),1e-7);
4920 self.assertEqual([0,3,3,4],cI.getValues());
4921 self.assertEqual([4,9,11,6],c.getValues());
4922 self.assertRaises(InterpKernelException,mesh.getNodeIdsNearPoints,DataArrayDouble.New(pts,2,3),1e-7);
4925 def testFieldCopyTinyAttrFrom1(self):
4926 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4928 f1.setTimeTolerance(1.e-5);
4929 f1.setDescription("f1Desc");
4930 f1.setTime(1.23,4,5);
4931 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
4933 f2.setDescription("f2Desc");
4934 f2.setTime(6.78,9,10);
4935 f2.setTimeTolerance(4.556e-12);
4937 f1.copyTinyAttrFrom(f2);
4938 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4939 t,dt,it=f1.getTime()
4940 self.assertAlmostEqual(6.78,t,12);
4941 self.assertEqual(9,dt);
4942 self.assertEqual(10,it);
4943 self.assertTrue(f1.getName()=="f1");#name unchanged
4944 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4946 f1=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4948 f1.setTimeTolerance(1.e-5);
4949 f1.setDescription("f1Desc");
4950 f2=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
4952 f2.setDescription("f2Desc");
4953 f2.setTimeTolerance(4.556e-12);
4955 f1.copyTinyAttrFrom(f2);
4956 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4957 self.assertTrue(f1.getName()=="f1");#name unchanged
4958 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4960 f1=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
4962 f1.setTimeTolerance(1.e-5);
4963 f1.setDescription("f1Desc");
4964 f1.setTime(1.23,4,5);
4965 f1.setEndTime(5.43,2,1);
4966 f2=MEDCouplingFieldDouble.New(ON_CELLS,CONST_ON_TIME_INTERVAL);
4968 f2.setDescription("f2Desc");
4969 f2.setTimeTolerance(4.556e-12);
4970 f2.setTime(6.78,9,10);
4971 f2.setEndTime(10.98,7,6);
4973 f1.copyTinyAttrFrom(f2);
4974 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
4975 self.assertTrue(f1.getName()=="f1");#name unchanged
4976 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
4977 t,dt,it=f1.getTime()
4978 self.assertAlmostEqual(6.78,t,12);
4979 self.assertEqual(9,dt);
4980 self.assertEqual(10,it);
4981 t,dt,it=f1.getEndTime()
4982 self.assertAlmostEqual(10.98,t,12);
4983 self.assertEqual(7,dt);
4984 self.assertEqual(6,it);
4986 f1=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
4988 f1.setTimeTolerance(1.e-5);
4989 f1.setDescription("f1Desc");
4990 f1.setTime(1.23,4,5);
4991 f1.setEndTime(5.43,2,1);
4992 f2=MEDCouplingFieldDouble.New(ON_CELLS,LINEAR_TIME);
4994 f2.setDescription("f2Desc");
4995 f2.setTimeTolerance(4.556e-12);
4996 f2.setTime(6.78,9,10);
4997 f2.setEndTime(10.98,7,6);
4999 f1.copyTinyAttrFrom(f2);
5000 self.assertAlmostEqual(4.556e-12,f1.getTimeTolerance(),24);
5001 self.assertTrue(f1.getName()=="f1");#name unchanged
5002 self.assertTrue(f1.getDescription()=="f1Desc");#description unchanged
5003 t,dt,it=f1.getTime()
5004 self.assertAlmostEqual(6.78,t,12);
5005 self.assertEqual(9,dt);
5006 self.assertEqual(10,it);
5007 t,dt,it=f1.getEndTime()
5008 self.assertAlmostEqual(10.98,t,12);
5009 self.assertEqual(7,dt);
5010 self.assertEqual(6,it);
5013 def testExtrudedMesh5(self):
5015 a=DataArrayDouble.New();
5016 a.setValues(coo1,4,1);
5017 b=MEDCouplingCMesh.New();
5019 c=b.buildUnstructured();
5020 self.assertEqual(1,c.getSpaceDimension());
5021 c.changeSpaceDimension(2);
5023 d=DataArrayDouble.New();
5026 e=MEDCouplingCMesh.New();
5028 f=e.buildUnstructured();
5029 g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5030 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 !
5031 h=g.fromPolarToCart();
5033 i=c.buildExtrudedMesh(f,1);
5034 self.assertEqual(52,i.getNumberOfNodes());
5035 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5036 self.assertTrue(tmp2);
5037 self.assertEqual(37,tmp3);
5038 i.convertDegeneratedCells();
5040 self.assertEqual(36,i.getNumberOfCells());
5041 self.assertEqual(37,i.getNumberOfNodes());
5042 self.assertEqual(12,i.getNumberOfCellsWithType(NORM_TRI3));
5043 self.assertEqual(24,i.getNumberOfCellsWithType(NORM_QUAD4));
5044 expected1=[0.25,0.75,2.0625]
5045 j=i.getMeasureField(True);
5046 for ii in xrange(12):
5048 self.assertAlmostEqual(expected1[k],j.getIJ(0,ii*3+k),10);
5051 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]
5052 m=i.getBarycenterAndOwner();
5053 for i in xrange(72):
5054 self.assertAlmostEqual(expected2[i],m.getIJ(0,i),10);
5059 def testExtrudedMesh6(self):
5061 a=DataArrayDouble.New();
5062 a.setValues(coo1,4,1);
5063 b=MEDCouplingCMesh.New();
5065 c=b.buildUnstructured();
5066 self.assertEqual(1,c.getSpaceDimension());
5067 c.changeSpaceDimension(2);
5069 d=DataArrayDouble.New();
5072 e=MEDCouplingCMesh.New();
5074 f=e.buildUnstructured();
5075 d2=f.getCoords().applyFunc("x*x/2");
5077 f.changeSpaceDimension(2);
5080 f.rotate(center,None,pi/3);
5081 g=c.buildExtrudedMesh(f,0);
5083 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 ]
5084 f1=g.getMeasureField(True);
5085 for i in xrange(12):
5086 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),12);
5088 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]
5089 f2=g.getBarycenterAndOwner();
5090 for i in xrange(24):
5091 self.assertAlmostEqual(expected2[i],f2.getIJ(0,i),12);
5095 def testExtrudedMesh7(self):
5097 a=DataArrayDouble.New();
5098 a.setValues(coo1,4,1);
5099 b=MEDCouplingCMesh.New();
5101 c=b.buildUnstructured();
5102 self.assertEqual(1,c.getSpaceDimension());
5103 c.changeSpaceDimension(2);
5105 d=DataArrayDouble.New();
5108 e=MEDCouplingCMesh.New();
5110 f=e.buildUnstructured();
5111 g=f.getCoords().applyFunc(2,"3.5*IVec+x/6*3.14159265359*JVec");
5112 h=g.fromPolarToCart();
5114 i=c.buildExtrudedMesh(f,1);
5115 self.assertEqual(52,i.getNumberOfNodes());
5116 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5117 self.assertTrue(tmp2);
5118 self.assertEqual(37,tmp3);
5119 i.convertDegeneratedCells();
5122 g2=h.applyFunc(3,"13.5/3.5*x*IVec+0*JVec+13.5/3.5*y*KVec");
5124 i.changeSpaceDimension(3);
5125 i3=i.buildExtrudedMesh(f,1);
5126 f2=i3.getMeasureField(True);
5127 tmp,tmp2,tmp3=i.mergeNodes(1e-9);
5128 self.assertTrue(tmp2);
5129 self.assertEqual(444,tmp3);
5130 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]
5131 for ii in xrange(12):
5132 for jj in xrange(36):
5133 self.assertAlmostEqual(expected1[jj],f2.getIJ(0,ii*36+jj),9);
5138 def testSimplexize1(self):
5139 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5140 m.convertToPolyTypes([3]);
5142 self.assertEqual(7,da.getNumberOfTuples());
5143 self.assertEqual(1,da.getNumberOfComponents());
5144 expected2=[0,0,1,2,3,4,4]
5146 self.assertEqual(expected2[i],da.getIJ(i,0));
5149 self.assertEqual(7,m.getNumberOfCells());
5150 self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5151 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5152 self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5153 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5154 self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5155 self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5156 self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5157 expected1=[0.125,0.125,0.125,0.125,0.25,0.125,0.125]
5158 f=m.getMeasureField(False);
5160 self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5162 types=m.getAllTypes();
5163 self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5165 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5166 m.convertToPolyTypes([3]);
5168 self.assertEqual(7,da.getNumberOfTuples());
5169 self.assertEqual(1,da.getNumberOfComponents());
5171 self.assertEqual(expected2[i],da.getIJ(i,0));
5174 types=m.getAllTypes();
5175 self.assertEqual([NORM_TRI3,NORM_POLYGON],types);
5176 self.assertEqual(7,m.getNumberOfCells());
5177 self.assertEqual(NORM_TRI3,m.getTypeOfCell(0));
5178 self.assertEqual(NORM_TRI3,m.getTypeOfCell(1));
5179 self.assertEqual(NORM_TRI3,m.getTypeOfCell(2));
5180 self.assertEqual(NORM_TRI3,m.getTypeOfCell(3));
5181 self.assertEqual(NORM_POLYGON,m.getTypeOfCell(4));
5182 self.assertEqual(NORM_TRI3,m.getTypeOfCell(5));
5183 self.assertEqual(NORM_TRI3,m.getTypeOfCell(6));
5184 f=m.getMeasureField(False);
5186 self.assertAlmostEqual(expected1[i]*sqrt(2.),f.getIJ(i,0),10);
5190 def testSimplexize2(self):
5191 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5192 m.convertToPolyTypes([3]);
5193 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5195 arr=DataArrayDouble.New();
5196 arr1=[10.,110.,20.,120.,30.,130.,40.,140.,50.,150.]
5197 arr.setValues(arr1,5,2);
5200 f1.checkCoherency();
5201 self.assertTrue(f1.simplexize(0));
5202 f1.checkCoherency();
5203 expected1=[10.,110.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.,50.,150.]
5204 for i in xrange(14):
5205 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5207 self.assertTrue(not f1.simplexize(0));
5208 for i in xrange(14):
5209 self.assertAlmostEqual(expected1[i],f1.getIJ(0,i),10);
5214 def testDAMeld1(self):
5215 da1=DataArrayDouble.New();
5217 da2=DataArrayDouble.New();
5220 da1.fillWithValue(7.);
5222 da3=da2.applyFunc(3,"10*x*IVec+100*x*JVec+1000*x*KVec");
5224 da1.setInfoOnComponent(0,"c0da1");
5225 da1.setInfoOnComponent(1,"c1da1");
5226 da3.setInfoOnComponent(0,"c0da3");
5227 da3.setInfoOnComponent(1,"c1da3");
5228 da3.setInfoOnComponent(2,"c2da3");
5232 self.assertEqual(5,da1.getNumberOfComponents());
5233 self.assertEqual(7,da1.getNumberOfTuples());
5234 self.assertTrue(da1.getInfoOnComponent(0)=="c0da1");
5235 self.assertTrue(da1.getInfoOnComponent(1)=="c1da1");
5236 self.assertTrue(da1.getInfoOnComponent(2)=="c0da3");
5237 self.assertTrue(da1.getInfoOnComponent(3)=="c1da3");
5238 self.assertTrue(da1.getInfoOnComponent(4)=="c2da3");
5240 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.]
5241 for i in xrange(35):
5242 self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),10);
5245 dai1=da1C.convertToIntArr();
5246 dai3=da3.convertToIntArr();
5247 dai1.meldWith(dai3);
5248 self.assertEqual(5,dai1.getNumberOfComponents());
5249 self.assertEqual(7,dai1.getNumberOfTuples());
5250 self.assertTrue(dai1.getInfoOnComponent(0)=="c0da1");
5251 self.assertTrue(dai1.getInfoOnComponent(1)=="c1da1");
5252 self.assertTrue(dai1.getInfoOnComponent(2)=="c0da3");
5253 self.assertTrue(dai1.getInfoOnComponent(3)=="c1da3");
5254 self.assertTrue(dai1.getInfoOnComponent(4)=="c2da3");
5255 for i in xrange(35):
5256 self.assertEqual(int(expected1[i]),dai1.getIJ(0,i));
5258 # test of static method DataArrayDouble::meld
5259 da4=DataArrayDouble.Meld(da1C,da3);
5260 tmp=DataArrayDouble.Meld([da1C,da3]);
5261 self.assertTrue(da4.isEqual(tmp,1e-10))
5262 self.assertEqual(5,da4.getNumberOfComponents());
5263 self.assertEqual(7,da4.getNumberOfTuples());
5264 self.assertTrue(da4.getInfoOnComponent(0)=="c0da1");
5265 self.assertTrue(da4.getInfoOnComponent(1)=="c1da1");
5266 self.assertTrue(da4.getInfoOnComponent(2)=="c0da3");
5267 self.assertTrue(da4.getInfoOnComponent(3)=="c1da3");
5268 self.assertTrue(da4.getInfoOnComponent(4)=="c2da3");
5269 for i in xrange(35):
5270 self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),10);
5272 # test of static method DataArrayInt::meld
5273 dai1=da1C.convertToIntArr();
5274 dai4=DataArrayInt.Meld(dai1,dai3);
5275 tmp=DataArrayInt.Meld([dai1,dai3]);
5276 self.assertTrue(dai4.isEqual(tmp))
5277 self.assertEqual(5,dai4.getNumberOfComponents());
5278 self.assertEqual(7,dai4.getNumberOfTuples());
5279 self.assertTrue(dai4.getInfoOnComponent(0)=="c0da1");
5280 self.assertTrue(dai4.getInfoOnComponent(1)=="c1da1");
5281 self.assertTrue(dai4.getInfoOnComponent(2)=="c0da3");
5282 self.assertTrue(dai4.getInfoOnComponent(3)=="c1da3");
5283 self.assertTrue(dai4.getInfoOnComponent(4)=="c2da3");
5284 for i in xrange(35):
5285 self.assertEqual(int(expected1[i]),dai4.getIJ(0,i));
5289 def testFieldMeld1(self):
5290 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5291 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5293 da1=DataArrayDouble.New();
5294 arr1=[12.,23.,34.,45.,56.]
5295 da1.setValues(arr1,5,1);
5296 da1.setInfoOnComponent(0,"aaa");
5298 f1.setTime(3.4,2,1);
5299 f1.checkCoherency();
5302 f2.setMesh(f1.getMesh());
5303 f2.checkCoherency();
5304 f2.changeNbOfComponents(2,5.);
5306 f2.getArray().setInfoOnComponent(0,"bbb");
5307 f2.getArray().setInfoOnComponent(1,"ccc");
5308 f2.checkCoherency();
5310 f3=MEDCouplingFieldDouble.MeldFields(f2,f1);
5311 f3.checkCoherency();
5312 self.assertEqual(5,f3.getNumberOfTuples());
5313 self.assertEqual(3,f3.getNumberOfComponents());
5314 self.assertTrue(f3.getArray().getInfoOnComponent(0)=="bbb");
5315 self.assertTrue(f3.getArray().getInfoOnComponent(1)=="ccc");
5316 self.assertTrue(f3.getArray().getInfoOnComponent(2)=="aaa");
5317 expected1=[5.,5.,12.,5.,5.,23.,5.,5.,34.,5.,5.,45.,5.,5.,56.]
5318 for i in xrange(15):
5319 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),12);
5321 time,dt,it=f3.getTime();
5322 self.assertAlmostEqual(3.4,time,14);
5323 self.assertEqual(2,dt);
5324 self.assertEqual(1,it);
5326 f4=f2.buildNewTimeReprFromThis(NO_TIME,False);
5327 f5=f1.buildNewTimeReprFromThis(NO_TIME,False);
5328 f6=MEDCouplingFieldDouble.MeldFields(f4,f5);
5329 f6.checkCoherency();
5330 self.assertEqual(5,f6.getNumberOfTuples());
5331 self.assertEqual(3,f6.getNumberOfComponents());
5332 self.assertTrue(f6.getArray().getInfoOnComponent(0)=="bbb");
5333 self.assertTrue(f6.getArray().getInfoOnComponent(1)=="ccc");
5334 self.assertTrue(f6.getArray().getInfoOnComponent(2)=="aaa");
5335 for i in xrange(15):
5336 self.assertAlmostEqual(expected1[i],f6.getIJ(0,i),12);
5341 def testMergeNodes2(self):
5342 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5343 m2=MEDCouplingDataForTest.build2DTargetMesh_1();
5347 m3=MEDCouplingUMesh.MergeUMeshes([m1,m2]);
5348 da,b,newNbOfNodes=m3.mergeNodes2(0.01);
5349 self.assertEqual(9,m3.getNumberOfNodes());
5350 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]
5351 for i in xrange(18):
5352 self.assertAlmostEqual(expected1[i],m3.getCoords().getIJ(0,i),13);
5357 def testMergeField2(self):
5358 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5359 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5361 arr=DataArrayDouble.New();
5363 arr.fillWithValue(2.);
5365 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5367 arr=DataArrayDouble.New();
5369 arr.fillWithValue(5.);
5371 f3=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
5373 arr=DataArrayDouble.New();
5375 arr.fillWithValue(7.);
5378 f4=MEDCouplingFieldDouble.MergeFields([f1,f2,f3]);
5379 self.assertEqual(15,f4.getMesh().getNumberOfCells());
5380 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.]
5381 for i in xrange(30):
5382 self.assertAlmostEqual(expected1[i],f4.getIJ(0,i),13);
5387 def testDAIBuildComplement1(self):
5388 a=DataArrayInt.New();
5390 a.setValues(tab,4,1);
5391 b=a.buildComplement(12);
5392 self.assertEqual(8,b.getNumberOfTuples());
5393 self.assertEqual(1,b.getNumberOfComponents());
5394 expected1=[0,2,4,5,6,9,10,11]
5396 self.assertEqual(expected1[i],b.getIJ(0,i));
5400 def testDAIBuildUnion1(self):
5401 a=DataArrayInt.New();
5403 a.setValues(tab1,4,1);
5404 c=DataArrayInt.New();
5406 c.setValues(tab2,5,1);
5408 self.assertEqual(7,b.getNumberOfTuples());
5409 self.assertEqual(1,b.getNumberOfComponents());
5410 expected1=[0,1,3,5,7,8,18]
5412 self.assertEqual(expected1[i],b.getIJ(0,i));
5414 b=DataArrayInt.BuildUnion([a,c]);
5415 self.assertEqual(7,b.getNumberOfTuples());
5416 self.assertEqual(1,b.getNumberOfComponents());
5417 expected1=[0,1,3,5,7,8,18]
5419 self.assertEqual(expected1[i],b.getIJ(0,i));
5423 def testDAIBuildIntersection1(self):
5424 a=DataArrayInt.New();
5426 a.setValues(tab1,4,1);
5427 c=DataArrayInt.New();
5429 c.setValues(tab2,5,1);
5430 b=a.buildIntersection(c);
5431 self.assertEqual(2,b.getNumberOfTuples());
5432 self.assertEqual(1,b.getNumberOfComponents());
5435 self.assertEqual(expected1[i],b.getIJ(0,i));
5437 b=DataArrayInt.BuildIntersection([a,c]);
5438 self.assertEqual(2,b.getNumberOfTuples());
5439 self.assertEqual(1,b.getNumberOfComponents());
5442 self.assertEqual(expected1[i],b.getIJ(0,i));
5446 def testDAIDeltaShiftIndex1(self):
5447 a=DataArrayInt.New();
5448 tab=[1,3,6,7,7,9,15]
5449 a.setValues(tab,7,1);
5450 b=a.deltaShiftIndex();
5451 self.assertEqual(6,b.getNumberOfTuples());
5452 self.assertEqual(1,b.getNumberOfComponents());
5453 expected1=[2,3,1,0,2,6]
5455 self.assertEqual(expected1[i],b.getIJ(0,i));
5459 def testDaDoubleSelectByTupleIdSafe1(self):
5460 a=DataArrayDouble.New();
5461 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]
5462 a.setValues(arr1,7,2);
5463 a.setInfoOnComponent(0,"toto");
5464 a.setInfoOnComponent(1,"tata");
5467 b=a.selectByTupleIdSafe(arr2);
5468 self.assertEqual(5,b.getNumberOfTuples());
5469 self.assertEqual(2,b.getNumberOfComponents());
5470 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5471 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5472 expected1=[5.1,15.1,3.1,13.1,1.1,11.1,7.1,17.1,6.1,16.1]
5473 for i in xrange(10):
5474 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5477 self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr4);
5479 self.assertRaises(InterpKernelException,a.selectByTupleIdSafe,arr5);
5481 c=DataArrayInt.New();
5482 arr3=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5483 c.setValues(arr3,7,2);
5484 c.setInfoOnComponent(0,"toto");
5485 c.setInfoOnComponent(1,"tata");
5486 d=c.selectByTupleIdSafe(arr2);
5487 self.assertEqual(5,d.getNumberOfTuples());
5488 self.assertEqual(2,d.getNumberOfComponents());
5489 self.assertTrue(d.getInfoOnComponent(0)=="toto");
5490 self.assertTrue(d.getInfoOnComponent(1)=="tata");
5491 expected2=[5,15,3,13,1,11,7,17,6,16]
5492 for i in xrange(10):
5493 self.assertEqual(expected2[i],d.getIJ(0,i));
5495 self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr4);
5496 self.assertRaises(InterpKernelException,c.selectByTupleIdSafe,arr5);
5499 def testAreCellsIncludedIn1(self):
5500 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5502 m2=m.buildPartOfMySelf(pt,True);
5503 ret,tmp=m.areCellsIncludedIn(m2,0)
5504 self.assertTrue(ret);
5505 self.assertEqual(2,tmp.getNumberOfTuples());
5506 self.assertEqual(1,tmp.getNumberOfComponents());
5507 self.assertEqual(pt[0],tmp.getIJ(0,0));
5508 self.assertEqual(pt[1],tmp.getIJ(0,1));
5509 ret,tmp=m2.areCellsIncludedIn(m,0)
5510 self.assertTrue(not ret);
5513 def testSwigErrorProtection1(self):
5514 m=MEDCouplingDataForTest.build3DTargetMesh_1();
5515 m.rotate([0.,0.,0.],[0.3,0.6,1.2],0.37)
5516 m.rotate([0.,0.,0.],[0.3,6,1.2],0.37)
5517 self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],(0.3,6,"1.2"),0.37)
5518 self.assertRaises(InterpKernelException,m.rotate,[0.,"0.",0.],[0.3,0.6,1.2],0.37)
5519 self.assertRaises(InterpKernelException,m.rotate,[0.,0.,0.],[0.3,'0.6',1.2],0.37)
5520 m2=m.buildPartOfMySelf([2,5],True)
5521 m3=m.buildPartOfMySelf((2,5),True)
5522 self.assertTrue(m2.isEqual(m3,1e-12))
5523 self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[2,5.],True)
5524 da1=m.getCoords().keepSelectedComponents([1])
5525 da2=m.getCoords().keepSelectedComponents((1,))
5526 self.assertTrue(da1.isEqual(da2,1e-12))
5527 self.assertRaises(InterpKernelException,m.getCoords().keepSelectedComponents,["1"])
5530 def testDAIBuildSubstraction1(self):
5531 a=DataArrayInt.New()
5534 b=DataArrayInt.New()
5537 self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
5540 def testBuildOrthogonalField2(self):
5541 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5542 d1=DataArrayInt.New();
5543 d2=DataArrayInt.New();
5544 d3=DataArrayInt.New();
5545 d4=DataArrayInt.New();
5546 m1=m.buildDescendingConnectivity(d1,d2,d3,d4);
5548 f1=m1.buildOrthogonalField();
5550 self.assertEqual(2,da1.getNumberOfComponents());
5551 self.assertEqual(13,da1.getNumberOfTuples());
5553 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.];
5554 for i in xrange(26):
5555 self.assertAlmostEqual(expected1[i],da1.getIJ(0,i),14);
5559 def testSwigErrorProtection2(self):
5560 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5562 c=m.getNodalConnectivity()
5563 ci=m.getNodalConnectivityIndex()
5565 self.assertEqual(2,coo.getNumberOfComponents());
5566 self.assertEqual(6,ci.getNumberOfTuples());
5567 self.assertEqual(23,c.getNumberOfTuples());
5568 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5569 f=m.getMeasureField(True)
5572 self.assertEqual(1,c.getNumberOfComponents());
5573 m=MEDCouplingCMesh.New()
5574 x=DataArrayDouble.New()
5575 x.setValues([1.,2.,4.],3,1)
5580 self.assertEqual(3,xx.getNumberOfTuples());
5582 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5583 f=m.getMeasureField(True)
5587 self.assertEqual(5,m2.getNumberOfCells());
5590 def testUMInsertNextCell1(self):
5591 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 ]
5592 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
5593 targetMesh=MEDCouplingUMesh.New();
5594 targetMesh.allocateCells(5);
5595 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_QUAD4,4,targetConn[0:4])
5596 targetMesh.setMeshDimension(2);
5597 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
5598 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_TETRA4,4,targetConn[0:4])
5599 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_SEG2,2,targetConn[0:2])
5600 self.assertRaises(InterpKernelException,targetMesh.insertNextCell,NORM_POINT1,1,targetConn[0:1])
5601 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[4:7])
5602 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[7:10])
5603 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
5604 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
5605 targetMesh.finishInsertingCells();
5606 myCoords=DataArrayDouble.New();
5607 myCoords.setValues(targetCoords,9,2);
5608 targetMesh.setCoords(myCoords);
5609 targetMesh.checkCoherency();
5612 def testFieldOperatorDivDiffComp1(self):
5613 m=MEDCouplingDataForTest.build2DTargetMesh_1();
5614 m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
5616 f1=m1.buildOrthogonalField();
5617 arr1=[2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.]
5618 arr=DataArrayDouble.New();
5619 arr.setValues(arr1,13,1);
5620 f2=MEDCouplingFieldDouble.New(ON_CELLS);
5623 f2.checkCoherency();
5626 self.assertRaises(InterpKernelException,f2.__div__,f1)
5627 f3.checkCoherency();
5629 #self.assertRaises(InterpKernelException,f2.__idiv__,f1) # mem leaks
5630 self.assertTrue(f1.isEqual(f3,1e-10,1e-10));
5631 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]
5632 for i in xrange(26):
5633 self.assertAlmostEqual(expected1[i],f3.getIJ(0,i),10);
5637 def testDARearrange1(self):
5638 da1=DataArrayInt.New();
5642 self.assertEqual(12,da1.getNbOfElems());
5643 self.assertEqual(1,da1.getNumberOfComponents());
5644 self.assertEqual(12,da1.getNumberOfTuples());
5646 self.assertEqual(12,da1.getNbOfElems());
5647 self.assertEqual(4,da1.getNumberOfComponents());
5648 self.assertEqual(3,da1.getNumberOfTuples());
5649 for i in xrange(12):
5650 self.assertEqual(i,da1.getIJ(0,i));
5653 self.assertEqual(12,da1.getNbOfElems());
5654 self.assertEqual(6,da1.getNumberOfComponents());
5655 self.assertEqual(2,da1.getNumberOfTuples());
5656 for i in xrange(12):
5657 self.assertEqual(i,da1.getIJ(0,i));
5659 self.assertRaises(InterpKernelException,da1.rearrange,7);
5662 self.assertEqual(12,da1.getNbOfElems());
5663 self.assertEqual(12,da1.getNumberOfComponents());
5664 self.assertEqual(1,da1.getNumberOfTuples());
5665 for i in xrange(12):
5666 self.assertEqual(i,da1.getIJ(0,i));
5669 self.assertEqual(12,da1.getNbOfElems());
5670 self.assertEqual(3,da1.getNumberOfComponents());
5671 self.assertEqual(4,da1.getNumberOfTuples());
5672 for i in xrange(12):
5673 self.assertEqual(i,da1.getIJ(0,i));
5675 da2=da1.convertToDblArr();
5676 st=da2.getHiddenCppPointer()
5678 self.assertEqual(12,da2.getNbOfElems());
5679 self.assertEqual(3,da2.getNumberOfComponents());
5680 self.assertEqual(4,da2.getNumberOfTuples());
5682 self.assertEqual(12,da2.getNbOfElems());
5683 self.assertEqual(4,da2.getNumberOfComponents());
5684 self.assertEqual(3,da2.getNumberOfTuples());
5685 for i in xrange(12):
5686 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5689 self.assertEqual(12,da2.getNbOfElems());
5690 self.assertEqual(6,da2.getNumberOfComponents());
5691 self.assertEqual(2,da2.getNumberOfTuples());
5692 for i in xrange(12):
5693 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5695 self.assertRaises(InterpKernelException,da2.rearrange,7);
5698 self.assertEqual(st,da2.getHiddenCppPointer())
5699 self.assertEqual(12,da2.getNbOfElems());
5700 self.assertEqual(1,da2.getNumberOfComponents());
5701 self.assertEqual(12,da2.getNumberOfTuples());
5702 for i in xrange(12):
5703 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5706 self.assertEqual(12,da2.getNbOfElems());
5707 self.assertEqual(3,da2.getNumberOfComponents());
5708 self.assertEqual(4,da2.getNumberOfTuples());
5709 for i in xrange(12):
5710 self.assertAlmostEqual(float(i),da2.getIJ(0,i),14);
5713 def testDARearrange2(self):
5714 da1=DataArrayInt.New();
5715 arr=[1,2,3,2,2,3,5,1,5,5,2,2]
5716 da1.setValues(arr,4,3);
5717 s=da1.getDifferentValues();
5719 self.assertEqual(expected1,s);
5722 def testSwigErrorProtection3(self):
5723 da=DataArrayInt.New()
5724 da.setValues([1,2,3,4],4,3)
5725 self.assertEqual([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0],da.getValues())
5726 self.assertEqual(3,da.getNumberOfComponents());
5727 self.assertEqual(4,da.getNumberOfTuples());
5728 da=DataArrayInt.New()
5729 da.setValues((1,2,3,4,4,3),4,3)
5730 self.assertEqual([1, 2, 3, 4, 4, 3, 0, 0, 0, 0, 0, 0],da.getValues())
5731 self.assertEqual(3,da.getNumberOfComponents());
5732 self.assertEqual(4,da.getNumberOfTuples());
5733 da.setValues(10*[1]+290*[2],4,3)
5734 self.assertEqual(10*[1]+[2,2],da.getValues())
5735 self.assertEqual(3,da.getNumberOfComponents());
5736 self.assertEqual(4,da.getNumberOfTuples());
5738 da=DataArrayDouble.New()
5739 da.setValues([1,2,3.,4],4,3)
5740 self.assertEqual([1., 2., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0.],da.getValues())
5741 self.assertEqual(3,da.getNumberOfComponents());
5742 self.assertEqual(4,da.getNumberOfTuples());
5743 da=DataArrayDouble.New()
5744 da.setValues((1,2,3,4.,4,3),4,3)
5745 self.assertEqual([1., 2., 3., 4., 4., 3., 0., 0., 0., 0., 0., 0.],da.getValues())
5746 self.assertEqual(3,da.getNumberOfComponents());
5747 self.assertEqual(4,da.getNumberOfTuples());
5748 da.setValues(10*[1]+290*[2],4,3)
5749 self.assertEqual(10*[1.]+[2.,2.],da.getValues())
5750 self.assertEqual(3,da.getNumberOfComponents());
5751 self.assertEqual(4,da.getNumberOfTuples());
5754 def testDAIBuildPermutationArr1(self):
5755 a=DataArrayInt.New()
5756 a.setValues([4,5,6,7,8],5,1)
5757 b=DataArrayInt.New()
5758 b.setValues([5,4,8,6,7],5,1)
5759 c=a.buildPermutationArr(b)
5760 self.assertEqual([1,0,4,2,3],c.getValues())
5761 self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5763 self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
5764 self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
5767 b.setIJ(4,0,4)#a==[4,5,6,4,8] and b==[5,4,8,6,4]
5768 self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
5769 c=a.buildPermutationArr(b)
5770 self.assertEqual([1,3,4,2,3],c.getValues())
5771 d=b.convertToDblArr()
5774 self.assertEqual(expect3,b.getValues())
5776 self.assertEqual(5,d.getNumberOfTuples());
5777 self.assertEqual(1,d.getNumberOfComponents());
5779 self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
5783 def testAreCellsIncludedIn2(self):
5785 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
5786 m2=m.buildPartOfMySelf([],True);
5787 self.assertEqual(0,m2.getNumberOfCells());
5788 self.assertEqual(3,m2.getSpaceDimension());
5789 self.assertEqual(2,m2.getMeshDimension());
5791 test,tmp=m.areCellsIncludedIn(m2,0)
5792 self.assertTrue(test);
5793 self.assertEqual(myName,tmp.getName());
5794 self.assertEqual(0,tmp.getNumberOfTuples())
5795 self.assertEqual(1,tmp.getNumberOfComponents())
5798 def testUMeshGetPartBarycenterAndOwner1(self):
5799 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5801 part=DataArrayInt.New();
5802 part.setValues(part1,3,1);
5803 b=m1.getPartBarycenterAndOwner(part);
5804 self.assertEqual(2,b.getNumberOfComponents());
5805 self.assertEqual(3,b.getNumberOfTuples());
5806 expected1=[0.36666666666666665,-0.13333333333333333,-0.05,-0.05,0.45,0.45];
5808 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5812 def testUMeshGetPartMeasureField1(self):
5813 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5815 part=DataArrayInt.New();
5816 part.setValues(part1,3,1);
5817 b=m1.getPartMeasureField(True,part);
5818 self.assertEqual(1,b.getNumberOfComponents());
5819 self.assertEqual(3,b.getNumberOfTuples());
5820 expected1=[0.125,0.25,0.25];
5822 self.assertAlmostEqual(expected1[i],b.getIJ(0,i),14);
5826 def testUMeshBuildPartOrthogonalField1(self):
5827 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5828 m1.changeSpaceDimension(3);
5830 part=DataArrayInt.New();
5831 part.setValues(part1,3,1);
5832 b=m1.buildPartOrthogonalField(part);
5833 self.assertEqual(3,b.getArray().getNumberOfComponents());
5834 self.assertEqual(3,b.getArray().getNumberOfTuples());
5835 expected1=[0.,0.,-1.,0.,0.,-1.,0.,0.,-1.];
5837 self.assertAlmostEqual(expected1[i],b.getArray().getIJ(0,i),14);
5841 def testUMeshGetTypesOfPart1(self):
5842 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5844 p1=DataArrayInt.New()
5845 p1.setValues(part1,3,1)
5846 s=m1.getTypesOfPart(p1);
5847 self.assertEqual([NORM_QUAD4],s);
5849 p2=DataArrayInt.New()
5850 p2.setValues(part2,4,1)
5851 s=m1.getTypesOfPart(p2);
5852 self.assertEqual([NORM_TRI3],s);
5854 p3=DataArrayInt.New()
5855 p3.setValues(part3,3,1)
5856 s=m1.getTypesOfPart(p3);
5857 self.assertEqual(s,[NORM_TRI3,NORM_QUAD4]);
5860 def testUMeshKeepCellIdsByType1(self):
5861 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
5863 p1=DataArrayInt.New()
5864 p1.setValues(part1,3,1)
5866 a=m1.keepCellIdsByType(NORM_TRI3,p1);
5867 self.assertEqual("p1",a.getName())
5868 self.assertEqual(1,a.getNumberOfComponents());
5869 self.assertEqual(0,a.getNumberOfTuples());
5872 p2=DataArrayInt.New()
5873 p2.setValues(part2,5,1)
5875 a=m1.keepCellIdsByType(NORM_TRI3,p2);
5876 self.assertEqual("p2",a.getName())
5877 self.assertEqual(1,a.getNumberOfComponents());
5878 self.assertEqual(2,a.getNumberOfTuples());
5879 self.assertEqual(2,a.getIJ(0,0));
5880 self.assertEqual(2,a.getIJ(1,0));
5882 a=m1.keepCellIdsByType(NORM_QUAD4,p2);
5883 self.assertEqual("p2",a.getName())
5884 self.assertEqual(1,a.getNumberOfComponents());
5885 self.assertEqual(3,a.getNumberOfTuples());
5886 self.assertEqual(3,a.getIJ(0,0));
5887 self.assertEqual(0,a.getIJ(1,0));
5888 self.assertEqual(4,a.getIJ(2,0));
5891 def testSwigErrorDaIntSelectByTupleId1(self):
5892 a=DataArrayInt.New();
5893 arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
5894 a.setValues(arr1,7,2);
5895 a.setInfoOnComponent(0,"toto");
5896 a.setInfoOnComponent(1,"tata");
5899 b=a.selectByTupleId(arr2);
5900 self.assertEqual(5,b.getNumberOfTuples());
5901 self.assertEqual(2,b.getNumberOfComponents());
5902 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5903 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5904 expected1=[5,15,3,13,1,11,7,17,6,16]
5905 self.assertEqual(expected1,b.getValues())
5907 a2=DataArrayInt.New()
5908 a2.setValues(arr2,5,1)
5909 b=a.selectByTupleId(a2);
5910 self.assertEqual(5,b.getNumberOfTuples());
5911 self.assertEqual(2,b.getNumberOfComponents());
5912 self.assertTrue(b.getInfoOnComponent(0)=="toto");
5913 self.assertTrue(b.getInfoOnComponent(1)=="tata");
5914 expected1=[5,15,3,13,1,11,7,17,6,16]
5915 self.assertEqual(expected1,b.getValues())
5918 def testSwigErrorRenum(self):
5919 da=DataArrayDouble.New()
5920 da.setValues([7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.,13.,113.,14.,114.,15.,115.,16.,116.],10,2)
5921 d=DataArrayInt.New()
5922 d.setValues([0,2,3,1,4,5,6,8,7,9],10,1)
5923 da.renumberInPlace(d)
5927 def testSwigGetItem1(self):
5928 da=DataArrayInt.New()
5933 da.setInfoOnComponent(0,"X [m]")
5934 da.setInfoOnComponent(1,"Y [m]")
5935 da.setInfoOnComponent(2,"Z [km]")
5937 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())
5939 self.assertEqual([19, 20, 21],da2.getValues())
5942 except InterpKernelException as e:
5943 self.assertTrue(True)
5945 self.assertTrue(False)
5948 self.assertEqual([24, 27, 30, 33, 36, 39, 42, 45, 48],da2.getValues())
5950 self.assertEqual([22, 23, 24, 25, 26, 27, 28, 29, 30],da2.getValues())
5952 self.assertTrue(da2.isEqual(da))
5954 self.assertTrue(da2.isEqual(da))
5957 except InterpKernelException as e:
5958 self.assertTrue(True)
5960 self.assertTrue(False)
5964 except InterpKernelException as e:
5965 self.assertTrue(True)
5967 self.assertTrue(False)
5970 self.assertEqual([22, 25, 28],da2.getValues())
5973 except InterpKernelException as e:
5974 self.assertTrue(True)
5976 self.assertTrue(False)
5979 self.assertEqual([],da2.getValues())
5982 def testSwigGetItem2(self):
5983 da=DataArrayDouble.New()
5988 da.setInfoOnComponent(0,"X [m]")
5989 da.setInfoOnComponent(1,"Y [m]")
5990 da.setInfoOnComponent(2,"Z [km]")
5992 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())
5994 self.assertEqual([19., 20., 21],da2.getValues())
5997 except InterpKernelException as e:
5998 self.assertTrue(True)
6000 self.assertTrue(False)
6003 self.assertEqual([24., 27., 30., 33., 36., 39., 42., 45., 48.],da2.getValues())
6005 self.assertEqual([22., 23., 24., 25., 26., 27., 28., 29., 30.],da2.getValues())
6007 self.assertTrue(da2.isEqual(da,1e-12))
6009 self.assertTrue(da2.isEqual(da,1e-12))
6012 except InterpKernelException as e:
6013 self.assertTrue(True)
6015 self.assertTrue(False)
6019 except InterpKernelException as e:
6020 self.assertTrue(True)
6022 self.assertTrue(False)
6025 self.assertEqual([22., 25., 28.],da2.getValues())
6028 except InterpKernelException as e:
6029 self.assertTrue(True)
6031 self.assertTrue(False)
6034 self.assertEqual([],da2.getValues())
6037 def testSwigSetItem1(self):
6038 da=DataArrayInt.New()
6042 da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6043 da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ;
6045 self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues())
6046 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6048 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3, 3, 3, 3, 3, 22, 23, 24, 25, 26],da.getValues())
6049 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6051 self.assertEqual([-1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1],da.getValues())
6052 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6054 self.assertEqual([7, -3, 9, -3, -3, 12, -3, 14, -3, -3, 17, -3, 19, -3, -3, 22, -3, 24, -3, -3],da.getValues())
6055 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6056 da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6058 self.assertEqual([-7, -7, -7, -7, -7, 12, 13, 14, 15, 16, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7],da.getValues())
6059 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6061 self.assertEqual([7, 8, 9, -7, -7, 12, 13, 14, 15, 16, 17, 18, 19, -7, -7, 22, 23, 24, -7, -7],da.getValues())
6062 # Let's test with DAI right hand side
6063 da1=DataArrayInt.New()
6064 da1.setValues([25,26,27,125,126,127],2,3)
6066 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6068 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 21, 22, 125, 126, 127, 26],da.getValues())
6069 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6070 da[1:,3]=[225,226,227]
6071 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 225, 16, 17, 18, 19, 226, 21, 22, 23, 24, 227, 26],da.getValues())
6072 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6073 da[1,2:]=[225,226,227]
6074 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 225, 226, 227, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],da.getValues())
6075 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6076 da[da2,-2:]=[88,99,1010,1111,1212,1313]
6077 self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6078 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6079 da3=DataArrayInt.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6081 self.assertEqual([7, 8, 9, 88, 99, 12, 13, 14, 15, 16, 17, 18, 19, 1010, 1111, 22, 23, 24, 1212, 1313],da.getValues())
6082 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6084 self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6085 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6087 self.assertEqual([88, 8, 99, 10, 11, 12, 13, 14, 15, 16, 1010, 18, 1111, 20, 21, 1212, 23, 1313, 25, 26],da.getValues())
6088 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6090 self.assertEqual([-8, 8, -8, 10, 11, 12, 13, 14, 15, 16, -8, 18, -8, 20, 21, -8, 23, -8, 25, 26],da.getValues())
6093 def testSwigSetItem2(self):
6094 da=DataArrayDouble.New()
6098 da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]")
6099 da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ;
6101 self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues())
6102 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6104 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 3., 3., 3., 3., 3., 22., 23., 24., 25., 26.],da.getValues())
6105 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6107 self.assertEqual([-1., -1., -1., -1., -1., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., -1., -1., -1., -1., -1.],da.getValues())
6108 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6110 self.assertEqual([7., -3., 9., -3., -3., 12., -3., 14., -3., -3., 17., -3., 19., -3., -3., 22., -3., 24., -3., -3.],da.getValues())
6111 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6112 da2=DataArrayInt.New() ; da2.setValues([0,2,3],3,1)
6114 self.assertEqual([-7., -7., -7., -7., -7., 12., 13., 14., 15., 16., -7., -7., -7., -7., -7., -7., -7., -7., -7., -7.],da.getValues())
6115 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6117 self.assertEqual([7., 8., 9., -7., -7., 12., 13., 14., 15., 16., 17., 18., 19., -7., -7., 22., 23., 24., -7., -7.],da.getValues())
6118 # Let's test with DAI right hand side
6119 da1=DataArrayDouble.New()
6120 da1.setValues([25,26,27,125,126,127],2,3)
6122 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6124 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 25., 26., 27., 21., 22., 125., 126., 127., 26.],da.getValues())
6125 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6126 da[1:,3]=[225.,226.,227.]
6127 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 14., 225., 16., 17., 18., 19., 226., 21., 22., 23., 24., 227., 26.],da.getValues())
6128 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6129 da[1,2:]=[225,226,227]
6130 self.assertEqual([7., 8., 9., 10., 11., 12., 13., 225., 226., 227., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26.],da.getValues())
6131 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6132 da[da2,-2:]=[88,99,1010,1111,1212,1313]
6133 self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6134 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6135 da3=DataArrayDouble.New(); da3.setValues([88,99,1010,1111,1212,1313],3,2)
6137 self.assertEqual([7., 8., 9., 88., 99., 12., 13., 14., 15., 16., 17., 18., 19., 1010., 1111., 22., 23., 24., 1212., 1313.],da.getValues())
6138 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6140 self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6141 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6143 self.assertEqual([88., 8., 99., 10., 11., 12., 13., 14., 15., 16., 1010., 18., 1111., 20., 21., 1212., 23., 1313., 25., 26.],da.getValues())
6144 da.rearrange(1) ; da.iota(7) ; da.rearrange(5)
6146 self.assertEqual([-8., 8., -8., 10., 11., 12., 13., 14., 15., 16., -8., 18., -8., 20., 21., -8., 23., -8., 25., 26.],da.getValues())
6149 def testSwigDADOp(self):
6150 da=DataArrayDouble.New()
6153 da1=DataArrayDouble.New()
6157 self.assertEqual([15., 17., 19., 21., 23., 25., 27., 29., 31., 33., 35., 37.],da2.getValues())
6160 self.assertTrue(da2.isEqual(da3,1e-12))
6162 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())
6164 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())
6166 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())
6168 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())
6170 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())
6172 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())
6175 self.assertTrue(da4.isUniform(1.,1e-12))
6176 st1=da.getHiddenCppPointer()
6178 st2=da.getHiddenCppPointer()
6179 self.assertEqual(st1,st2)
6180 self.assertTrue(da.isEqual(da1,1e-12))
6182 st2=da.getHiddenCppPointer()
6183 self.assertEqual(st1,st2)
6184 self.assertEqual(range(12),da.getValues())
6186 st2=da.getHiddenCppPointer()
6187 self.assertEqual(st1,st2)
6188 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())
6190 st2=da.getHiddenCppPointer()
6191 self.assertEqual(st1,st2)
6192 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())
6194 st2=da.getHiddenCppPointer()
6195 self.assertEqual(st1,st2)
6196 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())
6198 self.assertEqual(st1,st2)
6199 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())
6201 st2=da.getHiddenCppPointer()
6202 self.assertEqual(st1,st2)
6203 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())
6205 da5=DataArrayDouble.New()
6206 da5.setValues([5.,4.,3.,2.],4,1)
6207 da*=da5 # it works with unmathing number of compo
6208 st2=da.getHiddenCppPointer()
6209 self.assertEqual(st1,st2)
6210 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())
6215 ids=DataArrayInt.New()
6216 ids.setValues([3,4,7],3,1)
6217 da[ids,:]=[5.,8.,9.]
6218 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())
6220 da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6222 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())
6225 def testSwigDAIOp(self):
6226 da=DataArrayInt.New()
6229 da1=DataArrayInt.New()
6233 self.assertEqual([15,17,19,21,23,25,27,29,31,33,35,37],da2.getValues())
6236 self.assertTrue(da2.isEqual(da3))
6238 self.assertEqual([6,7,8,9,10,11,12,13,14,15,16,17],da2.getValues())
6240 self.assertEqual([-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17],da2.getValues())
6242 self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6244 self.assertEqual([21,24,27,30,33,36,39,42,45,48,51,54.0],da2.getValues())
6246 self.assertEqual([56,72,90,110,132,156,182,210,240,272,306,342.0],da2.getValues())
6248 self.assertEqual([1,2,2,2,2,3,3,3,3,4,4,4],da2.getValues())
6251 self.assertTrue(da4.isUniform(0))
6252 st1=da.getHiddenCppPointer()
6254 st2=da.getHiddenCppPointer()
6255 self.assertEqual(st1,st2)
6256 self.assertTrue(da.isEqual(da1))
6258 st2=da.getHiddenCppPointer()
6259 self.assertEqual(st1,st2)
6260 self.assertEqual(range(12),da.getValues())
6262 st2=da.getHiddenCppPointer()
6263 self.assertEqual(st1,st2)
6264 self.assertEqual([8,10,12,14,16,18,20,22,24,26,28,30],da.getValues())
6266 st2=da.getHiddenCppPointer()
6267 self.assertEqual(st1,st2)
6268 self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6270 st2=da.getHiddenCppPointer()
6271 self.assertEqual(st1,st2)
6272 self.assertEqual([32,45,60,77,96,117,140,165,192,221,252,285],da.getValues())
6274 self.assertEqual(st1,st2)
6275 self.assertEqual([4,5,6,7,8,9,10,11,12,13,14,15],da.getValues())
6277 st2=da.getHiddenCppPointer()
6278 self.assertEqual(st1,st2)
6279 self.assertEqual([2,2, 3,3, 4,4, 5,5, 6,6, 7,7],da.getValues())
6281 da5=DataArrayInt.New()
6282 da5.setValues([5,4,3,2],4,1)
6283 da*=da5 # it works with unmathing number of compo
6284 st2=da.getHiddenCppPointer()
6285 self.assertEqual(st1,st2)
6286 self.assertEqual([10,10, 15,12,16,16,15,15, 18,12,14,14],da.getValues())
6288 st2=da.getHiddenCppPointer()
6289 self.assertEqual(st1,st2)
6290 self.assertEqual([4,4,3,0,4,4,3,3,0,0,2,2],da.getValues())
6295 ids=DataArrayInt.New()
6296 ids.setValues([3,4,7],3,1)
6298 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())
6300 da.rearrange(1) ; da.iota(7) ; da.rearrange(3)
6302 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())
6305 def testSwigDAIOp2(self):
6306 da=DataArrayInt.New()
6307 st=da.getHiddenCppPointer()
6317 self.assertEqual(st,da.getHiddenCppPointer())
6318 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])
6321 def testSwigDAIOp3(self):
6322 da=DataArrayInt.New()
6323 self.assertRaises(InterpKernelException,da.__len__)
6324 self.assertRaises(InterpKernelException,da.__int__)
6326 self.assertTrue(False)
6329 da.rearrange(1) ; da.fillWithZero()
6331 self.assertEqual(36,len(da));
6334 self.assertRaises(InterpKernelException,tmp.__int__)
6335 self.assertEqual(12,len(da));
6337 for elt in enumerate(l):
6340 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]
6341 self.assertEqual(ref,da.getValues());
6343 l=[int(elt) for elt in l1]
6344 self.assertEqual(ref,da.getValues());
6345 self.assertEqual(11,int(da[-1:]))
6348 def testSwigDADOp3(self):
6349 da=DataArrayDouble.New()
6350 self.assertRaises(InterpKernelException,da.__len__)
6351 self.assertRaises(InterpKernelException,da.__float__)
6353 self.assertTrue(False)
6356 da.rearrange(1) ; da.fillWithZero()
6358 self.assertEqual(36,len(da));
6361 self.assertRaises(InterpKernelException,tmp.__float__)
6362 self.assertEqual(12,len(da));
6364 for elt in enumerate(l):
6367 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.]
6368 self.assertEqual(ref,da.getValues());
6370 l=[float(elt) for elt in l1]
6371 self.assertEqual(ref,da.getValues());
6372 self.assertEqual(11.,float(da[-1:]))
6375 def testSwigDataArrayIntIterator1(self):
6376 da=DataArrayInt.New()
6380 # __getitem__ testing
6385 self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6390 self.assertEqual([4, 7, 10, 13],li)
6395 self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6396 # __setitem__ testing
6398 da2=DataArrayInt.New()
6408 self.assertTrue(da.isEqual(da2))
6416 self.assertTrue(da.isUniform(5))
6423 self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6430 self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6433 def testSwigDataArrayDoubleIterator1(self):
6434 da=DataArrayDouble.New()
6438 # __getitem__ testing
6443 self.assertEqual([3, 4, 6, 7, 9, 10, 12, 13],li)
6448 self.assertEqual([4, 7, 10, 13],li)
6453 self.assertEqual([4, 3, 2, 7, 6, 5, 10, 9, 8, 13, 12, 11],li)
6454 # __setitem__ testing
6456 da2=DataArrayDouble.New()
6466 self.assertTrue(da.isEqual(da2,1e-12))
6474 self.assertTrue(da.isUniform(5,1e-12))
6481 self.assertEqual([8, 9, 12, 8, 9, 12, 8, 9, 12, 8, 9, 12],da.getValues())
6488 self.assertEqual([2, 3, 7, 5, 6, 7, 8, 9, 7, 11, 12, 7],da.getValues())
6491 def testSwigUMeshIterator1(self):
6492 m=MEDCouplingDataForTest.build2DTargetMesh_1()
6496 li1+=cell.getAllConn()[1:]
6497 li2+=[cell.getType()]
6499 self.assertEqual(li1,[0, 3, 4, 1, 1, 4, 2, 4, 5, 2, 6, 7, 4, 3, 7, 8, 5, 4])
6500 self.assertEqual(li2,[4, 3, 3, 4, 4])
6503 def testSwigUMeshIterator2(self):
6504 m=MEDCouplingDataForTest.build2DTargetMesh_1()
6505 self.assertRaises(InterpKernelException,m.cellsByType);
6506 m.rearrange2ConsecutiveCellTypes()
6510 for cellsByType in m.cellsByType():
6511 li1.append(cellsByType.getType())
6512 li2.append(cellsByType.getNumberOfElems())
6514 for cell in cellsByType:
6517 t[1]=cell.getAllConn()[1:]
6522 self.assertEqual(li1,[4, 3])
6523 self.assertEqual(li2,[3, 2])
6524 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)]]])
6527 def testDAIAggregateMulti1(self):
6528 a=DataArrayInt.New()
6529 a.setValues(range(4),2,2)
6531 b=DataArrayInt.New()
6532 b.setValues(range(6),3,2)
6533 c=DataArrayInt.Aggregate([a,b])
6534 self.assertEqual(range(4)+range(6),c.getValues())
6535 self.assertEqual("aa",c.getName())
6536 self.assertEqual(5,c.getNumberOfTuples())
6537 self.assertEqual(2,c.getNumberOfComponents())
6540 def testMergeUMeshes2(self):
6541 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6542 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6543 m3=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6546 m2_2=m2.buildPartOfMySelf(vec1,False);
6548 m3_2=m3.buildPartOfMySelf(vec2,False);
6552 self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[None]);
6553 self.assertRaises(InterpKernelException,MEDCouplingUMesh.MergeUMeshes,ms+[3.4])
6554 m4=MEDCouplingUMesh.MergeUMeshes(ms);
6555 m4.checkCoherency();
6556 self.assertEqual(10,m4.getNumberOfCells());
6557 self.assertEqual(20,m4.getNumberOfNodes());
6558 self.assertEqual(45,m4.getMeshLength());
6559 m4bis=MEDCouplingMesh.MergeMeshes(ms);
6560 self.assertTrue(m4.isEqual(m4bis,1e-12))
6564 m4_1=m4.buildPartOfMySelf(vec3,False);
6565 m4_1.setName(m1.getName());
6566 self.assertTrue(m4_1.isEqual(m1,1e-12));
6569 m4_2=m4.buildPartOfMySelf(vec4,False);
6570 cellCor,nodeCor=m4_2.checkGeoEquivalWith(m2_2,10,1e-12);
6573 m4_3=m4.buildPartOfMySelf(vec5,False);
6574 self.assertEqual(2,m4_3.getNumberOfCells());
6575 self.assertEqual(3,m4_3.getNumberOfNodes());
6577 m4_3.setName(m3_2.getName());
6578 self.assertTrue(m4_3.isEqual(m3_2,1e-12));
6582 def testBuild0DMeshFromCoords1(self):
6583 sourceCoords=[-0.3,-0.3,0., 0.7,-0.3,0., -0.3,0.7,0., 0.7,0.7,0.]
6584 coo=DataArrayDouble.New();
6585 coo.setValues(sourceCoords,4,3);
6586 coo.setName("My0D");
6587 m=MEDCouplingUMesh.Build0DMeshFromCoords(coo);
6589 self.assertEqual(4,m.getNumberOfNodes());
6590 self.assertEqual(4,m.getNumberOfCells());
6591 self.assertEqual(3,m.getSpaceDimension());
6592 self.assertEqual(0,m.getMeshDimension());
6593 types1=m.getAllTypes();
6594 self.assertEqual([NORM_POINT1],types1);
6596 conn=m.getNodeIdsOfCell(i);
6597 self.assertEqual([i],conn);
6598 self.assertTrue(NORM_POINT1==m.getTypeOfCell(i));
6600 self.assertEqual(m.getName(),"My0D");
6603 def testDescriptionInMeshTimeUnit1(self):
6605 m=MEDCouplingDataForTest.build2DTargetMesh_1();
6606 m.setDescription(text1);
6607 self.assertEqual(m.getDescription(),text1);
6609 self.assertTrue(m.isEqual(m2,1e-12));
6610 self.assertEqual(m2.getDescription(),text1);
6611 m2.setDescription("ggg");
6612 self.assertTrue(not m.isEqual(m2,1e-12));
6614 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6615 f.setTimeUnit(text1);
6616 self.assertEqual(f.getTimeUnit(),text1);
6618 self.assertEqual(f2.getTimeUnit(),text1);
6622 def testMultiFields1(self):
6623 mfs=MEDCouplingDataForTest.buildMultiFields_1();
6625 dms,refs=mfs.getDifferentMeshes()
6626 das=mfs.getArrays();
6627 das2,refs2=mfs.getDifferentArrays()
6628 self.assertEqual(5,len(mfs.getFields()))
6629 self.assertEqual(1,len(mfs.getFields()[0].getArrays()));
6630 self.assertEqual(2,len(mfs.getFields()[1].getArrays()));
6631 self.assertEqual(1,len(mfs.getFields()[2].getArrays()));
6632 self.assertEqual(1,len(mfs.getFields()[3].getArrays()));
6633 self.assertEqual(1,len(mfs.getFields()[4].getArrays()));
6634 self.assertEqual(5,len(ms));
6635 self.assertEqual(2,len(dms));
6636 self.assertEqual(6,len(das));
6637 self.assertEqual(5,len(das2));
6639 self.assertTrue(mfs.isEqual(mfs2,1e-12,1e-12))
6642 def testFieldOverTime1(self):
6643 fs=MEDCouplingDataForTest.buildMultiFields_2();
6644 self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6645 f4bis=fs[4].buildNewTimeReprFromThis(ONE_TIME,False);
6647 self.assertRaises(InterpKernelException,MEDCouplingFieldOverTime.New,fs);
6648 f4bis.setTime(2.7,20,21);
6649 fot=MEDCouplingFieldOverTime.New(fs);
6650 dt=fot.getDefinitionTimeZone();
6651 hs=dt.getHotSpotsTime();
6652 self.assertEqual(6,len(hs));
6653 expected1=[0.2,0.7,1.2,1.35,1.7,2.7]
6655 self.assertAlmostEqual(expected1[i],hs[i],12);
6657 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.2);
6658 self.assertEqual(0,meshId);
6659 self.assertEqual(0,arrId);
6660 self.assertEqual(0,arrIdInField);
6661 self.assertEqual(0,fieldId);
6663 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(0.7);
6664 self.assertEqual(0,meshId);
6665 self.assertEqual(1,arrId);
6666 self.assertEqual(0,arrIdInField);
6667 self.assertEqual(1,fieldId);
6669 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeLeft(1.2);#**** WARNING left here
6670 self.assertEqual(0,meshId);
6671 self.assertEqual(2,arrId);
6672 self.assertEqual(1,arrIdInField);
6673 self.assertEqual(1,fieldId);
6675 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.2);#**** WARNING right again here
6676 self.assertEqual(1,meshId);
6677 self.assertEqual(3,arrId);
6678 self.assertEqual(0,arrIdInField);
6679 self.assertEqual(2,fieldId);
6681 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.35);
6682 self.assertEqual(1,meshId);
6683 self.assertEqual(3,arrId);
6684 self.assertEqual(0,arrIdInField);
6685 self.assertEqual(2,fieldId);
6687 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(1.7);
6688 self.assertEqual(0,meshId);
6689 self.assertEqual(3,arrId);
6690 self.assertEqual(0,arrIdInField);
6691 self.assertEqual(3,fieldId);
6693 meshId,arrId,arrIdInField,fieldId=dt.getIdsOnTimeRight(2.7);
6694 self.assertEqual(1,meshId);
6695 self.assertEqual(4,arrId);
6696 self.assertEqual(0,arrIdInField);
6697 self.assertEqual(4,fieldId);
6699 dt2=MEDCouplingDefinitionTime();
6700 self.assertTrue(not dt2.isEqual(dt));
6702 dt2.assign(dt);#to check memory management
6703 self.assertTrue(dt2.isEqual(dt));
6705 dt3=MEDCouplingDefinitionTime();
6709 def testDAICheckAndPreparePermutation1(self):
6710 vals1=[9,10,0,6,4,11,3,7];
6711 expect1=[5,6,0,3,2,7,1,4];
6712 vals2=[9,10,0,6,10,11,3,7];
6713 da=DataArrayInt.New();
6714 da.setValues(vals1,8,1);
6715 da2=da.checkAndPreparePermutation();
6716 self.assertEqual(8,da2.getNumberOfTuples());
6717 self.assertEqual(1,da2.getNumberOfComponents());
6719 self.assertEqual(expect1[i],da2.getIJ(i,0));
6722 da=DataArrayInt.New();
6725 da2=da.checkAndPreparePermutation();
6726 self.assertEqual(8,da2.getNumberOfTuples());
6727 self.assertEqual(1,da2.getNumberOfComponents());
6728 self.assertTrue(da2.isIdentity());
6730 da=DataArrayInt.New();
6732 da.setValues(vals2,8,1);
6733 self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
6736 def testDAIChangeSurjectiveFormat1(self):
6737 vals1=[0,3,2,3,2,2,1,2]
6738 expected1=[0,1,2,6,8]
6739 expected2=[0, 6, 2,4,5,7, 1,3]
6740 da=DataArrayInt.New();
6741 da.setValues(vals1,8,1);
6743 da2,da2I=da.changeSurjectiveFormat(4);
6744 self.assertEqual(5,da2I.getNumberOfTuples());
6745 self.assertEqual(8,da2.getNumberOfTuples());
6746 self.assertEqual(expected1,da2I.getValues());
6747 self.assertEqual(expected2,da2.getValues());
6749 self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
6753 def testUMeshGetCellIdsLyingOnNodes1(self):
6754 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6755 nodeIds1=[1,2,3,4,6]
6757 da=m.getCellIdsLyingOnNodes(nodeIds1,True);
6758 self.assertEqual(1,da.getNumberOfTuples());
6759 self.assertEqual(1,da.getNumberOfComponents());
6760 self.assertEqual(1,da.getIJ(0,0));
6761 da2=DataArrayInt.New()
6762 da2.setValues(nodeIds2,2,1)
6763 da=m.getCellIdsLyingOnNodes(da2,False);
6764 self.assertEqual(2,da.getNumberOfTuples());
6765 self.assertEqual(1,da.getNumberOfComponents());
6766 self.assertEqual(3,da.getIJ(0,0));
6767 self.assertEqual(4,da.getIJ(1,0));
6770 def testUMeshFindCellIdsOnBoundary1(self):
6771 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6772 da5=m.findCellIdsOnBoundary();
6773 self.assertEqual(5,da5.getNumberOfTuples());
6774 self.assertTrue(da5.isIdentity());
6777 def testMeshSetTime1(self):
6778 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6779 m2=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6781 self.assertTrue(m1.isEqual(m2,1e-12));
6782 m1.setTime(3.14,6,7);
6783 tmp3,tmp1,tmp2=m1.getTime();
6784 self.assertEqual(6,tmp1);
6785 self.assertEqual(7,tmp2);
6786 self.assertAlmostEqual(3.14,tmp3,12);
6787 self.assertTrue(not m1.isEqual(m2,1e-12));
6788 m2.setTime(3.14,6,7);
6789 self.assertTrue(m1.isEqual(m2,1e-12));
6790 m1.setTimeUnit("ms");
6791 self.assertTrue(m1.getTimeUnit()=="ms");
6792 m1.setTimeUnit("us");
6793 self.assertTrue(m1.getTimeUnit()=="us");
6794 self.assertTrue(not m1.isEqual(m2,1e-12));
6795 m2.setTimeUnit("us");
6796 self.assertTrue(m1.isEqual(m2,1e-12));
6797 m2.setTime(3.14,6,8);
6798 self.assertTrue(not m1.isEqual(m2,1e-12));
6799 m2.setTime(3.14,7,7);
6800 self.assertTrue(not m1.isEqual(m2,1e-12));
6801 m2.setTime(3.15,6,7);
6802 self.assertTrue(not m1.isEqual(m2,1e-12));
6804 m1.setTime(10.34,55,12);
6806 self.assertTrue(m1.isEqual(m3,1e-12));
6807 tmp3,tmp1,tmp2=m3.getTime();
6808 self.assertEqual(55,tmp1);
6809 self.assertEqual(12,tmp2);
6810 self.assertAlmostEqual(10.34,tmp3,12);
6814 a=DataArrayDouble.New();
6815 a.setValues(coo1,4,1);
6816 b=MEDCouplingCMesh.New();
6819 b.setTime(5.67,8,100);
6820 tmp3,tmp1,tmp2=b.getTime();
6821 self.assertEqual(8,tmp1);
6822 self.assertEqual(100,tmp2);
6823 self.assertAlmostEqual(5.67,tmp3,12);
6825 self.assertTrue(c.isEqual(b,1e-12));
6826 tmp3,tmp1,tmp2=c.getTime();
6827 self.assertEqual(8,tmp1);
6828 self.assertEqual(100,tmp2);
6829 self.assertAlmostEqual(5.67,tmp3,12);
6832 def testApplyFuncTwo1(self):
6833 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6834 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6837 vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6838 da=DataArrayDouble.New();
6839 da.setValues(vals,5,3);
6842 self.assertRaises(InterpKernelException,da.applyFunc2,1,"y+z");
6843 da.setInfoOnComponent(0,"x [m]");
6844 da.setInfoOnComponent(1,"y [mm]");
6845 da.setInfoOnComponent(2,"z [km]");
6847 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x+y+zz+zzz");
6848 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "toto(x+y)");
6849 self.assertRaises(InterpKernelException, da.applyFunc2, 1, "x/0");
6851 da2=da.applyFunc2(1,"y+z");
6852 self.assertEqual(1,da2.getNumberOfComponents());
6853 self.assertEqual(5,da2.getNumberOfTuples());
6854 expected1=[32.,34.,36.,38.,40.]
6856 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6858 da2=da.applyFunc(1,"y+z");
6859 expected2=[12.,14.,16.,18.,20.]
6861 self.assertAlmostEqual(expected2[i],da2.getIJ(0,i),12);
6864 self.assertEqual(3,f1.getNumberOfComponents());
6865 self.assertEqual(5,f1.getNumberOfTuples());
6866 f1.applyFunc2(1,"y+z");
6867 self.assertEqual(1,f1.getNumberOfComponents());
6868 self.assertEqual(5,f1.getNumberOfTuples());
6870 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6875 def testApplyFuncThree1(self):
6876 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6877 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
6880 vals=[1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
6881 da=DataArrayDouble.New();
6882 da.setValues(vals,5,3);
6886 vs[0]="x"; vs[1]="Y"; vs[2]="z";
6887 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "y+z");
6888 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x+Y+z+zz+zzz");
6889 self.assertRaises(InterpKernelException, da.applyFunc3, 1, vs, "x/0");
6891 da2=da.applyFunc3(1,vs,"y+z");
6892 expected1=[32.,34.,36.,38.,40.]
6894 self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),12);
6896 self.assertRaises(InterpKernelException, da.applyFunc3, 1, ["x","y","z","a"],"x+a")
6898 self.assertEqual(3,f1.getNumberOfComponents());
6899 self.assertEqual(5,f1.getNumberOfTuples());
6900 f1.applyFunc3(1,vs,"y+z");
6901 self.assertEqual(1,f1.getNumberOfComponents());
6902 self.assertEqual(5,f1.getNumberOfTuples());
6904 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6908 def testFillFromAnalyticTwo1(self):
6909 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6910 self.assertRaises(InterpKernelException,m1.fillFromAnalytic2,ON_NODES,1,"y+z");
6911 m1.getCoords().setInfoOnComponent(0,"x [m]");
6912 m1.getCoords().setInfoOnComponent(1,"y");
6913 m1.getCoords().setInfoOnComponent(2,"z");
6914 f1=m1.fillFromAnalytic2(ON_NODES,1,"y+z");
6915 self.assertEqual(1,f1.getNumberOfComponents());
6916 self.assertEqual(9,f1.getNumberOfTuples());
6917 expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6919 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6923 def testFillFromAnalyticThree1(self):
6924 m1=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
6926 vs[0]="x"; vs[1]="Y"; vs[2]="z";
6927 self.assertRaises(InterpKernelException,m1.fillFromAnalytic3,ON_NODES,1,vs,"y+z");
6929 f1=m1.fillFromAnalytic3(ON_NODES,1,vs,"y+z");
6930 self.assertEqual(1,f1.getNumberOfComponents());
6931 self.assertEqual(9,f1.getNumberOfTuples());
6932 expected1=[0.2, 0.7, 1.2, 0.7, 1.2, 1.7, 1.2, 1.7, 2.2]
6934 self.assertAlmostEqual(expected1[i],f1.getArray().getIJ(0,i),12);
6938 def testDAUnitVar1(self):
6939 da=DataArrayDouble.New();
6941 da.setInfoOnComponent(0,"XPS [m]");
6942 st1=da.getVarOnComponent(0);
6943 self.assertTrue(st1=="XPS");
6944 st2=da.getUnitOnComponent(0);
6945 self.assertTrue(st2=="m");
6947 da.setInfoOnComponent(0,"XPS [m]");
6948 st1=da.getVarOnComponent(0);
6949 self.assertTrue(st1=="XPS");
6950 st2=da.getUnitOnComponent(0);
6951 self.assertTrue(st2=="m");
6953 da.setInfoOnComponent(0,"XPP [m]");
6954 st1=da.getVarOnComponent(0);
6955 self.assertTrue(st1=="XPP");
6956 st2=da.getUnitOnComponent(0);
6957 self.assertTrue(st2=="m");
6959 da.setInfoOnComponent(0,"XPP kdep kefer [ m ]");
6960 st1=da.getVarOnComponent(0);
6961 self.assertTrue(st1=="XPP kdep kefer");
6962 st2=da.getUnitOnComponent(0);
6963 self.assertTrue(st2==" m ");
6965 da.setInfoOnComponent(0," XPP k[ dep k]efer [ m^ 2/s^3*kJ ]");
6966 st1=da.getVarOnComponent(0);
6967 self.assertTrue(st1==" XPP k[ dep k]efer");
6968 st2=da.getUnitOnComponent(0);
6969 self.assertTrue(st2==" m^ 2/s^3*kJ ");
6971 da.setInfoOnComponent(0," XPP kefer ");
6972 st1=da.getVarOnComponent(0);
6973 self.assertTrue(st1==" XPP kefer ");
6974 st2=da.getUnitOnComponent(0);
6975 self.assertTrue(st2=="");
6977 da.setInfoOnComponent(0,"temperature( bof)");
6978 st1=da.getVarOnComponent(0);
6979 self.assertTrue(st1=="temperature( bof)");
6980 st2=da.getUnitOnComponent(0);
6981 self.assertTrue(st2=="");
6983 da.setInfoOnComponent(0,"kkk [m]");
6984 da.setInfoOnComponent(1,"ppp [m^2/kJ]");
6985 da.setInfoOnComponent(2,"abcde [MW/s]");
6987 vs=da.getVarsOnComponent();
6988 self.assertEqual(3,len(vs));
6989 self.assertTrue(vs[0]=="kkk");
6990 self.assertTrue(vs[1]=="ppp");
6991 self.assertTrue(vs[2]=="abcde");
6992 vs=da.getUnitsOnComponent();
6993 self.assertEqual(3,len(vs));
6994 self.assertTrue(vs[0]=="m");
6995 self.assertTrue(vs[1]=="m^2/kJ");
6996 self.assertTrue(vs[2]=="MW/s");
6999 def testGaussCoordinates1(self):
7000 #Testing 1D cell types
7001 m1=MEDCouplingDataForTest.build1DMultiTypes_1();
7002 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7007 f.setGaussLocalizationOnType(NORM_SEG2,refCoo1,gsCoo1,wg1);
7010 refCoo2=[-1.0,1.0,0.0];
7011 f.setGaussLocalizationOnType(NORM_SEG3,refCoo2,gsCoo2,wg2);
7013 resToTest=f.getLocalizationOfDiscr();
7014 self.assertEqual(3,resToTest.getNumberOfComponents());
7015 self.assertEqual(2,resToTest.getNumberOfTuples());
7016 expected1=[0.6,0.6,0.6, 0.6,0.6,0.6]
7018 self.assertAlmostEqual(expected1[i],resToTest.getIJ(0,i),14);
7021 #Testing 2D cell types
7022 m2=MEDCouplingDataForTest.build2DMultiTypes_1();
7023 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7026 tria3CooGauss=[ 0.1, 0.8, 0.2, 0.7 ]
7027 gsCoo3=tria3CooGauss
7028 tria3CooRef=[ 0.0, 0.0, 1.0 , 0.0, 0.0, 1.0 ]
7029 refCoo3=tria3CooRef;
7030 f.setGaussLocalizationOnType(NORM_TRI3,refCoo3,gsCoo3,wg3);
7032 tria6CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4 ]
7033 gsCoo4=tria6CooGauss;
7034 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]
7035 refCoo4=tria6CooRef;
7036 f.setGaussLocalizationOnType(NORM_TRI6,refCoo4,gsCoo4,wg4);
7037 wg5=[0.3,0.3,0.3,0.3];
7038 quad4CooGauss=[ 0.3, 0.2, 0.2, 0.1, 0.2, 0.4, 0.15, 0.27 ]
7039 gsCoo5=quad4CooGauss;
7040 quad4CooRef=[-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0]
7041 refCoo5=quad4CooRef;
7042 f.setGaussLocalizationOnType(NORM_QUAD4,refCoo5,gsCoo5,wg5);
7043 wg6=[0.3,0.3,0.3,0.3];
7044 quad8CooGauss=[ 0.34, 0.16, 0.21, 0.3, 0.23, 0.4, 0.14, 0.37 ]
7045 gsCoo6=quad8CooGauss;
7046 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]
7047 refCoo6=quad8CooRef;
7048 f.setGaussLocalizationOnType(NORM_QUAD8,refCoo6,gsCoo6,wg6);
7050 resToTest=f.getLocalizationOfDiscr();
7051 self.assertEqual(3,resToTest.getNumberOfComponents());
7052 self.assertEqual(13,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7053 expected2=[5.1,1.55,0.0, 4.7,1.65,0.0,
7054 2.32,1.52,0.0, 1.6,1.32,0.0, 3.52,1.26,0.0,#TRI6
7055 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
7056 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
7057 for i in xrange(39):
7058 self.assertAlmostEqual(expected2[i],resToTest.getIJ(0,i),14);
7061 #Testing 3D cell types
7062 m3=MEDCouplingDataForTest.build3DMultiTypes_1();
7063 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
7067 tetra4CooGauss=[0.34, 0.16, 0.21]
7068 gsCoo7=tetra4CooGauss;
7069 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]
7070 refCoo7=tetra4CooRef;
7071 f.setGaussLocalizationOnType(NORM_TETRA4,refCoo7,gsCoo7,wg7);
7073 tetra10CooGauss=[0.2, 0.3, 0.1]
7074 gsCoo8=tetra10CooGauss;
7075 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]
7076 refCoo8=tetra10CooRef;
7077 f.setGaussLocalizationOnType(NORM_TETRA10,refCoo8,gsCoo8,wg8);
7079 pyra5CooGauss=[0.2, 0.3, 0.1]
7080 gsCoo9=pyra5CooGauss;
7081 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]
7082 refCoo9=pyra5CooRef;
7083 f.setGaussLocalizationOnType(NORM_PYRA5,refCoo9,gsCoo9,wg9);
7085 pyra13CooGauss=[0.1, 0.2, 0.7]
7086 gsCoo10=pyra13CooGauss;
7087 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]
7088 refCoo10=pyra13CooRef;
7089 f.setGaussLocalizationOnType(NORM_PYRA13,refCoo10,gsCoo10,wg10);
7091 penta6CooGauss=[0.2, 0.3, 0.1]
7092 gsCoo11=penta6CooGauss;
7093 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]
7094 refCoo11=penta6CooRef;
7095 f.setGaussLocalizationOnType(NORM_PENTA6,refCoo11,gsCoo11,wg11);
7097 penta15CooGauss=[0.2, 0.3,0.15]
7098 gsCoo12=penta15CooGauss;
7099 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]
7100 refCoo12=penta15CooRef;
7101 f.setGaussLocalizationOnType(NORM_PENTA15,refCoo12,gsCoo12,wg12);
7103 hexa8CooGauss=[0.2,0.3,0.15]
7104 gsCoo13=hexa8CooGauss;
7105 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]
7106 refCoo13=hexa8CooRef;
7107 f.setGaussLocalizationOnType(NORM_HEXA8,refCoo13,gsCoo13,wg13);
7109 hexa20CooGauss=[0.11,0.3,0.55]
7110 gsCoo14=hexa20CooGauss;
7111 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]
7112 refCoo14=hexa20CooRef;
7113 f.setGaussLocalizationOnType(NORM_HEXA20,refCoo14,gsCoo14,wg14);
7115 resToTest=f.getLocalizationOfDiscr();
7116 self.assertEqual(3,resToTest.getNumberOfComponents());
7117 self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8
7118 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]
7119 for i in xrange(24):
7120 self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14);
7125 def testP2Localization1(self):
7126 m=MEDCouplingUMesh.New("testP2",2);
7127 coords=[0.,2.,3.5,0.,4.5,1.5,1.2,0.32,3.4,1.,2.1,2.4]
7129 coo=DataArrayDouble.New();
7130 coo.setValues(coords,6,2);
7133 m.insertNextCell(NORM_TRI6,6,conn[0:6])
7134 m.finishInsertingCells();
7136 f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7138 da=DataArrayDouble.New();
7139 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]
7140 da.setValues(vals1,6,3);
7144 locs=f.getValueOnMulti(loc);
7145 expected1=[6.0921164547752236, 7.1921164547752232, 8.2921164547752255]
7147 self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7151 def testP2Localization2(self):
7152 m=MEDCouplingUMesh.New("testP2_2",3);
7153 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]
7154 conn=[0,1,2,3,4,5,6,7,8,9]
7155 coo=DataArrayDouble.New();
7156 coo.setValues(coords,10,3);
7159 m.insertNextCell(NORM_TETRA10,10,conn[0:10])
7160 m.finishInsertingCells();
7162 f=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
7164 da=DataArrayDouble.New();
7165 vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2]
7166 da.setValues(vals1,10,1);
7169 loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748]
7170 locs=f.getValueOnMulti(loc);
7171 expected1=[10.0844021968047]
7173 self.assertAlmostEqual(expected1[i],locs.getIJ(0,i),12);
7177 def testGetValueOn2(self):
7178 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7179 f=MEDCouplingFieldDouble.New(ON_CELLS,NO_TIME);
7181 arr=DataArrayDouble.New();
7182 nbOfCells=m.getNumberOfCells();
7184 values1=[7.,107.,10007.,8.,108.,10008.,9.,109.,10009.,10.,110.,10010.,11.,111.,10011.]
7185 arr.setValues(values1,nbOfCells,3);
7186 loc=[-0.05,-0.05, 0.55,-0.25, 0.55,0.15, -0.05,0.45, 0.45,0.45]
7188 locs=f.getValueOnMulti(loc);
7189 self.assertEqual(5,locs.getNumberOfTuples());
7190 self.assertEqual(3,locs.getNumberOfComponents());
7191 for j in xrange(15):
7192 self.assertAlmostEqual(values1[j],locs.getIJ(0,j),12);
7195 f=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
7197 arr=DataArrayDouble.New();
7198 nbOfNodes=m.getNumberOfNodes();
7200 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.]
7201 arr.setValues(values2,nbOfNodes,3);
7202 loc2=[0.5432,-0.2432, 0.5478,0.1528, 0.5432,-0.2432, 0.5432,-0.2432]
7203 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]
7205 loc3=DataArrayDouble.New()
7206 loc3.setValues(loc2,4,2);
7207 locs=f.getValueOnMulti(loc3);
7208 self.assertEqual(4,locs.getNumberOfTuples());
7209 self.assertEqual(3,locs.getNumberOfComponents());
7210 for i in xrange(12):
7211 self.assertAlmostEqual(expected2[i],locs.getIJ(0,i),12);
7216 def testDAIGetIdsNotEqual1(self):
7217 d=DataArrayInt.New();
7218 vals1=[2,3,5,6,8,5,5,6,1,-5]
7219 d.setValues(vals1,10,1);
7220 d2=d.getIdsNotEqual(5);
7221 self.assertEqual(7,d2.getNumberOfTuples());
7222 self.assertEqual(1,d2.getNumberOfComponents());
7223 expected1=[0,1,3,4,7,8,9]
7225 self.assertEqual(expected1[i],d2.getIJ(0,i));
7228 self.assertRaises(InterpKernelException,d.getIdsNotEqual,5);
7232 d3=d.getIdsNotEqualList(vals3);
7233 self.assertEqual(5,d3.getNumberOfTuples());
7234 self.assertEqual(1,d3.getNumberOfComponents());
7235 expected2=[0,1,4,8,9]
7237 self.assertEqual(expected2[i],d3.getIJ(0,i));
7241 def testDAIComputeOffsets1(self):
7242 d=DataArrayInt.New();
7244 expected1=[0,3,8,9,11,11]
7245 d.setValues(vals1,6,1);
7247 self.assertEqual(6,d.getNumberOfTuples());
7248 self.assertEqual(1,d.getNumberOfComponents());
7250 self.assertEqual(expected1[i],d.getIJ(0,i));
7254 def testUMeshHexagonPrism1(self):
7255 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,
7256 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];
7257 conn=[1,2,3,4,5,0,7,8,9,10,11,6]
7258 mesh=MEDCouplingUMesh.New("MyFirstHexagonalPrism",3);
7259 coo=DataArrayDouble.New();
7260 coo.setValues(coords,12,3);
7261 mesh.setCoords(coo);
7262 mesh.allocateCells(1);
7263 mesh.insertNextCell(NORM_HEXGP12,12,conn[0:12])
7264 mesh.finishInsertingCells();
7266 mesh.checkCoherency();
7267 vols=mesh.getMeasureField(False);
7268 self.assertEqual(1,vols.getNumberOfTuples());
7269 self.assertEqual(1,vols.getNumberOfComponents());
7270 self.assertAlmostEqual(-5.196152422706632,vols.getIJ(0,0),12);
7271 bary=mesh.getBarycenterAndOwner();
7272 self.assertEqual(1,bary.getNumberOfTuples());
7273 self.assertEqual(3,bary.getNumberOfComponents());
7274 expected1=[0.,0.,1.]
7276 self.assertAlmostEqual(expected1[i],bary.getIJ(0,i),12);
7278 d1=DataArrayInt.New();
7279 d2=DataArrayInt.New();
7280 d3=DataArrayInt.New();
7281 d4=DataArrayInt.New();
7282 m2=mesh.buildDescendingConnectivity(d1,d2,d3,d4);
7283 self.assertEqual(8,m2.getNumberOfCells());
7284 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]];
7285 expected2=[NORM_POLYGON, NORM_POLYGON, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4, NORM_QUAD4];
7286 expected3=[6,6,4,4,4,4,4,4]
7288 self.assertTrue(m2.getTypeOfCell(i)==expected2[i]);
7289 v=m2.getNodeIdsOfCell(i);
7290 self.assertTrue(len(v)==expected3[i]);
7291 self.assertEqual(expected4[i],v);
7293 mesh.convertAllToPoly();
7294 self.assertTrue(NORM_POLYHED==mesh.getTypeOfCell(0));
7296 self.assertTrue(NORM_HEXGP12==mesh.getTypeOfCell(0));
7297 self.assertEqual(13,mesh.getMeshLength());
7301 def testDADCheckIsMonotonic(self):
7302 da=DataArrayDouble.New();
7303 da.setValues([-1.,1.01,2.03,6.],2,2);
7304 self.assertRaises(InterpKernelException,da.isMonotonic,True,1e-12);
7306 self.assertTrue(da.isMonotonic(True,1e-12));
7307 da.checkMonotonic(True,1e-12);
7309 self.assertTrue(not da.isMonotonic(True,1e-12));
7310 self.assertRaises(InterpKernelException,da.checkMonotonic,True,1e-12);
7312 self.assertTrue(da.isMonotonic(True,1e-12));
7313 self.assertTrue(not da.isMonotonic(True,1e-1));
7316 def testCheckCoherencyDeeper1(self):
7317 m=MEDCouplingDataForTest.build3DSourceMesh_1();
7319 m.checkCoherency1();
7320 m.getNodalConnectivity().setIJ(8,0,-1);
7322 self.assertRaises(InterpKernelException,m.checkCoherency1);
7323 m.getNodalConnectivity().setIJ(8,0,-6);
7325 self.assertRaises(InterpKernelException,m.checkCoherency1);
7326 m.getNodalConnectivity().setIJ(8,0,9);#9>=NbOfNodes
7328 self.assertRaises(InterpKernelException,m.checkCoherency1);
7329 m.getNodalConnectivity().setIJ(8,0,8);#OK
7331 m.checkCoherency1();
7333 m.convertToPolyTypes(elts);
7335 m.checkCoherency1();
7336 m.getNodalConnectivity().setIJ(2,0,9);#9>=NbOfNodes
7338 self.assertRaises(InterpKernelException,m.checkCoherency1);
7339 m.getNodalConnectivity().setIJ(2,0,-3);
7341 self.assertRaises(InterpKernelException,m.checkCoherency1);
7342 m.getNodalConnectivity().setIJ(2,0,-1);
7344 self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw because cell#0 is not a polyhedron
7345 m.getNodalConnectivity().setIJ(2,0,4);
7347 m.checkCoherency1();
7348 m.getNodalConnectivity().setIJ(7,0,-1);
7350 m.checkCoherency1();#OK because we are in polyhedron connec
7351 m.getNodalConnectivity().setIJ(36,0,14);
7353 self.assertRaises(InterpKernelException,m.checkCoherency1);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
7356 def testUnPolyze2(self):
7357 m=MEDCouplingUMesh.New("jjj",3);
7358 coo=DataArrayDouble.New();
7365 m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7366 m.insertNextCell(NORM_TETRA4,4,[0,1,2,3]);
7367 m.finishInsertingCells();
7368 m2=MEDCouplingUMesh.MergeUMeshesOnSameCoords(4*[m]);
7369 m2.convertToPolyTypes([2]);
7371 self.assertEqual(NORM_TETRA4,m2.getTypeOfCell(2));
7372 self.assertEqual(40,m2.getMeshLength());
7373 temp2=m2.getNodeIdsOfCell(2);
7374 self.assertEqual(temp2,[0,1,2,3]);
7375 m2.checkCoherency1();
7378 self.assertTrue(m3.isEqual(m2,1e-12));
7381 def testDACpyFrom1(self):
7382 d=DataArrayDouble.New();
7387 d.setInfoOnComponent(0,"X [m]");
7388 d.setInfoOnComponent(1,"Y [m]");
7389 d.setInfoOnComponent(2,"Z [m]");
7391 d1=DataArrayDouble.New();
7392 self.assertTrue(not d.isEqual(d1,1e-12));
7394 self.assertTrue(d.isEqual(d1,1e-12));
7396 self.assertTrue(d.isEqual(d1,1e-12));
7398 self.assertTrue(not d.isEqual(d1,1e-12));
7400 self.assertTrue(d.isEqual(d1,1e-12));
7402 d2=d.convertToIntArr();
7403 d4=DataArrayInt.New();
7404 self.assertTrue(not d2.isEqual(d4));
7406 self.assertTrue(d2.isEqual(d4));
7408 self.assertTrue(d2.isEqual(d4));
7410 self.assertTrue(not d2.isEqual(d4));
7412 self.assertTrue(d2.isEqual(d4));
7415 def testDAITransformWithIndArr1(self):
7417 tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
7418 expected=[17,18,18,19,19,17,18,19,22,22,19,17]
7419 d=DataArrayInt.New();
7420 d.setValues(tab1,4,1);
7421 d1=DataArrayInt.New();
7422 d1.setValues(tab2,12,1);
7425 d1.transformWithIndArr(d);
7426 self.assertEqual(12,d1.getNumberOfTuples());
7427 self.assertEqual(1,d1.getNumberOfComponents());
7428 for i in xrange(12):
7429 self.assertEqual(expected[i],d1.getIJ(i,0));
7433 d1.transformWithIndArr(tab1)
7434 self.assertEqual(12,d1.getNumberOfTuples());
7435 self.assertEqual(1,d1.getNumberOfComponents());
7436 for i in xrange(12):
7437 self.assertEqual(expected[i],d1.getIJ(i,0));
7441 def testDAIBuildPermArrPerLevel1(self):
7442 arr=[2,0,1,1,0,1,2,0,1,1,0,0]
7443 expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
7444 da=DataArrayInt.New();
7445 da.setValues(arr,12,1);
7446 da2=da.buildPermArrPerLevel();
7447 self.assertEqual(12,da2.getNumberOfTuples());
7448 self.assertEqual(1,da2.getNumberOfComponents());
7449 for i in xrange(12):
7450 self.assertEqual(expected1[i],da2.getIJ(i,0));
7454 def testDAIOperations1(self):
7455 arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
7456 da=DataArrayInt.New();
7457 da.setValues(arr1,4,3);
7458 da1=DataArrayInt.New();
7461 self.assertRaises(InterpKernelException,DataArrayInt.Add,da,da1);#not same number of tuples/Components
7463 da2=DataArrayInt.Add(da,da1);
7464 self.assertEqual(4,da2.getNumberOfTuples());
7465 self.assertEqual(3,da2.getNumberOfComponents());
7466 expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
7467 for i in xrange(12):
7468 self.assertEqual(expected1[i],da2.getIJ(0,i));
7470 da1.substractEqual(da);
7471 expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
7472 for i in xrange(12):
7473 self.assertEqual(expected2[i],da1.getIJ(0,i));
7475 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7477 for i in xrange(12):
7478 self.assertEqual(expected1[i],da1.getIJ(0,i));
7480 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7481 da2=DataArrayInt.Multiply(da,da1);
7482 self.assertEqual(4,da2.getNumberOfTuples());
7483 self.assertEqual(3,da2.getNumberOfComponents());
7484 expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
7485 for i in xrange(12):
7486 self.assertEqual(expected3[i],da2.getIJ(0,i));
7488 da.divideEqual(da1);
7489 self.assertEqual(4,da.getNumberOfTuples());
7490 self.assertEqual(3,da.getNumberOfComponents());
7491 expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
7492 for i in xrange(12):
7493 self.assertEqual(expected4[i],da.getIJ(0,i));
7495 da.setValues(arr1,4,3);
7496 da1.multiplyEqual(da);
7497 self.assertEqual(4,da1.getNumberOfTuples());
7498 self.assertEqual(3,da1.getNumberOfComponents());
7499 for i in xrange(12):
7500 self.assertEqual(expected3[i],da1.getIJ(0,i));
7502 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
7503 da2=DataArrayInt.Divide(da,da1);
7504 self.assertEqual(4,da2.getNumberOfTuples());
7505 self.assertEqual(3,da2.getNumberOfComponents());
7506 for i in xrange(12):
7507 self.assertEqual(expected4[i],da2.getIJ(0,i));
7510 self.assertEqual(4,da1.getNumberOfTuples());
7511 self.assertEqual(3,da1.getNumberOfComponents());
7512 expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
7513 for i in xrange(12):
7514 self.assertEqual(expected5[i],da1.getIJ(0,i));
7516 da1.applyDivideBy(2);
7517 self.assertEqual(4,da1.getNumberOfTuples());
7518 self.assertEqual(3,da1.getNumberOfComponents());
7519 expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
7520 for i in xrange(12):
7521 self.assertEqual(expected6[i],da1.getIJ(0,i));
7523 expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
7524 da1.applyModulus(7);
7525 for i in xrange(12):
7526 self.assertEqual(expected7[i],da1.getIJ(0,i));
7529 expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
7530 da1.applyRModulus(3);
7531 for i in xrange(12):
7532 self.assertEqual(expected8[i],da1.getIJ(0,i));
7536 def testEmulateMEDMEMBDC1(self):
7537 m,m1=MEDCouplingDataForTest.buildPointe_1();
7538 m2,da1,da2,da3,da4,da5,da0=m.emulateMEDMEMBDC(m1)
7539 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]
7540 expected1=[1,32,29,23,41,36]
7541 self.assertEqual(47,da0.getNumberOfTuples());
7542 self.assertEqual(1,da0.getNumberOfComponents());
7543 for i in xrange(47):
7544 self.assertEqual(expected0[i],da0.getIJ(0,i));
7546 self.assertEqual(6,da5.getNumberOfTuples());
7547 self.assertEqual(1,da5.getNumberOfComponents());
7549 self.assertEqual(expected1[i],da5.getIJ(0,i));
7551 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]
7552 self.assertEqual(70,da1.getNumberOfTuples());
7553 self.assertEqual(1,da1.getNumberOfComponents());
7554 for i in xrange(70):
7555 self.assertEqual(expected2[i],da1.getIJ(0,i));
7557 expected3=[0,4,8,12,16,20,24,28,32,36,40,44,48,53,58,64,70]
7558 self.assertEqual(17,da2.getNumberOfTuples());
7559 self.assertEqual(1,da2.getNumberOfComponents());
7560 for i in xrange(17):
7561 self.assertEqual(expected3[i],da2.getIJ(0,i));
7563 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]
7564 #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];
7565 self.assertEqual(48,da4.getNumberOfTuples());
7566 self.assertEqual(1,da4.getNumberOfComponents());
7567 for i in xrange(48):
7568 self.assertEqual(expected4[i],da4.getIJ(0,i));
7570 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]
7571 self.assertEqual(70,da3.getNumberOfTuples());
7572 self.assertEqual(1,da3.getNumberOfComponents());
7573 for i in xrange(70):
7574 self.assertEqual(expected5[i],da3.getIJ(0,i));
7578 def testGetLevArrPerCellTypes1(self):
7579 m,m1=MEDCouplingDataForTest.buildPointe_1();
7580 m1,d0,d1,d2,d3=m.buildDescendingConnectivity();
7581 order=[NORM_TRI3,NORM_QUAD4];
7582 da0,da1=m1.getLevArrPerCellTypes(order);
7583 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]
7584 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]
7585 self.assertEqual(47,da0.getNumberOfTuples());
7586 self.assertEqual(1,da0.getNumberOfComponents());
7587 for i in xrange(47):
7588 self.assertEqual(expected0[i],da0.getIJ(0,i));
7590 self.assertEqual(2,da1.getNumberOfTuples());
7591 self.assertEqual(1,da1.getNumberOfComponents());
7592 self.assertEqual(36,da1.getIJ(0,0));#36 TRI3
7593 self.assertEqual(11,da1.getIJ(1,0));#11 QUAD4
7595 da2=da0.buildPermArrPerLevel();
7597 self.assertEqual(47,da2.getNumberOfTuples());
7598 self.assertEqual(1,da2.getNumberOfComponents());
7599 for i in xrange(47):
7600 self.assertEqual(expected1[i],da2.getIJ(0,i));
7604 def testSortCellsInMEDFileFrmt1(self):
7605 m,m1=MEDCouplingDataForTest.buildPointe_1();
7607 da=DataArrayInt.New()
7608 da.setValues([0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13],16,1)
7609 daa=da.invertArrayN2O2O2N(16)
7610 m.renumberCells(daa,False)
7611 da2=m.sortCellsInMEDFileFrmt()
7612 self.assertEqual(da2.getValues(),[0,1,2,14,3,12,4,5,15,6,7,8,9,10,11,13])
7613 self.assertTrue(m.isEqual(m2,1e-12))
7614 self.assertTrue(da.isEqual(da2))
7617 def testBuildPartAndReduceNodes1(self):
7618 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7620 m2,da=m.buildPartAndReduceNodes(arr);
7621 self.assertEqual(5,m2.getNumberOfNodes());
7622 self.assertEqual(2,m2.getNumberOfCells());
7623 f=m2.getMeasureField(True);
7624 self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7625 self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7627 arr2=DataArrayInt.New()
7628 arr2.setValues(arr,2,1)
7629 m2,da=m.buildPartAndReduceNodes(arr2);
7630 self.assertEqual(5,m2.getNumberOfNodes());
7631 self.assertEqual(2,m2.getNumberOfCells());
7632 f=m2.getMeasureField(True);
7633 self.assertAlmostEqual(0.125,f.getArray().getIJ(0,0),12);
7634 self.assertAlmostEqual(0.25,f.getArray().getIJ(1,0),12);
7637 def testDAITransformWithIndArrR1(self):
7639 tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
7640 expected=[0,3,1,2,4,5]
7641 d=DataArrayInt.New();
7642 d.setValues(tab1,6,1);
7643 d1=DataArrayInt.New();
7644 d1.setValues(tab2,12,1);
7647 d3=d.transformWithIndArrR(d1);
7648 self.assertEqual(6,d3.getNumberOfTuples());
7649 self.assertEqual(1,d3.getNumberOfComponents());
7651 self.assertEqual(expected[i],d3.getIJ(i,0));
7655 d3=d.transformWithIndArrR(tab2)
7656 self.assertEqual(6,d3.getNumberOfTuples());
7657 self.assertEqual(1,d3.getNumberOfComponents());
7659 self.assertEqual(expected[i],d3.getIJ(i,0));
7663 def testDAISplitByValueRange1(self):
7664 val1=[6,5,0,3,2,7,8,1,4]
7666 d=DataArrayInt.New();
7667 d.setValues(val1,9,1);
7668 e,f,g=d.splitByValueRange(val2);
7669 self.assertEqual(9,e.getNumberOfTuples());
7670 self.assertEqual(1,e.getNumberOfComponents());
7671 self.assertEqual(9,f.getNumberOfTuples());
7672 self.assertEqual(1,f.getNumberOfComponents());
7673 self.assertEqual(2,g.getNumberOfTuples());
7674 self.assertEqual(1,g.getNumberOfComponents());
7676 expected1=[1,1,0,0,0,1,1,0,1]
7677 expected2=[2,1,0,3,2,3,4,1,0]
7679 self.assertEqual(expected1[i],e.getIJ(i,0));
7680 self.assertEqual(expected2[i],f.getIJ(i,0));
7682 self.assertEqual(0,g.getIJ(0,0));
7683 self.assertEqual(1,g.getIJ(1,0));
7686 self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
7689 def testUMeshSplitProfilePerType1(self):
7691 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7692 m.renumberCells(val0,False);
7695 d=DataArrayInt.New();
7696 d.setValues(val1,3,1);
7698 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7699 self.assertEqual(6,len(code));
7700 self.assertEqual(2,len(idsInPflPerType));
7701 expected1=[3,1,0, 4,2,1]
7703 self.assertEqual(expected1[i],code[i]);
7705 self.assertEqual(2,len(idsInPflPerType));
7706 self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7707 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7708 self.assertEqual(2,idsInPflPerType[1].getNumberOfTuples());
7709 self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7710 self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7712 self.assertEqual(2,len(pfls));
7713 self.assertEqual("sup",pfls[0].getName())
7714 self.assertEqual(1,pfls[0].getNumberOfTuples());
7715 self.assertEqual(0,pfls[0].getIJ(0,0));
7716 self.assertEqual("sup",pfls[1].getName())
7717 self.assertEqual(2,pfls[1].getNumberOfTuples());
7718 self.assertEqual(0,pfls[1].getIJ(0,0));
7719 self.assertEqual(1,pfls[1].getIJ(1,0));
7722 d=DataArrayInt.New();
7723 d.setValues(val2,4,1);
7724 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7725 self.assertEqual(6,len(code));
7726 self.assertEqual(2,len(idsInPflPerType));
7727 expected2=[3,1,0, 4,3,-1]
7729 self.assertEqual(expected2[i],code[i]);
7731 self.assertEqual(2,len(idsInPflPerType));
7732 self.assertEqual(1,idsInPflPerType[0].getNumberOfTuples());
7733 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7734 self.assertEqual(3,idsInPflPerType[1].getNumberOfTuples());
7735 self.assertEqual(1,idsInPflPerType[1].getIJ(0,0));
7736 self.assertEqual(2,idsInPflPerType[1].getIJ(1,0));
7737 self.assertEqual(3,idsInPflPerType[1].getIJ(2,0));
7739 self.assertEqual(1,len(pfls));
7740 self.assertEqual(1,pfls[0].getNumberOfTuples());
7741 self.assertEqual(0,pfls[0].getIJ(0,0));
7744 d=DataArrayInt.New();
7745 d.setValues(val3,3,1);
7746 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7747 self.assertEqual(6,len(code));
7748 self.assertEqual(2,len(idsInPflPerType));
7749 expected3=[3,2,0, 4,1,1]
7751 self.assertEqual(expected3[i],code[i]);
7753 self.assertEqual(2,len(idsInPflPerType));
7754 self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7755 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7756 self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7757 self.assertEqual(1,idsInPflPerType[1].getNumberOfTuples());
7758 self.assertEqual(2,idsInPflPerType[1].getIJ(0,0));
7760 self.assertEqual(2,len(pfls));
7761 self.assertEqual(2,pfls[0].getNumberOfTuples());
7762 self.assertEqual(1,pfls[0].getIJ(0,0));
7763 self.assertEqual(0,pfls[0].getIJ(1,0));
7764 self.assertEqual(0,pfls[1].getIJ(0,0));
7767 d=DataArrayInt.New();
7768 d.setValues(val4,2,1);
7769 code,idsInPflPerType,pfls=m.splitProfilePerType(d);
7770 self.assertEqual(3,len(code));
7771 self.assertEqual(1,len(idsInPflPerType));
7774 self.assertEqual(expected4[i],code[i]);
7776 self.assertEqual(1,len(idsInPflPerType));
7777 self.assertEqual(2,idsInPflPerType[0].getNumberOfTuples());
7778 self.assertEqual(0,idsInPflPerType[0].getIJ(0,0));
7779 self.assertEqual(1,idsInPflPerType[0].getIJ(1,0));
7781 self.assertEqual(1,len(pfls));
7782 self.assertEqual(2,pfls[0].getNumberOfTuples());
7783 self.assertEqual(1,pfls[0].getIJ(0,0));
7784 self.assertEqual(2,pfls[0].getIJ(1,0));
7787 def testDAIBuildExplicitArrByRanges1(self):
7788 d=DataArrayInt.New();
7790 d.setValues(vals1,3,1);
7791 e=DataArrayInt.New();
7792 vals2=[0,3,6,10,14,20]
7793 e.setValues(vals2,6,1);
7795 f=d.buildExplicitArrByRanges(e);
7796 self.assertEqual(11,f.getNumberOfTuples());
7797 self.assertEqual(1,f.getNumberOfComponents());
7798 expected1=[0,1,2,6,7,8,9,10,11,12,13]
7799 for i in xrange(11):
7800 self.assertEqual(expected1[i],f.getIJ(i,0));
7804 def testDAIComputeOffsets2(self):
7805 d=DataArrayInt.New();
7807 expected1=[0,3,8,9,11,11,19]
7808 d.setValues(vals1,6,1);
7809 d.computeOffsets2();
7810 self.assertEqual(7,d.getNumberOfTuples());
7811 self.assertEqual(1,d.getNumberOfComponents());
7813 self.assertEqual(expected1[i],d.getIJ(0,i));
7817 def testMergeField3(self):
7818 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7819 m.getCoords().setInfoOnComponent(0,"x [m]");
7820 m.getCoords().setInfoOnComponent(1,"z [km]");
7822 m.setDescription("desc");
7823 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7826 arr=DataArrayDouble.New();
7828 arr.setInfoOnComponent(0,"X [m]");
7829 arr.setInfoOnComponent(1,"YY [mm]");
7830 arr.fillWithValue(2.);
7833 f2=MEDCouplingFieldDouble.MergeFields([f1]);
7834 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
7838 def testGetDistributionOfTypes1(self):
7839 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7841 self.assertRaises(InterpKernelException,m.getDistributionOfTypes);
7842 m.renumberCells(tab1,False);
7843 code=m.getDistributionOfTypes();
7844 self.assertEqual(2,len(code));
7845 self.assertEqual(3,code[0][0]);
7846 self.assertEqual(2,code[0][1]);
7847 self.assertEqual(0,code[0][2]);
7848 self.assertEqual(4,code[1][0]);
7849 self.assertEqual(3,code[1][1]);
7850 self.assertEqual(0,code[1][2]);
7853 def testNorm2_1(self):
7854 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7855 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7858 d=DataArrayDouble.New();
7859 tab=[1.2,1.3,2.2,2.3,3.2,3.3,4.2,4.3,5.2,5.3]
7860 d.setValues(tab,5,2);
7864 self.assertAlmostEqual(11.209371079592289,f.norm2(),14);
7868 def testNormMax1(self):
7869 m=MEDCouplingDataForTest.build2DTargetMesh_1();
7870 f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
7873 d=DataArrayDouble.New();
7874 tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
7875 d.setValues(tab,5,2);
7879 self.assertAlmostEqual(7.8,f.normMax(),14);
7883 def testFindAndCorrectBadOriented3DExtrudedCells1(self):
7884 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];
7885 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]
7886 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]
7887 invalidCells=[2,3,6,7]
7888 m=MEDCouplingUMesh.New("Example",3);
7889 coo=DataArrayDouble.New();
7890 coo.setValues(coords,38,3);
7893 m.insertNextCell(NORM_PENTA6,6,conn[0:6])
7894 m.insertNextCell(NORM_PENTA6,6,conn[6:12])
7895 m.insertNextCell(NORM_PENTA6,6,conn[12:18])
7896 m.insertNextCell(NORM_PENTA6,6,conn[18:24])
7897 m.insertNextCell(NORM_HEXA8,8,conn[24:32])
7898 m.insertNextCell(NORM_HEXA8,8,conn[32:40])
7899 m.insertNextCell(NORM_HEXA8,8,conn[40:48])
7900 m.insertNextCell(NORM_HEXA8,8,conn[48:56])
7901 m.finishInsertingCells();
7903 v=m.findAndCorrectBadOriented3DExtrudedCells();
7904 self.assertEqual(4,len(v));
7905 self.assertEqual(v.getValues(),invalidCells);
7906 self.assertEqual(connExp,m.getNodalConnectivity().getValues());
7910 def testConvertExtrudedPolyhedra1(self):
7911 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]
7912 m=MEDCouplingUMesh.New("Example",3);
7913 coo=DataArrayDouble.New();
7915 coo.rearrange(1); coo.iota(0); coo.rearrange(3);
7918 m.insertNextCell(NORM_TETRA4,4,conn[0:4])
7919 m.insertNextCell(NORM_HEXA8,8,conn[4:12])
7920 m.insertNextCell(NORM_TETRA4,4,conn[12:16])
7921 m.insertNextCell(NORM_POLYHED,6,conn[16:22])
7922 m.insertNextCell(NORM_PENTA6,6,conn[22:28])
7923 m.insertNextCell(NORM_POLYHED,10,conn[28:38])
7924 m.insertNextCell(NORM_HEXA8,8,conn[38:46])
7925 m.insertNextCell(NORM_HEXGP12,12,conn[46:58])
7926 m.insertNextCell(NORM_POLYHED,14,conn[58:72])
7927 m.finishInsertingCells();
7929 m.convertExtrudedPolyhedra();
7930 da=m.getNodalConnectivity();
7931 dai=m.getNodalConnectivityIndex();
7932 self.assertEqual(10,dai.getNbOfElems());
7933 self.assertEqual(159,da.getNbOfElems());
7935 expected1=[14, 1, 2, 3, 4,
7936 18, 5, 6, 7, 8, 9, 10, 11, 12,
7938 31, 17, 18, 19, -1, 20, 22, 21, -1, 17, 18, 21, 20, -1, 18, 19, 22, 21, -1, 19, 17, 20, 22,
7939 16, 23, 24, 25, 26, 27, 28,
7940 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,
7941 18, 39, 40, 41, 42, 43, 44, 45, 46,
7942 22, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7943 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];
7944 expected2=[0,5,14,19,42,49,86,95,108,159]
7945 self.assertEqual(expected1,da.getValues());
7946 self.assertEqual(expected2,dai.getValues());
7950 def testNonRegressionCopyTinyStrings(self):
7951 m=MEDCouplingDataForTest.build2DTargetMesh_1()
7952 f1=m.getMeasureField(True)
7953 f1.getArray().setInfoOnComponent(0,"P [N/m^2]")
7954 bary=m.getBarycenterAndOwner()
7955 f2=f1.buildNewTimeReprFromThis(ONE_TIME,False)
7957 self.assertRaises(InterpKernelException,f2.copyTinyAttrFrom,f1)
7960 def testDaDSetPartOfValuesAdv1(self):
7961 tab1=[3.,4.,5., 13.,14.,15., 23.,24.,25., 33.,34.,35., 43.,44.,45., 53.,54.,55.]
7962 tab2=[6.,7.,8., 16.,17.,18., 26.,27.,28.]
7963 tab3=[4,1, 2,2, 3,0]
7964 a=DataArrayDouble.New();
7965 a.setValues(tab1,6,3);
7966 b=DataArrayDouble.New();
7967 b.setValues(tab2,3,3);
7968 c=DataArrayInt.New();
7969 c.setValues(tab3,3,2);
7971 a.setPartOfValuesAdv(b,c);
7972 expected1=[3.,4.,5., 13.,14.,15., 26.,27.,28., 6.,7.,8., 16.,17.,18., 53.,54.,55.]
7973 self.assertEqual(expected1,a.getValues());
7976 def testUMeshBuildSetInstanceFromThis1(self):
7977 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
7978 m2=m.buildSetInstanceFromThis(3);
7979 self.assertTrue(m.isEqual(m2,1e-12));
7981 m=MEDCouplingUMesh.New("toto",2);
7982 m2=m.buildSetInstanceFromThis(3);
7983 self.assertEqual(0,m2.getNumberOfNodes());
7984 self.assertEqual(0,m2.getNumberOfCells());
7987 def testUMeshMergeMeshesCVW1(self):
7988 m=MEDCouplingDataForTest.build3DSurfTargetMesh_1();
7989 m2=MEDCouplingUMesh.New("toto",2);
7990 m3=MEDCouplingUMesh.MergeUMeshes([m,m2]);
7991 m3.setName(m.getName());
7992 self.assertTrue(m.isEqual(m3,1e-12));
7995 def testChangeUnderlyingMeshWithCMesh1(self):
7996 mesh=MEDCouplingCMesh.New();
7997 coordsX=DataArrayDouble.New();
7998 arrX=[ -1., 1., 2., 4. ]
7999 coordsX.setValues(arrX,4,1);
8000 coordsY=DataArrayDouble.New();
8001 arrY=[ -2., 2., 4., 8. ]
8002 coordsY.setValues(arrY,4,1);
8003 coordsZ=DataArrayDouble.New();
8004 arrZ=[ -3., 3., 6., 12. ]
8005 coordsZ.setValues(arrZ,4,1);
8006 mesh.setCoords(coordsX,coordsY,coordsZ);
8007 f=mesh.getMeasureField(True)
8008 mesh2=mesh.deepCpy()
8009 for myId in [0,1,2,10,11,12,20,21,22]:
8010 f=mesh.getMeasureField(True)
8011 f.changeUnderlyingMesh(mesh2,myId,1e-12);
8013 mesh2.setName("uuuu")
8014 for myId in [1,2,10,11,12,20,21,22]:
8015 f=mesh.getMeasureField(True)
8016 f.changeUnderlyingMesh(mesh2,myId,1e-12);
8020 def testDADFindCommonTuples1(self):
8021 da=DataArrayDouble.New();
8023 array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8024 da.setValues(array1,6,1)
8025 c,cI=da.findCommonTuples(1e-2);
8028 self.assertEqual(3,c.getNbOfElems());
8029 self.assertEqual(2,cI.getNbOfElems());
8030 self.assertEqual(expected1,c.getValues())
8031 self.assertEqual(expected2,cI.getValues())
8032 c,cI=da.findCommonTuples(2e-1)
8033 expected3=[0,3,4,1,2]
8035 self.assertEqual(5,c.getNbOfElems());
8036 self.assertEqual(3,cI.getNbOfElems());
8037 self.assertEqual(expected3,c.getValues())
8038 self.assertEqual(expected4,cI.getValues())
8040 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]
8041 da.setValues(array2,6,2)
8042 c,cI=da.findCommonTuples(1e-2);
8043 self.assertEqual(3,c.getNbOfElems());
8044 self.assertEqual(2,cI.getNbOfElems());
8045 self.assertEqual(expected1,c.getValues())
8046 self.assertEqual(expected2,cI.getValues())
8047 c,cI=da.findCommonTuples(2e-1)
8048 self.assertEqual(5,c.getNbOfElems());
8049 self.assertEqual(3,cI.getNbOfElems());
8050 self.assertEqual(expected3,c.getValues())
8051 self.assertEqual(expected4,cI.getValues())
8053 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]
8054 da.setValues(array3,6,3)
8055 c,cI=da.findCommonTuples(1e-2);
8056 self.assertEqual(3,c.getNbOfElems());
8057 self.assertEqual(2,cI.getNbOfElems());
8058 self.assertEqual(expected1,c.getValues())
8059 self.assertEqual(expected2,cI.getValues())
8060 c,cI=da.findCommonTuples(2e-1)
8061 self.assertEqual(5,c.getNbOfElems());
8062 self.assertEqual(3,cI.getNbOfElems());
8063 self.assertEqual(expected3,c.getValues())
8064 self.assertEqual(expected4,cI.getValues())
8065 # nbOftuples=1, no common groups
8066 array11=[2.3,1.2,1.3,2.4,2.5,0.8]
8067 da.setValues(array11,6,1)
8068 c,cI=da.findCommonTuples(1e-2);
8069 self.assertEqual(0,c.getNbOfElems());
8070 self.assertEqual(1,cI.getNbOfElems());
8071 self.assertEqual([0],cI.getValues())
8074 da.setValues(array12,6,4) #bad NumberOfComponents
8075 self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2);
8078 def testDABack1(self):
8079 da=DataArrayDouble.New();
8080 array1=[2.3,1.2,1.3,2.3,2.301,0.8]
8081 da.setValues(array1,6,1);
8082 self.assertAlmostEqual(0.8,da.back(),14);
8084 self.assertRaises(InterpKernelException,da.back);
8086 self.assertRaises(InterpKernelException,da.back);
8088 da=DataArrayInt.New();
8090 da.setValues(array2,4,1);
8091 self.assertEqual(2,da.back());
8093 self.assertRaises(InterpKernelException,da.back);
8095 self.assertRaises(InterpKernelException,da.back);
8098 def testDADGetDifferentValues1(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)
8103 expected1=[2.301,1.2,1.3,0.8]
8104 dv=da.getDifferentValues(1e-2);
8105 self.assertEqual(4,dv.getNbOfElems());
8107 self.assertAlmostEqual(expected1[i],dv.getIJ(i,0),14);
8110 dv=da.getDifferentValues(2e-1);
8111 expected2=[2.301,1.3,0.8]
8112 self.assertEqual(3,dv.getNbOfElems());
8114 self.assertAlmostEqual(expected2[i],dv.getIJ(i,0),14);
8118 def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
8121 a=DataArrayInt.New();
8122 a.setValues(arr,5,1);
8123 b=DataArrayInt.New();
8124 b.setValues(arrI,3,1);
8125 ret,newNbTuple=DataArrayInt.BuildOld2NewArrayFromSurjectiveFormat2(10,a,b);
8126 expected=[0,1,2,0,3,4,5,4,6,4]
8127 self.assertEqual(10,ret.getNbOfElems());
8128 self.assertEqual(7,newNbTuple);
8129 self.assertEqual(1,ret.getNumberOfComponents());
8130 self.assertEqual(expected,ret.getValues());
8133 def testDADIReverse1(self):
8135 a=DataArrayInt.New();
8136 a.setValues(arr,6,1);
8137 self.assertEqual(2,a.back());
8140 self.assertEqual(arr[5-i],a.getIJ(i,0));
8142 a.setValues(arr[:-1],5,1);
8145 self.assertEqual(arr[4-i],a.getIJ(i,0));
8148 arr2=[0.,3.,5.,7.,9.,2.]
8149 b=DataArrayDouble.New();
8150 b.setValues(arr2,6,1);
8153 self.assertAlmostEqual(arr2[5-i],b.getIJ(i,0),14);
8155 b.setValues(arr2,5,1);
8156 self.assertAlmostEqual(9.,b.back(),14)
8159 self.assertAlmostEqual(arr2[4-i],b.getIJ(i,0),14);
8163 def testGetNodeIdsInUse1(self):
8164 m0=MEDCouplingDataForTest.build2DTargetMesh_1();
8166 m1=m0.buildPartOfMySelf(CellIds,True);
8167 arr,newNbOfNodes=m1.getNodeIdsInUse();
8168 expected=[-1,0,1,-1,2,3,-1,-1,-1]
8169 self.assertEqual(4,newNbOfNodes);
8170 self.assertEqual(9,arr.getNbOfElems());
8171 self.assertEqual(expected,arr.getValues());
8172 arr2=arr.invertArrayO2N2N2O(newNbOfNodes);
8173 self.assertEqual(4,arr2.getNbOfElems());
8175 self.assertEqual(expected2,arr2.getValues());
8178 def testBuildDescendingConnec2(self):
8179 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8181 mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8182 mesh2.checkCoherency();
8183 self.assertEqual(1,mesh2.getMeshDimension());
8184 self.assertEqual(13,mesh2.getNumberOfCells());
8185 self.assertEqual(14,revDescIndx.getNbOfElems()); self.assertEqual(14,revDescIndx.getNumberOfTuples());
8186 self.assertEqual(6,descIndx.getNbOfElems()); self.assertEqual(6,descIndx.getNumberOfTuples());
8187 self.assertEqual(18,desc.getNbOfElems()); self.assertEqual(18,desc.getNumberOfTuples());
8188 self.assertEqual(18,revDesc.getNbOfElems()); self.assertEqual(18,revDesc.getNumberOfTuples());
8189 expected1=[1,2,3,4,-3,5,6, 7,8,-5,9,10,-2,11, 12,13,-7,-10]
8190 self.assertEqual(expected1,desc.getValues());
8191 expected2=[0,4,7,10,14,18]
8192 self.assertEqual(expected2,descIndx.getValues());
8193 expected3=[0,1,3,5,6,8,9,11,12,13,15,16,17,18]
8194 self.assertEqual(expected3,revDescIndx.getValues());
8195 expected4=[0, 0,3, 0,1, 0, 1,2, 1, 2,4, 2, 3, 3,4, 3, 4, 4]
8196 self.assertEqual(expected4,revDesc.getValues());
8197 conn=mesh2.getNodalConnectivity();
8198 connIndex=mesh2.getNodalConnectivityIndex();
8199 expected5=[0,3,6,9,12,15,18,21,24,27,30,33,36,39]
8200 self.assertEqual(expected5,connIndex.getValues());
8201 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]
8202 self.assertEqual(expected6,conn.getValues());
8205 def testIntersect2DMeshesTmp1(self):
8206 m1c=MEDCouplingCMesh.New();
8207 coordsX=DataArrayDouble.New();
8208 arrX=[ -1., 1., 2., 4. ]
8209 coordsX.setValues(arrX,4,1);
8210 m1c.setCoordsAt(0,coordsX);
8211 coordsY=DataArrayDouble.New();
8212 arrY=[ -2., 2., 4., 8. ]
8213 coordsY.setValues(arrY,4,1);
8214 m1c.setCoordsAt(1,coordsY);
8215 m1=m1c.buildUnstructured()
8216 m1bis=m1.buildPartOfMySelf([3,4,5],False)
8218 m2=m2.buildPartOfMySelf([0,1,2],False)
8219 m2.translate([0.5,0.5])
8221 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1bis,m2,1e-10)
8222 expected1=[0,0,1,1,1,2,2,2]
8223 expected2=[0,-1,0,1,-1,1,2,-1]
8224 self.assertEqual(8,d1.getNumberOfTuples());
8225 self.assertEqual(8,d2.getNumberOfTuples());
8226 self.assertEqual(8,m3.getNumberOfCells());
8227 self.assertEqual(22,m3.getNumberOfNodes());
8228 self.assertEqual(2,m3.getSpaceDimension());
8229 self.assertEqual(expected1,d1.getValues());
8230 self.assertEqual(expected2,d2.getValues());
8231 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]
8232 expected4=[0,5,12,17,22,28,33,38,44]
8233 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]
8234 self.assertEqual(44,m3.getNodalConnectivity().getNumberOfTuples());
8235 self.assertEqual(9,m3.getNodalConnectivityIndex().getNumberOfTuples());
8236 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8237 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8238 for i in xrange(44):
8239 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8243 def testFindNodesOnLine1(self):
8244 mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
8252 res=mesh.findNodesOnLine(pt,vec,1e-12);
8253 self.assertEqual(3,len(res));
8254 self.assertEqual(expected1,res.getValues());
8256 mesh.changeSpaceDimension(3);
8257 mesh.rotate(pt2,vec2,pi/4.);
8258 res=mesh.findNodesOnLine(pt3,vec3,1e-12);
8259 self.assertEqual(3,len(res));
8260 self.assertEqual(expected1,res.getValues());
8263 def testIntersect2DMeshesTmp2(self):
8264 m1c=MEDCouplingCMesh.New();
8265 coordsX1=DataArrayDouble.New();
8266 arrX1=[ 0., 1., 1.5, 2. ]
8267 coordsX1.setValues(arrX1,4,1);
8268 m1c.setCoordsAt(0,coordsX1);
8269 coordsY1=DataArrayDouble.New();
8270 arrY1=[ 0., 1.5, 3.]
8271 coordsY1.setValues(arrY1,3,1);
8272 m1c.setCoordsAt(1,coordsY1);
8273 m1=m1c.buildUnstructured();
8274 m2c=MEDCouplingCMesh.New();
8275 coordsX2=DataArrayDouble.New();
8276 arrX2=[ 0., 1., 2. ]
8277 coordsX2.setValues(arrX2,3,1);
8278 m2c.setCoordsAt(0,coordsX2);
8279 coordsY2=DataArrayDouble.New();
8281 coordsY2.setValues(arrY2,3,1);
8282 m2c.setCoordsAt(1,coordsY2);
8283 m2=m2c.buildUnstructured();
8285 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8287 expected1=[0,0,1,1,2,2,3,4,5]
8288 expected2=[0,2,1,3,1,3,2,3,3]
8289 self.assertEqual(9,d1.getNumberOfTuples());
8290 self.assertEqual(9,d2.getNumberOfTuples());
8291 self.assertEqual(9,m3.getNumberOfCells());
8292 self.assertEqual(22,m3.getNumberOfNodes());
8293 self.assertEqual(2,m3.getSpaceDimension());
8294 self.assertEqual(expected1,d1.getValues());
8295 self.assertEqual(expected2,d2.getValues());
8296 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]
8297 expected4=[0,5,10,15,20,25,30,35,40,45]
8298 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]
8299 self.assertEqual(45,m3.getNodalConnectivity().getNumberOfTuples());
8300 self.assertEqual(10,m3.getNodalConnectivityIndex().getNumberOfTuples());
8301 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8302 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8303 for i in xrange(44):
8304 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8308 def testBuildPartOfMySelfSafe1(self):
8309 mesh=MEDCouplingDataForTest.build2DTargetMesh_1()
8310 self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True)
8311 self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,4,5,4],True)
8314 def testIntersect2DMeshesTmp3(self):
8315 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];
8316 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];
8317 m1=MEDCouplingUMesh.New();
8318 m1.setMeshDimension(2);
8319 m1.allocateCells(8);
8320 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8321 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8322 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8323 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8324 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8325 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8326 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8327 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8328 m1.finishInsertingCells();
8329 myCoords1=DataArrayDouble.New();
8330 myCoords1.setValues(m1Coords,25,2);
8331 m1.setCoords(myCoords1);
8333 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.]
8334 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]
8335 m2=MEDCouplingUMesh.New();
8336 m2.setMeshDimension(2);
8337 m2.allocateCells(8);
8339 m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8341 m2.finishInsertingCells();
8342 myCoords2=DataArrayDouble.New();
8343 myCoords2.setValues(m2Coords,15,2);
8344 m2.setCoords(myCoords2);
8346 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10)
8349 expected1=[0,1,1,1,2,3,3,3,4,5,5,5,6,7,7,7]
8350 expected2=[0,0,1,-1,2,2,3,-1,4,4,5,-1,6,6,7,-1]
8351 self.assertEqual(16,d1.getNumberOfTuples());
8352 self.assertEqual(16,d2.getNumberOfTuples());
8353 self.assertEqual(16,m3.getNumberOfCells());
8354 self.assertEqual(104,m3.getNumberOfNodes());
8355 self.assertEqual(2,m3.getSpaceDimension());
8356 self.assertEqual(expected1,d1.getValues());
8357 self.assertEqual(expected2,d2.getValues());
8358 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]
8359 expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8360 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]
8361 self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8362 self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8363 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8364 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8365 for i in xrange(208):
8366 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8370 def testUMeshTessellate2D1(self):
8371 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];
8372 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];
8373 m1=MEDCouplingUMesh.New();
8374 m1.setMeshDimension(2);
8375 m1.allocateCells(8);
8376 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8377 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8378 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8379 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8380 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8381 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8382 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8383 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8384 m1.finishInsertingCells();
8385 myCoords1=DataArrayDouble.New();
8386 myCoords1.setValues(m1Coords,25,2);
8387 m1.setCoords(myCoords1);
8390 m11.tessellate2D(1.);
8391 self.assertTrue(m11.getCoords().isEqual(m11.getCoords(),1e-12));
8392 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]
8393 expected2=[0,5,12,17,24,29,36,41,48]
8394 self.assertEqual(48,m11.getNodalConnectivity().getNumberOfTuples());
8395 self.assertEqual(9,m11.getNodalConnectivityIndex().getNumberOfTuples());
8396 self.assertEqual(expected1,m11.getNodalConnectivity().getValues());
8397 self.assertEqual(expected2,m11.getNodalConnectivityIndex().getValues());
8400 m12.tessellate2D(0.5);
8401 self.assertEqual(41,m12.getNumberOfNodes());
8402 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]
8403 expected4=[0,6,15,21,30,36,45,51,60]
8404 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]
8405 for i in xrange(82):
8406 self.assertAlmostEqual(expected5[i],m12.getCoords().getIJ(0,i),12);
8408 self.assertEqual(60,m12.getNodalConnectivity().getNumberOfTuples());
8409 self.assertEqual(9,m12.getNodalConnectivityIndex().getNumberOfTuples());
8410 self.assertEqual(expected3,m12.getNodalConnectivity().getValues());
8411 self.assertEqual(expected4,m12.getNodalConnectivityIndex().getValues());
8414 def testIntersect2DMeshesTmp4(self):
8415 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];
8416 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];
8417 m1=MEDCouplingUMesh.New();
8418 m1.setMeshDimension(2);
8419 m1.allocateCells(8);
8420 m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]);
8421 m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]);
8422 m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]);
8423 m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]);
8424 m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]);
8425 m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]);
8426 m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]);
8427 m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]);
8428 m1.finishInsertingCells();
8429 myCoords1=DataArrayDouble.New();
8430 myCoords1.setValues(m1Coords,25,2);
8431 m1.setCoords(myCoords1);
8433 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.]
8434 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]
8435 m2=MEDCouplingUMesh.New();
8436 m2.setMeshDimension(2);
8437 m2.allocateCells(8);
8439 m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)])
8441 m2.finishInsertingCells();
8442 myCoords2=DataArrayDouble.New();
8443 myCoords2.setValues(m2Coords,15,2);
8444 m2.setCoords(myCoords2);
8446 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10)
8449 expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
8450 expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1]
8451 self.assertEqual(16,d1.getNumberOfTuples());
8452 self.assertEqual(16,d2.getNumberOfTuples());
8453 self.assertEqual(16,m3.getNumberOfCells());
8454 self.assertEqual(104,m3.getNumberOfNodes());
8455 self.assertEqual(2,m3.getSpaceDimension());
8456 self.assertEqual(expected1,d1.getValues());
8457 self.assertEqual(expected2,d2.getValues());
8458 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]
8459 expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136]
8460 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]
8461 self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples());
8462 self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples());
8463 self.assertEqual(expected3,m3.getNodalConnectivity().getValues());
8464 self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues());
8465 for i in xrange(208):
8466 self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12);
8470 def testGetCellIdsCrossingPlane1(self):
8471 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8473 origin=[1.524,1.4552,1.74768]
8474 ids1=mesh3D.getCellIdsCrossingPlane(origin,vec,1e-10)
8475 self.assertEqual([1,3,4,7,9,10,13,15,16],ids1.getValues())
8477 ids2=mesh3D.getCellIdsCrossingPlane(origin,vec2,1e-10)
8478 self.assertEqual([6,7,8,9,10,11],ids2.getValues())
8481 def testBuildSlice3D1(self):
8482 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8483 vec1=[-0.07,1.,0.07]
8484 origin1=[1.524,1.4552,1.74768]
8485 slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
8486 expected1=[1,3,4,7,9,10,13,15,16]
8487 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]
8488 expected3=[0,6,11,17,22,27,32,37,42,47]
8489 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.]
8490 self.assertEqual(2,slice1.getMeshDimension());
8491 self.assertEqual(3,slice1.getSpaceDimension());
8492 self.assertEqual(57,slice1.getNumberOfNodes());
8493 self.assertEqual(9,slice1.getNumberOfCells());
8494 self.assertEqual(9,ids.getNumberOfTuples());
8495 self.assertEqual(47,slice1.getNodalConnectivity().getNumberOfTuples());
8496 self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8497 self.assertEqual(expected1,ids.getValues());
8498 self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8499 self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8500 for i in xrange(171):
8501 self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8503 # 2nd slice based on already existing nodes of mesh3D.
8506 slice1,ids=mesh3D.buildSlice3D(origin2,vec2,1e-10);
8507 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]
8508 expected6=[0,5,10,15,21,26,32,38,43,49]
8509 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]
8510 self.assertEqual(2,slice1.getMeshDimension());
8511 self.assertEqual(3,slice1.getSpaceDimension());
8512 self.assertEqual(60,slice1.getNumberOfNodes());
8513 self.assertEqual(9,slice1.getNumberOfCells());
8514 self.assertEqual(9,ids.getNumberOfTuples());
8515 self.assertEqual(49,slice1.getNodalConnectivity().getNumberOfTuples());
8516 self.assertEqual(10,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8517 self.assertEqual(expected1,ids.getValues());
8518 self.assertEqual(expected5,slice1.getNodalConnectivity().getValues());
8519 self.assertEqual(expected6,slice1.getNodalConnectivityIndex().getValues());
8520 for i in xrange(180):
8521 self.assertAlmostEqual(expected7[i],slice1.getCoords().getIJ(0,i),12);
8523 # 3rd slice based on shared face of mesh3D.
8526 slice1,ids=mesh3D.buildSlice3D(origin3,vec3,1e-10);
8527 expected8=[6,7,8,9,10,11,12,13,14,15,16,17]
8528 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]
8529 expected10=[0,5,12,17,22,29,34,39,46,51,56,63,68]
8530 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.]
8531 self.assertEqual(2,slice1.getMeshDimension());
8532 self.assertEqual(3,slice1.getSpaceDimension());
8533 self.assertEqual(45,slice1.getNumberOfNodes());
8534 self.assertEqual(12,slice1.getNumberOfCells());
8535 self.assertEqual(12,ids.getNumberOfTuples());
8536 self.assertEqual(68,slice1.getNodalConnectivity().getNumberOfTuples());
8537 self.assertEqual(13,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8538 self.assertEqual(expected8,ids.getValues());
8539 self.assertEqual(expected9,slice1.getNodalConnectivity().getValues());
8540 self.assertEqual(expected10,slice1.getNodalConnectivityIndex().getValues());
8541 for i in xrange(135):
8542 self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12);
8546 def testBuildSlice3DSurf1(self):
8547 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
8548 mesh2D=mesh3D.buildDescendingConnectivity()[0];
8549 vec1=[-0.07,1.,0.07]
8550 origin1=[1.524,1.4552,1.74768]
8551 slice1,ids=mesh2D.buildSlice3DSurf(origin1,vec1,1e-10);
8552 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]
8553 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]
8554 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];
8555 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.]
8556 self.assertEqual(1,slice1.getMeshDimension());
8557 self.assertEqual(3,slice1.getSpaceDimension());
8558 self.assertEqual(57,slice1.getNumberOfNodes());
8559 self.assertEqual(25,slice1.getNumberOfCells());
8560 self.assertEqual(25,ids.getNumberOfTuples());
8561 self.assertEqual(75,slice1.getNodalConnectivity().getNumberOfTuples());
8562 self.assertEqual(26,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8563 self.assertEqual(expected1,ids.getValues());
8564 self.assertEqual(expected2,slice1.getNodalConnectivity().getValues());
8565 self.assertEqual(expected3,slice1.getNodalConnectivityIndex().getValues());
8566 for i in xrange(171):
8567 self.assertAlmostEqual(expected4[i],slice1.getCoords().getIJ(0,i),12);
8572 slice1,ids=mesh2D.buildSlice3DSurf(origin2,vec2,1e-10);
8573 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]
8574 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]
8575 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];
8576 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.]
8577 self.assertEqual(1,slice1.getMeshDimension());
8578 self.assertEqual(3,slice1.getSpaceDimension());
8579 self.assertEqual(45,slice1.getNumberOfNodes());
8580 self.assertEqual(68,slice1.getNumberOfCells());
8581 self.assertEqual(68,ids.getNumberOfTuples());
8582 self.assertEqual(204,slice1.getNodalConnectivity().getNumberOfTuples());
8583 self.assertEqual(69,slice1.getNodalConnectivityIndex().getNumberOfTuples());
8584 self.assertEqual(expected5,ids.getValues());
8585 self.assertEqual(expected6,slice1.getNodalConnectivity().getValues());
8586 self.assertEqual(expected7,slice1.getNodalConnectivityIndex().getValues());
8587 for i in xrange(135):
8588 self.assertAlmostEqual(expected8[i],slice1.getCoords().getIJ(0,i),12);
8592 def testDataArrayDoubleAdvSetting1(self):
8593 data1=[1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.]
8594 data2=[8.,38.,9.,39.,0.,30.,11.,41.,12.,42.]
8595 compsCpp=["comp1","comp2"]
8596 da=DataArrayDouble.New();
8597 da.setInfoAndChangeNbOfCompo(compsCpp);
8600 compsCpp=compsCpp[:-1]
8601 self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8602 da.setValues(data1,7,2)
8604 p=[(0,3),(3,5),(5,7)]
8605 tmp=da.selectByTupleRanges(p);
8606 self.assertTrue(tmp.isEqual(da,1e-14));
8607 p=[(0,2),(3,4),(5,7)]
8608 tmp=da.selectByTupleRanges(p);
8609 expected1=[1.,11.,2.,12.,4.,14.,6.,16.,7.,17.]
8610 self.assertEqual(5,tmp.getNumberOfTuples());
8611 self.assertEqual(2,tmp.getNumberOfComponents());
8612 for i in xrange(10):
8613 self.assertAlmostEqual(expected1[i],tmp.getIJ(0,i),14);
8615 p=[(0,2),(0,2),(5,6)]
8616 tmp=da.selectByTupleRanges(p);
8617 expected2=[1.,11.,2.,12.,1.,11.,2.,12.,6.,16.]
8618 self.assertEqual(5,tmp.getNumberOfTuples());
8619 self.assertEqual(2,tmp.getNumberOfComponents());
8620 for i in xrange(10):
8621 self.assertAlmostEqual(expected2[i],tmp.getIJ(0,i),14);
8623 p=[(0,2),(-1,2),(5,6)]
8624 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8625 p=[(0,2),(0,2),(5,8)]
8626 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8628 da2=DataArrayDouble.New();
8629 da2.setValues(data2,5,2);
8632 dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8633 expected3=[1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.]
8634 for i in xrange(14):
8635 self.assertAlmostEqual(expected3[i],dac.getIJ(0,i),14);
8639 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8640 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8641 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8642 dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8643 expected4=[1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.]
8644 for i in xrange(14):
8645 self.assertAlmostEqual(expected4[i],dac.getIJ(0,i),14);
8648 ids=DataArrayInt.New();
8651 ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8652 dac.setContigPartOfSelectedValues(2,da2,ids);
8653 expected5=[1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.]
8654 for i in xrange(14):
8655 self.assertAlmostEqual(expected5[i],dac.getIJ(0,i),14);
8659 ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8660 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8661 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8662 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8663 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8664 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8666 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8668 dac.setContigPartOfSelectedValues(4,da2,ids);
8669 expected6=[1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.]
8670 for i in xrange(14):
8671 self.assertAlmostEqual(expected6[i],dac.getIJ(0,i),14);
8675 def testDataArrayIntAdvSetting1(self):
8676 data1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
8677 data2=[8,38,9,39,0,30,11,41,12,42]
8678 compsCpp=["comp1","comp2"]
8679 da=DataArrayInt.New();
8680 da.setInfoAndChangeNbOfCompo(compsCpp);
8683 compsCpp=compsCpp[:-1]
8684 self.assertRaises(InterpKernelException,da.setInfoAndChangeNbOfCompo,compsCpp);
8685 da.setValues(data1,7,2)
8687 p=[(0,3),(3,5),(5,7)]
8688 tmp=da.selectByTupleRanges(p);
8689 self.assertTrue(tmp.isEqual(da));
8690 p=[(0,2),(3,4),(5,7)]
8691 tmp=da.selectByTupleRanges(p);
8692 expected1=[1,11,2,12,4,14,6,16,7,17]
8693 self.assertEqual(5,tmp.getNumberOfTuples());
8694 self.assertEqual(2,tmp.getNumberOfComponents());
8695 for i in xrange(10):
8696 self.assertEqual(expected1[i],tmp.getIJ(0,i));
8698 p=[(0,2),(0,2),(5,6)]
8699 tmp=da.selectByTupleRanges(p);
8700 expected2=[1,11,2,12,1,11,2,12,6,16]
8701 self.assertEqual(5,tmp.getNumberOfTuples());
8702 self.assertEqual(2,tmp.getNumberOfComponents());
8703 for i in xrange(10):
8704 self.assertEqual(expected2[i],tmp.getIJ(0,i));
8706 p=[(0,2),(-1,2),(5,6)]
8707 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8708 p=[(0,2),(0,2),(5,8)]
8709 self.assertRaises(InterpKernelException,da.selectByTupleRanges,p);
8711 da2=DataArrayInt.New();
8712 da2.setValues(data2,5,2);
8715 dac.setContigPartOfSelectedValues2(1,da2,2,4,1);
8716 expected3=[1,11,0,30,11,41,4,14,5,15,6,16,7,17]
8717 for i in xrange(14):
8718 self.assertEqual(expected3[i],dac.getIJ(0,i));
8722 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,0,5,1);
8723 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,0,da2,4,6,1);
8724 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues2,3,da2,5,0,1);
8725 dac.setContigPartOfSelectedValues2(3,da2,1,5,1);
8726 expected4=[1,11,2,12,3,13,9,39,0,30,11,41,12,42]
8727 for i in xrange(14):
8728 self.assertEqual(expected4[i],dac.getIJ(0,i));
8731 ids=DataArrayInt.New();
8734 ids.setIJ(0,0,2); ids.setIJ(1,0,0); ids.setIJ(2,0,4);
8735 dac.setContigPartOfSelectedValues(2,da2,ids);
8736 expected5=[1,11,2,12,0,30,8,38,12,42,6,16,7,17]
8737 for i in xrange(14):
8738 self.assertEqual(expected5[i],dac.getIJ(0,i));
8742 ids.setIJ(0,0,2); ids.setIJ(1,0,5); ids.setIJ(2,0,4);
8743 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8744 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,-1);
8745 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,1,da2,ids);
8746 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8747 self.assertRaises(InterpKernelException,dac.setContigPartOfSelectedValues,5,da2,ids);
8749 ids.setIJ(0,0,2); ids.setIJ(1,0,2); ids.setIJ(2,0,1);
8751 dac.setContigPartOfSelectedValues(4,da2,ids);
8752 expected6=[1,11,2,12,3,13,4,14,0,30,0,30,9,39]
8753 for i in xrange(14):
8754 self.assertEqual(expected6[i],dac.getIJ(0,i));
8758 def testBuildDescendingConnec2Of3DMesh1(self):
8759 mesh=MEDCouplingDataForTest.build3DSourceMesh_1();
8761 mesh2,desc,descIndx,revDesc,revDescIndx=mesh.buildDescendingConnectivity2();
8762 mesh2.checkCoherency();
8763 self.assertEqual(2,mesh2.getMeshDimension());
8764 self.assertEqual(30,mesh2.getNumberOfCells());
8765 self.assertEqual(31,revDescIndx.getNbOfElems()); self.assertEqual(31,revDescIndx.getNumberOfTuples());
8766 self.assertEqual(13,descIndx.getNbOfElems()); self.assertEqual(13,descIndx.getNumberOfTuples());
8767 self.assertEqual(48,desc.getNbOfElems()); self.assertEqual(48,desc.getNumberOfTuples());
8768 self.assertEqual(48,revDesc.getNbOfElems()); self.assertEqual(48,revDesc.getNumberOfTuples());
8769 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]
8770 self.assertEqual(expected1,desc.getValues());
8771 expected2=[0,4,8,12,16,20,24,28,32,36,40,44,48]
8772 self.assertEqual(expected2,descIndx.getValues());
8773 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]
8774 self.assertEqual(expected3,revDescIndx.getValues());
8775 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]
8776 self.assertEqual(expected4,revDesc.getValues());
8777 conn=mesh2.getNodalConnectivity();
8778 connIndex=mesh2.getNodalConnectivityIndex();
8779 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]
8780 self.assertEqual(expected5,connIndex.getValues());
8781 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]
8782 self.assertEqual(expected6,conn.getValues());
8785 def testAre2DCellsNotCorrectlyOriented1(self):
8786 m1Coords=[1.,1.,-1.,-1.,-1.,-1.,1.,-1.]
8788 m1=MEDCouplingUMesh.New();
8789 m1.setMeshDimension(2);
8790 m1.allocateCells(1);
8791 m1.insertNextCell(NORM_QUAD4,4,m1Conn[0:4])
8792 m1.finishInsertingCells();
8793 myCoords1=DataArrayDouble.New();
8794 myCoords1.setValues(m1Coords,4,2);
8795 m1.setCoords(myCoords1);
8798 for i in xrange(18):
8799 vec2=[3.*cos(pi/9.*i),3.*sin(pi/9.*i)];
8801 m1Cpy.translate(vec2);
8802 self.assertRaises(InterpKernelException,m1Cpy.are2DCellsNotCorrectlyOriented,vec1,False);
8803 m1Cpy.changeSpaceDimension(3);
8804 res=m1Cpy.are2DCellsNotCorrectlyOriented(vec1,False)
8805 self.assertEqual([0],res.getValues());
8809 def testDataArrayAbs1(self):
8810 d1=DataArrayDouble.New();
8811 val1=[2.,-3.,-5.,6.,-7.,-8.,9.,10.,-11.,-12.,-13.,-15.]
8812 expected1=[2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.]
8813 d1.setValues(val1,6,2);
8814 d2=d1.convertToIntArr();
8817 for i in xrange(12):
8818 self.assertAlmostEqual(expected1[i],d1.getIJ(0,i),14);
8821 expected2=[2,3,5,6,7,8,9,10,11,12,13,15]
8823 for i in xrange(12):
8824 self.assertEqual(expected2[i],d2.getIJ(0,i));
8830 def testGetValueOn3(self):
8832 v2=[0.7,1.25,0.,2.,1.5]
8833 disp=[5.,50.,500.,6.,60.,600.,7.,70.,700.,8.,80.,800.]
8834 m=MEDCouplingUMesh.New("myMesh",1)
8837 m.allocateCells(nbCells)
8838 coords=DataArrayDouble.New() ; coords.setValues(v,nbNodes,1)
8840 m.insertNextCell(NORM_SEG2,2,[0,1])
8841 m.insertNextCell(NORM_SEG2,2,[2,1])
8842 m.insertNextCell(NORM_SEG2,2,[2,3])
8843 m.finishInsertingCells()
8844 f=MEDCouplingFieldDouble.New(ON_NODES)
8846 array=DataArrayDouble.New(); array.setValues(disp,m.getNumberOfNodes(),3)
8848 arr1=f.getValueOnMulti(v2)
8849 self.assertEqual(5,arr1.getNumberOfTuples());
8850 self.assertEqual(3,arr1.getNumberOfComponents());
8851 expected1=[5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.]
8852 for i in xrange(15):
8853 self.assertAlmostEqual(expected1[i],arr1.getIJ(0,i),14);
8857 def testGetNodeIdsOfCell2(self):
8858 m1c=MEDCouplingCMesh.New();
8859 coordsX=DataArrayDouble.New();
8860 arrX=[ -1., 1., 2., 4., 4.5 ]
8861 coordsX.setValues(arrX,5,1);
8862 coordsY=DataArrayDouble.New();
8863 arrY=[ -2., 2., 4., 8.]
8864 coordsY.setValues(arrY,4,1);
8865 coordsZ=DataArrayDouble.New();
8867 coordsZ.setValues(arrZ,3,1);
8869 m1c.setCoordsAt(0,coordsX);
8870 expected1=[[0,1],[1,2],[2,3],[3,4]]
8871 self.assertEqual(4,m1c.getNumberOfCells())
8872 for i in xrange(m1c.getNumberOfCells()):
8873 self.assertEqual(expected1[i],m1c.getNodeIdsOfCell(i))
8876 m1c.setCoordsAt(1,coordsY);
8877 self.assertEqual(12,m1c.getNumberOfCells())
8878 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]]
8879 for i in xrange(m1c.getNumberOfCells()):
8880 self.assertEqual(expected2[i],m1c.getNodeIdsOfCell(i))
8883 m1c.setCoordsAt(2,coordsZ);
8884 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]]
8885 self.assertEqual(24,m1c.getNumberOfCells())
8886 for i in xrange(m1c.getNumberOfCells()):
8887 self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i))
8891 def testSwigDADOp4(self):
8892 da=DataArrayDouble.New(range(6,30),12,2)
8893 self.assertEqual(12,da.getNumberOfTuples());
8894 self.assertEqual(2,da.getNumberOfComponents());
8895 for i in xrange(24):
8896 self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8898 # operator transpose
8900 self.assertEqual(2,da.getNumberOfTuples());
8901 self.assertEqual(12,da.getNumberOfComponents());
8902 for i in xrange(24):
8903 self.assertAlmostEqual(da.getIJ(0,i),float(i+6),13)
8907 da2=DataArrayDouble.New(12,1)
8910 for i in xrange(24):
8911 self.assertAlmostEqual(dabis.getIJ(0,i),-float(i+6),13)
8915 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.]
8916 for i in xrange(24):
8917 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8921 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.]
8922 self.assertEqual(12,da.getNumberOfTuples());
8923 self.assertEqual(2,da.getNumberOfComponents());
8924 for i in xrange(24):
8925 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
8927 for pos,elt in enumerate(dabis):
8930 self.assertEqual(12,da.getNumberOfTuples());
8931 self.assertEqual(2,da.getNumberOfComponents());
8934 self.assertAlmostEqual(li[0],100.,13) ; self.assertAlmostEqual(li[1],101.,13)
8937 da=DataArrayDouble.New(range(6,30),12,2)
8938 da2=DataArrayDouble.New(range(12),12,1)
8941 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.]
8942 for i in xrange(24):
8943 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8947 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.]
8948 self.assertEqual(12,da.getNumberOfTuples());
8949 self.assertEqual(2,da.getNumberOfComponents());
8950 for i in xrange(24):
8951 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
8953 for pos,elt in enumerate(dabis):
8956 self.assertEqual(12,da.getNumberOfTuples());
8957 self.assertEqual(2,da.getNumberOfComponents());
8958 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.]
8959 for i in xrange(24):
8960 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
8963 da=DataArrayDouble.New(range(6,30),12,2)
8964 da2=DataArrayDouble.New(range(12),12,1)
8967 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.]
8968 for i in xrange(24):
8969 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8973 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.]
8974 self.assertEqual(12,da.getNumberOfTuples());
8975 self.assertEqual(2,da.getNumberOfComponents());
8976 for i in xrange(24):
8977 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
8979 for pos,elt in enumerate(dabis):
8982 self.assertEqual(12,da.getNumberOfTuples());
8983 self.assertEqual(2,da.getNumberOfComponents());
8984 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]
8985 for i in xrange(24):
8986 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
8989 da=DataArrayDouble.New(range(6,30),12,2)
8990 da2=DataArrayDouble.New(range(1,13),12,1)
8993 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]
8994 for i in xrange(24):
8995 self.assertAlmostEqual(da.getIJ(0,i),expected1[i],13)
8999 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]
9000 self.assertEqual(12,da.getNumberOfTuples());
9001 self.assertEqual(2,da.getNumberOfComponents());
9002 for i in xrange(24):
9003 self.assertAlmostEqual(da.getIJ(0,i),expected2[i],13)
9005 for pos,elt in enumerate(dabis):
9008 self.assertEqual(12,da.getNumberOfTuples());
9009 self.assertEqual(2,da.getNumberOfComponents());
9010 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]
9011 for i in xrange(24):
9012 self.assertAlmostEqual(da.getIJ(0,i),expected3[i],13)
9016 def testSwigDAIOp4(self):
9017 da=DataArrayInt.New(range(6,30),12,2)
9018 self.assertEqual(12,da.getNumberOfTuples());
9019 self.assertEqual(2,da.getNumberOfComponents());
9020 for i in xrange(24):
9021 self.assertEqual(da.getIJ(0,i),i+6)
9023 # operator transpose
9025 self.assertEqual(2,da.getNumberOfTuples());
9026 self.assertEqual(12,da.getNumberOfComponents());
9027 for i in xrange(24):
9028 self.assertEqual(da.getIJ(0,i),i+6)
9032 da2=DataArrayInt.New(12,1)
9035 for i in xrange(24):
9036 self.assertEqual(dabis.getIJ(0,i),-(i+6))
9040 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]
9041 for i in xrange(24):
9042 self.assertEqual(da.getIJ(0,i),expected1[i])
9046 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]
9047 self.assertEqual(12,da.getNumberOfTuples());
9048 self.assertEqual(2,da.getNumberOfComponents());
9049 for i in xrange(24):
9050 self.assertEqual(da.getIJ(0,i),expected2[i])
9052 for pos,elt in enumerate(dabis):
9055 self.assertEqual(12,da.getNumberOfTuples());
9056 self.assertEqual(2,da.getNumberOfComponents());
9059 self.assertEqual(li[0],100) ; self.assertEqual(li[1],101)
9062 da=DataArrayInt.New(range(6,30),12,2)
9063 da2=DataArrayInt.New(range(12),12,1)
9066 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]
9067 for i in xrange(24):
9068 self.assertEqual(da.getIJ(0,i),expected1[i])
9072 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]
9073 self.assertEqual(12,da.getNumberOfTuples());
9074 self.assertEqual(2,da.getNumberOfComponents());
9075 for i in xrange(24):
9076 self.assertEqual(da.getIJ(0,i),expected2[i])
9078 for pos,elt in enumerate(dabis):
9081 self.assertEqual(12,da.getNumberOfTuples());
9082 self.assertEqual(2,da.getNumberOfComponents());
9083 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]
9084 for i in xrange(24):
9085 self.assertEqual(da.getIJ(0,i),expected3[i])
9088 da=DataArrayInt.New(range(6,30),12,2)
9089 da2=DataArrayInt.New(range(12),12,1)
9092 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]
9093 for i in xrange(24):
9094 self.assertEqual(da.getIJ(0,i),expected1[i])
9098 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]
9099 self.assertEqual(12,da.getNumberOfTuples());
9100 self.assertEqual(2,da.getNumberOfComponents());
9101 for i in xrange(24):
9102 self.assertEqual(da.getIJ(0,i),expected2[i])
9104 for pos,elt in enumerate(dabis):
9107 self.assertEqual(12,da.getNumberOfTuples());
9108 self.assertEqual(2,da.getNumberOfComponents());
9109 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]
9110 for i in xrange(24):
9111 self.assertEqual(da.getIJ(0,i),expected3[i])
9114 da=DataArrayInt.New(range(6,30),12,2)
9115 da2=DataArrayInt.New(range(1,13),12,1)
9118 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]
9119 for i in xrange(24):
9120 self.assertEqual(da.getIJ(0,i),expected1[i])
9123 da/=DataArrayInt.New([2,3],1,2)
9124 self.assertEqual(12,da.getNumberOfTuples());
9125 self.assertEqual(2,da.getNumberOfComponents());
9126 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]
9127 for i in xrange(24):
9128 self.assertEqual(da.getIJ(0,i),expected2[i])
9132 def testSwigDADOp5(self):
9133 da=DataArrayDouble.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9135 da2=DataArrayDouble.New([5.,8.,10.,12])
9136 self.assertEqual(4,da2.getNumberOfTuples());
9137 self.assertEqual(1,da2.getNumberOfComponents());
9139 self.assertEqual(4,da3.getNumberOfTuples());
9140 self.assertEqual(3,da3.getNumberOfComponents());
9141 expected1=[10.,11.,12.,16.,17.,14.,17.,8.,13.,21.,20.,22.]
9142 for i in xrange(12):
9143 self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9146 self.assertEqual(4,da3.getNumberOfTuples());
9147 self.assertEqual(3,da3.getNumberOfComponents());
9148 for i in xrange(12):
9149 self.assertAlmostEqual(da3.getIJ(0,i),expected1[i],13)
9151 # Test new API of classmethod DataArrayDouble.New
9152 vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9153 da=DataArrayDouble.New(vals)
9154 self.assertEqual(12,da.getNumberOfTuples());
9155 self.assertEqual(1,da.getNumberOfComponents());
9156 for i in xrange(12):
9157 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9159 da=DataArrayDouble.New(vals,12)
9160 self.assertEqual(12,da.getNumberOfTuples());
9161 self.assertEqual(1,da.getNumberOfComponents());
9162 for i in xrange(12):
9163 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9165 da=DataArrayDouble.New(vals,1,12)
9166 self.assertEqual(1,da.getNumberOfTuples());
9167 self.assertEqual(12,da.getNumberOfComponents());
9168 for i in xrange(12):
9169 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9171 da=DataArrayDouble.New(vals,6,2)
9172 self.assertEqual(6,da.getNumberOfTuples());
9173 self.assertEqual(2,da.getNumberOfComponents());
9174 for i in xrange(12):
9175 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9177 da=DataArrayDouble.New(vals,4,3)
9178 self.assertEqual(4,da.getNumberOfTuples());
9179 self.assertEqual(3,da.getNumberOfComponents());
9180 for i in xrange(12):
9181 self.assertAlmostEqual(da.getIJ(0,i),vals[i],13)
9183 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9184 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9185 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9186 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9189 def testSwigDADOp6(self):
9190 da=DataArrayInt.New([5,6,7,8,9,6,7,-2,3,9,8,10])
9192 da2=DataArrayInt.New([5,8,10,12])
9193 self.assertEqual(4,da2.getNumberOfTuples());
9194 self.assertEqual(1,da2.getNumberOfComponents());
9196 self.assertEqual(4,da3.getNumberOfTuples());
9197 self.assertEqual(3,da3.getNumberOfComponents());
9198 expected1=[10,11,12,16,17,14,17,8,13,21,20,22]
9199 for i in xrange(12):
9200 self.assertEqual(da3.getIJ(0,i),expected1[i])
9203 self.assertEqual(4,da3.getNumberOfTuples());
9204 self.assertEqual(3,da3.getNumberOfComponents());
9205 for i in xrange(12):
9206 self.assertEqual(da3.getIJ(0,i),expected1[i])
9208 da3=da+DataArrayInt.New(da2.getValues())
9209 # Test new API of classmethod DataArrayInt.New
9210 vals=[5,6,7,8,9,6,7,-2,3,9,8,10]
9211 da=DataArrayDouble.New(vals)
9212 self.assertEqual(12,da.getNumberOfTuples());
9213 self.assertEqual(1,da.getNumberOfComponents());
9214 for i in xrange(12):
9215 self.assertEqual(da.getIJ(0,i),vals[i])
9217 da=DataArrayDouble.New(vals,12)
9218 self.assertEqual(12,da.getNumberOfTuples());
9219 self.assertEqual(1,da.getNumberOfComponents());
9220 for i in xrange(12):
9221 self.assertEqual(da.getIJ(0,i),vals[i])
9223 da=DataArrayDouble.New(vals,1,12)
9224 self.assertEqual(1,da.getNumberOfTuples());
9225 self.assertEqual(12,da.getNumberOfComponents());
9226 for i in xrange(12):
9227 self.assertEqual(da.getIJ(0,i),vals[i])
9229 da=DataArrayDouble.New(vals,6,2)
9230 self.assertEqual(6,da.getNumberOfTuples());
9231 self.assertEqual(2,da.getNumberOfComponents());
9232 for i in xrange(12):
9233 self.assertEqual(da.getIJ(0,i),vals[i])
9235 da=DataArrayDouble.New(vals,4,3)
9236 self.assertEqual(4,da.getNumberOfTuples());
9237 self.assertEqual(3,da.getNumberOfComponents());
9238 for i in xrange(12):
9239 self.assertEqual(da.getIJ(0,i),vals[i])
9241 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,11);
9242 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,13);
9243 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,5,2);
9244 self.assertRaises(InterpKernelException,DataArrayDouble.New,vals,7,2);
9247 def testSwigDADOp9(self):
9248 l1=[(1.,2.,3),(4.,5.,6.),(7.,8.,9.),[10.,11.,12.]]
9249 da1=DataArrayDouble(l1,4,3)
9250 self.assertEqual(4,da1.getNumberOfTuples());
9251 self.assertEqual(3,da1.getNumberOfComponents());
9252 da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9253 self.assertTrue(da2.isEqual(da1,1e-12))
9254 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9255 da3=DataArrayDouble(l1,4)
9256 self.assertTrue(da3.isEqual(da1,1e-12))
9257 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9258 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9259 l1=[(1.,2.,3),(4.,(5.),((6.))),(7.,8.,9.),[10.,11.,12.]]
9260 da1=DataArrayDouble(l1,4,3)
9261 self.assertEqual(4,da1.getNumberOfTuples());
9262 self.assertEqual(3,da1.getNumberOfComponents());
9263 da2=DataArrayDouble(12) ; da2.iota(1.) ; da2.rearrange(3)
9264 self.assertTrue(da2.isEqual(da1,1e-12))
9265 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3,4);
9266 da3=DataArrayDouble(l1,4)
9267 self.assertTrue(da3.isEqual(da1,1e-12))
9268 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,3);
9269 self.assertRaises(InterpKernelException,DataArrayDouble.New,l1,5);
9271 l1=[(1,2,3),(4,5,6),(7,8,9),[10,11,12]]
9272 da1=DataArrayInt(l1,4,3)
9273 self.assertEqual(4,da1.getNumberOfTuples());
9274 self.assertEqual(3,da1.getNumberOfComponents());
9275 da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9276 self.assertTrue(da2.isEqual(da1))
9277 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9278 da3=DataArrayInt(l1,4)
9279 self.assertTrue(da3.isEqual(da1))
9280 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9281 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9282 l1=[(1,[2],3),(4,[(5)],6),((([7])),8,9),[10,11,12]]
9283 da1=DataArrayInt(l1,4,3)
9284 self.assertEqual(4,da1.getNumberOfTuples());
9285 self.assertEqual(3,da1.getNumberOfComponents());
9286 da2=DataArrayInt(12) ; da2.iota(1) ; da2.rearrange(3)
9287 self.assertTrue(da2.isEqual(da1))
9288 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3,4);
9289 da3=DataArrayInt(l1,4)
9290 self.assertTrue(da3.isEqual(da1))
9291 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,3);
9292 self.assertRaises(InterpKernelException,DataArrayInt.New,l1,5);
9295 def testRenumberNodesInConn1(self):
9296 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. ]
9297 mesh2DConn=[1,4,2, 4,5,2, 0,3,4,1, 6,7,4,3, 7,8,5,4]
9298 mesh2D=MEDCouplingUMesh.New("mesh",2);
9299 mesh2D.allocateCells(5);
9300 mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[0:3])
9301 mesh2D.insertNextCell(NORM_TRI3,3,mesh2DConn[3:6])
9302 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[6:10])
9303 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[10:14])
9304 mesh2D.insertNextCell(NORM_QUAD4,4,mesh2DConn[14:18])
9305 mesh2D.finishInsertingCells();
9306 myCoords=DataArrayDouble.New(mesh2DCoords,9,3);
9307 mesh2D.setCoords(myCoords);
9308 mesh2D.checkCoherency();
9310 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. ]
9311 mesh3DConn=[0,1,2,3,4,5,6,7]
9312 mesh3D=MEDCouplingUMesh.New("mesh",3);
9313 mesh3D.allocateCells(1);
9314 mesh3D.insertNextCell(NORM_HEXA8,8,mesh3DConn[:])
9315 mesh3D.finishInsertingCells();
9316 myCoords3D=DataArrayDouble.New(mesh3DCoords,8,3);
9317 mesh3D.setCoords(myCoords3D);
9318 mesh3D.checkCoherency();
9320 mesh3D_2=mesh3D.deepCpy();
9321 mesh2D_2=mesh2D.deepCpy();
9322 mesh3D_4=mesh3D.deepCpy();
9323 mesh2D_4=mesh2D.deepCpy();
9324 oldNbOf3DNodes=mesh3D.getNumberOfNodes();
9325 renumNodes=DataArrayInt.New();
9326 renumNodes.alloc(mesh2D.getNumberOfNodes(),1);
9327 renumNodes.iota(oldNbOf3DNodes);
9328 coo=DataArrayDouble.Aggregate(mesh3D.getCoords(),mesh2D.getCoords());
9329 mesh3D.setCoords(coo);
9330 mesh2D.setCoords(coo);
9331 mesh2DCpy=mesh2D.deepCpy()
9332 mesh2D_3=mesh2D.deepCpy();
9333 mesh2D_3.shiftNodeNumbersInConn(oldNbOf3DNodes);
9334 mesh2D.renumberNodesInConn(renumNodes);
9335 mesh2DCpy.renumberNodesInConn(renumNodes.getValues());
9336 self.assertTrue(mesh2D.isEqual(mesh2DCpy,1e-12))
9337 self.assertTrue(mesh2D.isEqual(mesh2D_3,1e-12))
9339 da1,da2=mesh3D.checkGeoEquivalWith(mesh3D_2,10,1e-12);
9340 self.assertTrue(da1==None);
9341 self.assertEqual(8,da2.getNumberOfTuples());
9342 self.assertEqual(1,da2.getNumberOfComponents());
9343 expected1=[8,11,12,9,4,5,6,7]
9345 self.assertEqual(expected1[i],da2.getIJ(i,0));
9348 da1,da2=mesh2D.checkGeoEquivalWith(mesh2D_2,10,1e-12);
9349 self.assertTrue(da1==None);
9350 self.assertEqual(9,da2.getNumberOfTuples());
9351 self.assertEqual(1,da2.getNumberOfComponents());
9353 self.assertEqual(8+i,da2.getIJ(i,0));
9356 mesh2D_5=mesh2D_4.deepCpy();
9357 mesh2D_5.translate([1.,0.,0.]);
9358 meshes=[mesh3D_4,mesh2D_4,mesh2D_5];
9359 MEDCouplingUMesh.PutUMeshesOnSameAggregatedCoords(meshes);
9360 self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9361 self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9362 mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9363 self.assertEqual(26,mesh3D_4.getNumberOfNodes());
9364 self.assertEqual(3,mesh3D_4.getSpaceDimension());
9365 self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9366 self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9367 self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9368 expected2=[18,0,1,2,3,4,5,6,7]
9369 expected3=[3,9,12,10, 3,12,13,10, 4,8,11,12,9, 4,14,15,12,11, 4,15,16,13,12]
9370 expected4=[3,18,21,19, 3,21,22,19, 4,17,20,21,18, 4,23,24,21,20, 4,24,25,22,21]
9371 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]
9372 self.assertEqual(expected2,mesh3D_4.getNodalConnectivity().getValues());
9373 self.assertEqual(expected3,mesh2D_4.getNodalConnectivity().getValues());
9374 self.assertEqual(expected4,mesh2D_5.getNodalConnectivity().getValues());
9375 for i in xrange(78):
9376 self.assertAlmostEqual(expected5[i],mesh3D_4.getCoords().getIJ(0,i),12);
9379 MEDCouplingUMesh.MergeNodesOnUMeshesSharingSameCoords(meshes,1e-12);
9380 mesh3D_4.checkCoherency(); mesh2D_4.checkCoherency(); mesh2D_5.checkCoherency();
9381 self.assertTrue(mesh3D_4.getCoords().getHiddenCppPointer()==mesh2D_4.getCoords().getHiddenCppPointer());
9382 self.assertTrue(mesh2D_4.getCoords().getHiddenCppPointer()==mesh2D_5.getCoords().getHiddenCppPointer());
9383 self.assertEqual(19,mesh3D_4.getNumberOfNodes());
9384 self.assertEqual(3,mesh3D_4.getSpaceDimension());
9385 self.assertEqual(9,mesh3D_4.getNodalConnectivity().getNumberOfTuples());
9386 self.assertEqual(23,mesh2D_4.getNodalConnectivity().getNumberOfTuples());
9387 self.assertEqual(23,mesh2D_5.getNodalConnectivity().getNumberOfTuples());
9388 expected6=[18,0,1,2,3,4,5,6,7]
9389 expected7=[3,3,2,8, 3,2,9,8, 4,0,1,2,3, 4,10,11,2,1, 4,11,12,9,2]
9390 expected8=[3,13,15,14, 3,15,16,14, 4,8,9,15,13, 4,12,17,15,9, 4,17,18,16,15]
9391 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.,
9392 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.,
9393 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.]
9394 self.assertEqual(expected6,mesh3D_4.getNodalConnectivity().getValues());
9395 self.assertEqual(expected7,mesh2D_4.getNodalConnectivity().getValues());
9396 self.assertEqual(expected8,mesh2D_5.getNodalConnectivity().getValues());
9397 for i in xrange(57):
9398 self.assertAlmostEqual(expected9[i],mesh3D_4.getCoords().getIJ(0,i),12);
9403 def testComputeNeighborsOfCells1(self):
9404 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9405 d1,d2=m.computeNeighborsOfCells();
9406 self.assertEqual(6,d2.getNumberOfTuples());
9407 self.assertEqual(10,d1.getNumberOfTuples());
9408 expected1=[0,2,4,6,8,10]
9409 expected2=[3,1,0,2,4,1,4,0,2,3]
9410 self.assertEqual(expected1,d2.getValues());
9411 self.assertEqual(expected2,d1.getValues());
9414 def testCheckButterflyCellsBug1(self):
9415 mesh2DCoords=[323.85,120.983748908684,317.5,131.982271536747,336.55,120.983748908686,330.2,131.982271536751,323.85,142.98079416481]
9416 mesh2DConn=[4,1,0,2,3]
9417 mesh2D=MEDCouplingUMesh.New("mesh",2);
9418 mesh2D.allocateCells(1);
9419 mesh2D.insertNextCell(NORM_POLYGON,5,mesh2DConn[0:5])
9420 mesh2D.finishInsertingCells();
9421 myCoords=DataArrayDouble.New(mesh2DCoords,5,2);
9422 mesh2D.setCoords(myCoords);
9423 mesh2D.checkCoherency();
9425 v=mesh2D.checkButterflyCells();
9426 self.assertTrue(v.empty());
9429 def testDataArrayIntRange1(self):
9430 d=DataArrayInt.Range(2,17,7);
9432 self.assertEqual(3,d.getNumberOfTuples());
9433 self.assertEqual(1,d.getNumberOfComponents());
9434 self.assertEqual(expected1,d.getValues());
9436 d=DataArrayInt.Range(2,23,7);
9437 self.assertEqual(3,d.getNumberOfTuples());
9438 self.assertEqual(1,d.getNumberOfComponents());
9439 self.assertEqual(expected1,d.getValues());
9441 d=DataArrayInt.Range(2,24,7);
9442 expected2=[2,9,16,23]
9443 self.assertEqual(4,d.getNumberOfTuples());
9444 self.assertEqual(1,d.getNumberOfComponents());
9445 self.assertEqual(expected2,d.getValues());
9447 d=DataArrayInt.Range(24,2,-7);
9448 expected3=[24,17,10,3]
9449 self.assertEqual(4,d.getNumberOfTuples());
9450 self.assertEqual(1,d.getNumberOfComponents());
9451 self.assertEqual(expected3,d.getValues());
9453 d=DataArrayInt.Range(23,2,-7);
9455 self.assertEqual(3,d.getNumberOfTuples());
9456 self.assertEqual(1,d.getNumberOfComponents());
9457 self.assertEqual(expected4,d.getValues());
9459 d=DataArrayInt.Range(23,22,-7);
9460 self.assertEqual(1,d.getNumberOfTuples());
9461 self.assertEqual(1,d.getNumberOfComponents());
9462 self.assertEqual(23,d.getIJ(0,0));
9464 d=DataArrayInt.Range(22,23,7);
9465 self.assertEqual(1,d.getNumberOfTuples());
9466 self.assertEqual(1,d.getNumberOfComponents());
9467 self.assertEqual(22,d.getIJ(0,0));
9469 d=DataArrayInt.Range(22,22,7);
9470 self.assertEqual(0,d.getNumberOfTuples());
9471 self.assertEqual(1,d.getNumberOfComponents());
9473 d=DataArrayInt.Range(22,22,-7);
9474 self.assertEqual(0,d.getNumberOfTuples());
9475 self.assertEqual(1,d.getNumberOfComponents());
9477 self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,-7);
9478 self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,7);
9479 self.assertRaises(InterpKernelException,DataArrayInt.Range,23,22,0);
9480 self.assertRaises(InterpKernelException,DataArrayInt.Range,22,23,0);
9483 def testSwigUMeshGetItem1(self):
9484 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9485 subMesh=m.buildPartOfMySelf([1,3],True);
9486 self.assertTrue(isinstance(subMesh,MEDCouplingUMesh))
9488 self.assertTrue(isinstance(m1,MEDCouplingUMesh))
9490 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9492 self.assertTrue(isinstance(m3,MEDCouplingUMesh))
9493 m4=m[DataArrayInt.New([1,3])]
9495 self.assertTrue(isinstance(m5_1,MEDCouplingUMesh))
9497 self.assertTrue(isinstance(m5_2,MEDCouplingUMesh))
9498 m5=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m5_1,m5_2]);
9499 m5.setName(subMesh.getName())
9500 self.assertTrue(isinstance(m4,MEDCouplingUMesh))
9501 self.assertTrue(subMesh.isEqual(m1,1e-12))
9502 self.assertTrue(subMesh.isEqual(m2,1e-12))
9503 self.assertTrue(subMesh.isEqual(m3,1e-12))
9504 self.assertTrue(subMesh.isEqual(m4,1e-12))
9505 self.assertTrue(subMesh.isEqual(m5,1e-12))
9506 self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[1,5],True);
9509 def testSwigGetItem3(self):
9510 da=DataArrayInt.New([4,5,6])
9511 self.assertEqual(5,da[1])
9512 self.assertRaises(InterpKernelException,da.__getitem__,-1)
9513 self.assertRaises(InterpKernelException,da.__getitem__,3)
9514 da=DataArrayInt.New([4,5,6,7,8,9],2,3)
9515 self.assertEqual(9,da[1,2])
9516 da=DataArrayDouble.New([4.1,5.2,6.3])
9517 self.assertAlmostEqual(5.2,da[1],12)
9518 self.assertRaises(InterpKernelException,da.__getitem__,-1)
9519 self.assertRaises(InterpKernelException,da.__getitem__,3)
9520 da=DataArrayDouble.New([4.12,5.12,6.12,7.12,8.12,9.12],2,3)
9521 self.assertAlmostEqual(9.12,da[1,2],12)
9524 def testSwigDADISub1(self):
9525 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
9526 bary=mesh3D.getBarycenterAndOwner()
9528 pts=bary.getDifferentValues(1e-12)
9529 expected=[[0,6,12],[1,7,13],[2,8,14],[3,9,15],[4,10,16],[5,11,17]]
9530 for pos,pt in enumerate(pts):
9533 norm=bary2.magnitude()
9534 self.assertEqual(expected[pos],norm.getIdsInRange(-1.,1e-5).getValues())
9536 expected2=[[3.,54.],[-141.,180.],[21.,54.],[39.,72.],[-15.,90.],[21.,90.]]
9537 for pos,pt in enumerate(pts):
9540 self.assertAlmostEqual(expected2[pos][0],bary2.accumulate()[0],12);
9541 self.assertAlmostEqual(expected2[pos][1],bary2.accumulate()[1],12);
9543 expected3=[[-3.,22.5],[45.,337.5],[-9., 22.5],[-15.,67.5],[3.,112.5],[-9.,112.5]]
9544 for pos,pt in enumerate(pts):
9547 self.assertAlmostEqual(expected3[pos][0],bary2.accumulate()[0],12);
9548 self.assertAlmostEqual(expected3[pos][1],bary2.accumulate()[1],12);
9550 expected4=[[-12.,90.],[0.8,6.],[-4,90.],[-2.4,30.],[12.,18],[-4,18.]]
9551 for pos,pt in enumerate(pts):
9554 self.assertAlmostEqual(expected4[pos][0],bary2.accumulate()[0],12);
9555 self.assertAlmostEqual(expected4[pos][1],bary2.accumulate()[1],12);
9558 d=DataArrayInt.New([1,2,0,1,0,2],3,2)
9559 e=DataArrayInt.New([1,11,101,2,12,102,3,13,103,4,14,104],4,3)
9560 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]]
9561 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]]
9562 for pos,tup in enumerate(d):
9564 self.assertTrue(isinstance(f,DataArrayInt))
9566 self.assertEqual(expected5[pos],f.getValues())
9567 self.assertEqual(6*[77],f[tup].getValues())
9570 self.assertEqual(expected6[pos],f.getValues())
9571 self.assertEqual(8*[77],f[:,tup].getValues())
9574 e=e.convertToDblArr()
9575 for pos,tup in enumerate(d):
9577 self.assertTrue(isinstance(f,DataArrayDouble))
9579 self.assertEqual(expected5[pos],f.convertToIntArr().getValues())
9580 self.assertEqual(6*[77],f[tup].convertToIntArr().getValues())
9583 self.assertEqual(expected6[pos],f.convertToIntArr().getValues())
9584 self.assertEqual(8*[77],f[:,tup].convertToIntArr().getValues())
9588 def testDataArrayDoubleGetMinMaxPerComponent1(self):
9589 values1=[1.,2.,3.,-0.9,2.1,3.,1.3,1.7,3.,1.,1.8,3.]
9590 d1=DataArrayDouble.New();
9591 self.assertRaises(InterpKernelException,d1.getMinMaxPerComponent)
9592 d1=DataArrayDouble.New(values1,4,3);
9593 res=d1.getMinMaxPerComponent();
9594 self.assertTrue(isinstance(res,list))
9595 self.assertEqual(3,len(res))
9597 self.assertTrue(isinstance(res[i],tuple))
9598 self.assertEqual(2,len(res[i]))
9600 expected1=[-0.9,1.3,1.7,2.1,3.,3.]
9602 self.assertAlmostEqual(expected1[i],res[i/2][i%2],14)
9606 res=d1.getMinMaxPerComponent();
9607 self.assertTrue(isinstance(res,list))
9608 self.assertEqual(2,len(res))
9610 self.assertTrue(isinstance(res[i],tuple))
9611 self.assertEqual(2,len(res[i]))
9613 expected2=[1.,3.,-0.9,3.]
9615 self.assertAlmostEqual(expected2[i],res[i/2][i%2],14)
9619 res=d1.getMinMaxPerComponent();
9620 self.assertTrue(isinstance(res,list))
9621 self.assertEqual(1,len(res))
9623 self.assertTrue(isinstance(res[i],tuple))
9624 self.assertEqual(2,len(res[i]))
9628 self.assertAlmostEqual(expected3[i],res[i/2][i%2],14)
9632 def testDataArrayIntGetHashCode1(self):
9633 d1=DataArrayInt.New(range(3545))
9634 d2=DataArrayInt.New(range(3545))
9635 self.assertEqual(d2.getHashCode(),d1.getHashCode())
9636 self.assertEqual(232341068,d1.getHashCode())
9638 self.assertEqual(232340188,d1.getHashCode())
9641 def testZipConnectivityPol1(self):
9642 m1=MEDCouplingDataForTest.build2DTargetMesh_1();
9644 m2_1=m1.buildPartOfMySelf(cells1,True);
9646 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9647 # no permutation policy 0
9648 isOk,arr=m1.areCellsIncludedIn(m2,0)
9649 self.assertTrue(isOk);
9650 self.assertEqual(3,arr.getNumberOfTuples());
9651 self.assertEqual(1,arr.getNumberOfComponents());
9652 self.assertEqual(cells1,arr.getValues())
9653 # no permutation policy 1
9654 isOk,arr=m1.areCellsIncludedIn(m2,1)
9655 self.assertTrue(isOk);
9656 self.assertEqual(3,arr.getNumberOfTuples());
9657 self.assertEqual(1,arr.getNumberOfComponents());
9658 self.assertEqual(cells1,arr.getValues())
9659 # no permutation policy 2
9660 isOk,arr=m1.areCellsIncludedIn(m2,2)
9661 self.assertTrue(isOk);
9662 self.assertEqual(3,arr.getNumberOfTuples());
9663 self.assertEqual(1,arr.getNumberOfComponents());
9664 self.assertEqual(cells1,arr.getValues())
9665 # some modification into m2
9667 m2.getNodalConnectivity()[1:4]=modif1
9668 #policy 0 fails because cell0 in m2 has same orientation be not same connectivity
9670 isOk,arr=m1.areCellsIncludedIn(m2,0)
9671 self.assertTrue(not isOk);
9672 self.assertEqual(3,arr.getNumberOfTuples());
9673 self.assertEqual(1,arr.getNumberOfComponents());
9674 self.assertEqual(expected1,arr.getValues())
9675 #policy 1 succeeds because cell0 in m2 has not exactly the same conn
9676 isOk,arr=m1.areCellsIncludedIn(m2,1)
9677 self.assertTrue(isOk);
9678 self.assertEqual(3,arr.getNumberOfTuples());
9679 self.assertEqual(1,arr.getNumberOfComponents());
9680 self.assertEqual(cells1,arr.getValues())
9681 #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9682 isOk,arr=m1.areCellsIncludedIn(m2,2)
9683 self.assertTrue(isOk);
9684 self.assertEqual(3,arr.getNumberOfTuples());
9685 self.assertEqual(1,arr.getNumberOfComponents());
9686 self.assertEqual(cells1,arr.getValues())
9687 #some new modification into m2
9689 m2.getNodalConnectivity()[1:4]=modif2
9690 #policy 0 fails because cell0 in m2 has not exactly the same conn
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 fails too because cell0 in m2 has not same orientation
9697 isOk,arr=m1.areCellsIncludedIn(m2,1)
9698 self.assertTrue(not isOk);
9699 self.assertEqual(3,arr.getNumberOfTuples());
9700 self.assertEqual(1,arr.getNumberOfComponents());
9701 self.assertEqual(expected1,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())
9710 m1=MEDCouplingDataForTest.build1DSourceMesh_2();
9711 m2_1=m1.buildPartOfMySelf(cells2,True);
9713 self.assertTrue(isinstance(m2,MEDCouplingUMesh))
9714 # no permutation policy 0
9715 isOk,arr=m1.areCellsIncludedIn(m2,0)
9716 self.assertTrue(isOk);
9717 self.assertEqual(2,arr.getNumberOfTuples());
9718 self.assertEqual(1,arr.getNumberOfComponents());
9719 self.assertEqual(cells2,arr.getValues())
9720 # no permutation policy 1
9721 isOk,arr=m1.areCellsIncludedIn(m2,1)
9722 self.assertTrue(isOk);
9723 self.assertEqual(2,arr.getNumberOfTuples());
9724 self.assertEqual(1,arr.getNumberOfComponents());
9725 self.assertEqual(cells2,arr.getValues())
9726 # no permutation policy 2
9727 isOk,arr=m1.areCellsIncludedIn(m2,2)
9728 self.assertTrue(isOk);
9729 self.assertEqual(2,arr.getNumberOfTuples());
9730 self.assertEqual(1,arr.getNumberOfComponents());
9731 self.assertEqual(cells2,arr.getValues())
9732 # some modification into m2
9734 m2.getNodalConnectivity()[1:3]=modif3
9735 #policy 0 fails because cell0 in m2 has not exactly the same conn
9737 isOk,arr=m1.areCellsIncludedIn(m2,0)
9738 self.assertTrue(not isOk);
9739 self.assertEqual(2,arr.getNumberOfTuples());
9740 self.assertEqual(1,arr.getNumberOfComponents());
9741 self.assertEqual(expected2,arr.getValues())
9742 #policy 1 fails too because cell0 in m2 has not same orientation
9743 isOk,arr=m1.areCellsIncludedIn(m2,1)
9744 self.assertTrue(not isOk);
9745 self.assertEqual(2,arr.getNumberOfTuples());
9746 self.assertEqual(1,arr.getNumberOfComponents());
9747 self.assertEqual(expected2,arr.getValues())
9748 #policy 2 succeeds because cell0 in m2 has same nodes in connectivity
9749 isOk,arr=m1.areCellsIncludedIn(m2,2)
9750 self.assertTrue(isOk);
9751 self.assertEqual(2,arr.getNumberOfTuples());
9752 self.assertEqual(1,arr.getNumberOfComponents());
9753 self.assertEqual(cells2,arr.getValues())
9756 def toSeeIfDaIIopsAreOK(self,d):
9764 def testSwigDAIOp5(self):
9765 d=DataArrayInt.New([4,5,6,10,3,-1],2,3)
9766 self.toSeeIfDaIIopsAreOK(d)
9767 dExp=DataArrayInt.New([2,4,6,0,0,6],2,3)
9768 self.assertTrue(d.isEqual(dExp));
9771 def toSeeIfDaDIopsAreOK(self,d):
9778 def testSwigDADOp7(self):
9779 d=DataArrayDouble.New([4.,5.,6.,10.,3.,-1.],2,3)
9780 self.toSeeIfDaDIopsAreOK(d)
9781 dExp=DataArrayDouble.New([16.,18.,20.,28.,14.,6.],2,3)
9782 self.assertTrue(d.isEqual(dExp,1e-14));
9785 def testConvexEnvelop2D1(self):
9786 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]
9787 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]
9788 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]
9790 m=MEDCouplingUMesh.New("convexhull",2);
9791 m.allocateCells(331);
9792 for i in xrange(331):
9793 m.insertNextCell(NORM_POLYGON,conn[connI[i]:connI[i+1]]);
9795 m.finishInsertingCells();
9796 coordsDa=DataArrayDouble.New(coords,331,2);
9797 m.setCoords(coordsDa);
9800 da=m.convexEnvelop2D();
9802 self.assertEqual(coordsDa.getHiddenCppPointer(),m.getCoords().getHiddenCppPointer())
9803 daC=da.buildComplement(m.getNumberOfCells());
9804 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]);
9805 self.assertTrue(expected2.isEqual(daC));
9807 vals=m.getMeasureField(ON_CELLS).getArray()
9808 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]
9809 vals-=DataArrayDouble.New(ref)
9811 theTest=vals.getIdsInRange(-1.,1e-7)
9812 self.assertTrue(theTest.isIdentity())
9813 self.assertEqual(331,len(theTest))
9816 def testSwigDAIOp8(self):
9817 da=DataArrayInt.New([7,5,6,7,8,9,9,10,12,13,47,15])
9818 self.assertTrue(7 in da)
9819 self.assertTrue(47 in da)
9820 self.assertTrue(15 in da)
9821 self.assertEqual(0,da.index(7))
9822 self.assertEqual(10,da.index(47))
9823 self.assertTrue(14 not in da)
9824 self.assertEqual(5,da.search([9,9]))
9825 self.assertEqual(-1,da.search([5,8]))
9827 self.assertTrue([47,16] not in da)
9828 self.assertTrue([5,6] not in da)
9829 self.assertTrue([6,7] in da)
9830 self.assertEqual(4,da.index([12,13]))
9833 def testDataArraySort1(self):
9834 arr=DataArrayInt.New();
9835 self.assertRaises(InterpKernelException,arr.sort,True)
9836 self.assertRaises(InterpKernelException,arr.sort,False)
9837 values=[2,1,6,5,4,7]
9839 self.assertRaises(InterpKernelException,arr.sort,True)
9840 self.assertRaises(InterpKernelException,arr.sort,False)
9842 arr.setValues(values,6,1)
9846 expected1=[1,2,4,5,6,7]
9847 self.assertEqual(6,arr1.getNumberOfTuples());
9848 self.assertEqual(1,arr1.getNumberOfComponents());
9849 self.assertEqual(expected1,arr1.getValues());
9851 expected2=[7,6,5,4,2,1]
9852 self.assertEqual(6,arr2.getNumberOfTuples());
9853 self.assertEqual(1,arr2.getNumberOfComponents());
9854 self.assertTrue(expected2,arr2.getValues());
9856 ard=DataArrayDouble.New();
9857 self.assertRaises(InterpKernelException,ard.sort,True)
9858 self.assertRaises(InterpKernelException,ard.sort,False)
9859 valuesD=[2.,1.,6.,5.,4.,7.]
9861 self.assertRaises(InterpKernelException,ard.sort,True)
9862 self.assertRaises(InterpKernelException,ard.sort,False)
9864 ard.setValues(valuesD,6,1)
9868 expected3=[1.,2.,4.,5.,6.,7.]
9869 self.assertEqual(6,ard1.getNumberOfTuples());
9870 self.assertEqual(1,ard1.getNumberOfComponents());
9872 self.assertAlmostEqual(expected3[i],ard1.getIJ(i,0),12)
9875 expected4=[7.,6.,5.,4.,2.,1.]
9876 self.assertEqual(6,ard2.getNumberOfTuples());
9877 self.assertEqual(1,ard2.getNumberOfComponents());
9879 self.assertAlmostEqual(expected4[i],ard2.getIJ(i,0),12)
9883 def testPartitionBySpreadZone1(self):
9884 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9885 m4=MEDCouplingUMesh.MergeUMeshes([m,m[-3:],m[0:2]]);
9886 m4.renumberCells([5,2,9,6,4,7,0,1,3,8]);
9888 v2=m4.partitionBySpreadZone();
9889 self.assertTrue(3,len(v2));
9890 self.assertTrue(v2[0].isEqual(DataArrayInt.New([0,1,7])))
9891 self.assertTrue(v2[1].isEqual(DataArrayInt.New([2,4,5,6,9])))
9892 self.assertTrue(v2[2].isEqual(DataArrayInt.New([3,8])))
9894 m5=m4.buildSpreadZonesWithPoly();
9895 self.assertEqual(3,m5.getNumberOfCells());
9896 self.assertTrue(m5.getCoords().getHiddenCppPointer()==m4.getCoords().getHiddenCppPointer());
9897 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())
9898 self.assertEqual([0,8,17,23],m5.getNodalConnectivityIndex().getValues())
9902 def testGiveCellsWithType1(self):
9905 m=MEDCouplingDataForTest.build2DTargetMesh_1();
9906 da=m.giveCellsWithType(NORM_TRI3);
9907 self.assertEqual(2,da.getNumberOfTuples());
9908 self.assertEqual(1,da.getNumberOfComponents());
9909 self.assertEqual(expected0,da.getValues())
9911 da=m.giveCellsWithType(NORM_QUAD4);
9912 self.assertEqual(3,da.getNumberOfTuples());
9913 self.assertEqual(1,da.getNumberOfComponents());
9914 self.assertEqual(expected1,da.getValues())
9916 da=m.giveCellsWithType(NORM_TRI6);
9917 self.assertEqual(0,da.getNumberOfTuples());
9918 self.assertEqual(1,da.getNumberOfComponents());
9920 self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_SEG2)
9921 self.assertRaises(InterpKernelException,m.giveCellsWithType,NORM_HEXA8)
9924 def testSwigDAOp1(self):
9925 d=DataArrayDouble.New(5,2)
9926 d.rearrange(1) ; d.iota(2.) ; d.rearrange(2)
9927 d.setInfoOnComponents(["X [m]","Y [m]"])
9931 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))
9932 d1bis=DataArrayDouble.New([8,9],1,2)+d
9933 self.assertTrue(d1bis.isEqual(d1,1e-12))
9935 self.assertTrue(d1ter.isEqual(d1,1e-12))
9938 self.assertTrue(d2.isEqual(d,1e-12))
9939 self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])#[8,9]-d1
9942 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))
9943 d3bis=DataArrayDouble.New([8,9],1,2)*d
9944 self.assertTrue(d3bis.isEqual(d3,1e-12))
9946 self.assertTrue(d3ter.isEqual(d3,1e-12))
9949 self.assertTrue(d4.isEqual(d,1e-12))
9951 d=DataArrayInt.New(5,2)
9952 d.rearrange(1) ; d.iota(2) ; d.rearrange(2)
9953 d.setInfoOnComponents(["X [m]","Y [m]"])
9957 self.assertEqual(d1.getValues(),[10,12,12,14,14,16,16,18,18,20])
9958 d1bis=DataArrayInt.New([8,9],1,2)+d
9959 self.assertTrue(d1bis.isEqual(d1))
9961 self.assertTrue(d1ter.isEqual(d1))
9964 self.assertTrue(d2.isEqual(d))
9965 self.assertRaises(InterpKernelException,d1.__rsub__,[8,9])
9968 self.assertEqual(d3.getValues(),[16,27,32,45,48,63,64,81,80,99])
9969 d3bis=DataArrayInt.New([8,9],1,2)*d
9970 self.assertTrue(d3bis.isEqual(d3))
9972 self.assertTrue(d3ter.isEqual(d3))
9975 self.assertTrue(d4.isEqual(d))
9978 self.assertEqual(d5.getValues(),[2,3,0,0,2,2,0,4,2,1])
9981 def testSwigSelectTupleId2DAIBug1(self):
9982 da=DataArrayInt.New([0,1,2,3,12,13,4,5,6,7,14,15,8,9,10,11,16,17])
9983 self.assertEqual([2,6,10],da[2::6].getValues())
9984 self.assertEqual([0,4,8],da[::6].getValues())
9985 self.assertEqual([5,9],da[7::6].getValues())
9986 self.assertEqual([5],da[7:-5:6].getValues())
9989 def testSwigCpp5Safe1(self):
9990 m=MEDCouplingUMesh.New("toto",2)
9991 coords=DataArrayDouble.New([0.,0.,1.,0.,1.,1.,0.,1.],4,2)
9993 vecs=DataArrayDouble.New([2.,3.,4.,5.,6.,7.],3,2)
9994 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]]
9995 for pos,vec in enumerate(vecs):
9998 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10000 for pos,vec in enumerate(vecs):
10002 m2.translate(vec.buildDADouble())
10003 self.assertTrue(m2.getCoords().isEqual(DataArrayDouble.New(expected1[pos],4,2),1e-12))
10007 def testSwigBugNonRegressionZipDA(self):
10008 angles=map(lambda x:pi/3*x,xrange(6))
10011 dad=DataArrayDouble.New(6, 2)
10015 dad2=dad.fromPolarToCart()
10016 dads=[dad2.deepCpy() for elt in 7*[None]]
10018 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.)]]
10019 for d,t in zip(dads,translationToPerform):
10023 self.assertTrue(not dad2.isEqual(elt,1e-12))
10025 for d,t in zip(dads,translationToPerform):
10029 self.assertTrue(dad2.isEqual(elt,1e-12))
10033 def testBuildSlice3D2(self):
10034 mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1();
10035 vec1=[-0.07,1.,0.07]
10036 origin1=[1.524,1.4552,1.74768]
10037 slice1,ids=mesh3D.buildSlice3D(origin1,vec1,1e-10);
10038 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
10039 f.setTime(4.5,6,7) ; f.setMesh(mesh3D)
10040 arr=DataArrayDouble(mesh3D.getNumberOfCells(),2)
10041 arr.rearrange(1) ; arr.iota(2.) ; arr.rearrange(2)
10044 expected1=DataArrayInt([1,3,4,7,9,10,13,15,16])
10045 self.assertTrue(expected1.isEqual(ids))
10046 arr2=arr[expected1]
10048 f2=f.extractSlice3D(origin1,vec1,1e-10)
10049 self.assertTrue(f2.getArray().isEqual(arr2,1e-12));
10050 self.assertTrue(slice1.isEqual(f2.getMesh(),1e-12))
10051 self.assertEqual(6,f2.getTime()[1]) ; self.assertEqual(7,f2.getTime()[2])
10052 self.assertAlmostEqual(4.5,f2.getTime()[0],12);
10055 def testComputeTupleIdsToSelectFromCellIds1(self):
10056 m=MEDCouplingDataForTest.build2DTargetMesh_3()
10057 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,NO_TIME);
10059 arr=DataArrayDouble(52,2) ; arr.rearrange(1) ; arr.iota(7.) ; arr.rearrange(2)
10062 f2=f.buildSubPart([1,5,9])
10063 f2.checkCoherency()
10064 cI=m.computeNbOfNodesPerCell()
10065 cI.computeOffsets2()
10066 sel=DataArrayInt([1,5,9])
10067 res=sel.buildExplicitArrByRanges(cI)
10069 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))
10070 self.assertTrue(arr2.isEqual(f2.getArray(),1e-12))
10073 def testComputeSkin1(self):
10074 arrX=DataArrayDouble([2.,3.4,5.6,7.7,8.0]) ; arrY=DataArrayDouble([2.,3.4,5.6,7.7,9.0,14.2])
10075 cmesh=MEDCouplingCMesh() ; cmesh.setCoordsAt(0,arrX) ; cmesh.setCoordsAt(1,arrY)
10076 umesh=cmesh.buildUnstructured()
10078 skin=umesh.computeSkin()
10079 self.assertEqual(18,skin.getNumberOfCells())
10080 self.assertEqual(1,skin.getMeshDimension())
10081 self.assertTrue(skin.getCoords().getHiddenCppPointer()==umesh.getCoords().getHiddenCppPointer())
10082 self.assertEqual([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54],skin.getNodalConnectivityIndex().getValues())
10083 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())
10084 ids=skin.computeFetchedNodeIds()
10085 self.assertEqual([0,1,2,3,4,5,9,10,14,15,19,20,24,25,26,27,28,29],ids.getValues())
10086 part=umesh.buildFacePartOfMySelfNode(ids,True)
10087 part.setName(skin.getName());
10088 self.assertTrue(part.isEqual(skin,1e-12))
10091 self.assertTrue(not part.isEqual(skin,1e-12))
10092 trad=part.zipConnectivityTraducer(0)
10093 self.assertEqual(9,part.getNumberOfCells())
10094 self.assertEqual([0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8],trad.getValues())
10097 def testUMeshSetPartOfMySelf2(self):
10098 # resize with explicit ids list
10099 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10100 self.assertEqual([3,4],m.getAllTypes())
10103 part2=part[[1,2,5]]
10105 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())
10106 self.assertEqual([0,4,8,12,16,20],m.getNodalConnectivityIndex().getValues())
10107 self.assertEqual([3],m.getAllTypes())
10108 # no resize with explicit ids list
10109 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10111 part.convertAllToPoly()
10113 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())
10114 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10115 self.assertEqual([3,4,5],m.getAllTypes())
10116 # resize with range ids
10117 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10120 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())
10121 self.assertEqual([0,5,10,15,20,25],m.getNodalConnectivityIndex().getValues())
10122 self.assertEqual([4],m.getAllTypes())
10123 # no resize with range ids
10124 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10126 part.convertAllToPoly()
10128 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())
10129 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10130 self.assertEqual([3,4,5],m.getAllTypes())
10131 # no resize with range ids negative direction
10132 m=MEDCouplingDataForTest.build2DTargetMesh_1()
10134 part.convertAllToPoly()
10136 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())
10137 self.assertEqual([0,5,9,13,18,23],m.getNodalConnectivityIndex().getValues())
10138 self.assertEqual([3,4,5],m.getAllTypes())
10141 def testUnPolyze3(self):
10142 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]
10143 conn=[1,2,5,4,-1,4,3,0,1,-1,2,0,3,5,-1,0,2,1,-1,4,5,3]
10144 m=MEDCouplingUMesh.New("a mesh",3);
10145 m.allocateCells(1);
10146 m.insertNextCell(NORM_POLYHED,22,conn[0:22])
10147 m.finishInsertingCells();
10148 coords=DataArrayDouble(coord,6,3);
10149 m.setCoords(coords);
10150 m.checkCoherency();
10152 vol=m.getMeasureField(ON_CELLS);
10153 self.assertEqual(1,vol.getArray().getNumberOfTuples());
10154 self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10158 self.assertEqual([NORM_PENTA6],m.getAllTypes())
10159 self.assertTrue(DataArrayInt([0,7]).isEqual(m.getNodalConnectivityIndex()))
10160 self.assertTrue(DataArrayInt([16,0,2,1,3,5,4]).isEqual(m.getNodalConnectivity()))
10162 vol=m.getMeasureField(ON_CELLS);
10163 self.assertEqual(1,vol.getArray().getNumberOfTuples());
10164 self.assertAlmostEqual(0.5,vol.getArray().getIJ(0,0),12)
10167 def testKrSpatialDiscretization1(self):
10168 srcPointCoordsX=[0.8401877171547095, 0.7830992237586059, 0.9116473579367843, 0.335222755714889, 0.2777747108031878, 0.4773970518621602, 0.3647844727918433, 0.9522297251747128, 0.6357117279599009, 0.1416025553558034]
10169 srcFieldValsOnPoints=[2.129892434968836, 2.295320474540621, 1.931948594981134, 2.728013590937196, 2.715603240418478, 2.661778472822935, 2.695696990104364, 1.893710234970982, 2.529628016549284, 2.728432341300668]
10170 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]
10171 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]
10172 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])
10174 nbOfInputPoints=10;
10175 f=MEDCouplingFieldDouble.New(ON_NODES_KR,ONE_TIME);
10176 srcArrX=DataArrayDouble.New(srcPointCoordsX,nbOfInputPoints,1);
10177 cmesh=MEDCouplingCMesh.New("aMesh");
10178 cmesh.setCoordsAt(0,srcArrX);
10179 umesh=cmesh.buildUnstructured();
10181 srcVals=DataArrayDouble.New(srcFieldValsOnPoints,nbOfInputPoints,1);
10182 f.setArray(srcVals);
10183 f.checkCoherency();
10185 res0=f.getValueOn(targetPointCoordsX[:1]);
10186 self.assertAlmostEqual(targetFieldValsExpected[0],res0[0],10)
10188 valuesToTest=f.getValueOnMulti(targetPointCoordsX);
10189 self.assertEqual(40,valuesToTest.getNumberOfTuples());
10190 self.assertEqual(1,valuesToTest.getNumberOfComponents());
10191 for i in xrange(40):
10192 self.assertAlmostEqual(targetFieldValsExpected[i],valuesToTest.getIJ(i,0),10)
10194 fd=f.getDiscretization()
10196 self.assertTrue(isinstance(fd,MEDCouplingFieldDiscretizationKriging))
10197 coeffs,isDrift=fd.computeVectorOfCoefficients(umesh,srcVals)
10198 self.assertEqual(2,isDrift)
10199 self.assertTrue(coeffsExpected.isEqual(coeffs,1e-8))
10203 def testDuplicateEachTupleNTimes1(self):
10204 d=DataArrayDouble.New([9.,8.,7.,6.],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10205 d2=d.duplicateEachTupleNTimes(3)
10206 self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayDouble.New([9.,9.,9.,8.,8.,8.,7.,7.,7.,6.,6.,6.],4*3,1),1e-14))
10207 self.assertEqual("aname",d2.getName())
10208 self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10210 d=DataArrayInt.New([9,8,7,6],4,1) ; d.setInfoOnComponents(["mass [kg]"]) ; d.setName("aname")
10211 d2=d.duplicateEachTupleNTimes(3)
10212 self.assertTrue(d2.isEqualWithoutConsideringStr(DataArrayInt.New([9,9,9,8,8,8,7,7,7,6,6,6],4*3,1)))
10213 self.assertEqual("aname",d2.getName())
10214 self.assertEqual(["mass [kg]"],d2.getInfoOnComponents())
10217 def testSwigComputeTupleIdsNearTuples1(self):
10218 da=DataArrayDouble([5.,6.,-5.,-6.,5.,-6.,-5.,6.,5.,6.],5,2)
10219 arr,arrI=da.computeTupleIdsNearTuples(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2),1e-10)
10220 self.assertEqual([2,0,4,1],arr.getValues())
10221 self.assertEqual([0,1,3,4],arrI.getValues())
10222 arr,arrI=da.computeTupleIdsNearTuples([5.,-6.,5.,6.,-5.,-6.],1e-10)
10223 self.assertEqual([2,0,4,1],arr.getValues())
10224 self.assertEqual([0,1,3,4],arrI.getValues())
10225 expected0=[[2],[0,4],[1]]
10226 expected1=[[0,1],[0,2],[0,1]]
10227 for pos,it in enumerate(DataArrayDouble([5.,-6.,5.,6.,-5.,-6.],3,2)):
10228 arr,arrI=da.computeTupleIdsNearTuples(it,1e-10)
10229 self.assertEqual(expected0[pos],arr.getValues())
10230 self.assertEqual(expected1[pos],arrI.getValues())
10234 def testSwigDataTupleIOp1(self):
10235 d=DataArrayDouble(10,1)
10240 toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
10241 self.assertTrue(toTest.isEqual(d,1e-12))
10245 toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10246 self.assertTrue(toTest.isEqual(d,1e-12))
10250 toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
10251 self.assertTrue(toTest.isEqual(d,1e-12))
10255 toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
10256 self.assertTrue(toTest.isEqual(d,1e-12))
10258 d=DataArrayInt(10,1)
10263 self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
10267 self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10271 self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
10275 self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
10279 self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
10282 def testIntersect2DMeshesTmp5(self):
10283 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)
10284 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)
10285 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)
10287 m1=MEDCouplingUMesh.New("Fix",2);
10288 m1.setCoords(coords);
10289 m1.setConnectivity(conn,connI,True);
10291 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)
10293 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);
10295 connI=DataArrayInt([0,9,18,27,36,45,54,63,72],9)
10296 m2=MEDCouplingUMesh.New("Mobile",2);
10297 m2.setCoords(coords);
10298 m2.setConnectivity(conn,connI,True);
10300 m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m1,m2,1e-10);
10301 self.assertEqual(105,m3.getNumberOfCells());
10302 self.assertEqual(105,d1.getNumberOfTuples());
10303 self.assertEqual(105,d2.getNumberOfTuples());
10304 self.assertEqual(704,m3.getNumberOfNodes());
10306 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]
10307 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]
10308 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]
10309 f3=m3.getMeasureField(ON_CELLS).getArray().getValues();
10310 for i in xrange(105):
10311 self.assertAlmostEqual(areaExpected[i],f3[i],10)
10313 self.assertEqual(expected1,d1.getValues())
10314 self.assertEqual(expected2,d2.getValues())
10317 def testDAIBuildUnique1(self):
10318 d=DataArrayInt([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
10320 self.assertTrue(e.isEqual(DataArrayInt([1,2,3,4,5,7,19])))
10323 def testDAIPartitionByDifferentValues1(self):
10324 d=DataArrayInt([1,0,1,2,0,2,2,-3,2])
10325 expected=[[-3,[7]],[0,[1,4]],[1,[0,2]],[2,[3,5,6,8]]]
10326 for i,elt in enumerate(zip(*d.partitionByDifferentValues())):
10327 self.assertEqual(expected[i][0],elt[1])
10328 self.assertEqual(expected[i][1],elt[0].getValues())
10332 def testFieldGaussMultiDiscPerType1(self):
10333 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
10334 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
10335 mQ8.allocateCells(1)
10336 mQ8.insertNextCell(NORM_QUAD8,range(8))
10337 mQ8.finishInsertingCells()
10338 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
10339 mQ4.allocateCells(1)
10340 mQ4.insertNextCell(NORM_QUAD4,range(4))
10341 mQ4.finishInsertingCells()
10342 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
10343 mT3.allocateCells(1)
10344 mT3.insertNextCell(NORM_TRI3,range(3))
10345 mT3.finishInsertingCells()
10347 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.]]
10348 ms=2*[mQ4]+7*[mQ8]+11*[mT3]
10349 ms[:]=(elt.deepCpy() for elt in ms)
10350 for m,t in zip(ms,tr):
10351 d=m.getCoords() ; d+= t
10353 m=MEDCouplingUMesh.MergeUMeshes(ms)
10354 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,NO_TIME)
10356 # throw because cell 0,1 are QUAD4 and cell 3 is QUAD8
10357 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])
10358 f.setGaussLocalizationOnCells([0,1],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
10359 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])
10360 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])
10361 f.setGaussLocalizationOnCells([9,10,11,12,13],[0.,0.,1.,0.,1.,1.],[0.4,0.4],[1.])
10362 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])
10363 self.assertEqual(46,f.getNumberOfTuplesExpected())
10364 vals=DataArrayDouble.New(46*3,1) ; vals.iota(7.7) ; vals.rearrange(3)
10367 #f.getLocalizationOfDiscr()
10368 self.assertRaises(InterpKernelException,f.getGaussLocalizationIdOfOneType,NORM_QUAD8) #throw because several loc
10369 self.assertEqual([1,2],f.getGaussLocalizationIdsOfOneType(NORM_QUAD8))
10370 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())
10372 fc.checkCoherency()
10373 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))
10374 fc.renumberCells([3,2,0,1])
10375 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))
10379 def testSwigRotate(self):
10380 d=DataArrayDouble([1.,2.,3.,4.,6.,5.],2,3)
10381 MEDCouplingPointSet.Rotate3DAlg([0.,0.,0.],[0.,1.,0.],1.5707963267948966,d)
10382 self.assertTrue(d.isEqual(DataArrayDouble([3.,2.,-1.,5.,6.,-4.],2,3),1e-12))
10383 d=DataArrayDouble([1.,2.,3.,4.,6.,5.],3,2)
10384 MEDCouplingPointSet.Rotate2DAlg([0.,0.],1.5707963267948966,d)
10385 self.assertTrue(d.isEqual(DataArrayDouble([-2.,1.,-4.,3.,-5.,6.],3,2),1e-12))
10388 def testSwigCMeshProtection(self):
10389 cm=MEDCouplingCMesh()
10390 self.assertRaises(InterpKernelException,cm.setCoordsAt,0,DataArrayDouble([4.,4.5,6.,7.],2,2))
10391 self.assertRaises(InterpKernelException,cm.setCoords,DataArrayDouble([4.,4.5,6.,7.],2,2))
10394 def testSwigCellsInBoundingBox1(self):
10395 m3D=MEDCouplingDataForTest.build3DExtrudedUMesh_1()[0]
10396 self.assertTrue(m3D.getCellsInBoundingBox([(0,3),(0,3),(0,1)],-1e-12).isEqual(DataArrayInt([0,1,2,3,4,5])))
10397 self.assertRaises(InterpKernelException,m3D.getCellsInBoundingBox,[(0,3,0),(3,0,1)],-1e-12)