X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FMEDLoaderTest3.py;h=4cf592135355b04331e64bc429663442bff5c06f;hb=35287602e212fd35b8a4b11215cb111b929a4875;hp=f970090ea773a024612d2360233988768865d73e;hpb=46ddce3caf8076fa140934bb3ce88c5d8040efb9;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/Swig/MEDLoaderTest3.py b/src/MEDLoader/Swig/MEDLoaderTest3.py index f970090ea..4cf592135 100644 --- a/src/MEDLoader/Swig/MEDLoaderTest3.py +++ b/src/MEDLoader/Swig/MEDLoaderTest3.py @@ -1223,7 +1223,7 @@ class MEDLoaderTest3(unittest.TestCase): del tes0 # tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m) - self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified + self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been specified self.assertEqual(0,tes1.getMesh().getMeshDimension()) self.assertEqual(2,tes1.getMesh().getNumberOfCells()) self.assertEqual(135,tes1.getMesh().getNumberOfNodes()) @@ -1259,7 +1259,7 @@ class MEDLoaderTest3(unittest.TestCase): pass # tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m) - self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified + self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been specified self.assertEqual(0,tes3.getMesh().getMeshDimension()) self.assertEqual(2,tes3.getMesh().getNumberOfCells()) self.assertEqual(135,tes3.getMesh().getNumberOfNodes()) @@ -1415,7 +1415,7 @@ class MEDLoaderTest3(unittest.TestCase): mm.write(fname,2) def testBuildInnerBoundaryAlongM1Group4(self): - """ Test case where cells touch the M1 group on some nodes only and not on full egdes (triangle mesh for ex) + """ Test case where cells touch the M1 group on some nodes only and not on full edges (triangle mesh for ex) """ coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0., 0.,1., 1.,1., 2.,1., 3.,1., @@ -3852,7 +3852,7 @@ class MEDLoaderTest3(unittest.TestCase): pass def testMEDFileUMeshLoadPart1(self): - """ This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specfied using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of + """ This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specified using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of memory of the returned instance. """ fileName="Pyfile81.med" @@ -5783,8 +5783,6 @@ class MEDLoaderTest3(unittest.TestCase): pass @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1") - @unittest.skipUnless(LooseVersion(MEDFileVersionStr()) no pfl + self.assertEqual(f1ts.getFieldSplitedByType(),refSp) + self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential + # + f1ts=MEDFileField1TS() + f1ts.setFieldProfileFlatly(f,mm,0,pfl) # no optimization attempt. Create pfl unconditionally + self.assertEqual(f1ts.getPfls(),("%s_NORM_TRI3"%pfl.getName(),"%s_NORM_QUAD4"%pfl.getName())) + self.assertEqual(f1ts.getFieldSplitedByType(),refSp1) + self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential + self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3").isIota(162)) + self.assertTrue(f1ts.getProfile("pfl_NORM_QUAD4").isIota(81)) + pass + + def testRmGroupAtSpeLevelAndMultiLevGrpCreation(self): + """ Here multi level groups are created""" + arr=DataArrayDouble(11) ; arr.iota() + m=MEDCouplingCMesh() ; m.setCoords(arr,arr) + m=m.buildUnstructured() + m.setName("mesh") + m1=m.buildDescendingConnectivity()[0] + mm=MEDFileUMesh() + mm[0]=m ; mm[-1]=m1 + ################ + grpName="grp0" + grp0_0=DataArrayInt([0,1,2,6]) ; grp0_0.setName(grpName) + grp0_1=DataArrayInt([0,1,2,7]) ; grp0_1.setName(grpName) + grp1=DataArrayInt([1,2,3,5,6]) ; grp1.setName("grp1") + grp2=DataArrayInt([2,3,5,8]) ; grp2.setName("grp2") + ################ ajouter un groupe sur plusieurs niveau + mm.addGroup(0,grp1) + mm.addGroup(-1,grp2) + mm.addGroup(0,grp0_0) + mm.addGroup(-1,grp0_1) + self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1)) + self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0)) + self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1)) + self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1)) + self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2)) + self.assertRaises(InterpKernelException,mm.addGroup,-1,grp0_1) # raise + self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0)) + self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1)) + self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1)) + self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2)) + mm.removeGroupAtLevel(0,grpName) + self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(-1,)) + self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1)) + self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1)) + self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2)) + mm.removeGroupAtLevel(-1,grpName) + self.assertEqual(mm.getGrpNonEmptyLevels(grpName),()) + self.assertRaises(InterpKernelException,mm.removeGroupAtLevel,-2,grpName) + mm.addGroup(-1,grp0_1) + mm.addGroup(0,grp0_0) + self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1)) + self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0)) + self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1)) + self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1)) + self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2)) + pass + + def testYutaka(self): + """ Thank you to Yutaka Nishizawa for having report this bug. At level -1, adding a first group on all entities leads to a group lying on family 0... + Then rearrange method removes unused entites by putting 0 on them -> Previously group has been modified by rearrange. Should not !""" + mn="mesh" + m=MEDCouplingCMesh() + arr=DataArrayDouble(4) ; arr.iota() + m.setCoords(arr,arr,arr) + m=m.buildUnstructured() + m.setName(mn) + # + m=m.buildUnstructured() + m1=m.buildDescendingConnectivity()[0] + # + mm=MEDFileUMesh() + mm[0]=m + mm[-1]=m1 + # + grp0=DataArrayInt([0,1,2]) ; grp0.setName("grp0") + mm.addGroup(0,grp0) + grp1=DataArrayInt([3,4,5,6]) ; grp1.setName("grp1") + mm.addGroup(0,grp1) + grp2=DataArrayInt([7,8,9]) ; grp2.setName("grp2") + mm.addGroup(0,grp2) + grp3=DataArrayInt.Range(0,m1.getNumberOfCells(),1) ; grp3.setName("grp3") + mm.addGroup(-1,grp3) + self.assertNotIn(0,mm.getFamiliesIdsOnGroup("grp3")) # bug was here ! + grp4=DataArrayInt([3,5,8,10]) ; grp4.setName("grp4") + mm.addNodeGroup(grp4) + mm.rearrangeFamilies() + self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp0"),(0,)) + self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp1"),(0,)) + self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp2"),(0,)) + self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp3"),(-1,)) + self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp4"),(1,)) + + for grp in [grp0,grp1,grp2,grp3,grp4]: + self.assertTrue(mm.getGroupArr(mm.getGrpNonEmptyLevelsExt(grp.getName())[0],grp.getName()).isEqual(grp)) + pass + pass + + def tessContxtMger1TS(self): + fname="Pyfile119.med" + coo=DataArrayDouble(1000) ; coo.iota() + m=MEDCouplingUMesh.Build0DMeshFromCoords(coo) + m.setName("mesh") + WriteMesh(fname,m,True) + f=MEDCouplingFieldDouble(ON_CELLS) + f.setMesh(m) + f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) + f.setArray(arr) + f.checkConsistencyLight() + for i in range(10): + arr[:]=float(i+1) + f.setTime(float(i),i,0) + WriteFieldUsingAlreadyWrittenMesh(fname,f) + pass + # + mm=MEDFileMesh.New(fname) + fmts=MEDFileFieldMultiTS(fname,False) + refSize=fmts.getHeapMemorySize() + for f1ts in fmts: + with f1ts: + f=f1ts.field(mm) + pass + pass + self.assertIn(fmts.getHeapMemorySize(),range(refSize,refSize+refSize//10)) + pass + pass if __name__ == "__main__":