# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014 CEA/DEN, EDF R&D
+# Copyright (C) 2007-2015 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
remapper.setIntersectionType(Triangulation);
self.failUnless(remapper.prepare(sourceMesh,targetMesh,"P0P0")==1);
srcField=MEDCouplingFieldDouble.New(ON_CELLS);
- srcField.setNature(ConservativeVolumic);
+ srcField.setNature(IntensiveMaximum);
srcField.setMesh(sourceMesh);
array=DataArrayDouble.New();
ptr=sourceMesh.getNumberOfCells()*[None]
trgFt.setMesh(targetMesh);
self.assertEqual(1,remapper.prepareEx(srcFt,trgFt));
srcField=MEDCouplingFieldDouble.New(ON_CELLS);
- srcField.setNature(ConservativeVolumic);
+ srcField.setNature(IntensiveMaximum);
srcField.setMesh(sourceMesh);
array=DataArrayDouble.New();
ptr=sourceMesh.getNumberOfCells()*[None]
trgFt.setMesh(targetMesh);
self.assertEqual(1,remapper.prepareEx(srcFt,trgFt));
srcField=MEDCouplingFieldDouble.New(ON_CELLS);
- srcField.setNature(ConservativeVolumic);
+ srcField.setNature(IntensiveMaximum);
srcField.setMesh(sourceMesh);
array=DataArrayDouble.New();
ptr=sourceMesh.getNumberOfCells()*[None]
array.setValues(ptr,sourceMesh.getNumberOfCells(),1);
srcField.setArray(array);
trgfield=MEDCouplingFieldDouble.New(ON_CELLS);
- trgfield.setNature(ConservativeVolumic);
+ trgfield.setNature(IntensiveMaximum);
trgfield.setMesh(targetMesh);
array=DataArrayDouble.New();
ptr=targetMesh.getNumberOfCells()*[None]
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3])
trg.setCoordsAt(0,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble([10.,30.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3])
trg.setCoordsAt(0,arr) ; trg.setCoordsAt(1,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble([10.,30.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
src.allocateCells(2) ; src.insertNextCell(NORM_TETRA4,[0,1,2,5]) ; src.insertNextCell(NORM_TETRA4,[3,4,0,6]) ; src.finishInsertingCells()
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3]) ; arr2=DataArrayDouble([-0.7,0.2,0.6,1.2,2.])
trg.setCoordsAt(0,arr) ; trg.setCoordsAt(1,arr) ; trg.setCoordsAt(2,arr2)
- src.checkCoherency2(1e-10)
- trg.checkCoherency()
+ src.checkConsistency(1e-10)
+ trg.checkConsistencyLight()
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble([10.,30.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
src=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3])
src.setCoordsAt(0,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrTrg=DataArrayDouble([10.,30.,40.,70.,80.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrTrg)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrTrg)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
src=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3])
src.setCoordsAt(0,arr) ; src.setCoordsAt(1,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble([10.,30.,40.,70.,80.,110.,130.,140.,170.,180.,210.,230.,240.,270.,280.,310.,330.,340.,370.,380.,410.,430.,440.,470.,480.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
trg.allocateCells(2) ; trg.insertNextCell(NORM_TETRA4,[0,1,2,5]) ; trg.insertNextCell(NORM_TETRA4,[3,4,0,6]) ; trg.finishInsertingCells()
src=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.7,-0.1,0.2,0.7,2.,2.3]) ; arr2=DataArrayDouble([-0.7,0.2,0.6,1.2,2.])
src.setCoordsAt(0,arr) ; src.setCoordsAt(1,arr) ; src.setCoordsAt(2,arr2)
- trg.checkCoherency2(1e-10)
- src.checkCoherency()
+ trg.checkConsistency(1e-10)
+ src.checkConsistencyLight()
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble(100) ; arrSrc.iota(7.7)
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.9,-0.1,0.15])
trg.setCoordsAt(0,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrTrg=DataArrayDouble([10.,30.,40.,70.,80.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrTrg)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrTrg)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.9,-0.1,0.15])
trg.setCoordsAt(0,arr) ; trg.setCoordsAt(1,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble([10.,30.,40.,70.,80.,110.,130.,140.,170.,180.,210.,230.,240.,270.,280.,310.,330.,340.,370.,380.,410.,430.,440.,470.,480.])
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc)
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc)
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
trg=MEDCouplingCMesh() ; arr=DataArrayDouble([-0.9,-0.1,0.15])
trg.setCoordsAt(0,arr) ; trg.setCoordsAt(1,arr) ; trg.setCoordsAt(2,arr)
fieldSrc=MEDCouplingFieldDouble(ON_CELLS,NO_TIME) ; fieldSrc.setMesh(src) ; arrSrc=DataArrayDouble(125) ; arrSrc.iota(7.7)
- fieldSrc.setNature(Integral) ; fieldSrc.setArray(arrSrc) ; fieldSrc.checkCoherency()
+ fieldSrc.setNature(ExtensiveMaximum) ; fieldSrc.setArray(arrSrc) ; fieldSrc.checkConsistencyLight()
rem=MEDCouplingRemapper()
rem.prepare(src,trg,"P0P0")
trgField=rem.transferField(fieldSrc,-7.)
self.assertAlmostEqual(1.25884086663e-06,mat1[0][1],16) ; self.assertAlmostEqual(1.25884086663e-06,mat2[0][1],16)
#
d=DataArrayDouble([13.45,27.67],2,1)
- f1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f1.setMesh(src1) ; f1.setArray(d) ; f1.setNature(RevIntegral)
- f2=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f2.setMesh(src2) ; f2.setArray(d) ; f2.setNature(RevIntegral)
+ f1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f1.setMesh(src1) ; f1.setArray(d) ; f1.setNature(IntensiveConservation)
+ f2=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f2.setMesh(src2) ; f2.setArray(d) ; f2.setNature(IntensiveConservation)
f11=rem1.transferField(f1,1e300) ; f22=rem2.transferField(f2,1e300)
expected1=DataArrayDouble([0.012480539537637884])
self.assertTrue(f11.getArray().isEqual(expected1,1e-15))
self.assertTrue(f22.getArray().isEqual(expected1,1e-15))
#
- f1.setNature(Integral) ; f2.setNature(Integral)
+ f1.setNature(ExtensiveMaximum) ; f2.setNature(ExtensiveMaximum)
f11=rem1.transferField(f1,1e300) ; f22=rem2.transferField(f2,1e300)
#
expected2=DataArrayDouble([41.12])
#
n2o=um.simplexize(PLANAR_FACE_5)
f.setArray(f.getArray()[n2o])
- f.checkCoherency()
- f.setNature(ConservativeVolumic)
+ f.checkConsistencyLight()
+ f.setNature(IntensiveMaximum)
f.setTime(5.6,7,8)
f.setName("toto") ; f.setDescription("aDescription")
p=MEDCouplingRemapper()
def testSwig2MixOfUMesh(self):
arr0=DataArrayDouble([0,1,1.5]) ; arr1=DataArrayDouble([0,1])
sc=MEDCouplingCMesh() ; sc.setCoords(arr0,arr1,arr1)
- tc=sc.deepCpy() ; tc.translate([0.4,0.3,0.3])
+ tc=sc.deepCopy() ; tc.translate([0.4,0.3,0.3])
# umesh-umesh
# 90 (umesh-1sgtumesh)
rem=MEDCouplingRemapper() ; rem.setIntersectionType(Triangulation)
# (umesh-cmesh)
# 167 (1sgtumesh-cmesh)
rem=MEDCouplingRemapper() ; rem.setIntersectionType(Triangulation)
- s=sc.build1SGTUnstructured() ; t=tc.deepCpy()
+ s=sc.build1SGTUnstructured() ; t=tc.deepCopy()
self.assertTrue(isinstance(s,MEDCoupling1SGTUMesh))
self.assertTrue(isinstance(t,MEDCouplingCMesh))
rem.prepare(s,t,"P0P0")
del s,t
# 183 (1dgtumesh-cmesh)
#rem=MEDCouplingRemapper() ; rem.setIntersectionType(Triangulation)
- #s=sc.buildUnstructured() ; s.convertAllToPoly() ; s=MEDCoupling1DGTUMesh(s) ; t=tc.deepCpy()
+ #s=sc.buildUnstructured() ; s.convertAllToPoly() ; s=MEDCoupling1DGTUMesh(s) ; t=tc.deepCopy()
#self.assertTrue(isinstance(s,MEDCoupling1DGTUMesh))
#self.assertTrue(isinstance(t,MEDCouplingCMesh))
#rem.prepare(s,t,"P0P0")
# (cmesh-umesh)
# 122 (cmesh-1sgtumesh)
rem=MEDCouplingRemapper() ; rem.setIntersectionType(Triangulation)
- s=sc.deepCpy() ; t=tc.build1SGTUnstructured()
+ s=sc.deepCopy() ; t=tc.build1SGTUnstructured()
self.assertTrue(isinstance(s,MEDCouplingCMesh))
self.assertTrue(isinstance(t,MEDCoupling1SGTUMesh))
rem.prepare(s,t,"P0P0")
del s,t
# 123 (cmesh-1dgtumesh)
#rem=MEDCouplingRemapper() ; rem.setIntersectionType(Triangulation)
- #s=sc.deepCpy() ; t=tc.buildUnstructured() ; t.convertAllToPoly() ; t=MEDCoupling1DGTUMesh(t)
+ #s=sc.deepCopy() ; t=tc.buildUnstructured() ; t.convertAllToPoly() ; t=MEDCoupling1DGTUMesh(t)
#self.assertTrue(isinstance(s,MEDCouplingCMesh))
#self.assertTrue(isinstance(t,MEDCoupling1DGTUMesh))
#rem.prepare(s,t,"P0P0")
arr=DataArrayDouble(3) ; arr.iota()
m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
src=m.buildUnstructured()
- trg=src.deepCpy() ; trg=trg[[0,1,3]]
+ trg=src.deepCopy() ; trg=trg[[0,1,3]]
trg.getCoords()[:]*=0.5 ; trg.getCoords()[:]+=[0.3,0.25]
# Let's interpolate.
rem=MEDCouplingRemapper()
self.assertAlmostEqual(m[2,2],0.05,12)
self.assertAlmostEqual(m[2,3],0.075,12)
self.assertEqual(diff.getnnz(),0)
- # IntegralGlobConstraint (division by sum of cols)
+ # ExtensiveConservation (division by sum of cols)
colSum=m.sum(axis=0)
# version 0.12.0 # m_0=m*diags(array(1/colSum),[0])
m_0=m*spdiags(array(1/colSum),[0],colSum.shape[1],colSum.shape[1])
self.assertAlmostEqual(m_0[2,2],1.,12)
self.assertAlmostEqual(m_0[2,3],1.,12)
self.assertEqual(m_0.getnnz(),7)
- # ConservativeVolumic (division by sum of rows)
+ # IntensiveMaximum (division by sum of rows)
rowSum=m.sum(axis=1)
# version 0.12.0 # m_1=diags(array(1/rowSum.transpose()),[0])*m
m_1=spdiags(array(1/rowSum.transpose()),[0],rowSum.shape[0],rowSum.shape[0])*m
pass
vals*=1e-5
eps0=DataArrayDouble(m0.data)-vals ; eps0.abs()
- self.assertTrue(eps0.getIdsInRange(1e-17,1e300).empty())
+ self.assertTrue(eps0.findIdsInRange(1e-17,1e300).empty())
self.assertTrue(DataArrayInt(m0.indices).isEqual(DataArrayInt([0,1,3,1,4,5,4,6,7,6,8,9,8,10,11,10,12,13,12,14,15,14,16,17,16,18,19,18,20,21,20,22,23,22,24,25,24,26,27,0,2,3,1,3,5,4,5,7,6,7,9,8,9,11,10,11,13,12,13,15,14,15,17,16,17,19,18,19,21,20,21,23,22,23,25,24,25,27,0,2,3,1,3,5,4,5,7,6,7,9,8,9,11,10,11,13,12,13,15,14,15,17,16,17,19,18,19,21,20,21,23,22,23,25,24,25,27,0,2,3,1,3,5,4,5,7,6,7,9,8,9,11,10,11,13,12,13,15,14,15,17,16,17,19,18,19,21,20,21,23,22,23,25,24,25,27,0,2,3,1,3,5,4,5,7,6,7,9,8,9,11,10,11,13,12,13,15,14,15,17,16,17,19,18,19,21,20,21,23,22,23,25,24,25,27,0,1,3,1,4,5,4,6,7,6,8,9,8,10,11,10,12,13,12,14,15,14,16,17,16,18,19,18,20,21,20,22,23,22,24,25,24,26,27,0,1,3,1,4,5,4,6,7,6,8,9,8,10,11,10,12,13,12,14,15,14,16,17,16,18,19,18,20,21,20,22,23,22,24,25,24,26,27,0,1,3,1,4,5,4,6,7,6,8,9,8,10,11,10,12,13,12,14,15,14,16,17,16,18,19,18,20,21,20,22,23,22,24,25,24,26,27])))
self.assertTrue(DataArrayInt(m0.indptr).isEqual(DataArrayInt([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,207,210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291,294,297,300,303,306,309,312])))
#
# m is ready
m1,d,di,rd,rdi=m.buildUnstructured().buildDescendingConnectivity()
rdi2=rdi.deltaShiftIndex()
- cellIds=rdi2.getIdsEqual(1)
+ cellIds=rdi2.findIdsEqual(1)
skinAndNonConformCells=m1[cellIds]
skinAndNonConformCells.zipCoords() # at this point skinAndNonConformCells contains non conform cells and skin cells. Now trying to split them in two parts.
#
mat=rem.getCrudeCSRMatrix()
indptr=DataArrayInt(mat.indptr)
indptr2=indptr.deltaShiftIndex()
- cellIdsOfNonConformCells=indptr2.getIdsNotEqual(1)
- cellIdsOfSkin=indptr2.getIdsEqual(1)
+ cellIdsOfNonConformCells=indptr2.findIdsNotEqual(1)
+ cellIdsOfSkin=indptr2.findIdsEqual(1)
self.assertTrue(cellIdsOfSkin.isEqual(DataArrayInt([1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,23])))
self.assertTrue(cellIdsOfNonConformCells.isEqual(DataArrayInt([0,4,18,22])))
pass
fsource.setMesh(source)
arr=DataArrayDouble(len(sourceCoo)) ; arr.iota(0.7) ; arr*=arr
fsource.setArray(arr)
- fsource.setNature(ConservativeVolumic)
+ fsource.setNature(IntensiveMaximum)
#
rem=MEDCouplingRemapper()
rem.setIntersectionType(PointLocator)
expArr2=DataArrayDouble([0.49,7.956666666666667,7.956666666666667,7.956666666666667,27.29,27.29,59.95666666666667,59.95666666666667,59.95666666666667,94.09,125.69,125.69,202.89,202.89,202.89,202.89,296.09,296.09,-36.])
self.assertTrue(f2Test.getArray().isEqual(expArr2,1e-12))
pass
+
+ def testRemapperAMR1(self):
+ """ This test is the origin of the ref values for MEDCouplingBasicsTest.testAMR2"""
+ coarse=DataArrayDouble(35) ; coarse.iota(0) #X=5,Y=7
+ fine=DataArrayDouble(3*2*4*4) ; fine.iota(0) #X=3,Y=2 refined by 4
+ MEDCouplingIMesh.CondenseFineToCoarse([5,7],fine,[(1,4),(2,4)],[4,4],coarse)
+ #
+ m=MEDCouplingCartesianAMRMesh("mesh",2,[6,8],[0.,0.],[1.,1.])
+ trgMesh=m.buildUnstructured()
+ m.addPatch([(1,4),(2,4)],[4,4])
+ srcMesh=m[0].getMesh().buildUnstructured()
+ srcField=MEDCouplingFieldDouble(ON_CELLS)
+ fine2=DataArrayDouble(3*2*4*4) ; fine2.iota(0) ; srcField.setArray(fine2)
+ srcField.setMesh(srcMesh) ; srcField.setNature(ExtensiveMaximum)
+ #
+ trgField=MEDCouplingFieldDouble(ON_CELLS)
+ coarse2=DataArrayDouble(35) ; coarse2.iota(0) ; trgField.setArray(coarse2)
+ trgField.setMesh(trgMesh) ; trgField.setNature(ExtensiveMaximum)
+ #
+ rem=MEDCouplingRemapper()
+ rem.prepare(srcMesh,trgMesh,"P0P0")
+ rem.partialTransfer(srcField,trgField)
+ #
+ self.assertTrue(coarse.isEqual(trgField.getArray(),1e-12))
+ pass
+
+ @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+ def test1DPointLocator1(self):
+ """This test focuses on PointLocator for P1P1 in 1D and 2DCurve."""
+ from numpy import array
+ from scipy.sparse import diags,csr_matrix,identity
+ ## basic case 1D
+ arrS=DataArrayInt.Range(0,11,1).convertToDblArr()
+ arrT=DataArrayDouble([0.1,1.7,5.5,9.6])
+ mS=MEDCouplingCMesh() ; mS.setCoords(arrS)
+ mT=MEDCouplingCMesh() ; mT.setCoords(arrT)
+ rem=MEDCouplingRemapper()
+ rem.setIntersectionType(PointLocator)
+ self.assertEqual(rem.prepare(mS.buildUnstructured(),mT.buildUnstructured(),"P1P1"),1)
+ m=rem.getCrudeCSRMatrix()
+ rowSum=m.sum(axis=1)
+ m=diags(array(1/rowSum.transpose()),[0])*m
+ # expected matrix
+ row=array([0,0,1,1,2,2,3,3])
+ col=array([0,1,1,2,5,6,9,10])
+ data=array([0.9,0.1,0.3,0.7,0.5,0.5,0.4,0.6])
+ mExp0=csr_matrix((data,(row,col)),shape=(4,11))
+ # compute diff and check
+ diff=abs(m-mExp0)
+ self.assertAlmostEqual(diff.sum(),0.,14)
+ ## full specific case 1D where target=source
+ rem=MEDCouplingRemapper()
+ rem.setIntersectionType(PointLocator)
+ self.assertEqual(rem.prepare(mS.buildUnstructured(),mS.buildUnstructured(),"P1P1"),1)
+ m=rem.getCrudeCSRMatrix()
+ rowSum=m.sum(axis=1)
+ m=diags(array(1/rowSum.transpose()),[0])*m
+ # expected matrix
+ mExp1=identity(11)
+ diff=abs(m-mExp1)
+ 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)
+ mT=mT.buildUnstructured()
+ rem=MEDCouplingRemapper()
+ rem.setIntersectionType(PointLocator)
+ self.assertEqual(rem.prepare(mS.buildUnstructured(),mT,"P1P1"),1)
+ m=rem.getCrudeCSRMatrix()
+ row=array([1,1,2,2,3,3])
+ col=array([0,1,1,2,5,6])
+ 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.sum(),0.,14)
+ ## basic case 2D Curve
+ arrS=DataArrayInt.Range(0,11,1).convertToDblArr()
+ arrT=DataArrayDouble([0.1,1.7,5.5,9.6])
+ mS=MEDCouplingCMesh() ; mS.setCoords(arrS)
+ mT=MEDCouplingCMesh() ; mT.setCoords(arrT)
+ mS=mS.buildUnstructured() ; mS.changeSpaceDimension(2)
+ mT=mT.buildUnstructured() ; mT.changeSpaceDimension(2)
+ mS.rotate([-1.,-1.],1.2)
+ mT.rotate([-1.,-1.],1.2)
+ rem=MEDCouplingRemapper()
+ rem.setIntersectionType(PointLocator)
+ self.assertEqual(rem.prepare(mS,mT,"P1P1"),1)
+ m=rem.getCrudeCSRMatrix()
+ rowSum=m.sum(axis=1)
+ m=diags(array(1/rowSum.transpose()),[0])*m
+ diff=abs(m-mExp0)
+ 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):
sourceCoords=[-0.3,-0.3, 0.7,-0.3, -0.3,0.7, 0.7,0.7]