renumNode=DataArrayInt.New()
renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
mm.setRenumFieldArr(1,renumNode)
+ mm.computeRevNum()
mm.setMeshAtLevel(-1,m1,True);
mm.setMeshAtLevel(0,m,True);
mm.setMeshAtLevel(-2,m2,True);
self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
delta4=ref_heap_mem-mm.getHeapMemorySize()
self.assertTrue(delta4<delta3)
- self.assertTrue(delta4>=32*4*2)
+ self.assertTrue(delta4>=MEDCouplingSizeOfIDs()/2*4*2)
#
mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
self.assertEqual(len(mm.getGroupsNames()),6)
arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
arr.setInfoOnComponents(compos)
self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
+ m_ref = mm[0].deepCopy()
+ # now read it in 2 load sessions to avoid memory peak. zipCoords is no more requested here.
+ ms=MEDFileMeshes()
+ mrs = MEDFileMeshReadSelector()
+ mrs.setNumberOfCoordsLoadSessions(2)
+ mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1],-1,-1,mrs)
+ ms.pushMesh(mm)
+ spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
+ self.assertEqual(spd.getSlice(),slice(4,6,1))
+ spd=mm.getPartDefAtLevel(1)
+ self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
+ self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
+ fs=MEDFileFields.LoadPartOf(fileName,False,ms)
+ fs[0][0].loadArrays()
+ arr=DataArrayDouble([(4,104),(5,105)])
+ arr.setInfoOnComponents(compos)
+ self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
+ fs[1][0].loadArrays()
+ arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
+ arr.setInfoOnComponents(compos)
+ self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
+ self.assertTrue( mm[0].deepCopy().isEqual(m_ref,1e-12) )
pass
@WriteInTmpDir
self.assertTrue(mm.getGroupArr(0,"grp2").isEqualWithoutConsideringStr(grp2))
self.assertEqual(mm.getFamiliesNames(),('Fam_1','Fam_2','Fam_6','Fam_7'))
pass
-
+
+ def testMeshConvertFromMEDFileGeoType(self):
+ self.assertEqual(MEDFileMesh.ConvertFromMEDFileGeoType(320),NORM_HEXA20)
+
+ @WriteInTmpDir
+ def testFieldInt64_0(self):
+ """
+ Small basic test with I/O of field in int64.
+ """
+ fname="Pyfile120.med"
+ arr = DataArrayDouble([0,1])
+ m = MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh") ; m=m.buildUnstructured()
+ f = MEDCouplingFieldInt64(ON_CELLS) ; f.setName("field")
+ v = 1234567890123456
+ f.setArray(DataArrayInt64([v]))
+ f.setMesh(m)
+ mm = MEDFileUMesh()
+ mm[0] = m
+ f1ts = MEDFileInt64Field1TS()
+ f1ts.setFieldNoProfileSBT(f)
+ fmts = MEDFileInt64FieldMultiTS()
+ fmts.pushBackTimeStep(f1ts)
+ fs = MEDFileFields()
+ fs.pushField(fmts)
+ mm.write(fname,2)
+ fs.write(fname,0)
+ #
+ mm = MEDFileMesh.New(fname)
+ fs = MEDFileFields(fname)
+ f = fs[0][0].field(mm)
+ self.assertTrue( isinstance(f,MEDCouplingFieldInt64) )
+ self.assertEqual( f.getArray().getIJ(0,0) , v )
+
+ @WriteInTmpDir
+ def testNonRegUMeshSubParts(self):
+ """
+ Non regression test focuses on accordance between time stamp and active data structure in MEDFileUMeshAggregateCompute class.
+ """
+ fname = "Pyfile121.med"
+ m0 = MEDCouplingUMesh("mesh",1)
+ coords = DataArrayDouble([(0,0),(1,0),(2,0)])
+ m0.setCoords(coords)
+ m0.allocateCells()
+ m0.insertNextCell(NORM_SEG2,[1,2])
+ mm = MEDFileUMesh()
+ mm[0] = m0
+ m1 = MEDCoupling1SGTUMesh(m0.getName(), NORM_POINT1)
+ m1.setCoords(m0.getCoords())
+ m1.setNodalConnectivity(DataArrayInt([1,2]))
+ m1.setName(m0.getName())
+ mm[-1] = m1
+ fni = mm.computeFetchedNodeIds() # <- This invokation of const method implies 1SGTU parts computation
+ mm.zipCoords() # <- This call changes the coords and connectivity
+ mm.write(fname,2)
+ #
+ mm = MEDFileMesh.New(fname)
+ mm[0].checkConsistency() # <- check that correct DS has been taken at write time into MEDFileUMeshAggregateCompute
+ self.assertTrue( m0.isEqual(mm[0],1e-12) )
+ pass
+
pass
if __name__ == "__main__":