Salome HOME
Fix: getCellsContainingPoints() in case of polyhedron with a face containing colinear...
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingExamplesTest.py
index fb60d96a8685eea9bd576cc3a69ece825e0e9e31..e715b4634b1cfc193364aee4abe8618223b08170 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# 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
 # 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, sqrt
 
+def WriteInTmpDir(func):
+    def decoratedFunc(*args,**kwargs):
+        import tempfile,os
+        ret = None
+        with tempfile.TemporaryDirectory() as tmpdirname:
+            os.chdir(tmpdirname)
+            ret = func(*args,**kwargs)
+            os.chdir(os.path.dirname(tmpdirname))
+            pass
+        return ret
+    return decoratedFunc
+
 class MEDCouplingBasicsTest(unittest.TestCase):
 
+    @WriteInTmpDir
     def testExample_MEDCouplingFieldDouble_WriteVTK(self):
         #! [PySnippet_MEDCouplingFieldDouble_WriteVTK_1]
         # mesh
@@ -67,11 +82,11 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field2 = MEDCouplingFieldDouble( ON_NODES )
         field2.setArray( valsArr2 )
 
-        # max field 
+        # max field
         fieldMax = MEDCouplingFieldDouble.MaxFields( field1, field2 )
         self.assertTrue( fieldMax.getArray().getValues() == valsMax )
 
-        # min field 
+        # min field
         fieldMin = MEDCouplingFieldDouble.MinFields( field1, field2 )
         self.assertTrue( fieldMin.getArray().getValues() == valsMin )
         #! [PySnippet_MEDCouplingFieldDouble_MaxFields_1]
@@ -177,7 +192,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
         varNames=["a","b"] # names used to refer to X and Y components
-        field.applyFuncNamedCompo( 3, varNames, func ) # require 3 components 
+        field.applyFuncNamedCompo( 3, varNames, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc3_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc3_2]
@@ -200,7 +215,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field.setArray( array )
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
-        field.applyFuncCompo( 3, func ) # require 3 components 
+        field.applyFuncCompo( 3, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc2_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc2_2]
@@ -221,7 +236,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field.setArray( array )
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
-        field.applyFunc( 3, func ) # require 3 components 
+        field.applyFunc( 3, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc_2]
@@ -689,6 +704,17 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         badCellIds=mesh.are2DCellsNotCorrectlyOriented( vec, False )
         assert len( badCellIds ) == 0 # the orientation is OK
         #! [PySnippet_MEDCouplingUMesh_are2DCellsNotCorrectlyOriented_2]
+        #! [PySnippet_MEDCouplingUMesh_are2DCellsNotCorrectlyOriented_3]
+        mesh.orientCorrectly2DCells( None )
+        #! [PySnippet_MEDCouplingUMesh_are2DCellsNotCorrectlyOriented_3]
+        #! [PySnippet_MEDCouplingUMesh_are2DCellsNotCorrectlyOriented_4]
+        refCells = [ 0,2 ]
+        objCells = [ 1,3 ]
+        refGroup = mesh.buildPartOfMySelf( refCells )
+        objGroup = mesh.buildPartOfMySelf( objCells )
+        objGroup.orientCorrectly2DCells( refGroup )
+        mesh.setPartOfMySelf( objCells, objGroup )
+        #! [PySnippet_MEDCouplingUMesh_are2DCellsNotCorrectlyOriented_4]
         return
 
     def testExample_MEDCouplingUMesh_getCellsContainingPoints(self):
@@ -725,9 +751,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,2,4, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -871,9 +897,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -883,7 +909,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_1]
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_2]
         nodeIdsArr=mesh.findBoundaryNodes()
-        assert nodeIdsArr.getNumberOfTuples() == mesh.getNumberOfNodes() - 1 
+        assert nodeIdsArr.getNumberOfTuples() == mesh.getNumberOfNodes() - 1
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_2]
         return
 
@@ -893,9 +919,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -998,9 +1024,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1053,8 +1079,8 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4]) 
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
         mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.finishInsertingCells()
         coords=[0.3,-0.301, # 0
@@ -1116,9 +1142,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1141,9 +1167,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1899,7 +1925,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
     def testExample_DataArrayDouble_findCommonTuples1(self):
 #! [PySnippet_DataArrayDouble_findCommonTuples1]
         array2=[2.3,2.3, 1.2,1.2, 1.3,1.3, 2.3,2.3, 2.301,2.301, 0.8,0.8]
-        da=DataArrayDouble(array2,6,2)        
+        da=DataArrayDouble(array2,6,2)
 #! [PySnippet_DataArrayDouble_findCommonTuples1]
 #! [PySnippet_DataArrayDouble_findCommonTuples2]
         c,cI=da.findCommonTuples(1.01e-1)
@@ -1971,7 +1997,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 #! [SnippeDataArrayIntKeepSelectedComponents1_1]
         arr1=[1,2,3,4,     # tuple 0
               11,12,13,14, # tuple 1
-              21,22,23,24, # 
+              21,22,23,24, #
               31,32,33,34,
               41,42,43,44]
         a1=DataArrayInt()
@@ -2106,7 +2132,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 
     def testExampleUMeshStdBuild1(self):
 # ! [PySnippetUMeshStdBuild1_1]
-        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0., 
+        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0.,
                  0.7,0.2,0.,    -0.3,0.7,0.,    0.2,0.7,0.,     0.7,0.7,0. ]
         nodalConnPerCell=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
 # ! [PySnippetUMeshStdBuild1_1]
@@ -2125,7 +2151,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.finishInsertingCells()
 # ! [PySnippetUMeshStdBuild1_3]
 # ! [PySnippetUMeshStdBuild1_4]
-        coordsArr=DataArrayDouble(coords,9,3)#here coordsArr are declared to have 3 components, mesh will deduce that its spaceDim==3. 
+        coordsArr=DataArrayDouble(coords,9,3)#here coordsArr are declared to have 3 components, mesh will deduce that its spaceDim==3.
         mesh.setCoords(coordsArr)#coordsArr contains 9 tuples, that is to say mesh contains 9 nodes.
 # ! [PySnippetUMeshStdBuild1_4]
 # ! [PySnippetUMeshStdBuild1_5]
@@ -2167,7 +2193,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 
     def testExampleUMeshAdvBuild1(self):
 # ! [PySnippetUMeshAdvBuild1_1]
-        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0., 
+        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0.,
                  0.7,0.2,0.,    -0.3,0.7,0.,    0.2,0.7,0.,     0.7,0.7,0. ]
         nodalConnPerCell=[4,0,3,4,1, 3,1,4,2, 3,4,5,2, 4,6,7,4,3, 4,7,8,5,4]
         nodalConnPerCellIndex=[0,5,9,13,18,23]