X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FMEDLoaderTest4.py;h=203d242881b5b5b40eb1adfdcb9053b69dee421f;hb=7a5613bdf41382fa99817f2c549b8eab28b47057;hp=c6b2c1ba6f1ed454c39a75ed77b94ff29bc96089;hpb=59539f8a5ef8516985d1e1712f0c59e3ccad15c1;p=modules%2Fmed.git diff --git a/src/MEDLoader/Swig/MEDLoaderTest4.py b/src/MEDLoader/Swig/MEDLoaderTest4.py index c6b2c1ba6..203d24288 100644 --- a/src/MEDLoader/Swig/MEDLoaderTest4.py +++ b/src/MEDLoader/Swig/MEDLoaderTest4.py @@ -50,6 +50,8 @@ class MEDLoaderTest4(unittest.TestCase): m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"]) m1=m.buildDescendingConnectivity()[0] mm=MEDFileUMesh() ; mm.setMeshes([m,m1]) + fam=DataArrayInt(9) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) + fam=DataArrayInt(32) ; fam.iota(20) ; mm.setFamilyFieldArr(-1,fam) # fieldName="zeField" fs=MEDFileFieldMultiTS() @@ -176,12 +178,15 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96]))) self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + a6,a7=mml2.retrieveFamilyIdsOnCells() + self.assertTrue(a6.isEqual(DataArrayInt([20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,0,1,2,3,4,5,6,7,8]))) + self.assertTrue(not a7) for i in xrange(5): fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst) fields[0][i].loadArraysIfNecessary() @@ -381,7 +386,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96]))) self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) @@ -539,7 +544,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96]))) self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) @@ -568,7 +573,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32]))) self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) @@ -789,7 +794,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32]))) self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) @@ -912,7 +917,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp[pfl2],1e-12)) + self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18]))) self.assertTrue(a3.isEqual(DataArrayInt([3,0,3,1,3,3,4,1,3,1,4,2,3,4,5,2,3,6,5,4,3,6,7,5]))) @@ -942,7 +947,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26]))) self.assertTrue(a3.isEqual(DataArrayInt([3,2,7,3,3,7,8,3,3,3,8,4,3,8,9,4,3,13,9,8,3,13,14,9,4,6,11,12,7,4,12,13,8,7]))) @@ -1116,7 +1121,7 @@ class MEDLoaderTest4(unittest.TestCase): a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() a0Exp=DataArrayDouble([0.,0.,1.1,0.,2.2,0.,3.3,0.,4.4,0.,0.,1.7,1.1,1.7,2.2,1.7,3.3,1.7,4.4,1.7,0.,3.4,1.1,3.4,2.2,3.4,3.3,3.4,4.4,3.4],15,2) a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"]) - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16]))) self.assertTrue(a3.isEqual(DataArrayInt([4,3,2,7,8,4,4,3,8,9,4,7,6,11,12,4,9,8,13,14]))) @@ -1291,7 +1296,7 @@ class MEDLoaderTest4(unittest.TestCase): a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() a0Exp=DataArrayDouble([0.,0.,1.1,0.,2.2,0.,3.3,0.,4.4,0.,0.,1.7,1.1,1.7,2.2,1.7,3.3,1.7,4.4,1.7,0.,3.4,1.1,3.4,2.2,3.4,3.3,3.4,4.4,3.4],15,2) a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"]) - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16]))) self.assertTrue(a3.isEqual(DataArrayInt([4,3,2,7,8,4,4,3,8,9,4,7,6,11,12,4,9,8,13,14]))) @@ -1400,7 +1405,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26,30,34,38]))) self.assertTrue(a3.isEqual(DataArrayInt([3,2,7,3,3,7,8,3,3,3,8,4,3,8,9,4,3,13,9,8,3,13,14,9,4,0,5,6,1,4,1,6,7,2,4,5,10,11,6,4,6,11,12,7,4,12,13,8,7]))) @@ -1542,7 +1547,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp[pfl2],1e-12)) + self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18]))) self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4]))) @@ -1669,7 +1674,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp[pfl1],1e-12)) + self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18]))) self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4]))) @@ -1766,7 +1771,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64]))) self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,9,8,13,14,4,19,18,23,24,4,2,1,6,7,4,7,6,11,12,4,11,10,15,16,4,12,11,16,17,4,8,7,12,13,4,13,12,17,18,4,17,16,21,22,4,14,13,18,19,4,16,15,20,21,4,18,17,22,23]))) # <- here the mesh is renumbered : the mesh is equal to m[[0,2,3,4,7,15, 1,5,8,9, 6,10,13, 11,12,14]] @@ -1855,7 +1860,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() - self.assertTrue(a0.isEqual(a0Exp,1e-12)) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]))) self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64]))) self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,13,12,17,18,4,14,13,18,19,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24]))) # <- here the mesh is NOT renumbered : the mesh is equal to m @@ -2145,4 +2150,100 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + def test15(self): + """ + "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !) + and a field "zeField" lying on a single geometric type for Cell discr and node part. + Test that can appear the most simple but it hides a big issue of MEDReader + that copies are reduced at most. So it can leads to SIGSEGV if the memory management is not OK for int* and double * similar between VTK and MEDCoupling. + """ + fname="ForMEDReader15.med" + m0=MEDCouplingCMesh() + arr=DataArrayDouble(5) ; arr.iota(0) + m0.setCoords(arr,arr,arr) + m0.setName("mesh") + m0=m0.buildUnstructured() + # + fieldName="zeField" + fCell=MEDCouplingFieldDouble(ON_CELLS) + fCell.setName(fieldName) + fCell.setMesh(m0) + # + fNode=MEDCouplingFieldDouble(ON_NODES) + fNode.setName(fieldName) + fNode.setMesh(m0) + # + mm=MEDFileUMesh() + mm.setMeshAtLevel(0,m0) + # + ffs=MEDFileFieldMultiTS() + # TimeStep 0 + t=(1.,0,0) ; off=0. + f1ts=MEDFileField1TS() + a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + fCell.setArray(a) + fCell.setTime(*t) + fCell.checkCoherency() + a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + a=a.negate() + fNode.setArray(a) + fNode.setTime(*t) + fNode.checkCoherency() + f1ts.setFieldNoProfileSBT(fCell) + f1ts.setFieldNoProfileSBT(fNode) + ffs.pushBackTimeStep(f1ts) + # TimeStep 1 + t=(2.1,1,0) ; off=100. + f1ts=MEDFileField1TS() + a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + fCell.setArray(a) + fCell.setTime(*t) + fCell.checkCoherency() + a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + a=a.negate() + fNode.setArray(a) + fNode.setTime(*t) + fNode.checkCoherency() + f1ts.setFieldNoProfileSBT(fCell) + f1ts.setFieldNoProfileSBT(fNode) + ffs.pushBackTimeStep(f1ts) + # TimeStep 2 + t=(3.2,2,0) ; off=200. + f1ts=MEDFileField1TS() + a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + fCell.setArray(a) + fCell.setTime(*t) + fCell.checkCoherency() + a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + a=a.negate() + fNode.setArray(a) + fNode.setTime(*t) + fNode.checkCoherency() + f1ts.setFieldNoProfileSBT(fCell) + f1ts.setFieldNoProfileSBT(fNode) + ffs.pushBackTimeStep(f1ts) + # TimeStep 3 + t=(4.3,3,1) ; off=300. + f1ts=MEDFileField1TS() + a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + fCell.setArray(a) + fCell.setTime(*t) + fCell.checkCoherency() + a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) + a=a.negate() + fNode.setArray(a) + fNode.setTime(*t) + fNode.checkCoherency() + f1ts.setFieldNoProfileSBT(fCell) + f1ts.setFieldNoProfileSBT(fNode) + ffs.pushBackTimeStep(f1ts) + # + mm.write(fname,2) + ffs.write(fname,0) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + + pass + + pass + unittest.main()