X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingBasicsTest3.py;h=51888920ac17fcbdde43defdd66e38335d814bed;hb=1b746b38f3cdeae6654a9501f37fde5e56e59288;hp=7583efb1cdf6cb39621dae43aabfc2625ed1fcd4;hpb=3531e8f47b047f0176ec094e51ab2474284f3cd9;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py b/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py index 7583efb1c..51888920a 100644 --- a/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py +++ b/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.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,8 @@ # 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 @@ -130,7 +131,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): da.iota(7) da.rearrange(5) da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]") - da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; + da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; da[:,2]=3 self.assertEqual([7, 8, 3, 10, 11, 12, 13, 3, 15, 16, 17, 18, 3, 20, 21, 22, 23, 3, 25, 26],da.getValues()) da.rearrange(1) ; da.iota(7) ; da.rearrange(5) @@ -186,7 +187,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): da.iota(7) da.rearrange(5) da.setInfoOnComponent(0,"X [m]") ; da.setInfoOnComponent(1,"Y [km]") ; da.setInfoOnComponent(2,"Y [m]") - da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; + da.setInfoOnComponent(3,"Z [W]") ; da.setInfoOnComponent(4,"ZZ [km]") ; da[:,2]=3. self.assertEqual([7., 8., 3., 10., 11., 12., 13., 3., 15., 16., 17., 18., 3., 20., 21., 22., 23., 3., 25., 26.],da.getValues()) da.rearrange(1) ; da.iota(7) ; da.rearrange(5) @@ -1209,7 +1210,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): resToTest=f.getLocalizationOfDiscr(); self.assertEqual(3,resToTest.getNumberOfComponents()); self.assertEqual(8,resToTest.getNumberOfTuples());#2+3+4+4 gauss points for resp TRI3,TRI6,QUAD4,QUAD8 - expected3=[1.312,3.15,1.02, 0.56,3.3,0.6, 2.18,1.1,0.2, 1.18,1.54,0.98, 1.56,0.3,3.6, 1.613,0.801,4.374, 2.6,2.4,2.3, 2.31232,2.3933985,1.553255] + expected3=[1.312,3.15,1.02, 0.56,3.3,0.6, 2.20,1.0,0.2, 2.44, 2.52,1.4, 1.56,0.3,3.6, 1.613,0.801,4.374, 2.6,2.4,2.3, 2.31232,2.3933985,1.553255] for i in range(24): self.assertAlmostEqual(expected3[i],resToTest.getIJ(0,i),14); pass @@ -1259,6 +1260,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): vals1=[1.1,2.1,3.1,4.1,5.2,6.2,7.2,8.2,9.2,10.2] da.setValues(vals1,10,1); f.setArray(da); + f.checkConsistencyLight() # loc=[0.64637931739890486, -0.16185896817550552, 0.22678966365273748] locs=f.getValueOnMulti(loc); @@ -1444,7 +1446,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): m.checkConsistency();#OK because we are in polyhedron connec m.getNodalConnectivity().setIJ(36,0,14); m.checkConsistencyLight(); - self.assertRaises(InterpKernelException,m.checkConsistency);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type. + self.assertRaises(InterpKernelException,m.checkConsistency);#Throw because now cell 5 is a TETRA4 (14) so mismatch of number index and static type. pass def testUnPolyze2(self): @@ -1494,7 +1496,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): self.assertTrue(d.isEqual(d1,1e-12)); # d2=d.convertToIntArr(); - d4=DataArrayInt.New(); + d4=DataArrayInt32.New(); self.assertTrue(not d2.isEqual(d4)); d4.deepCopyFrom(d2); self.assertTrue(d2.isEqual(d4)); @@ -1926,7 +1928,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); # pass - + def testGetDistributionOfTypes1(self): m=MEDCouplingDataForTest.build2DTargetMesh_1(); tab1=[2,0,1,3,4] @@ -1962,14 +1964,28 @@ class MEDCouplingBasicsTest3(unittest.TestCase): f=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME); f.setMesh(m); # - d=DataArrayDouble.New(); + d=DataArrayDouble.New(); d.alloc(0,2) + res = d.normMaxPerComponent() + self.assertAlmostEqual(-1.0, res[0],14) + self.assertAlmostEqual(-1.0, res[1],14) + tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6] d.setValues(tab,5,2); + + res = d.normMaxPerComponent() + self.assertAlmostEqual(6.3, res[0],14) + self.assertAlmostEqual(7.8, res[1],14) + f.setArray(d); f.checkConsistencyLight(); # - self.assertAlmostEqual(7.8,f.normMax(),14); + res = f.normMax() + self.assertAlmostEqual(6.3,res[0],14); + self.assertAlmostEqual(7.8,res[1],14); # + self.assertAlmostEqual(6.3,f.normMax(0),14); + self.assertAlmostEqual(7.8,f.normMax(1),14); + pass def testFindAndCorrectBadOriented3DExtrudedCells1(self): @@ -2076,7 +2092,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): m3.setName(m.getName()); self.assertTrue(m.isEqual(m3,1e-12)); pass - + def testChangeUnderlyingMeshWithCMesh1(self): mesh=MEDCouplingCMesh.New(); coordsX=DataArrayDouble.New(); @@ -2154,7 +2170,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): self.assertEqual(0,c.getNbOfElems()); self.assertEqual(1,cI.getNbOfElems()); self.assertEqual([0],cI.getValues()) - + array12=[0.]*(6*5) da.setValues(array12,6,5) #bad NumberOfComponents self.assertRaises(InterpKernelException, da.findCommonTuples, 1e-2); @@ -2390,7 +2406,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12); pass pass - + def testBuildPartOfMySelfSafe1(self): mesh=MEDCouplingDataForTest.build2DTargetMesh_1() self.assertRaises(InterpKernelException,mesh.buildPartOfMySelf,[0,-1,4,2],True) @@ -2509,68 +2525,12 @@ class MEDCouplingBasicsTest3(unittest.TestCase): myCoords = DataArrayDouble.New(mcoords, 3, 2) m1.setCoords(myCoords) - + m2 = m1.deepCopy() m2.tessellate2D(0.1) # If the following raises, the test will fail automatically: m2.checkConsistency(0.0) # eps param not used - def testIntersect2DMeshesTmp4(self): - m1Coords=[0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1,0.,-1.5,0.5,0.,1.25,0.,0.70710678118654757,0.70710678118654757,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.70710678118654757,0.70710678118654757,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.70710678118654757,-0.70710678118654757,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.70710678118654757,-0.70710678118654757,1.0606601717798214,-1.0606601717798214]; - m1Conn=[0,3,1,13,11,9, 3,4,2,1,14,12,10,11, 5,3,0,15,13,17, 6,4,3,5,16,14,15,18, 5,0,7,17,21,19, 6,5,7,8,18,19,22,20, 0,1,7,9,23,21, 1,2,8,7,10,24,22,23]; - m1=MEDCouplingUMesh.New(); - m1.setMeshDimension(2); - m1.allocateCells(8); - m1.insertNextCell(NORM_TRI6,6,m1Conn[0:6]); - m1.insertNextCell(NORM_QUAD8,8,m1Conn[6:14]); - m1.insertNextCell(NORM_TRI6,6,m1Conn[14:20]); - m1.insertNextCell(NORM_QUAD8,8,m1Conn[20:28]); - m1.insertNextCell(NORM_TRI6,6,m1Conn[28:34]); - m1.insertNextCell(NORM_QUAD8,8,m1Conn[34:42]); - m1.insertNextCell(NORM_TRI6,6,m1Conn[42:48]); - m1.insertNextCell(NORM_QUAD8,8,m1Conn[48:56]); - m1.finishInsertingCells(); - myCoords1=DataArrayDouble.New(); - myCoords1.setValues(m1Coords,25,2); - m1.setCoords(myCoords1); - # - m2Coords=[0.,0.,1.1,0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1,-1.1,-1.,0.,-1.,1.1,-1,1.7,-1.] - m2Conn=[0,3,2,1, 1,2,5,4, 7,6,3,0, 8,9,6,7, 7,0,12,11, 8,7,11,10, 0,1,13,12, 1,4,14,13] - m2=MEDCouplingUMesh.New(); - m2.setMeshDimension(2); - m2.allocateCells(8); - for i in range(8): - m2.insertNextCell(NORM_QUAD4,4,m2Conn[4*i:4*(i+1)]) - pass - m2.finishInsertingCells(); - myCoords2=DataArrayDouble.New(); - myCoords2.setValues(m2Coords,15,2); - m2.setCoords(myCoords2); - # - m3,d1,d2=MEDCouplingUMesh.Intersect2DMeshes(m2,m1,1e-10) - m3.unPolyze() - # - expected1=[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] - expected2=[0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1] - self.assertEqual(16,d1.getNumberOfTuples()); - self.assertEqual(16,d2.getNumberOfTuples()); - self.assertEqual(16,m3.getNumberOfCells()); - self.assertEqual(104,m3.getNumberOfNodes()); - self.assertEqual(2,m3.getSpaceDimension()); - self.assertEqual(expected1,d1.getValues()); - self.assertEqual(expected2,d2.getValues()); - expected3=[6,16,15,18,44,45,46,8,18,2,1,16,47,48,49,50,8,17,1,2,40,51,52,53,54,8,40,5,4,17,55,56,57,58,6,18,15,20,59,60,61,8,20,7,6,18,62,63,64,65,8,41,6,7,21,66,67,68,69,8,21,8,9,41,70,71,72,73,6,20,15,22,74,75,76,8,22,11,7,20,77,78,79,80,8,21,7,11,42,81,82,83,84,8,42,10,8,21,85,86,87,88,6,22,15,16,89,90,91,8,16,1,13,22,92,93,94,95,8,43,13,1,17,96,97,98,99,8,17,4,14,43,100,101,102,103] - expected4=[0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136] - expected5=[0.,0.,1.1, 0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,1.1180339887498951,1.,-1.1180339887498951,1.,-1.1180339887498951,-1.,1.1180339887498951,-1.,0.5,0.,0.,0.5,0.7071067811865477,0.7071067811865476,0.55,1.,1.1,0.5,1.05,0.,0.7071067811865477,0.7071067811865475,1.3,0.,1.1,0.5,1.1090169943749475,1.,1.4012585384440737,0.535233134659635,1.4090169943749475,1.,1.7,0.5,1.6,0.,1.4012585384440737,0.535233134659635,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-1.05,0.,-1.1,0.5,-0.55,1.,-0.7071067811865478,0.7071067811865475,-1.1090169943749475,1.,-1.1,0.5,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.6,0.,-1.7,0.5,-1.4090169943749475,1.,-1.4012585384440737,0.5352331346596344,-0.5,0.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.55,-1.,-1.1,-0.5,-1.05,0.,-0.7071067811865475,-0.7071067811865477,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,-1.4012585384440734,-0.5352331346596354,-1.4090169943749475,-1.,-1.7,-0.5,-1.6,0.,-1.4012585384440732,-0.5352331346596354,0.,-0.5,0.5,0.,0.7071067811865475,-0.7071067811865477,1.05,0.,1.1,-0.5,0.55,-1.,0.7071067811865475,-0.7071067811865477,1.1090169943749475,-1.,1.1,-0.5,1.3,0.,1.4012585384440737,-0.535233134659635,1.6,0.,1.7,-0.5,1.4090169943749475,-1.,1.4012585384440737,-0.535233134659635] - self.assertEqual(136,m3.getNodalConnectivity().getNumberOfTuples()); - self.assertEqual(17,m3.getNodalConnectivityIndex().getNumberOfTuples()); - self.assertEqual(expected3,m3.getNodalConnectivity().getValues()); - self.assertEqual(expected4,m3.getNodalConnectivityIndex().getValues()); - for i in range(208): - self.assertAlmostEqual(expected5[i],m3.getCoords().getIJ(0,i),12); - pass - pass - def testGetCellIdsCrossingPlane1(self): mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1(); vec=[-0.07,1.,0.07] @@ -2645,8 +2605,39 @@ class MEDCouplingBasicsTest3(unittest.TestCase): for i in range(135): self.assertAlmostEqual(expected11[i],slice1.getCoords().getIJ(0,i),12); pass + ## + coo = DataArrayDouble([1.8686305176182501,0.85678785370447097,7.4, 1.8686305176182501,0.85678785370447097,7.5, 1.8663408654534299,0.82910039403216995,7.4, 1.8663408654534299,0.82910039403216995,7.5, 1.8370211426271501,0.83286926189135702,7.4, 1.8370211426271501,0.83286926189135702,7.5, 1.84595839792064,0.86012397150595199,7.4, 1.84595839792064,0.86012397150595199,7.5], 8,3) + conn = DataArrayInt([18,0,2,4,6,1,3,5,7]) + connI = DataArrayInt([0,9]) + + mesh3D_2=MEDCouplingUMesh.New(); + mesh3D_2.setName("3DMesh_2"); + mesh3D_2.setMeshDimension(3); + mesh3D_2.setCoords(coo); + mesh3D_2.setConnectivity(conn,connI,True); + + expected12=[0] + expected13=[5,5,9,8,4] + expected14=[0,5] + expected15=[1.8686305176182501,0.85678785370447097,7.4, 1.8686305176182501,0.85678785370447097,7.5, 1.8663408654534299,0.82910039403216995,7.4, 1.8663408654534299,0.82910039403216995,7.5, 1.8370211426271501,0.83286926189135702,7.4, 1.8370211426271501,0.83286926189135702,7.5, 1.84595839792064,0.86012397150595199, 7.4, 1.84595839792064,0.86012397150595199,7.5, 1.8666525378798646,0.83286927118760312,7.4, 1.8666525378798646,0.83286927118760312,7.5] + + y_cut = 0.8328692711876031 + ori, vec = [0.0, y_cut, 0.0], [0.0,1.0,0.0] + slice1, ids = mesh3D_2.buildSlice3D(DataArrayDouble(ori,1,3), DataArrayDouble(vec,1,3), 1.0e-8) + self.assertEqual(2,slice1.getMeshDimension()); + self.assertEqual(3,slice1.getSpaceDimension()); + self.assertEqual(10,slice1.getNumberOfNodes()); + self.assertEqual(1,slice1.getNumberOfCells()); + self.assertEqual(1,ids.getNumberOfTuples()); + self.assertEqual(5,slice1.getNodalConnectivity().getNumberOfTuples()); + self.assertEqual(2,slice1.getNodalConnectivityIndex().getNumberOfTuples()); + self.assertEqual(expected12,ids.getValues()); + self.assertEqual(expected13,slice1.getNodalConnectivity().getValues()); + self.assertEqual(expected14,slice1.getNodalConnectivityIndex().getValues()); + for i in range(27): + self.assertAlmostEqual(expected15[i],slice1.getCoords().getIJ(0,i),12); + pass pass - def testBuildSlice3DSurf1(self): mesh3D,mesh2D=MEDCouplingDataForTest.build3DExtrudedUMesh_1(); mesh2D=mesh3D.buildDescendingConnectivity()[0]; @@ -2994,7 +2985,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase): self.assertEqual(expected3[i],m1c.getNodeIdsOfCell(i)) pass pass - + pass if __name__ == '__main__':