Salome HOME
feat: new crackAlong method
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest2.py
index 4e7a94760f530b593a8f4b008da9145a1a02529f..3714c45bcddaca6151140435dd2ec6a9bf9475c0 100644 (file)
@@ -1,10 +1,10 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2012  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
 # License as published by the Free Software Foundation; either
-# version 2.1 of the License.
+# version 2.1 of the License, or (at your option) any later version.
 #
 # This library is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
 from math import pi,e,sqrt
-from MEDLoaderDataForTest import MEDLoaderDataForTest
+from MEDLoaderDataForTest import MEDLoaderDataForTest,WriteInTmpDir
+from MEDLoaderDataForTest import TestWriteUMeshesRW1,TestMultiFieldShuffleRW1
 
-class MEDLoaderTest(unittest.TestCase):
+class MEDLoaderTest2(unittest.TestCase):
+    @WriteInTmpDir
     def testMesh1DRW(self):
         mesh=MEDLoaderDataForTest.build1DMesh_1();
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep("Pyfile1.med",mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile1.med",mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep("Pyfile1.med",mesh,False);
+        mesh_rw=ReadUMeshFromFile("Pyfile1.med",mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMesh2DCurveRW(self):
         mesh=MEDLoaderDataForTest.build2DCurveMesh_1();
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep("Pyfile2.med",mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile2.med",mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep("Pyfile2.med",mesh,False);
+        mesh_rw=ReadUMeshFromFile("Pyfile2.med",mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMesh2DRW(self):
         mesh=MEDLoaderDataForTest.build2DMesh_1();
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep("Pyfile3.med",mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile3.med",mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep("Pyfile3.med",mesh,False);
+        mesh_rw=ReadUMeshFromFile("Pyfile3.med",mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMesh3DSurfRW(self):
         mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep("Pyfile4.med",mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile4.med",mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep("Pyfile4.med",mesh,False);
+        mesh_rw=ReadUMeshFromFile("Pyfile4.med",mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMesh3DRW(self):
         mesh=MEDLoaderDataForTest.build3DMesh_1();
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep("Pyfile5.med",mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile5.med",mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep("Pyfile5.med",mesh,False);
+        mesh_rw=ReadUMeshFromFile("Pyfile5.med",mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testFieldRW1(self):
         f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
-        MEDLoader.WriteFieldDep("Pyfile6.med",f1,False);
-        f2=MEDLoader.ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1);
+        WriteFieldDep("Pyfile6.med",f1,False);
+        f2=ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
         #
         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
-        MEDLoader.WriteFieldDep("Pyfile7.med",f1,False);
-        f2=MEDLoader.ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
+        WriteFieldDep("Pyfile7.med",f1,False);
+        f2=ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
         pass
 
+    @WriteInTmpDir
     def testFieldRW2(self):
         fileName="Pyfile8.med";
         VAL1=12345.67890314;
         VAL2=-1111111111111.;
         f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
-        MEDLoader.WriteFieldDep(fileName,f1,False);
+        WriteFieldDep(fileName,f1,False);
         f1.setTime(10.,8,9);
         f1.getArray().setIJ(0,0,VAL1);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.setTime(10.14,18,19);
         f1.getArray().setIJ(0,0,VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         #retrieving time steps...
-        f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),8,9);
+        f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),8,9);
         f1.setTime(10.,8,9);
         f1.getArray().setIJ(0,0,VAL1);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
-        f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),0,1);
+        f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),0,1);
         f3=MEDLoaderDataForTest.buildVecFieldOnCells_1();
         self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
-        f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),18,19);
+        f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),18,19);
         f1.setTime(10.14,18,19);
         f1.getArray().setIJ(0,0,VAL2);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
         #ON NODES
         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
         fileName2="Pyfile9.med";
-        MEDLoader.WriteFieldDep(fileName2,f1,False);
+        WriteFieldDep(fileName2,f1,False);
         f1.setTime(110.,108,109);
         tmp=f1.getArray().getPointer();
         f1.getArray().setIJ(0,3,VAL1);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
         f1.setTime(210.,208,209);
         f1.getArray().setIJ(0,3,VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
-        f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),108,109);
+        WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
+        f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),108,109);
         f1.setTime(110.,108,109);
         f1.getArray().setIJ(0,3,VAL1);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
-        f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),2,3);
+        f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),2,3);
         f3=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
         self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
-        f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),208,209);
+        f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),208,209);
         f1.setTime(210.,208,209);
         f1.getArray().setIJ(0,3,VAL2);
         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
@@ -127,6 +136,7 @@ class MEDLoaderTest(unittest.TestCase):
     #
     # Multi field in a same file, but this field has several
     #
+    @WriteInTmpDir
     def testFieldRW3(self):
         fileName="Pyfile11.med";
         VAL1=12345.67890314;
@@ -139,67 +149,68 @@ class MEDLoaderTest(unittest.TestCase):
         f1.setTime(10.,8,9);
         tmp=f1.getArray().getPointer();
         f1.getArray().setIJ(0,0,VAL1);
-        MEDLoader.WriteFieldDep(fileName,f1,False);
+        WriteFieldDep(fileName,f1,False);
         f1.setTime(10.14,18,19);
         f1.getArray().setIJ(0,0,VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.getMesh().setName(name3);
         f1.setTime(10.55,28,29);
         f1.getArray().setIJ(0,0,3*VAL1);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.setTime(10.66,38,39);
         f1.getArray().setIJ(0,0,3*VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.setTime(10.77,48,49);
         f1.getArray().setIJ(0,0,4*VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         #ON NODES
         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
         f1.setName(name1);
         f1.getMesh().setName(name3);
         f1.setTime(110.,8,9);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.setTime(110.,108,109);
         tmp=f1.getArray().getPointer();
         f1.getArray().setIJ(0,3,VAL1);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         f1.setTime(210.,208,209);
         f1.getArray().setIJ(0,3,VAL2);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
+        WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
         #
-        it1=MEDLoader.GetCellFieldIterations(fileName,name3,name1);
+        it1=GetCellFieldIterations(fileName,name3,name1);
         self.assertEqual(5,len(it1));
         self.assertEqual(8,it1[0][0]); self.assertEqual(9,it1[0][1]);
         self.assertEqual(18,it1[1][0]); self.assertEqual(19,it1[1][1]);
         self.assertEqual(28,it1[2][0]); self.assertEqual(29,it1[2][1]);
         self.assertEqual(38,it1[3][0]); self.assertEqual(39,it1[3][1]);
         self.assertEqual(48,it1[4][0]); self.assertEqual(49,it1[4][1]);
-        it3=MEDLoader.GetNodeFieldIterations(fileName,name3,name1);
+        it3=GetNodeFieldIterations(fileName,name3,name1);
         self.assertEqual(3,len(it3));
         self.assertEqual(8,it3[0][0]); self.assertEqual(9,it3[0][1]);
         self.assertEqual(108,it3[1][0]); self.assertEqual(109,it3[1][1]);
         self.assertEqual(208,it3[2][0]); self.assertEqual(209,it3[2][1]);
         #
         #
-        f1=MEDLoader.ReadFieldCell(fileName,name3,0,name1,8,9);
+        f1=ReadFieldCell(fileName,name3,0,name1,8,9);
         self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,0),13);
-        f1=MEDLoader.ReadFieldCell(fileName,name3,0,name1,18,19);
+        f1=ReadFieldCell(fileName,name3,0,name1,18,19);
         self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,0),13);
-        f1=MEDLoader.ReadFieldCell(fileName,name3,0,name1,28,29);
+        f1=ReadFieldCell(fileName,name3,0,name1,28,29);
         self.assertAlmostEqual(3*VAL1,f1.getArray().getIJ(0,0),13);
-        f1=MEDLoader.ReadFieldCell(fileName,name3,0,name1,38,39);
+        f1=ReadFieldCell(fileName,name3,0,name1,38,39);
         self.assertAlmostEqual(3*VAL2,f1.getArray().getIJ(0,0),13);
-        f1=MEDLoader.ReadFieldCell(fileName,name3,0,name1,48,49);
+        f1=ReadFieldCell(fileName,name3,0,name1,48,49);
         self.assertAlmostEqual(4*VAL2,f1.getArray().getIJ(0,0),13);
         #
-        f1=MEDLoader.ReadFieldNode(fileName,name3,0,name1,8,9);
+        f1=ReadFieldNode(fileName,name3,0,name1,8,9);
         self.assertAlmostEqual(71.,f1.getArray().getIJ(0,3),13);
-        f1=MEDLoader.ReadFieldNode(fileName,name3,0,name1,108,109);
+        f1=ReadFieldNode(fileName,name3,0,name1,108,109);
         self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,3),13);
-        f1=MEDLoader.ReadFieldNode(fileName,name3,0,name1,208,209);
+        f1=ReadFieldNode(fileName,name3,0,name1,208,209);
         self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,3),13);
         pass
 
+    @WriteInTmpDir
     def testMultiMeshRW1(self):
         fileName="Pyfile10.med";
         mesh1=MEDLoaderDataForTest.build3DMesh_1();
@@ -219,15 +230,15 @@ class MEDLoaderTest(unittest.TestCase):
         mesh4.setCoords(mesh1.getCoords());
         meshes=[mesh1,mesh2,mesh3,mesh4]
         mnane="3DToto";
-        MEDLoader.WriteUMeshesPartitionDep(fileName,mnane,meshes,False);
+        WriteUMeshesPartitionDep(fileName,mnane,meshes,False);
         #
-        mesh5=MEDLoader.ReadUMeshFromFile(fileName,mnane);
+        mesh5=ReadUMeshFromFile(fileName,mnane);
         mesh1.setName(mnane);
         part3=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
         mesh6=mesh5.buildPartOfMySelf(part3,True);
         mesh6.setName(mnane);
         self.assertTrue(mesh6.isEqual(mesh1,1e-12));
-        grps=MEDLoader.GetMeshGroupsNames(fileName,mnane);
+        grps=GetMeshGroupsNames(fileName,mnane);
         self.assertEqual(4,len(grps));
         grps.index("mesh2");
         grps.index("mesh3");
@@ -235,105 +246,47 @@ class MEDLoaderTest(unittest.TestCase):
         grps.index("3DMesh_1");
         #
         vec=["mesh2"];
-        mesh2_2=MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
+        mesh2_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
         self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
         vec=["mesh3"];
-        mesh3_2=MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
+        mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
         self.assertTrue(mesh3_2.isEqual(mesh3,1e-12));
         vec=["mesh4"];
-        mesh4_2=MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
+        mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
         self.assertTrue(mesh4_2.isEqual(mesh4,1e-12));
         vec=["3DMesh_1"];
-        mesh1_2=MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
+        mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
         mesh1.setName("3DMesh_1");
         self.assertTrue(mesh1_2.isEqual(mesh1,1e-12));
         #
-        vec=["Family_4","Family_2"];
-        mesh2_2=MEDLoader.ReadUMeshFromFamilies(fileName,mnane,0,vec);
+        vec=["Family_-5","Family_-3"];
+        mesh2_2=ReadUMeshFromFamilies(fileName,mnane,0,vec);
         mesh2_2.setName("mesh2");
         self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMesh3DSurfShuffleRW(self):
         fileName="Pyfile15.med";
         mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
         renumber1=[2,5,1,0,3,4]
         mesh.renumberCells(renumber1,False);
-        mesh.checkCoherency();
-        MEDLoader.WriteUMeshDep(fileName,mesh,False);
-        mesh_rw=MEDLoader.ReadUMeshFromFile(fileName,mesh.getName(),0);
+        mesh.checkConsistencyLight();
+        WriteUMeshDep(fileName,mesh,False);
+        mesh_rw=ReadUMeshFromFile(fileName,mesh.getName(),0);
         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
         pass
 
+    @WriteInTmpDir
     def testMultiFieldShuffleRW1(self):
-        fileName="Pyfile17.med";
-        m=MEDLoaderDataForTest.build3DMesh_2();
-        self.assertEqual(20,m.getNumberOfCells());
-        self.assertEqual(45,m.getNumberOfNodes());
-        polys=[1,4,6]
-        m.convertToPolyTypes(polys);
-        renum=[1,3,2,8,9,12,13,16,19,0,4,7,5,15,14,17,10,18,6,11]
-        m.renumberCells(renum,False);
-        m.orientCorrectlyPolyhedrons();
-        # Writing
-        MEDLoader.WriteUMeshDep(fileName,m,False);
-        f1Tmp=m.getMeasureField(False);
-        f1=f1Tmp.buildNewTimeReprFromThis(ONE_TIME,False);
-        f1.setTime(0.,1,2);
-        f_1=f1.cloneWithMesh(True);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
-        f1.applyFunc("2*x");
-        f1.setTime(0.01,3,4);
-        f_2=f1.cloneWithMesh(True);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
-        f1.applyFunc("2*x/3");
-        f1.setTime(0.02,5,6);
-        f_3=f1.cloneWithMesh(True);
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
-        # Reading
-        its=[(1,2),(3,4),(5,6)];
-        fs=MEDLoader.ReadFieldsOnSameMesh(ON_CELLS,fileName,f_1.getMesh().getName(),0,f_1.getName(),its);
-        self.assertEqual(3,len(fs));
-        self.assertTrue(fs[0].isEqual(f_1,1e-12,1e-12));
-        self.assertTrue(fs[1].isEqual(f_2,1e-12,1e-12));
-        self.assertTrue(fs[2].isEqual(f_3,1e-12,1e-12));
+        TestMultiFieldShuffleRW1(self)
         pass
 
+    @WriteInTmpDir
     def testWriteUMeshesRW1(self):
-        fileName="Pyfile18.med";
-        m3d=MEDLoaderDataForTest.build3DMesh_2();
-        pt=[0.,0.,-0.3]
-        vec=[0.,0.,1.]
-        nodes=m3d.findNodesOnPlane(pt,vec,1e-12);
-        m2d=m3d.buildFacePartOfMySelfNode(nodes,True);
-        renumber=[1,2,0,4,3]
-        m2d.renumberCells(renumber,False);
-        m2d.setName("ExampleOfMultiDimW");
-        meshes=[m2d,m3d]
-        MEDLoader.WriteUMeshes(fileName,meshes,False);
-        m3d_bis=MEDLoader.ReadUMeshFromFile(fileName,m2d.getName(),0);
-        self.assertTrue(not m3d_bis.isEqual(m3d,1e-12));
-        m3d_bis.setName(m3d.getName());
-        self.assertTrue(m3d_bis.isEqual(m3d,1e-12));
-        m2d_bis=MEDLoader.ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces
-        self.assertTrue(m2d_bis.isEqual(m2d,1e-12));
-        # Creation of a field on faces.
-        f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
-        f1.setName("FieldOnFacesShuffle");
-        f1.setMesh(m2d);
-        array=DataArrayDouble.New();
-        arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
-        array.setValues(arr1,m2d.getNumberOfCells(),2);
-        array.setInfoOnComponent(0,"plkj [mm]");
-        array.setInfoOnComponent(1,"pqqqss [mm]");
-        f1.setArray(array);
-        tmp=array.setValues(arr1,m2d.getNumberOfCells(),2);
-        f1.setTime(3.14,2,7);
-        f1.checkCoherency();
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
-        f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7);
-        self.assertTrue(f2.isEqual(f1,1e-12,1e-12));
+        TestWriteUMeshesRW1(self)
         pass
     pass
 
-unittest.main()
+if __name__ == "__main__":
+  unittest.main()