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)
# 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)
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])
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):