Salome HOME
AMR 2
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingBasicsTest.py
index efb1273674fd5615c23efcd5398a5092fb46cc0c..9d834779bbfcf9b0f0ab933487922b0624728348 100644 (file)
@@ -13524,6 +13524,11 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         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)
@@ -14754,6 +14759,225 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         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 setUp(self):
         pass
     pass