# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2013 CEA/DEN, EDF R&D
+# Copyright (C) 2007-2014 CEA/DEN, EDF R&D
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
+# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
cl.checkCoherency2()
li4=[sqrt(2.)*elt for elt in [1.,3.,5.,7.]]
li4_1=[0.5,0.5,2.5,2.5,6.5,6.5,12.5,12.5]
+ self.assertEqual(2,cl.getSpaceDimension())
+ self.assertEqual(1,cl.getMeshDimension())
+ self.assertEqual(4,cl.getNumberOfCells())
+ self.assertEqual(5,cl.getNumberOfNodes())
self.assertTrue(cl.getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
self.assertTrue(cl.buildUnstructured().getMeasureField(False).getArray().isEqual(DataArrayDouble(li4),1e-14))
self.assertTrue(cl.getBarycenterAndOwner().isEqual(DataArrayDouble(li4_1,4,2),1e-14))
d20=DataArrayInt([1,2,3,4,11,12,13,14,21,22,23,24])
a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
self.assertTrue(a) ; self.assertEqual(b,[(1,5),(0,3)])
+ self.assertEqual(12,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt(b))
+ self.assertEqual(8,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(1,5),(1,3),(2,2)]))
+ self.assertEqual(0,MEDCouplingStructuredMesh.DeduceNumberOfGivenRangeInCompactFrmt([(5,5),(3,3),(2,2)]))
+ self.assertEqual(36,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure([3,2,6]))
+ self.assertEqual(126,MEDCouplingStructuredMesh.DeduceNumberOfGivenStructure((3,7,6)))
d20=DataArrayInt([1,2,3,4,12,11,13,14,21,22,23,24])
a,b=MEDCouplingStructuredMesh.IsPartStructured(d20,st)
self.assertTrue(not a)
self.assertTrue(arrOfDisc2.isEqual(coo,1e-12))
pass
+ def testSwig2StructuredDesc1(self):
+ c=MEDCouplingCMesh()
+ arr0=DataArrayDouble(3) ; arr0.iota()
+ arr1=DataArrayDouble(4) ; arr1.iota()
+ arr2=DataArrayDouble(5) ; arr2.iota()
+ c.setCoords(arr0,arr1,arr2)
+ #
+ self.assertEqual(98,c.getNumberOfCellsOfSubLevelMesh())
+ m=c.build1SGTSubLevelMesh()
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([0,12,15,3,12,24,27,15,24,36,39,27,36,48,51,39,3,15,18,6,15,27,30,18,27,39,42,30,39,51,54,42,6,18,21,9,18,30,33,21,30,42,45,33,42,54,57,45,1,13,16,4,13,25,28,16,25,37,40,28,37,49,52,40,4,16,19,7,16,28,31,19,28,40,43,31,40,52,55,43,7,19,22,10,19,31,34,22,31,43,46,34,43,55,58,46,2,14,17,5,14,26,29,17,26,38,41,29,38,50,53,41,5,17,20,8,17,29,32,20,29,41,44,32,41,53,56,44,8,20,23,11,20,32,35,23,32,44,47,35,44,56,59,47,0,12,13,1,12,24,25,13,24,36,37,25,36,48,49,37,1,13,14,2,13,25,26,14,25,37,38,26,37,49,50,38,3,15,16,4,15,27,28,16,27,39,40,28,39,51,52,40,4,16,17,5,16,28,29,17,28,40,41,29,40,52,53,41,6,18,19,7,18,30,31,19,30,42,43,31,42,54,55,43,7,19,20,8,19,31,32,20,31,43,44,32,43,55,56,44,9,21,22,10,21,33,34,22,33,45,46,34,45,57,58,46,10,22,23,11,22,34,35,23,34,46,47,35,46,58,59,47,0,1,4,3,3,4,7,6,6,7,10,9,1,2,5,4,4,5,8,7,7,8,11,10,12,13,16,15,15,16,19,18,18,19,22,21,13,14,17,16,16,17,20,19,19,20,23,22,24,25,28,27,27,28,31,30,30,31,34,33,25,26,29,28,28,29,32,31,31,32,35,34,36,37,40,39,39,40,43,42,42,43,46,45,37,38,41,40,40,41,44,43,43,44,47,46,48,49,52,51,51,52,55,54,54,55,58,57,49,50,53,52,52,53,56,55,55,56,59,58])))
+ self.assertEqual(NORM_QUAD4,m.getCellModelEnum())
+ #
+ self.assertTrue(MEDCouplingStructuredMesh.Build1GTNodalConnectivityOfSubLevelMesh([3,7]).isEqual(DataArrayInt([0,3,3,6,6,9,9,12,12,15,15,18,1,4,4,7,7,10,10,13,13,16,16,19,2,5,5,8,8,11,11,14,14,17,17,20,0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11,12,13,13,14,15,16,16,17,18,19,19,20])))
+ pass
+
+ def testSwig2Colinearize2D1(self):
+ coo=DataArrayDouble([-5.,0.,-1.,0.,4.,3.,7.,0.,1.,6.,1.,0.,-3.,0.,6.,1.,5.,0.,3.,0.],10,2)
+ #
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
+ m.insertNextCell(NORM_POLYGON,[5,9,8,3,7,2,4,0,6,1])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
+ #
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
+ m.insertNextCell(NORM_POLYGON,[8,3,7,2,4,0,6,1,5,9])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,3,4])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
+ #
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
+ m.insertNextCell(NORM_POLYGON,[3,7,2,4,0,6,1,5,9,8])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,3,4,0])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
+ #
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo) ; m.allocateCells()
+ m.insertNextCell(NORM_POLYGON,[4,0,6,1,5,9,8,3,7,2,])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,4,0,3])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4])))
+ ## false quadratic
+ coo2=DataArrayDouble([(-5,0),(-1,0),(4,3),(7,0),(1,6),(1,0),(-3,0),(6,1),(5,0),(3,0),(2,0),(4,0),(6,0),(6.5,0.5),(5,2),(2.5,4.5),(-2,3),(-4,0),(-2,0),(0,0)])
+ coo2.setInfoOnComponents(["aa","bbbb"])
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
+ m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
+ self.assertEqual(["aa","bbbb"],m.getCoords().getInfoOnComponents())
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
+ self.assertTrue(m.getCoords()[20:].isEqualWithoutConsideringStr(DataArrayDouble([(1.,0.),(4.,3.)]),1e-12))
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([])))
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
+ # mix of quadratic and linear inside a QPOLYG cell
+ coo2=DataArrayDouble([(-5,0),(-1,0),(7.,6.),(7,0),(1,6),(1,0),(-3,0),(8.2426406871192839,3),(5,0),(3,0), (2,0),(4,0),(6,0),(7.9196888946291288,1.3764116995614091),(7.9196888946291288,4.6235883004385911),(4,7.2426406871192848),(-2,3),(-4,0),(-2,0),(0,0)])
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo2) ; m.allocateCells()
+ m.insertNextCell(NORM_QPOLYG,[5,9,8,3,7,2,4,0,6,1,10,11,12,13,14,15,16,17,18,19])
+ refPtr=m.getCoords().getHiddenCppPointer()
+ self.assertTrue(m.colinearize2D(1e-12).isEqual(DataArrayInt([0])))
+ self.assertNotEqual(refPtr,m.getCoords().getHiddenCppPointer())#not same coordinates here
+ self.assertTrue(coo2.isEqual(m.getCoords()[:20],1e-12))
+ self.assertTrue(m.getCoords()[20:].isEqual(DataArrayDouble([(1.,0.),(7.,6.)]),1e-12))
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([32,0,3,4,20,21,16])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7])))
+ pass
+
+ def testSwig2BoundingBoxForBBTree1(self):
+ """ This test appears simple but it checks that bounding box are correctly computed for quadratic polygons. It can help a lot to reduce the amount of intersections !
+ """
+ coo=DataArrayDouble([-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.45,0.,0.3181980515339464,0.31819805153394637,0.,0.45,-0.31819805153394637,0.3181980515339464,-0.45,0.,-0.3181980515339465,-0.31819805153394637,0.,-0.45,0.3181980515339463,-0.3181980515339465,-0.5,0.0,0.0,0.5,0.5,0.0,0.0,-0.5,-0.4090990257669732,-0.4090990257669732,0.40909902576697316,-0.4090990257669732],18,2)
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
+ m.allocateCells()
+ m.insertNextCell(NORM_QPOLYG,[0,1,2,3,11,5,7,9,12,13,14,17,4,6,8,16])
+ m.insertNextCell(NORM_QPOLYG,[3,0,9,11,15,16,10,17])
+ self.assertTrue(m.getBoundingBoxForBBTree().isEqual(DataArrayDouble([-0.5,0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.31819805153394637],2,4),1e-12))
+ pass
+
+ def testSwig2CartBuildUnstructuredOnExoticCases1(self):
+ """ Test focusing on traduction from cartesian to unstructured mesh when spaceDim greater than meshDim.
+ """
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(3) ; arrX.iota()
+ arrY=DataArrayDouble(4) ; arrY.iota()
+ arrZ=DataArrayDouble(1) ; arrZ.iota()
+ m.setCoords(arrX,arrY,arrZ)
+ self.assertEqual(2,m.getMeshDimension())
+ self.assertEqual(3,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
+ coo0=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(0,1,0),(1,1,0),(2,1,0),(0,2,0),(1,2,0),(2,2,0),(0,3,0),(1,3,0),(2,3,0)])
+ self.assertTrue(mu.getCoords().isEqual(coo0,1e-12))
+ mu.writeVTK("tutu.vtu")
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(3) ; arrX.iota()
+ arrY=DataArrayDouble(1) ; arrY.iota()
+ arrZ=DataArrayDouble(4) ; arrZ.iota()
+ m.setCoords(arrX,arrY,arrZ)
+ self.assertEqual(2,m.getMeshDimension())
+ self.assertEqual(3,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
+ coo1=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(0,0,1),(1,0,1),(2,0,1),(0,0,2),(1,0,2),(2,0,2),(0,0,3),(1,0,3),(2,0,3)])
+ self.assertTrue(mu.getCoords().isEqual(coo1,1e-12))
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(1) ; arrX.iota() ; arrX+=9
+ arrY=DataArrayDouble(3) ; arrY.iota()
+ arrZ=DataArrayDouble(4) ; arrZ.iota()
+ m.setCoords(arrX,arrY,arrZ)
+ self.assertEqual(2,m.getMeshDimension())
+ self.assertEqual(3,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,30])))
+ coo2=DataArrayDouble([(9,0,0),(9,1,0),(9,2,0),(9,0,1),(9,1,1),(9,2,1),(9,0,2),(9,1,2),(9,2,2),(9,0,3),(9,1,3),(9,2,3)])
+ self.assertTrue(mu.getCoords().isEqual(coo2,1e-12))
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(3) ; arrX.iota()
+ arrY=DataArrayDouble(1) ; arrY.iota(7)
+ arrZ=DataArrayDouble(1) ; arrZ.iota(8)
+ m.setCoords(arrX,arrY,arrZ)
+ self.assertEqual(1,m.getMeshDimension())
+ self.assertEqual(3,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
+ coo3=DataArrayDouble([(0,7,8),(1,7,8),(2,7,8)])
+ self.assertTrue(mu.getCoords().isEqual(coo3,1e-12))
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(1) ; arrX.iota(7)
+ arrY=DataArrayDouble(1) ; arrY.iota(8)
+ arrZ=DataArrayDouble(3) ; arrZ.iota()
+ m.setCoords(arrX,arrY,arrZ)
+ self.assertEqual(1,m.getMeshDimension())
+ self.assertEqual(3,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
+ coo4=DataArrayDouble([(7,8,0),(7,8,1),(7,8,2)])
+ self.assertTrue(mu.getCoords().isEqual(coo4,1e-12))
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(3) ; arrX.iota()
+ arrY=DataArrayDouble(1) ; arrY.iota(7)
+ m.setCoords(arrX,arrY)
+ self.assertEqual(1,m.getMeshDimension())
+ self.assertEqual(2,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
+ coo5=DataArrayDouble([(0,7),(1,7),(2,7)])
+ self.assertTrue(mu.getCoords().isEqual(coo5,1e-12))
+ #
+ m=MEDCouplingCMesh()
+ arrX=DataArrayDouble(1) ; arrX.iota(7)
+ arrY=DataArrayDouble(3) ; arrY.iota()
+ m.setCoords(arrX,arrY)
+ self.assertEqual(1,m.getMeshDimension())
+ self.assertEqual(2,m.getSpaceDimension())
+ mu=m.buildUnstructured()
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,1,1,1,2])))
+ self.assertTrue(mu.getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
+ coo6=DataArrayDouble([(7,0),(7,1),(7,2)])
+ self.assertTrue(mu.getCoords().isEqual(coo6,1e-12))
+ pass
+
+ def testSwig2Colinearize2D2(self):
+ """ simple non regression test but that has revealed a bug"""
+ coo=DataArrayDouble([(0,0),(0,0.5),(0,1),(1,1),(1,0),(0.5,0)])
+ m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
+ m.allocateCells() ; m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
+ m.checkCoherency2()
+ refPtr=m.getCoords().getHiddenCppPointer()
+ #
+ m.colinearize2D(1e-12)
+ m.checkCoherency2()
+ self.assertEqual(refPtr,m.getCoords().getHiddenCppPointer())
+ self.assertTrue(m.getNodalConnectivity().isEqual(DataArrayInt([5,0,2,3,4])))
+ self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,5])))
+ pass
+
+ def testSwig2CheckAndPreparePermutation2(self):
+ a=DataArrayInt([10003,9999999,5,67])
+ self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1])))
+ a=DataArrayInt([10003,-9999999,5,67])
+ self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([3,0,1,2])))
+ a=DataArrayInt([])
+ self.assertTrue(DataArrayInt.checkAndPreparePermutation(a).isEqual(DataArrayInt([])))
+ pass
+
+ def testSwig2ComputeNeighborsOfNodes1(self):
+ arrX=DataArrayDouble(3) ; arrX.iota()
+ arrY=DataArrayDouble(4) ; arrY.iota()
+ arrZ=DataArrayDouble(5) ; arrZ.iota()
+ m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m=m.buildUnstructured()
+ # 3D
+ a,b=m.computeNeighborsOfNodes()
+ self.assertTrue(a.isEqual(DataArrayInt([1,3,12,0,4,13,2,1,5,14,0,4,15,6,3,1,16,5,7,4,2,17,8,3,7,18,9,6,4,19,8,10,7,5,20,11,6,10,21,9,7,22,11,10,8,23,13,15,0,24,12,16,1,14,25,13,17,2,26,12,16,3,18,27,15,13,4,17,19,28,16,14,5,20,29,15,19,6,21,30,18,16,7,20,22,31,19,17,8,23,32,18,22,9,33,21,19,10,23,34,22,20,11,35,25,27,12,36,24,28,13,26,37,25,29,14,38,24,28,15,30,39,27,25,16,29,31,40,28,26,17,32,41,27,31,18,33,42,30,28,19,32,34,43,31,29,20,35,44,30,34,21,45,33,31,22,35,46,34,32,23,47,37,39,24,48,36,40,25,38,49,37,41,26,50,36,40,27,42,51,39,37,28,41,43,52,40,38,29,44,53,39,43,30,45,54,42,40,31,44,46,55,43,41,32,47,56,42,46,33,57,45,43,34,47,58,46,44,35,59,49,51,36,48,52,37,50,49,53,38,48,52,39,54,51,49,40,53,55,52,50,41,56,51,55,42,57,54,52,43,56,58,55,53,44,59,54,58,45,57,55,46,59,58,56,47])))
+ self.assertTrue(b.isEqual(DataArrayInt([0,3,7,10,14,19,23,27,32,36,39,43,46,50,55,59,64,70,75,80,86,91,95,100,104,108,113,117,122,128,133,138,144,149,153,158,162,166,171,175,180,186,191,196,202,207,211,216,220,223,227,230,234,239,243,247,252,256,259,263,266])))
+ # 2D
+ m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured()
+ a,b=m.computeNeighborsOfNodes()
+ self.assertTrue(a.isEqual(DataArrayInt([1,3,0,4,2,1,5,0,4,6,3,1,5,7,4,2,8,3,7,9,6,4,8,10,7,5,11,6,10,9,7,11,10,8])))
+ self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
+ # 1D
+ m=m.buildDescendingConnectivity()[0]
+ a,b=m.computeNeighborsOfNodes()
+ self.assertTrue(a.isEqual(DataArrayInt([1,3,0,4,2,1,5,0,4,6,3,1,5,7,4,2,8,3,7,9,6,4,8,10,7,5,11,6,10,9,7,11,10,8])))
+ self.assertTrue(b.isEqual(DataArrayInt([0,2,5,7,10,14,17,20,24,27,29,32,34])))
+ pass
+
+ def testSwigBugOnUnpackingTuplesInDataArray1(self):
+ inp=DataArrayDouble([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
+ it=inp.__iter__()
+ r=it.next()
+ self.assertRaises(StopIteration,r.__getitem__,4)
+ self.assertEqual(len(r),3)
+ a,b,c=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ d,e,f=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ g,h,i=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ j,k,l=r
+ assert(inp.isEqual(DataArrayDouble([a,b,c,d,e,f,g,h,i,j,k,l],4,3),1e-12))
+ ########
+ inp=DataArrayInt([(1,2,3),(4,5,6),(7,8,9),(10,11,12)])
+ it=inp.__iter__()
+ r=it.next()
+ self.assertRaises(StopIteration,r.__getitem__,4)
+ self.assertEqual(len(r),3)
+ a,b,c=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ d,e,f=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ g,h,i=r
+ r=it.next()
+ self.assertEqual(len(r),3)
+ j,k,l=r
+ assert(inp.isEqual(DataArrayInt([a,b,c,d,e,f,g,h,i,j,k,l],4,3)))
+ pass
+
+ def testSwig2IMesh1(self):
+ """ 1st test of image grid mesh.
+ """
+ m=MEDCouplingIMesh()
+ self.assertEqual(m.getSpaceDimension(),-1)
+ self.assertEqual(1,len(m.__repr__().split("\n")))
+ self.assertEqual(6,len(m.__str__().split("\n")))
+ self.assertRaises(InterpKernelException,m.getNodeStruct)
+ self.assertRaises(InterpKernelException,m.getOrigin)
+ self.assertRaises(InterpKernelException,m.getDXYZ)
+ m.setSpaceDimension(3)
+ self.assertEqual(9,len(m.__str__().split("\n")))
+ self.assertEqual(4,len(m.__repr__().split("\n")))
+ self.assertEqual((0,0,0),m.getNodeStruct())
+ self.assertEqual((0.,0.,0.),m.getOrigin())
+ self.assertEqual((0.,0.,0.),m.getDXYZ())
+ self.assertRaises(InterpKernelException,m.setNodeStruct,[3,4])
+ m.setNodeStruct([3,4,2])
+ self.assertEqual((3,4,2),m.getNodeStruct())
+ m.setOrigin(DataArrayDouble([1.5,2.5,3.5]))
+ self.assertEqual((1.5,2.5,3.5),m.getOrigin())
+ m.setDXYZ((0.5,1.,0.25))
+ self.assertEqual((0.5,1.,0.25),m.getDXYZ())
+ for it in DataArrayDouble([(1.5,2.5,3.5)]):
+ m2=MEDCouplingIMesh("",3,DataArrayInt([3,4,2]),it,DataArrayDouble((0.5,1.,0.25)))
+ pass
+ self.assertEqual(3,m.getSpaceDimension())
+ self.assertEqual((3,4,2),m2.getNodeStruct())
+ self.assertEqual((1.5,2.5,3.5),m2.getOrigin())
+ self.assertEqual((0.5,1.,0.25),m2.getDXYZ())
+ self.assertEqual(24,m2.getNumberOfNodes())
+ self.assertEqual(6,m2.getNumberOfCells())
+ self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m2.setAxisUnit("m")
+ self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m.setAxisUnit("m")
+ self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m.setName("mesh")
+ self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m2.setName("mesh")
+ self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m2.setTime(1.1,0,3)
+ self.assertTrue(not m.isEqual(m2,1e-12))
+ m.setTime(1.1,0,3)
+ self.assertTrue(m.isEqual(m2,1e-12))
+ m.setTimeUnit("ms")
+ self.assertTrue(not m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ m2.setTimeUnit("ms")
+ self.assertTrue(m.isEqual(m2,1e-12)) ; self.assertTrue(m.isEqualWithoutConsideringStr(m2,1e-12))
+ #
+ m2.setNodeStruct([3,2,4])
+ self.assertTrue(not m.isEqual(m2,1e-12))
+ m.setNodeStruct([3,2,4])
+ self.assertTrue(m.isEqual(m2,1e-12))
+ m.setOrigin(DataArrayDouble([1.5,3.5,2.5]))
+ self.assertTrue(not m.isEqual(m2,1e-12))
+ m2.setOrigin([1.5,3.5,2.5])
+ self.assertTrue(m.isEqual(m2,1e-12))
+ m.setDXYZ((0.5,0.25,1.))
+ self.assertTrue(not m.isEqual(m2,1e-12))
+ m2.setDXYZ(DataArrayDouble((0.5,0.25,1.)))
+ self.assertTrue(m.isEqual(m2,1e-12))
+ m2bis=m2.deepCpy()
+ self.assertTrue(m2bis.isEqual(m2,1e-12))
+ #
+ self.assertEqual(6,m2bis.getNumberOfCells())#3,2,4
+ m2bis.refineWithFactor(3)
+ self.assertEqual(162,m2bis.getNumberOfCells())
+ self.assertEqual((7,4,10),m2bis.getNodeStruct())
+ self.assertEqual((1.5,3.5,2.5),m2bis.getOrigin())
+ self.assertTrue(DataArrayDouble([0.16666666666666666,0.08333333333333333,0.3333333333333333]).isEqual(DataArrayDouble(m2bis.getDXYZ()),1e-12))
+ #
+ self.assertEqual(3,m.getMeshDimension())
+ self.assertAlmostEqual(0.125,m.getMeasureOfAnyCell(),16);
+ mu=MEDCoupling1SGTUMesh(m.buildUnstructured())
+ mu.checkCoherency2()
+ cooExp=DataArrayDouble([(1.5,3.5,2.5),(2,3.5,2.5),(2.5,3.5,2.5),(1.5,3.75,2.5),(2,3.75,2.5),(2.5,3.75,2.5),(1.5,3.5,3.5),(2,3.5,3.5),(2.5,3.5,3.5),(1.5,3.75,3.5),(2,3.75,3.5),(2.5,3.75,3.5),(1.5,3.5,4.5),(2,3.5,4.5),(2.5,3.5,4.5),(1.5,3.75,4.5),(2,3.75,4.5),(2.5,3.75,4.5),(1.5,3.5,5.5),(2,3.5,5.5),(2.5,3.5,5.5),(1.5,3.75,5.5),(2,3.75,5.5),(2.5,3.75,5.5)]) ; cooExp.setInfoOnComponents(["X [m]","Y [m]","Z [m]"])
+ self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
+ self.assertEqual(NORM_HEXA8,mu.getCellModelEnum())
+ self.assertTrue(mu.getCoords().isEqual(cooExp,1e-12))
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,3,4,7,6,9,10,2,1,4,5,8,7,10,11,7,6,9,10,13,12,15,16,8,7,10,11,14,13,16,17,13,12,15,16,19,18,21,22,14,13,16,17,20,19,22,23])))
+ bary=m.getBarycenterAndOwner()
+ baryExp=DataArrayDouble([(1.75,3.625,3),(2.25,3.625,3),(1.75,3.625,4),(2.25,3.625,4),(1.75,3.625,5),(2.25,3.625,5)]) ; baryExp.setInfoOnComponents(["X [m]","Y [m]","Z [m]"])
+ self.assertTrue(bary.isEqual(baryExp,1e-12))
+ #
+ c=m.convertToCartesian()
+ c.checkCoherency()
+ self.assertEqual([1.1,0,3],c.getTime())
+ self.assertEqual("ms",c.getTimeUnit())
+ self.assertEqual(3,c.getMeshDimension())
+ self.assertEqual(3,c.getSpaceDimension())
+ arrX=DataArrayDouble([1.5,2.,2.5]) ; arrX.setInfoOnComponents(["X [m]"])
+ self.assertTrue(c.getCoordsAt(0).isEqual(arrX,1e-12))
+ arrY=DataArrayDouble([3.5,3.75]) ; arrY.setInfoOnComponents(["Y [m]"])
+ self.assertTrue(c.getCoordsAt(1).isEqual(arrY,1e-12))
+ arrZ=DataArrayDouble([2.5,3.5,4.5,5.5]) ; arrZ.setInfoOnComponents(["Z [m]"])
+ self.assertTrue(c.getCoordsAt(2).isEqual(arrZ,1e-12))
+ self.assertTrue(c.buildUnstructured().isEqual(m.buildUnstructured(),1e-12))
+ #
+ a,b=m.getCellsContainingPoints(baryExp,1e-12)
+ self.assertTrue(a.isEqual(DataArrayInt([0,1,2,3,4,5])))
+ self.assertTrue(b.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
+ for a,b in enumerate(baryExp):
+ self.assertEqual(a,m.getCellContainingPoint(b,1e-12))
+ pass
+ #
+ m.translate([1.,2.,4.])
+ self.assertEqual((3,2,4),m.getNodeStruct())
+ self.assertEqual((2.5,5.5,6.5),m.getOrigin())
+ self.assertEqual((0.5,0.25,1.),m.getDXYZ())
+ m.scale([0.,1.,3.],2.)
+ self.assertAlmostEqual(1.,m.getMeasureOfAnyCell(),16);
+ self.assertEqual((3,2,4),m.getNodeStruct())
+ self.assertEqual((5.,10.,10.),m.getOrigin())
+ self.assertEqual((1.,0.5,2.),m.getDXYZ())
+ #
+ f=m.getMeasureField(False)
+ f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(1.1,0,3) ; f2.setMesh(m) ; arr=DataArrayDouble(6) ; arr[:]=1. ; f2.setArray(arr) ; f2.setTimeUnit("ms")
+ f2.setName("MeasureOfMesh_mesh")
+ self.assertTrue(f.isEqual(f2,1e-12,1e-12))
+ #
+ m3=m.buildStructuredSubPart([(1,2),(0,1),(1,3)])
+ self.assertEqual((2,2,3),m3.getNodeStruct())
+ self.assertEqual((6.,10.,12.),m3.getOrigin())
+ self.assertEqual((1.,0.5,2.),m3.getDXYZ())
+ # now playing with 3D surf
+ m4=MEDCouplingIMesh("",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m4.setAxisUnit("km")
+ self.assertEqual(3,m4.getSpaceDimension())
+ self.assertEqual(2,m4.getMeshDimension())
+ self.assertEqual(12,m4.getNumberOfNodes())
+ self.assertEqual(6,m4.getNumberOfCells())
+ mu=MEDCoupling1SGTUMesh(m4.buildUnstructured())
+ mu.checkCoherency2()
+ self.assertTrue(isinstance(mu,MEDCoupling1SGTUMesh))
+ self.assertEqual(NORM_QUAD4,mu.getCellModelEnum())
+ coordsExp=DataArrayDouble([(1.5,2.5,3.5),(2,2.5,3.5),(2.5,2.5,3.5),(1.5,2.5,3.75),(2,2.5,3.75),(2.5,2.5,3.75),(1.5,2.5,4),(2,2.5,4),(2.5,2.5,4),(1.5,2.5,4.25),(2,2.5,4.25),(2.5,2.5,4.25)]) ; coordsExp.setInfoOnComponents(["X [km]","Y [km]","Z [km]"])
+ self.assertTrue(mu.getCoords().isEqual(coordsExp,1e-12))
+ self.assertTrue(mu.getNodalConnectivity().isEqual(DataArrayInt([1,0,3,4,2,1,4,5,4,3,6,7,5,4,7,8,7,6,9,10,8,7,10,11])))
+ pass
+
+ def testSwig2AMR1(self):
+ self.assertEqual((1,3,12),MEDCouplingStructuredMesh.GetSplitVectFromStruct([3,4,5]))
+ self.assertEqual((3,2),MEDCouplingStructuredMesh.GetDimensionsFromCompactFrmt([(1,4),(2,4)]))
+ #
+ amr=MEDCouplingCartesianAMRMesh("",2,[3,3],[0,0],[1,1])
+ self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
+ self.assertEqual(4,amr.getNumberOfCellsRecursiveWithOverlap())
+ self.assertEqual(4,amr.getNumberOfCellsRecursiveWithoutOverlap())
+ self.assertEqual(0,amr.getNumberOfPatches())
+ self.assertEqual(1,amr.getMaxNumberOfLevelsRelativeToThis())
+ self.assertEqual(2,amr.getSpaceDimension())
+ amr.addPatch([(1,2),(0,1)],4)
+ self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
+ self.assertEqual(20,amr.getNumberOfCellsRecursiveWithOverlap())
+ self.assertEqual(19,amr.getNumberOfCellsRecursiveWithoutOverlap())
+ self.assertEqual(1,amr.getNumberOfPatches())
+ self.assertEqual(2,amr.getMaxNumberOfLevelsRelativeToThis())
+ self.assertEqual(2,amr.getSpaceDimension())
+ amr[0].addPatch([(2,3),(1,3)],2)
+ self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
+ self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
+ self.assertEqual(28,amr.getNumberOfCellsRecursiveWithOverlap())
+ self.assertEqual(25,amr.getNumberOfCellsRecursiveWithoutOverlap())
+ self.assertEqual(1,amr.getNumberOfPatches())
+ self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
+ self.assertEqual(2,amr.getSpaceDimension())
+ amr[0].addPatch([(0,2),(3,4)],3)
+ self.assertEqual(16,amr[0].getMesh().getNumberOfCellsAtCurrentLevel())
+ self.assertEqual(46,amr.getNumberOfCellsRecursiveWithOverlap())
+ self.assertEqual(41,amr.getNumberOfCellsRecursiveWithoutOverlap())
+ self.assertEqual(2,amr[0].getMesh().getNumberOfPatches())
+ self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
+ self.assertEqual(2,amr.getSpaceDimension())
+ del amr[0][1]
+ self.assertEqual(amr[0].getBLTRRange(),[(1,2),(0,1)])
+ self.assertEqual(4,amr.getNumberOfCellsAtCurrentLevel())
+ self.assertEqual(28,amr.getNumberOfCellsRecursiveWithOverlap())
+ self.assertEqual(25,amr.getNumberOfCellsRecursiveWithoutOverlap())
+ self.assertEqual(1,amr.getNumberOfPatches())
+ self.assertEqual(3,amr.getMaxNumberOfLevelsRelativeToThis())
+ self.assertEqual(2,amr.getSpaceDimension())
+ pass
+
+ def testSwig2NonRegressionTestPAL1164(self):
+ """ Test PAL1164 Protection of applyLin against error in compoId ( #CEA22584 ) """
+ xarr=DataArrayDouble(3,1)
+ xarr.iota(0.)
+ cmesh=MEDCouplingCMesh()
+ cmesh.setCoords(xarr,xarr,xarr)
+ mesh=cmesh.buildUnstructured()
+ f=mesh.fillFromAnalytic(ON_CELLS,1,"(x-5.)*(x-5.)+(y-5.)*(y-5.)+(z-5.)*(z-5.)")
+ f.setName("MyField")
+ self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
+ self.assertRaises(InterpKernelException,f.applyLin,2.,0.,1)# compoId 1 whereas f has only one component !
+ self.assertTrue(f.getArray().isEqual(DataArrayDouble([60.75,52.75,52.75,44.75,52.75,44.75,44.75,36.75]),1e-12))
+ f.applyLin(2.,0.,0)# here it is OK !
+ self.assertTrue(f.getArray().isEqual(DataArrayDouble([121.5,105.5,105.5,89.5,105.5,89.5,89.5,73.5]),1e-12))
+ #f.applyLin(2.,0.)
+ #self.assertTrue(f.getArray().isEqual(DataArrayDouble([243.,211.,211.,179.,211.,179.,179.,127.]),1e-12))
+ pass
+
+ def testSwig2StructurizeMe1(self):
+ arrx=DataArrayDouble(3) ; arrx.iota() ; arrx*=2.
+ arry=DataArrayDouble(4) ; arry.iota() ; arry+=3.
+ arrz=DataArrayDouble(5) ; arrz.iota() ; arrz*=0.5 ; arrz+=2.
+ c=MEDCouplingCMesh() ; c.setCoords(arrx,arry,arrz)
+ c.setName("mesh") ; c.setDescription("mesh descr") ; c.setTimeUnit("us") ; c.setTime(1.2,3,4)
+ u=c.buildUnstructured()
+ cp=DataArrayInt([3,5,6,1,0,9,8,7,12,11,16,10,17,23,22,21,19,20,18,14,13,2,4,15])
+ np=DataArrayInt([3,33,5,35,6,36,1,31,0,30,9,39,8,38,7,37,12,42,11,41,16,46,10,40,17,47,23,53,22,52,21,51,19,49,20,50,18,48,14,44,13,43,2,32,4,34,15,45,29,59,28,58,27,57,26,56,25,55,24,54])
+ u.renumberCells(cp)
+ u.renumberNodes(np,len(np))
+ u=MEDCoupling1SGTUMesh(u)
+ #
+ e,d,f=u.structurizeMe()
+ self.assertTrue(c.isEqual(e,1e-12))
+ self.assertTrue(d.isEqual(cp))
+ self.assertTrue(f.isEqual(np))
+ pass
+
def setUp(self):
pass
pass