From: eap Date: Thu, 19 Sep 2013 09:05:22 +0000 (+0000) Subject: 22321: [CEA 933] Bug when reading a sauve file containing field on Gauss Pt X-Git-Tag: V7_3_0a1~138 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fmed.git;a=commitdiff_plain;h=305abf5d210f27d001c68934e91db5bb4300ccf7 22321: [CEA 933] Bug when reading a sauve file containing field on Gauss Pt + def testGaussPt(self): + """issue 22321: [CEA 933] Bug when reading a sauve file containing field on Gauss Pt. --- diff --git a/src/MEDLoader/Swig/SauvLoaderTest.py b/src/MEDLoader/Swig/SauvLoaderTest.py index 70fed0dc2..fbdc3c1a1 100644 --- a/src/MEDLoader/Swig/SauvLoaderTest.py +++ b/src/MEDLoader/Swig/SauvLoaderTest.py @@ -260,6 +260,68 @@ class SauvLoaderTest(unittest.TestCase): self.assertTrue(ids1.isEqual(ids2)) pass + def testGaussPt(self): + """issue 22321: [CEA 933] Bug when reading a sauve file containing field on Gauss Pt. + The problem was that a field ON_GAUSS_PT was created but no Gauss Localization + was defined""" + + # create a MEDFileData with a field ON_GAUSS_PT: 9 Gauss points, on 4 QUAD8 elements + f=MEDCouplingFieldDouble(ON_GAUSS_PT) + m=MEDCouplingUMesh("mesh",2) ; m.allocateCells() + m.insertNextCell(NORM_QUAD8,[0,2,4,6,1,3,5,7]) + m.insertNextCell(NORM_QUAD8,[2,9,11,4,8,10,12,3]) + m.insertNextCell(NORM_QUAD8,[6,4,14,16,5,13,15,17]) + m.insertNextCell(NORM_QUAD8,[4,11,19,14,12,18,20,13]) + m.setCoords(DataArrayDouble([(0,0),(0,0.25),(0,0.5),(0.25,0.5),(0.5,0.5),(0.5,0.25),(0.5,0),(0.25,0),(0,0.75),(0,1),(0.25,1),(0.5,1),(0.5,0.75),(0.75,0.5),(1,0.5),(1,0.25),(1,0),(0.75,0),(0.75,1),(1,1),(1,0.75)],21,2)) + f.setMesh(m) + arr=DataArrayDouble(4*9*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["YOUN []","NU []"]) + f.setArray(arr) + refCoo=[-1,-1,1,-1,1,1,-1,1,0,-1,1,0,0,1,-1,0] + gpCoo=[-0.7,-0.7,0.7,-0.7,0.7,0.7,-0.7,0.7,0,-0.7,0.7,0,0,0.7,-0.7,0,0,0] + wgt=[0.3,0.3,0.3,0.3,0.4,0.4,0.4,0.4,0.7] + f.setGaussLocalizationOnType(NORM_QUAD8,refCoo,gpCoo,wgt) + f.setName("SIGT") + f.checkCoherency() + # + mm=MEDFileUMesh() + mm.setMeshAtLevel(0,m) + mfm = MEDFileMeshes() + mfm.pushMesh( mm ) + ff=MEDFileField1TS() + ff.setFieldNoProfileSBT(f) + mfmts = MEDFileFieldMultiTS() + mfmts.pushBackTimeStep(ff) + mff = MEDFileFields() + mff.pushField( mfmts ) + mfd = MEDFileData.New() + mfd.setFields( mff ) + mfd.setMeshes( mfm ) + + # convert the MED file to a SAUV file + sauvFile = "SauvLoaderTest::testGaussPt.sauv" + sw=SauvWriter.New(); + sw.setMEDFileDS(mfd); + sw.write(sauvFile); + + # convert the SAUV file back to MED + sr=SauvReader.New(sauvFile); + d2=sr.loadInMEDFileDS(); + + self.assertEqual( 1, d2.getNumberOfFields() ) + self.assertEqual( 1, d2.getNumberOfMeshes() ) + mfm2 = d2.getMeshes()[0] + mff2 = d2.getFields()[0] + m2 = mfm2.getMeshAtLevel(0) + f2 = mff2.getTimeStepAtPos(0).getFieldOnMeshAtLevel(f.getTypeOfField(),0,mfm2) + f2.setGaussLocalizationOnType(NORM_QUAD8,refCoo,gpCoo,wgt) # not stored in SAUV + #f2.setOrder( f.getTime()[2] ) # not stored in SAUV + self.assertTrue( m2.isEqual( m, 1e-12 )) + self.assertTrue( f2.isEqual( f, 1e-12, 1e-12 )) + + os.remove( sauvFile ) + + + pass pass unittest.main()