X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingBasicsTest5.py;h=1bd4d3afb40d4f7ed7f46d4c93f8659daf2a04dd;hb=f7fdff591a1830181499ba95e16ef25eb43e0140;hp=e25b7c7ba9469e1278a0eecc08fa5e0a23e17973;hpb=0938088b3bbe54f4e420a5e1ea4b1c0344c8a9a5;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py b/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py index e25b7c7ba..1bd4d3afb 100644 --- a/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py +++ b/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2016 CEA/DEN, EDF R&D +# Copyright (C) 2007-2020 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -17,7 +17,13 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from MEDCoupling import * + +import sys +if sys.platform == "win32": + from MEDCouplingCompat import * +else: + from medcoupling import * + import unittest from math import pi,e,sqrt,cos,sin from datetime import datetime @@ -600,7 +606,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): m=MEDCoupling1SGTUMesh("m",NORM_QUAD4) mem_m=m.getHeapMemorySize() m.allocateCells(5) - self.assertIn(m.getHeapMemorySize() - mem_m, list(range(5 * 4 * 4, 5 * 4 * 4 + 32))) + self.assertIn(m.getHeapMemorySize() - mem_m, list(range(5 * 4 * MEDCouplingSizeOfIDs()//8, 5 * 4 * MEDCouplingSizeOfIDs()//8 + 32))) self.assertEqual(m.getNodalConnectivity().getNbOfElemAllocated(),20) m.setCoords(um.getCoords()) m.insertNextCell([1,0,6,7]) @@ -1013,7 +1019,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): self.assertEqual(d.getInfoOnComponents(),["aa","bbb"]) ref=d.getHeapMemorySize() d.desallocate() - self.assertEqual(ref-d.getHeapMemorySize(),6*4) + self.assertEqual(ref-d.getHeapMemorySize(),6*MEDCouplingSizeOfIDs()//8) self.assertTrue(not d.isAllocated()) self.assertEqual(d.getInfoOnComponents(),["aa","bbb"]) self.assertRaises(InterpKernelException,d.checkAllocated) @@ -1461,7 +1467,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): self.assertEqual(f4.getMesh(),None) pass - # test a simple node to cell convertion of a field + # test a simple node to cell conversion of a field def testSwig2NodeToCellDiscretization1(self): f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3) a1=DataArrayDouble(4) ; a1.iota() @@ -1890,7 +1896,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): gaussCoords=refCoords[:] ; gaussCoords[14]=0.9999999999999 # change z of point #4 0.999... instead of 1. because with shape function it leads to division by 0. ! fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights) arrOfDisc2=fGauss.getLocalizationOfDiscr() - self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity arount 0.,0.,1. ! + self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity around 0.,0.,1. ! pass def testSwig2Tri7GP1(self): @@ -2001,6 +2007,26 @@ class MEDCouplingBasicsTest5(unittest.TestCase): self.assertTrue(m.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7]))) pass + def testSwig2ColinearizeKeepingConform2D1(self): + eps = 1.0e-6 + # Just to get a nice coords array ... + mm = MEDCouplingCMesh(); arr = DataArrayDouble([0.0, 1.0,2.0]) + mm.setCoords(arr, arr); mm = mm.buildUnstructured(); coo = mm.getCoords() + + mesh = MEDCouplingUMesh("M", 2) + mesh.setCoords(coo) + c = [NORM_POLYGON, 0,1,4,7,6,3, NORM_QUAD4, 1,2,5,4, NORM_QUAD4,4,5,8,7] + cI = [0, 7,12,17] + mm.setConnectivity(DataArrayInt(c),DataArrayInt(cI)) + mm.checkConsistencyLight() + + mm.colinearizeKeepingConform2D(eps) + c = mm.getNodalConnectivity().getValues() + cI = mm.getNodalConnectivityIndex().getValues() + self.assertEqual(c, [NORM_POLYGON, 0, 1, 4, 7, 6, NORM_POLYGON, 1, 2, 5, 4, NORM_POLYGON, 4, 5, 8, 7]) + self.assertEqual(cI, [0,6,11,16]) + pass + def testSwig2BoundingBoxForBBTree1(self): """ This test appears simple but it checks that bounding box are correctly computed for quadratic polygons. It can help a lot to reduce the amount of intersections ! """ @@ -2122,7 +2148,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): pass def testSwig2Colinearize2D3(self): - """ colinearize was too agressive, potentially producing cells with one edge """ + """ colinearize was too aggressive, potentially producing cells with one edge """ # Flat polygon with 3 edges - nothing should happen (min number of edges for a linear polyg) coo = DataArrayDouble([0.0,0.0, 2.0,0.0, 1.5,0.0, 1.0,0.0, 0.5,0.0], 5,2) m = MEDCouplingUMesh("m", 2) @@ -2170,6 +2196,23 @@ class MEDCouplingBasicsTest5(unittest.TestCase): self.assertTrue( m.getCoords()[8].isEqual( DataArrayDouble([(1.0,0.0)]), 1.0e-12 ) ) self.assertEqual([0,5], m.getNodalConnectivityIndex().getValues()) + def testSwig2Colinearize2D4(self): + """ From ALAMOS. Colinearize around last seg in the connectivity was buggy. """ + mesh = MEDCouplingUMesh('C3', 2) + coo = DataArrayDouble([(-31.838400909874,21.557335816426),(-34.588400909874,16.794196095611),(-33.298676775512,19.225000000000),(-33.547226066398,19.368500000000),(-32.750140188627,22.083728734445),(-35.500140188627,17.320589013630), + (-35.044270549250,17.057392554621),(-32.619779010901,22.008464673393),(-32.554667298175,21.970872408523),(-32.745177043525,22.080863261284),(-32.747658616076,22.082295997864),(-32.682478027213,22.044663967338)]) + mesh.setCoords(coo) + c = DataArrayInt([32, 0, 1, 5, 4, 9, 7, 2, 6, 3, 10, 11, 8]) + cI = DataArrayInt([0, 13]) + mesh.setConnectivity(c, cI) + mesh.colinearize2D(1.0e-8) + coo = mesh.getCoords() + self.assertEqual(coo.getNumberOfTuples(), 13) + lstPt = coo[12] + self.assertAlmostEqual(lstPt[0,0], -32.29427054925) + self.assertAlmostEqual(lstPt[0,1], 21.8205322754351) + pass + def testSwig2CheckAndPreparePermutation2(self): a=DataArrayInt([10003,9999999,5,67]) self.assertTrue(DataArrayInt.CheckAndPreparePermutation(a).isEqual(DataArrayInt([2,3,0,1]))) @@ -3842,9 +3885,9 @@ class MEDCouplingBasicsTest5(unittest.TestCase): m.setCoords(arrX,arrX) f=MEDCouplingFieldInt(ON_CELLS) f.setMesh(m) - arr=DataArrayInt(8) ; arr.iota() ;f.setArray(arr) + arr=DataArrayInt32(8) ; arr.iota() ;f.setArray(arr) self.assertRaises(InterpKernelException,f.checkConsistencyLight) - arr=DataArrayInt(9) ; arr.iota() ;f.setArray(arr) + arr=DataArrayInt32(9) ; arr.iota() ;f.setArray(arr) f.checkConsistencyLight() f.setTimeUnit("ms") self.assertEqual(f.getTimeUnit(),"ms") @@ -3892,13 +3935,13 @@ class MEDCouplingBasicsTest5(unittest.TestCase): m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4])) m1=m1.buildUnstructured() ; m1.setName("mesh") f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setMesh(m1) - arr1=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr1.setInfoOnComponents(["aa","bbb"]) + arr1=DataArrayInt32([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr1.setInfoOnComponents(["aa","bbb"]) f1.setArray(arr1) ; f1.setName("f1") ; f1.setTime(2.,3,4) # m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1,2,3,4])) m2=m2.buildUnstructured() ; m2.setName("mesh") f2=MEDCouplingFieldInt(ON_CELLS) ; f2.setMesh(m2) - arr2=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr2.setInfoOnComponents(["aa","bbb"]) + arr2=DataArrayInt32([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr2.setInfoOnComponents(["aa","bbb"]) f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4) # self.assertTrue(f1.isEqual(f2,1e-12,0)) @@ -3924,7 +3967,7 @@ class MEDCouplingBasicsTest5(unittest.TestCase): # for fd,expected in ((ON_NODES,False),(ON_CELLS,True)): f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4) - arr4=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr4.setInfoOnComponents(["aa","bbb"]) + arr4=DataArrayInt32([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr4.setInfoOnComponents(["aa","bbb"]) f4.setArray(arr4) ; f4.setName("f1") self.assertEqual(f1.isEqual(f4,1e-12,0),expected) pass @@ -4644,14 +4687,14 @@ class MEDCouplingBasicsTest5(unittest.TestCase): """Test focused of new wrapped methods for MEDCouplingFieldInt thanks to code factorization.""" d=DataArrayDouble(7) ; d.iota() m=MEDCouplingUMesh.Build1DMeshFromCoords(d) - f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(m) ; arr=DataArrayInt(6) ; arr.iota() ; f.setArray(arr) ; f.checkConsistencyLight() + f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(m) ; arr=DataArrayInt32(6) ; arr.iota() ; f.setArray(arr) ; f.checkConsistencyLight() f_0=f[::2] # test is here - self.assertTrue(f_0.getArray().isEqual(DataArrayInt([0,2,4]))) + self.assertTrue(f_0.getArray().isEqual(DataArrayInt32([0,2,4]))) self.assertTrue(f_0.getMesh().isEqual(m[[0,2,4]],1e-12)) # - f2=MEDCouplingFieldInt(ON_NODES) ; f2.setMesh(m) ; arr=DataArrayInt(7) ; arr.iota() ; f2.setArray(arr) ; f2.checkConsistencyLight() + f2=MEDCouplingFieldInt(ON_NODES) ; f2.setMesh(m) ; arr=DataArrayInt32(7) ; arr.iota() ; f2.setArray(arr) ; f2.checkConsistencyLight() f_1=f2[::2] # test is here - self.assertTrue(f_1.getArray().isEqual(DataArrayInt([0,1,2,3,4,5]))) + self.assertTrue(f_1.getArray().isEqual(DataArrayInt32([0,1,2,3,4,5]))) m_1=m[[0,2,4]] ; m_1.zipCoords() self.assertTrue(f_1.getMesh().isEqual(m_1,1e-12)) pass