Salome HOME
A forgotten C++ test
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest3.py
index 9bacf90f9ef85f84f6c304ee030a38337a2e0dac..66dd108a2386772f1c8bfe9a67a7fc4647461710 100644 (file)
@@ -891,8 +891,7 @@ class MEDLoaderTest(unittest.TestCase):
         ff1.write(fname,0)
         f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
         f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
-        self.assertTrue(p1.isIdentity())
-        self.assertEqual(5,p1.getNumberOfTuples())
+        self.assertTrue(p1.isIdentity2(5))
         self.assertTrue(f1.getArray().isEqual(f2,1e-12))
         pass
     # Test for getFieldAtTopLevel method
@@ -3540,7 +3539,7 @@ class MEDLoaderTest(unittest.TestCase):
         for elt in [[0,1,2,3,4,5],[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8]]:#4
             m0.insertNextCell(NORM_PENTA6,elt)
             pass
-        m0.checkCoherency2()
+        m0.checkCoherency1()
         m1=MEDCouplingUMesh(); m1.setName("mesh")
         m1.setMeshDimension(2);
         m1.allocateCells(5);
@@ -3704,7 +3703,7 @@ class MEDLoaderTest(unittest.TestCase):
         m.changeSpaceDimension(3,0.)
         infos=["aa [b]","cc [de]","gg [klm]"]
         m.getCoords().setInfoOnComponents(infos)
-        m.checkCoherency2()
+        m.checkCoherency1()
         mm=MEDFileUMesh()
         mm.setMeshAtLevel(0,m)
         m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh") 
@@ -3788,7 +3787,7 @@ class MEDLoaderTest(unittest.TestCase):
         m.changeSpaceDimension(3,0.)
         infos=["aa [b]","cc [de]","gg [klm]"]
         m.getCoords().setInfoOnComponents(infos)
-        m.checkCoherency2()
+        m.checkCoherency1()
         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
         f.setName("Field")
         arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
@@ -3853,7 +3852,7 @@ class MEDLoaderTest(unittest.TestCase):
         m.changeSpaceDimension(3,0.)
         infos=["aa [b]","cc [de]","gg [klm]"]
         m.getCoords().setInfoOnComponents(infos)
-        m.checkCoherency2()
+        m.checkCoherency1()
         f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
         f.setName("Field")
         arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
@@ -4077,6 +4076,13 @@ class MEDLoaderTest(unittest.TestCase):
         st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
         mm2=cPickle.loads(st)
         self.assertTrue(mm.isEqual(mm2,1e-12)[0])
+        self.assertEqual(mm.getAxType(),AX_CART)
+        #
+        mm.setAxType(AX_CYL)
+        st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
+        mm2=cPickle.loads(st)
+        self.assertTrue(mm.isEqual(mm2,1e-12)[0])
+        self.assertEqual(mm2.getAxType(),AX_CYL)
         pass
 
     def testMEDFileFieldsLoadSpecificEntities1(self):
@@ -4344,7 +4350,7 @@ class MEDLoaderTest(unittest.TestCase):
         m3D=m.buildExtrudedMesh(m1D,0)
         m3D.sortCellsInMEDFileFrmt()
         m3D.setName(meshName)
-        m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkCoherency2()
+        m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkCoherency1()
         m1D=m2D.computeSkin() ; m1D.setName(meshName)
         m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
         #
@@ -4740,6 +4746,112 @@ class MEDLoaderTest(unittest.TestCase):
       self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
       pass
 
+    def testCartesianizer1(self):
+      """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
+      # UMesh non cart
+      arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
+      mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
+      d0=DataArrayInt(16) ; d0[:]=0
+      d1=DataArrayInt(9)  ; d1[:]=0
+      mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
+      mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
+      ref0=mm.getCoords().getHiddenCppPointer()
+      ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
+      self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
+      ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
+      ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
+      self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
+      mm.setAxType(AX_CYL) #<- important
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      mm.setAxType(AX_CART) # this is here only to avoid complaints
+      self.assertTrue(isinstance(mm2,MEDFileUMesh))
+      self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
+      self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
+      self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
+      self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
+      self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
+      self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
+      self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
+      self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
+      self.assertEqual(mm2.getName(),mm.getName())
+      self.assertEqual(mm2.getDescription(),mm.getDescription())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
+      self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
+      self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
+      self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
+      self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
+      self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
+      # UMesh cart
+      mm.setAxType(AX_CART)
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      self.assertTrue(isinstance(mm2,MEDFileUMesh))
+      self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
+      # CurveLinearMesh non cart
+      arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
+      mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxType(AX_CYL) #<- important
+      mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
+      mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
+      ref0=mm.getMesh().getCoords().getHiddenCppPointer()
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
+      self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
+      self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
+      self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
+      self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
+      self.assertEqual(mm2.getName(),mm.getName())
+      self.assertEqual(mm2.getDescription(),mm.getDescription())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
+      self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
+      self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
+      self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
+      self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
+      self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
+      # CurveLinearMesh cart
+      mm.setAxType(AX_CART)
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
+      self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
+      # CMesh non cart
+      arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
+      mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxType(AX_CYL) #<- important
+      mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
+      mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
+      self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
+      self.assertEqual(mm2.getName(),mm.getName())
+      self.assertEqual(mm2.getDescription(),mm.getDescription())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTime(),mm.getTime())
+      self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
+      self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
+      self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
+      self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
+      self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
+      self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
+      self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
+      # CMesh cart
+      mm.setAxType(AX_CART)
+      mm2=mm.cartesianize() # the trigger
+      self.assertEqual(mm2.getAxType(),AX_CART)
+      self.assertTrue(isinstance(mm2,MEDFileCMesh))
+      self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
+      pass
+
     pass
 
 if __name__ == "__main__":