X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingBasicsTest2.py;h=29acce4f757e55b9712769e64c1f28f8fead0ecb;hb=1b746b38f3cdeae6654a9501f37fde5e56e59288;hp=e64c24637bd9f2b0947be9d941664dc6c91a3091;hpb=3531e8f47b047f0176ec094e51ab2474284f3cd9;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingBasicsTest2.py b/src/MEDCoupling_Swig/MEDCouplingBasicsTest2.py index e64c24637..29acce4f7 100644 --- a/src/MEDCoupling_Swig/MEDCouplingBasicsTest2.py +++ b/src/MEDCoupling_Swig/MEDCouplingBasicsTest2.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2016 CEA/DEN, EDF R&D +# Copyright (C) 2007-2024 CEA, EDF # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -18,7 +18,9 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from MEDCoupling import * + +import sys +from medcoupling import * import unittest from math import pi,e,sqrt,cos,sin from datetime import datetime @@ -700,7 +702,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12)); # pass - + def testGetNodeIdsOfCell1(self): mesh1=MEDCouplingDataForTest.build2DTargetMesh_1(); li=mesh1.getNodeIdsOfCell(1) @@ -815,8 +817,8 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertTrue(abs(3.6-values4[0])<1.e-12); self.assertTrue(abs(7.2-values4[1])<1.e-12); values4=f1.integral(True); - self.assertTrue(abs(0.5-values4[0])<1.e-12); - self.assertTrue(abs(1.-values4[1])<1.e-12); + self.assertTrue(abs(0.4-values4[0])<1.e-12); + self.assertTrue(abs(0.8-values4[1])<1.e-12); # f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME); f1.setMesh(m); @@ -871,7 +873,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): 132.680430393685,255.37973247196,96.15235602819]; volHexa8=3258520.29637466; baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644] - + coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588, 8.461744647847,76.653979804423,165.00018874933, -27.273893776752,167.567731083961,192.830034145464, @@ -880,7 +882,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): 132.680430393685,255.37973247196,96.15235602819]; volPenta6=944849.868507338; baryPenta6=[39.631002313543,182.692711783428,106.98540473964] - + coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819, -27.273893776752,167.567731083961,192.830034145464, 8.461744647847,76.653979804423,165.00018874933, @@ -1462,7 +1464,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertEqual(arr2[i],da3.getIJ(i,0)); pass pass - + def testKeepSetSelectedComponent1(self): arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.] a1=DataArrayDouble.New(); @@ -1614,7 +1616,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): pass # pass - + def testElementaryDAThrowAndSpecialCases(self): da=DataArrayInt.New(); self.assertRaises(InterpKernelException, da.checkAllocated); @@ -1623,16 +1625,16 @@ class MEDCouplingBasicsTest2(unittest.TestCase): da.alloc(7,1); da.fillWithValue(11); #11,11,11,11... da.iota(10); #10,11,12,13... - + db=DataArrayInt.New(); db.alloc(7,2); - + dbl2=DataArrayDouble.New(); dbl2.alloc(7,2); self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15); self.assertRaises(InterpKernelException, dbl2.sort); self.assertRaises(InterpKernelException, dbl2.iota, 10.); - + dbl=DataArrayDouble.New(); #DataArrayDouble not allocated yet self.assertRaises(InterpKernelException, dbl.iota, 10.); @@ -1640,7 +1642,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertRaises(InterpKernelException, dbl.sort); self.assertRaises(InterpKernelException, dbl.fromNoInterlace); self.assertRaises(InterpKernelException, dbl.toNoInterlace); - + dbl.alloc(7,1); dbl.iota(10.); self.assertTrue(not dbl.isUniform(10.,1e-15)); @@ -1653,16 +1655,16 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertTrue(dbl.isMonotonic(False, .99)); self.assertTrue(not dbl.isMonotonic(False, 1.1)); self.assertTrue(not dbl.isMonotonic(False, -1.1)); - + dc=DataArrayInt.New(); dc.alloc(14,1); - + dd=DataArrayDouble.New(); self.assertRaises(InterpKernelException, dd.checkAllocated); self.assertRaises(InterpKernelException, dd.fillWithValue, 1.); self.assertRaises(InterpKernelException, dd.iota, 1.); self.assertTrue(not ((dd.repr().find("No data"))==-1)); - + dd.alloc(0,1); #Allocated but nbOfElements==0! self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1)); self.assertTrue(not ((dd.repr().find("Empty Data"))==-1)); @@ -1670,7 +1672,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): dd.iota(10); #?!...ok self.assertTrue(dd.isMonotonic(True, 1.)); #nothing is monotonic self.assertTrue(dd.isMonotonic(False, 1.)); - + self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da); self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da); cIds=[2,2] @@ -1678,12 +1680,12 @@ class MEDCouplingBasicsTest2(unittest.TestCase): cIds[0]=1; cIds[0]=-1; self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds); - + info=["infoOfOneComponent"]*2; self.assertRaises(InterpKernelException, da.setInfoOnComponents, info); self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]); db.setInfoOnComponents(info); - + self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1); self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2); self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0)); @@ -1691,50 +1693,50 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertRaises(InterpKernelException, db.getVarOnComponent, 2); self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1); self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2); - + self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit "); self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit["); self.assertTrue(da.GetVarNameFromInfo("[unit]")==""); self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname"); - + self.assertTrue(da.GetUnitFromInfo("varname unit ")==""); self.assertTrue(da.GetUnitFromInfo("varname]unit[")==""); self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit"); self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit"); - + self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow"); self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow"); self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow"); - + self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow"); da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow"); - + self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow"); db.checkNbOfElems(7*2,"theMessageInThrow"); - + self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow"); self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow"); self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow")); self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow")); self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow")); - + self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1)); self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1)); self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1)); - + self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1)); self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1)); self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1)); - + self.assertRaises(InterpKernelException, dbl.selectByTupleIdSafeSlice, 0, 1, -1); self.assertRaises(InterpKernelException, dbl.subArray, -1, 1); self.assertRaises(InterpKernelException, dbl.subArray, 8, 1); self.assertRaises(InterpKernelException, dbl.subArray, 0, 8); self.assertRaises(InterpKernelException, dbl.meldWith, dd); - + self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da); #da tuple selector DataArrayInt instance not have exactly 2 components - + dbl3=DataArrayDouble.New(); dbl3.alloc(6,2); dbl3.fillWithValue(11.); @@ -1756,18 +1758,18 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertRaises(InterpKernelException, dbl3.inverse); self.assertRaises(InterpKernelException, dbl3.trace); self.assertRaises(InterpKernelException, dbl3.deviator); - + dbl3.setIJ(5,1,12.); self.assertTrue(dbl3.getMaxValueInArray()==12.); self.assertTrue(dbl3.getMinValueInArray()==11.); - + db.fillWithValue(100); #bad Ids self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db); db.fillWithValue(-1); #bad Ids self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db); db.fillWithValue(6); #bad Ids for dbl3 self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db); - + dbl3.checkNoNullValues(); dbl3.setIJ(5,0,0.); self.assertRaises(InterpKernelException, dbl3.checkNoNullValues); @@ -1776,12 +1778,12 @@ class MEDCouplingBasicsTest2(unittest.TestCase): a=[] self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a); self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a); - + a=[dbl2,dbl]; #Nb of components mismatch self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a); - + self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl); - + self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3 dbl4=DataArrayDouble.New(); @@ -1789,7 +1791,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): dbl5=DataArrayDouble.New(); dbl5.alloc(7,3); self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch - + a[0]=dbl4; #Nb of tuple mismatch a[1]=dbl5; #Nb of tuple mismatch self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a); @@ -1835,7 +1837,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14); pass pass - + def testDAToNoInterlace1(self): tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43] da=DataArrayInt.New(); @@ -1853,7 +1855,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14); pass pass - + def testDAIsUniform1(self): tab1=[1,1,1,1,1] da=DataArrayInt.New(); @@ -1883,7 +1885,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): da=DataArrayInt() # non allocated array self.assertRaises(InterpKernelException, da.hasUniqueValues) pass - + def testDADFromPolarToCart1(self): tab1=[2.,0.2,2.5,0.7] da=DataArrayDouble.New(); @@ -1894,7 +1896,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13); pass pass - + def testDADFromCylToCart1(self): tab1=[2.,0.2,4.,2.5,0.7,9.] da=DataArrayDouble.New(); @@ -1905,7 +1907,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13); pass pass - + def testDADFromSpherToCart1(self): tab1=[2.,0.2,0.3,2.5,0.7,0.8] da=DataArrayDouble.New(); @@ -1987,6 +1989,46 @@ class MEDCouplingBasicsTest2(unittest.TestCase): pass pass + def testConvertDegeneratedCellsAndRemoveFlatOnes1(self): + coo = DataArrayDouble([0.0]*10) # Just to have some. Values do not matter. + mesh = MEDCouplingUMesh("m", 2) + mesh.setCoords(coo) + + # Linear + c = [NORM_QUAD4, 0,1,0,2, NORM_TRI3, 0,1,1, NORM_TRI3, 0,1,2, NORM_QUAD4, 1,0,2,1, NORM_POLYGON, 1,0,1,1] + cI = [0, 5, 9, 13, 18, 23] + mesh.setConnectivity(DataArrayInt(c),DataArrayInt(cI)) + mesh2 = mesh.deepCopy(); mesh3 = mesh.deepCopy(); + mesh.convertDegeneratedCells() + c, cI = mesh.getNodalConnectivity().getValues(), mesh.getNodalConnectivityIndex().getValues() + self.assertEqual(c, [NORM_QUAD4, 0,1,0,2, NORM_POLYGON, 0,1, NORM_TRI3, 0,1,2, NORM_TRI3, 1,0,2, NORM_POLYGON, 1,0]) + self.assertEqual(cI, [0, 5, 8, 12, 16, 19]) + + res = mesh2.convertDegeneratedCellsAndRemoveFlatOnes() + c, cI = mesh2.getNodalConnectivity().getValues(), mesh2.getNodalConnectivityIndex().getValues() + self.assertEqual(c, [NORM_QUAD4, 0,1,0,2, NORM_TRI3, 0,1,2, NORM_TRI3, 1,0,2]) + self.assertEqual(cI, [0, 5, 9, 13]) + self.assertEqual(res.getValues(), [1,4]) + + # Quadratics now: + c = [NORM_TRI6, 0,1,0, 2,3,0, NORM_QUAD8, 0,1,1,3, 4,1,6,7, NORM_QPOLYG, 0,1, NORM_QPOLYG, 0,1,2,2, NORM_TRI6, 0,1,2, 3,4,5] + cI = [0, 7, 16, 19, 24, 31] + mesh3.setConnectivity(DataArrayInt(c),DataArrayInt(cI)) + + mesh3.convertDegeneratedCells() + c, cI = mesh3.getNodalConnectivity().getValues(), mesh3.getNodalConnectivityIndex().getValues() + self.assertEqual(c, [NORM_QPOLYG, 0,1, 2,3, NORM_TRI6, 0,1,3, 4,6,7, NORM_QPOLYG, 0,1, NORM_QPOLYG, 0,1,2,2, NORM_TRI6, 0,1,2, 3,4,5]) + self.assertEqual(cI, [0, 5, 12, 15, 20, 27]) + mesh4 = mesh3.deepCopy() + + res = mesh4.convertDegeneratedCellsAndRemoveFlatOnes() + c, cI = mesh4.getNodalConnectivity().getValues(), mesh4.getNodalConnectivityIndex().getValues() + self.assertEqual(c, [NORM_QPOLYG, 0,1, 2,3, NORM_TRI6, 0,1,3, 4,6,7, NORM_TRI6, 0,1,2, 3,4,5]) + self.assertEqual(cI, [0, 5, 12, 19]) + self.assertEqual(res.getValues(), [2,3]) + + pass + def testGetNodeIdsNearPoints1(self): mesh=MEDCouplingDataForTest.build2DTargetMesh_1(); coords=mesh.getCoords(); @@ -2359,8 +2401,8 @@ class MEDCouplingBasicsTest2(unittest.TestCase): pass # test of static method DataArrayInt::meld dai1=da1C.convertToIntArr(); - dai4=DataArrayInt.Meld(dai1,dai3); - tmp=DataArrayInt.Meld([dai1,dai3]); + dai4=DataArrayInt32.Meld(dai1,dai3); + tmp=DataArrayInt32.Meld([dai1,dai3]); self.assertTrue(dai4.isEqual(tmp)) self.assertEqual(5,dai4.getNumberOfComponents()); self.assertEqual(7,dai4.getNumberOfTuples()); @@ -2979,7 +3021,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): self.assertEqual(0,a.getIJ(1,0)); self.assertEqual(4,a.getIJ(2,0)); pass - + def testSwigErrorDaIntSelectByTupleId1(self): a=DataArrayInt.New(); arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17] @@ -3015,7 +3057,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase): da.renumberInPlace(d) da.renumber(d) pass - + pass if __name__ == '__main__':