Salome HOME
Remove DataArrayInt::isIdentity-> DataArrayInt::isIdentity2 for everybody. Remove...
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingRemapperTest.py
index ba5ba6428de3f48e3b263fce123994e59c474a8d..50157d00b6251da826b9cd5d7bf06e35a8205da5 100644 (file)
@@ -809,7 +809,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mExp0=csr_matrix((data,(row,col)),shape=(4,11))
         # compute diff and check
         diff=abs(m-mExp0)
-        self.assertAlmostEqual(diff.max(),0.,14)
+        self.assertAlmostEqual(diff.sum(),0.,14)
         ## full specific case 1D where target=source
         rem=MEDCouplingRemapper()
         rem.setIntersectionType(PointLocator)
@@ -820,7 +820,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         # expected matrix
         mExp1=identity(11)
         diff=abs(m-mExp1)
-        self.assertAlmostEqual(diff.max(),0.,14)
+        self.assertAlmostEqual(diff.sum(),0.,14)
         ## case where some points in target are not in source
         arrT=DataArrayDouble([-0.2,0.1,1.7,5.5,10.3])
         mT=MEDCouplingCMesh() ; mT.setCoords(arrT)
@@ -834,7 +834,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         data=array([0.9,0.1,0.3,0.7,0.5,0.5])
         mExp2=csr_matrix((data,(row,col)),shape=(5,11))
         diff=abs(m-mExp2)
-        self.assertAlmostEqual(diff.max(),0.,14)
+        self.assertAlmostEqual(diff.sum(),0.,14)
         ## basic case 2D Curve
         arrS=DataArrayInt.Range(0,11,1).convertToDblArr()
         arrT=DataArrayDouble([0.1,1.7,5.5,9.6])
@@ -851,7 +851,48 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         rowSum=m.sum(axis=1)
         m=diags(array(1/rowSum.transpose()),[0])*m
         diff=abs(m-mExp0)
-        self.assertAlmostEqual(diff.max(),0.,14)
+        self.assertAlmostEqual(diff.sum(),0.,14)
+        pass
+    
+    def test3D2Dand2D3DPointLocator1(self):
+        """ Non regression test solving SIGSEGV when using 3D<->3Dsurf pointlocator."""
+        arrX=DataArrayDouble([0,1,2])
+        arrY=DataArrayDouble([0,1])
+        arrZ=DataArrayDouble([0,1])
+        ms=MEDCouplingCMesh() ; ms.setCoords(arrX,arrY,arrZ)
+        ms=ms.buildUnstructured() ; ms.setName("source")
+        #
+        mt=MEDCouplingUMesh("target",2) ; mt.allocateCells()
+        mt.insertNextCell(NORM_TRI3,[0,4,6])
+        mt.insertNextCell(NORM_TRI3,[1,5,7])
+        mt.setCoords(ms.getCoords()[:])
+        mt.zipCoords()
+        #
+        rem=MEDCouplingRemapper()
+        rem.setIntersectionType(PointLocator)
+        rem.prepare(ms,mt,"P0P0")
+        self.assertEqual(rem.getCrudeMatrix(),[{0: 1.0}, {1: 1.0}])
+        rem2=MEDCouplingRemapper()
+        rem2.setIntersectionType(PointLocator)
+        rem2.prepare(mt,ms,"P0P0") # reverse mt<->ms
+        self.assertEqual(rem2.getCrudeMatrix(),[{0: 1.0}, {1: 1.0}])
+        pass
+
+    def test2D1Dand1D2DPointLocator1(self):
+        arrX=DataArrayDouble([0,1,2])
+        arrY=DataArrayDouble([0,1])
+        ms=MEDCouplingCMesh() ; ms.setCoords(arrX,arrY) ; ms=ms.buildUnstructured()
+        mt=MEDCouplingUMesh("target",1) ; mt.setCoords(ms.getCoords()[:])
+        mt.allocateCells()
+        mt.insertNextCell(NORM_SEG2,[0,4]) ; mt.insertNextCell(NORM_SEG2,[1,5])
+        rem=MEDCouplingRemapper()
+        rem.setIntersectionType(PointLocator)
+        rem.prepare(ms,mt,"P0P0")
+        self.assertEqual(rem.getCrudeMatrix(),[{0:1.},{1:1.}])
+        rem=MEDCouplingRemapper()
+        rem.setIntersectionType(PointLocator)
+        rem.prepare(mt,ms,"P0P0")
+        self.assertEqual(rem.getCrudeMatrix(),[{0:1.},{1:1.}])
         pass
     
     def build2DSourceMesh_1(self):