Salome HOME
Further fix for CaseReader Py3 ...
[tools/medcoupling.git] / src / MEDLoader / Swig / SauvLoaderTest.py
index 55f1f992b7b46ad99937d098f6f25f68a4749079..f9454b1b183c3fd765b2805dcdbe4b0db599178d 100644 (file)
@@ -97,7 +97,7 @@ class SauvLoaderTest(unittest.TestCase):
 
         #remove fieldnodeint
         pointeFields = pointeMed.getFields()
-        for i in range( pointeFields.getNumberOfFields() ):
+        for i in range(pointeFields.getNumberOfFields()):
             if pointeFields.getFieldAtPos(i).getName() == "fieldnodeint":
                 pointeFields.destroyFieldAtPos( i )
                 break
@@ -130,11 +130,12 @@ class SauvLoaderTest(unittest.TestCase):
         self.assertEqual(2, um0.getNumberOfCellsWithType( NORM_PYRA5 ))
         self.assertEqual(2, um0.getNumberOfCellsWithType( NORM_HEXA8 ))
         um1 = m.getMeshAtLevel(-1)
-        self.assertEqual(2, um1.getNumberOfCellsWithType( NORM_TRI3 ))
+        #self.assertEqual(2, um1.getNumberOfCellsWithType( NORM_TRI3 ))
+        self.assertEqual(1, um1.getNumberOfCellsWithType( NORM_TRI3 ))
         pointeUM0 = pointeMedMesh.getMeshAtLevel(0)
         self.assertTrue(m.getCoords().isEqualWithoutConsideringStr(pointeMedMesh.getCoords(),1e-12))
-        self.assertEqual( um0.getMeasureField(0).accumulate(0),
-                          pointeUM0.getMeasureField(0).accumulate(0),1e-12)
+        self.assertEqual( um0.getMeasureField(False).accumulate(0),
+                          pointeUM0.getMeasureField(False).accumulate(0),1e-12)
         # check fields
         # fieldnodedouble
         fieldnodedoubleTS1 = pointeMed.getFields().getFieldWithName("fieldnodedouble")
@@ -143,7 +144,7 @@ class SauvLoaderTest(unittest.TestCase):
         self.assertEqual( fieldnodedoubleTS1.getNumberOfTS(), fieldnodedoubleTS2.getNumberOfTS())
         io1 = fieldnodedoubleTS1.getIterations()
         io2 = fieldnodedoubleTS2.getIterations()
-        for i in range(fieldnodedoubleTS1.getNumberOfTS() ):
+        for i in range(fieldnodedoubleTS1.getNumberOfTS()):
             fnd1 = fieldnodedoubleTS1.getFieldOnMeshAtLevel(ON_NODES, io1[i][0],io1[i][1],pointeUM0)
             fnd2 = fieldnodedoubleTS2.getFieldOnMeshAtLevel(ON_NODES, io2[i][0],io2[i][1],um0)
             self.assertTrue( fnd1.getArray().isEqual( fnd2.getArray(), 1e-12 ))
@@ -154,7 +155,7 @@ class SauvLoaderTest(unittest.TestCase):
         self.assertEqual( fieldnodedoubleTS1.getNumberOfTS(), fieldnodedoubleTS2.getNumberOfTS())
         io1 = fieldnodedoubleTS1.getIterations()
         io2 = fieldnodedoubleTS2.getIterations()
-        for i in range(fieldnodedoubleTS1.getNumberOfTS() ):
+        for i in range(fieldnodedoubleTS1.getNumberOfTS()):
             fnd1 = fieldnodedoubleTS1.getFieldOnMeshAtLevel(ON_CELLS, io1[i][0],io1[i][1],pointeUM0)
             fnd2 = fieldnodedoubleTS2.getFieldOnMeshAtLevel(ON_CELLS, io2[i][0],io2[i][1],um0)
             self.assertAlmostEqual( fnd1.accumulate(0), fnd2.accumulate(0) )
@@ -247,6 +248,58 @@ class SauvLoaderTest(unittest.TestCase):
         os.remove(sauvFile)
         pass
 
+    def testSauvReaderOnBigMesh(self):
+        # create a box with 1 million cells
+        mesh_dim = 3
+        nb_segs = [100, 100, 100]
+        box_sizes = [1., 1., 1.]
+        compo_names = ["x", "y", "z"]
+        box_steps = [box_sizes[i]/nb_segs[i] for i in range(mesh_dim)]
+        mesh = MEDCouplingCMesh.New("Mesh_box")
+
+        # axes coords
+        axes_arrays = []
+        for i in range(mesh_dim):
+          axe_coords = [j*box_steps[i] for j in range(nb_segs[i]+1)]
+
+          axe_arr = DataArrayDouble.New(axe_coords)
+          axe_arr.setInfoOnComponent(0,compo_names[i])
+
+          axes_arrays.append(axe_arr)
+
+        mesh.setCoords(*axes_arrays)
+        umesh = mesh.buildUnstructured()
+
+        m=MEDFileUMesh.New()
+        m.setMeshAtLevel(0,umesh)
+
+        # MED file data
+        ms=MEDFileMeshes.New()
+        ms.setMeshAtPos(0,m)
+        meddata=MEDFileData.New()
+        meddata.setMeshes(ms)
+
+        # write to SAUV
+        sauvFile = "box.sauv"
+        sw=SauvWriter();
+        sw.setMEDFileDS(meddata);
+        sw.write(sauvFile);
+
+        # read SAUV
+        sr=SauvReader(sauvFile);
+        d2=sr.loadInMEDFileDS();
+        mm = d2.getMeshes()
+        m = mm.getMeshAtPos(0)
+
+        # check
+        coords = m.getCoords()
+        nb_coords_values = coords.getNbOfElems()
+        nb_coords_values_expected = mesh_dim*((nb_segs[0]+1)*(nb_segs[1]+1)*(nb_segs[2]+1))
+        self.assertEqual(nb_coords_values, nb_coords_values_expected)
+
+        os.remove( sauvFile )
+        pass
+
     @unittest.skipUnless(HasXDR(),"requires XDR")
     def testMissingGroups(self):
         """test for issue 0021749: [CEA 601] Some missing groups in mesh after reading a SAUV file with SauvReader."""