X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FMEDLoaderTest4.py;h=2cef212f15a4dc1815fe31858f871df04936a9e4;hb=47fc37875313e4407e27ca91461c81ee82072095;hp=164269087805c54946bec3e3dd41153c8807385b;hpb=0a847a1b6a16f602a5efd7832b81a44a51fa7150;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/Swig/MEDLoaderTest4.py b/src/MEDLoader/Swig/MEDLoaderTest4.py index 164269087..2cef212f1 100644 --- a/src/MEDLoader/Swig/MEDLoaderTest4.py +++ b/src/MEDLoader/Swig/MEDLoaderTest4.py @@ -1,10 +1,10 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D +# Copyright (C) 2007-2020 CEA/DEN, EDF R&D # # 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 @@ -17,16 +17,18 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# Author : Anthony Geay (CEA/DEN) +# Author : Anthony Geay (EDF R&D) from MEDLoader import * import unittest from math import pi,e,sqrt +from MEDLoaderDataForTest import WriteInTmpDir class MEDLoaderTest4(unittest.TestCase): """ Test series to emulate the future MEDReader plugin for PARAVIS. """ + @WriteInTmpDir def test1(self): """ This test is the most simple one. One time serie of one field with only cell fields with no profiles. @@ -37,13 +39,13 @@ class MEDLoaderTest4(unittest.TestCase): tri=MEDCouplingUMesh("tri",2) tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2]) tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)])) - tris=[tri.deepCpy() for i in xrange(4)] + tris = [tri.deepCopy() for i in range(4)] for i,elt in enumerate(tris): elt.translate([i,0]) tris=MEDCouplingUMesh.MergeUMeshes(tris) quad=MEDCouplingUMesh("quad",2) quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3]) quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)])) - quads=[quad.deepCpy() for i in xrange(5)] + quads = [quad.deepCopy() for i in range(5)] for i,elt in enumerate(quads): elt.translate([5+i,0]) quads=MEDCouplingUMesh.MergeUMeshes(quads) m=MEDCouplingUMesh.MergeUMeshes(tris,quads) @@ -64,13 +66,13 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 1 @@ -80,14 +82,14 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 2 @@ -97,14 +99,14 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 3 @@ -115,14 +117,14 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fs.pushBackTimeStep(f) @@ -134,30 +136,35 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) mm.write(fname,2) fs.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,m1,mm,fs,f,fCell0,fCell1 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) # False is important to not read the values + fields.removeFieldsWithoutAnyTimeStep() refMem=fields.getHeapMemorySize() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -176,7 +183,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -193,7 +200,8 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,100,101,102,103,104,105,106,107,108]))) self.assertTrue(not a9) - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst) fields[0][i].loadArraysIfNecessary() tmpMem=fields.getHeapMemorySize() @@ -206,6 +214,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test2(self): """ One time serie of one field with cell and node discretization in the same field with no profiles. @@ -216,13 +225,13 @@ class MEDLoaderTest4(unittest.TestCase): tri=MEDCouplingUMesh("tri",2) tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2]) tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)])) - tris=[tri.deepCpy() for i in xrange(4)] + tris = [tri.deepCopy() for i in range(4)] for i,elt in enumerate(tris): elt.translate([i,0]) tris=MEDCouplingUMesh.MergeUMeshes(tris) quad=MEDCouplingUMesh("quad",2) quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3]) quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)])) - quads=[quad.deepCpy() for i in xrange(5)] + quads = [quad.deepCopy() for i in range(5)] for i,elt in enumerate(quads): elt.translate([5+i,0]) quads=MEDCouplingUMesh.MergeUMeshes(quads) m=MEDCouplingUMesh.MergeUMeshes(tris,quads) @@ -239,20 +248,20 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs.pushBackTimeStep(f) ##### Time step 1 @@ -262,21 +271,21 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs.pushBackTimeStep(f) ##### Time step 2 @@ -286,21 +295,21 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) # fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0) fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 3 @@ -311,21 +320,21 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) # fs.pushBackTimeStep(f) @@ -337,37 +346,42 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) # fs.pushBackTimeStep(f) mm.write(fname,2) fs.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,m1,mm,fs,f,fCell0,fCell1 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -388,7 +402,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() assert isinstance(mml2,MEDUMeshMultiLev) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -399,8 +413,9 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # for cells - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells f.loadArraysIfNecessary() @@ -409,7 +424,7 @@ class MEDLoaderTest4(unittest.TestCase): vExp=DataArrayDouble([200.,201.,202.,203.,204.,205.,206.,207.,208.,209.,210.,211.,212.,213.,214.,215.,216.,217.,218.,219.,220.,221.,222.,223.,224.,225.,226.,227.,228.,229.,230.,231.,232.,233.,234.,235.,236.,237.,238.,239.,240.,241.,242.,243.,244.,245.,246.,247.,248.,249.,250.,251.,252.,253.,254.,255.,256.,257.,258.,259.,260.,261.,262.,263.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,116.,117.],41,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*1000 self.assertTrue(v.isEqual(vExp,1e-12)) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][1][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells f.loadArraysIfNecessary() @@ -420,6 +435,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test3(self): """ This test is more advanced a same field is defined on CELLS for time steps 0, 2 and 4, and on NODES for time steps 1 and 3. So two time step series on the same field. No profile here neither on cells nor on nodes. @@ -429,13 +445,13 @@ class MEDLoaderTest4(unittest.TestCase): tri=MEDCouplingUMesh("tri",2) tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2]) tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)])) - tris=[tri.deepCpy() for i in xrange(4)] + tris = [tri.deepCopy() for i in range(4)] for i,elt in enumerate(tris): elt.translate([i,0]) tris=MEDCouplingUMesh.MergeUMeshes(tris) quad=MEDCouplingUMesh("quad",2) quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3]) quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)])) - quads=[quad.deepCpy() for i in xrange(5)] + quads = [quad.deepCopy() for i in range(5)] for i,elt in enumerate(quads): elt.translate([5+i,0]) quads=MEDCouplingUMesh.MergeUMeshes(quads) m=MEDCouplingUMesh.MergeUMeshes(tris,quads) @@ -452,13 +468,13 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 1 on nodes @@ -468,7 +484,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs.pushBackTimeStep(f) ##### Time step 2 on cells @@ -478,14 +494,14 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) fs.pushBackTimeStep(f) ##### Time step 3 on nodes @@ -495,7 +511,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName) ; fNode.setMesh(m1) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs.pushBackTimeStep(f) ##### Time step 4 @@ -505,30 +521,35 @@ class MEDLoaderTest4(unittest.TestCase): fCell0.setName(fieldName) ; fCell0.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2) fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell0.checkCoherency() + fCell0.checkConsistencyLight() f.setFieldNoProfileSBT(fCell0) # fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0) fCell1.setName(fieldName) ; fCell1.setMesh(m1) arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2) fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"]) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() f.setFieldNoProfileSBT(fCell1) # fs.pushBackTimeStep(f) mm.write(fname,2) fs.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,m1,mm,fs,f,fCell0,fCell1 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -547,7 +568,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,3): + for i in range(1, 3): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -558,8 +579,9 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) assert a4 is None assert a5 is None + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # for cells - for i in xrange(3): + for i in range(3): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells f.loadArraysIfNecessary() @@ -577,7 +599,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,2): + for i in range(1, 2): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -588,7 +610,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31,2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(2): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells f.loadArraysIfNecessary() @@ -600,6 +623,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test4(self): """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile. """ @@ -608,13 +632,13 @@ class MEDLoaderTest4(unittest.TestCase): tri=MEDCouplingUMesh("tri",2) tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2]) tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)])) - tris=[tri.deepCpy() for i in xrange(4)] + tris = [tri.deepCopy() for i in range(4)] for i,elt in enumerate(tris): elt.translate([i,0]) tris=MEDCouplingUMesh.MergeUMeshes(tris) quad=MEDCouplingUMesh("quad",2) quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3]) quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)])) - quads=[quad.deepCpy() for i in xrange(5)] + quads = [quad.deepCopy() for i in range(5)] for i,elt in enumerate(quads): elt.translate([5+i,0]) quads=MEDCouplingUMesh.MergeUMeshes(quads) m=MEDCouplingUMesh.MergeUMeshes(tris,quads) @@ -632,7 +656,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -641,7 +665,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName2) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -650,7 +674,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) ##### Time step 1 @@ -660,7 +684,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -669,7 +693,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName2) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -678,7 +702,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) ##### Time step 2 @@ -688,7 +712,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -697,7 +721,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName2) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -706,7 +730,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) ##### Time step 3 @@ -716,7 +740,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -725,7 +749,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName2) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -734,7 +758,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) ##### Time step 4 @@ -744,7 +768,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -753,7 +777,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName2) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -762,23 +786,28 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2) fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) - fNode.checkCoherency() + fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) # mm.write(fname,2) fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -799,7 +828,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -810,8 +839,9 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # test all the time steps of the 1/1 time step serie, on field 1 - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -822,7 +852,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass # test all the time steps of the 1/1 time step serie, on field 2 - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][1][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -833,7 +863,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass # test all the time steps of the 1/1 time step serie, on field 3 - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][2][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -844,7 +874,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass pass - + + @WriteInTmpDir def test5(self): """ This test plays with profiles both cell profiles and node profiles. Two first fields (resp on cells and on nodes) lie on the same mesh support whereas the third mesh lies on a different mesh. @@ -868,7 +899,7 @@ class MEDLoaderTest4(unittest.TestCase): fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() # - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName1) @@ -895,17 +926,22 @@ class MEDLoaderTest4(unittest.TestCase): pass mm.write(fname,2) fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -925,7 +961,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -942,10 +978,11 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105]))) self.assertTrue(not a9) - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): nbOfT=[6,8] fieldNames=[fieldName1,fieldName2] - for j in xrange(2): + for j in range(2): m={"i":j} f=allFMTSLeavesPerCommonSupport[0][0][j][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) @@ -962,7 +999,7 @@ class MEDLoaderTest4(unittest.TestCase): mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)) pass ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() @@ -979,7 +1016,8 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,109,110]))) self.assertTrue(not a9) - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): f=allFMTSLeavesPerCommonSupport[1][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -990,7 +1028,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass pass - + + @WriteInTmpDir def test6(self): """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done. """ @@ -1011,12 +1050,12 @@ class MEDLoaderTest4(unittest.TestCase): fieldName4="zeField4" ;# on nodes fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS() # - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -1051,7 +1090,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName4) ; fNode.setMesh(m) arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs4.pushBackTimeStep(f) pass @@ -1059,14 +1098,19 @@ class MEDLoaderTest4(unittest.TestCase): fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0) del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1091,7 +1135,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a.isEqual(coordsX,1e-12)) self.assertTrue(b.isEqual(coordsY,1e-12)) self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass a6,a7=mml2.retrieveFamilyIdsOnCells() @@ -1103,7 +1147,8 @@ class MEDLoaderTest4(unittest.TestCase): a10,a11=mml2.retrieveNumberIdsOnNodes() self.assertTrue(a10.isEqual(DataArrayInt([200,201,202,203,204,205,206,207,208,209,210,211,212,213,214]))) self.assertTrue(a11) # True because no copy - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1122,13 +1167,13 @@ class MEDLoaderTest4(unittest.TestCase): vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]']) self.assertTrue(v.isEqual(vExp,1e-12)) pass - + fcscp=allFMTSLeavesPerCommonSupport[1][1] mml=fcscp.buildFromScratchDataSetSupport(0,fields) mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh (a,b),c=mml2.buildVTUArrays() - self.assertTrue(not c)# c is False because this a sub support specialy built for buildVTUArrays + self.assertTrue(not c)# c is False because this a sub support specially built for buildVTUArrays self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12)) self.assertTrue(b.isEqual(coordsY,1e-12)) a6,a7=mml2.retrieveFamilyIdsOnCells() @@ -1140,10 +1185,11 @@ class MEDLoaderTest4(unittest.TestCase): a10,a11=mml2.retrieveNumberIdsOnNodes() self.assertTrue(a10.isEqual(DataArrayInt([202,203,204,207,208,209,212,213,214]))) self.assertTrue(not a11) # False because copy - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[1][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1183,7 +1229,8 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107]))) self.assertTrue(not a9) # False because copy - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): f=allFMTSLeavesPerCommonSupport[2][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1195,6 +1242,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test7(self): """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done. This test is very similar to the test6. @@ -1205,6 +1253,7 @@ class MEDLoaderTest4(unittest.TestCase): a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"]) m.setCoords(a0Exp) mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) + self.assertEqual(mm.getSpaceDimension(), m.getSpaceDimension()) fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num # @@ -1215,12 +1264,12 @@ class MEDLoaderTest4(unittest.TestCase): fieldName4="zeField4" ;# on nodes fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS() # - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -1255,7 +1304,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName4) ; fNode.setMesh(m) arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs4.pushBackTimeStep(f) pass @@ -1263,14 +1312,19 @@ class MEDLoaderTest4(unittest.TestCase): fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0) del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1301,10 +1355,11 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107]))) self.assertTrue(a9) # True because no copy - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1329,7 +1384,7 @@ class MEDLoaderTest4(unittest.TestCase): mml2=mml.prepare() self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh a,b,c=mml2.buildVTUArrays() - self.assertTrue(not c)#False here because a is the result of a computation not the internal strucutre + self.assertTrue(not c)#False here because a is the result of a computation not the internal structure self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12)) self.assertEqual(b,[3,3]) a6,a7=mml2.retrieveFamilyIdsOnCells() @@ -1338,10 +1393,11 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107]))) self.assertTrue(not a9) # False because copy - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[1][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1381,7 +1437,8 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107]))) self.assertTrue(not a9) # False because copy - for i in xrange(5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(5): f=allFMTSLeavesPerCommonSupport[2][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1393,6 +1450,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test8(self): """ This test plays with with gauss fields with no profiles. """ @@ -1413,12 +1471,12 @@ class MEDLoaderTest4(unittest.TestCase): fieldName2="zeField2" fieldName3="zeField3" fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -1426,7 +1484,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -1438,7 +1496,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setGaussLocalizationOnCells([6,7,8],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04]) fNode.setGaussLocalizationOnCells([9,10],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005]) arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs2.pushBackTimeStep(f) # @@ -1446,7 +1504,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName3) ; fNode.setMesh(m) arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs3.pushBackTimeStep(f) # @@ -1454,17 +1512,22 @@ class MEDLoaderTest4(unittest.TestCase): # mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + #for itmp in tmp: + # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + # pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1491,10 +1554,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,2,7,3,3,7,8,3,3,3,8,4,3,8,9,4,3,13,9,8,3,13,14,9,4,0,5,6,1,4,1,6,7,2,4,5,10,11,6,4,6,11,12,7,4,12,13,8,7]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1534,6 +1598,7 @@ class MEDLoaderTest4(unittest.TestCase): # pass + @WriteInTmpDir def test9(self): """ This test plays with with gauss fields with profiles. """ @@ -1556,7 +1621,7 @@ class MEDLoaderTest4(unittest.TestCase): pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) @@ -1581,7 +1646,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setGaussLocalizationOnCells([2,3],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04]) fNode.setGaussLocalizationOnCells([4],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005]) arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldProfile(fNode,mm,0,pfl1) fs2.pushBackTimeStep(f) # @@ -1597,17 +1662,22 @@ class MEDLoaderTest4(unittest.TestCase): # mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs1,fs2,fs3,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + #for itmp in tmp: + # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + # pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1634,10 +1704,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1675,7 +1746,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass pass - + + @WriteInTmpDir def test10(self): """ This test plays with fields only on nodes containing profiles. """ @@ -1696,7 +1768,7 @@ class MEDLoaderTest4(unittest.TestCase): fieldName2="zeField2" pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) @@ -1725,17 +1797,22 @@ class MEDLoaderTest4(unittest.TestCase): # mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs1,fs2,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1762,10 +1839,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1794,7 +1872,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass pass - + + @WriteInTmpDir def test11(self): """ This test is the ultimate test for the profiles with gauss points. It tests that even if there is non contiguous parts in definition of gauss points, it works ! WARNING here, as no other discretizations exists, the priority is given to the field -> the mesh is renumbered to accelerate the build of array of field. @@ -1808,7 +1887,7 @@ class MEDLoaderTest4(unittest.TestCase): # fieldName0="zeField0" fs0=MEDFileFieldMultiTS() - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) @@ -1817,23 +1896,28 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04]) fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005]) arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) pass mm.write(fname,2) fs0.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs0,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + #for itmp in tmp: + # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + # pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1860,10 +1944,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,9,8,13,14,4,19,18,23,24,4,2,1,6,7,4,7,6,11,12,4,11,10,15,16,4,12,11,16,17,4,8,7,12,13,4,13,12,17,18,4,17,16,21,22,4,14,13,18,19,4,16,15,20,21,4,18,17,22,23]))) # <- here the mesh is renumbered : the mesh is equal to m[[0,2,3,4,7,15, 1,5,8,9, 6,10,13, 11,12,14]] self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1876,6 +1961,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test12(self): """ This test is the second ultimate test for the profiles with gauss points. This test is close to test11 but here a 2nd field on cells without profile. So here the mesh is expected to be the same than m. @@ -1890,7 +1976,7 @@ class MEDLoaderTest4(unittest.TestCase): fieldName0="zeField0" fieldName1="zeField1" fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) @@ -1899,7 +1985,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04]) fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005]) arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -1907,23 +1993,28 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) pass mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs0,fs1,f,fNode ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + #for itmp in tmp: + # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + # pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -1950,10 +2041,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,13,12,17,18,4,14,13,18,19,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24]))) # <- here the mesh is NOT renumbered : the mesh is equal to m self.assertTrue(a4 is None) self.assertTrue(a5 is None) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -1973,6 +2065,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass + @WriteInTmpDir def test13(self): """ Testing polyhedrons mixed with hexa8""" fname="ForMEDReader13.med" @@ -1990,12 +2083,12 @@ class MEDLoaderTest4(unittest.TestCase): fieldName1="zeField1" fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1") fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2") - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -2003,7 +2096,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) # @@ -2011,7 +2104,7 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1]) arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldProfile(fNode,mm,0,pfl1) fs2.pushBackTimeStep(f) # @@ -2019,23 +2112,28 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2]) arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldProfile(fNode,mm,0,pfl2) fs3.pushBackTimeStep(f) pass mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs0 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2064,11 +2162,12 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,6,7,13,12,18,19,8,2,1,7,8,14,13,19,20,8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23]))) self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62]))) self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5]))) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2100,11 +2199,12 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22]))) self.assertTrue(a4.isEqual(DataArrayInt([0,31]))) self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4]))) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[1][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2127,11 +2227,11 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23]))) self.assertTrue(a4.isEqual(DataArrayInt([0,31,62]))) self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5]))) - for i in xrange(1,5): + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass pass - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[2][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2143,6 +2243,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test14(self): """ Testing only polyhedrons""" fname="ForMEDReader14.med" @@ -2157,12 +2258,12 @@ class MEDLoaderTest4(unittest.TestCase): fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() fieldName0="zeField0" fieldName1="zeField1" - for i in xrange(5): + for i in range(5): f=MEDFileField1TS() fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName0) ; fNode.setMesh(m) arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs0.pushBackTimeStep(f) # @@ -2170,23 +2271,28 @@ class MEDLoaderTest4(unittest.TestCase): fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) fNode.setName(fieldName1) ; fNode.setMesh(m) arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2) - fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency() + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight() f.setFieldNoProfileSBT(fNode) fs1.pushBackTimeStep(f) pass mm.write(fname,2) fs0.write(fname,0) ; fs1.write(fname,0) - a0Exp=mm.getCoords().deepCpy() + a0Exp=mm.getCoords().deepCopy() del m,mm,fs0 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2213,7 +2319,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23]))) self.assertTrue(a4.isEqual(DataArrayInt([0,31,62]))) self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5]))) - for i in xrange(1,5): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass a6,a7=mml2.retrieveFamilyIdsOnCells() @@ -2222,7 +2329,7 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8 is None) self.assertTrue(a9) - for i in xrange(5): + for i in range(5): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2243,6 +2350,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test15(self): """ "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !) @@ -2278,12 +2386,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell.setArray(a) fCell.setTime(*t) - fCell.checkCoherency() + fCell.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode.setArray(a) fNode.setTime(*t) - fNode.checkCoherency() + fNode.checkConsistencyLight() f1ts.setFieldNoProfileSBT(fCell) f1ts.setFieldNoProfileSBT(fNode) ffs.pushBackTimeStep(f1ts) @@ -2293,12 +2401,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell.setArray(a) fCell.setTime(*t) - fCell.checkCoherency() + fCell.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode.setArray(a) fNode.setTime(*t) - fNode.checkCoherency() + fNode.checkConsistencyLight() f1ts.setFieldNoProfileSBT(fCell) f1ts.setFieldNoProfileSBT(fNode) ffs.pushBackTimeStep(f1ts) @@ -2308,12 +2416,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell.setArray(a) fCell.setTime(*t) - fCell.checkCoherency() + fCell.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode.setArray(a) fNode.setTime(*t) - fNode.checkCoherency() + fNode.checkConsistencyLight() f1ts.setFieldNoProfileSBT(fCell) f1ts.setFieldNoProfileSBT(fNode) ffs.pushBackTimeStep(f1ts) @@ -2323,12 +2431,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell.setArray(a) fCell.setTime(*t) - fCell.checkCoherency() + fCell.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode.setArray(a) fNode.setTime(*t) - fNode.checkCoherency() + fNode.checkConsistencyLight() f1ts.setFieldNoProfileSBT(fCell) f1ts.setFieldNoProfileSBT(fNode) ffs.pushBackTimeStep(f1ts) @@ -2336,14 +2444,19 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) ffs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2376,8 +2489,10 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107]))) self.assertTrue(a9) # no copy here + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) pass + @WriteInTmpDir def test16(self): """ Here 2 meshes "mesh1" and "mesh2" and 4 fields (no profiles here) : - "zeField1_0" (CELLS) and "zeField2_0" (NODES) on "mesh1" @@ -2408,7 +2523,7 @@ class MEDLoaderTest4(unittest.TestCase): mm1.setFamiliesIdsOnGroup("Grp1_1",[0,1]) ; mm1.setFamiliesIdsOnGroup("Grp1_2",[2,3]) mms.pushMesh(mm1) ; del mm1 # - m1=m0.deepCpy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2") + m1=m0.deepCopy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2") # fCell2=MEDCouplingFieldDouble(ON_CELLS) fCell2.setName("zeField3_1") @@ -2440,12 +2555,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell1.setArray(a) fCell1.setTime(*t) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode1.setArray(a) fNode1.setTime(*t) - fNode1.checkCoherency() + fNode1.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2) # @@ -2454,12 +2569,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"]) fCell2.setArray(a) fCell2.setTime(*t) - fCell2.checkCoherency() + fCell2.checkConsistencyLight() a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode2.setArray(a) fNode2.setTime(*t) - fNode2.checkCoherency() + fNode2.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2) # TimeStep 1 @@ -2469,12 +2584,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell1.setArray(a) fCell1.setTime(*t) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode1.setArray(a) fNode1.setTime(*t) - fNode1.checkCoherency() + fNode1.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2) # @@ -2483,12 +2598,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"]) fCell2.setArray(a) fCell2.setTime(*t) - fCell2.checkCoherency() + fCell2.checkConsistencyLight() a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode2.setArray(a) fNode2.setTime(*t) - fNode2.checkCoherency() + fNode2.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2) # TimeStep 2 @@ -2498,12 +2613,12 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) fCell1.setArray(a) fCell1.setTime(*t) - fCell1.checkCoherency() + fCell1.checkConsistencyLight() a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode1.setArray(a) fNode1.setTime(*t) - fNode1.checkCoherency() + fNode1.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2) # @@ -2512,25 +2627,30 @@ class MEDLoaderTest4(unittest.TestCase): a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"]) fCell2.setArray(a) fCell2.setTime(*t) - fCell2.checkCoherency() + fCell2.checkConsistencyLight() a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"]) a=a.negate() fNode2.setArray(a) fNode2.setTime(*t) - fNode2.checkCoherency() + fNode2.checkConsistencyLight() f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1) f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2) # mms.write(fname,2) ; mts.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2548,6 +2668,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertEqual(len(allFMTSLeavesPerCommonSupport2[0][0]),2) pass + @WriteInTmpDir def test17(self): """ First test on GAUSS_NE (Elno). Here no Profiles. 2 times steps. @@ -2562,46 +2683,51 @@ class MEDLoaderTest4(unittest.TestCase): m.allocateCells() m.insertNextCell(NORM_QUAD4,[0,3,4,1]) m.insertNextCell(NORM_QUAD4,[1,4,5,2]) - m.checkCoherency2() + m.checkConsistency() # t=(1.1,0,-1) f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m) f.setArray(DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.])) f.setName(fieldName1) - f.checkCoherency() - MEDLoader.WriteField(fname,f,True) + f.checkConsistencyLight() + WriteField(fname,f,True) f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m) f2.setArray(DataArrayDouble([7.,11.],2,1)) f2.setName(fieldName2) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2) + WriteFieldUsingAlreadyWrittenMesh(fname,f2) f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m) f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1)) f3.setName(fieldName3) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3) + WriteFieldUsingAlreadyWrittenMesh(fname,f3) # t=(2.1,1,-1) f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m) f.setArray(DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])) f.setName(fieldName1) - f.checkCoherency() - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f) + f.checkConsistencyLight() + WriteFieldUsingAlreadyWrittenMesh(fname,f) f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m) f2.setArray(DataArrayDouble([11.,7.],2,1)) f2.setName(fieldName2) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2) + WriteFieldUsingAlreadyWrittenMesh(fname,f2) f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m) f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1)) f3.setName(fieldName3) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3) + WriteFieldUsingAlreadyWrittenMesh(fname,f3) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2634,12 +2760,13 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([0,1]))) self.assertTrue(a9) # no copy here - for i in xrange(1,2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 2): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])] vExp1=[DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]),DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])] - for i in xrange(2): + for i in range(2): f=allFMTSLeavesPerCommonSupport1[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2657,7 +2784,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp1[i],1e-12)) pass pass - + + @WriteInTmpDir def test18(self): """ First test on GAUSS_PT. Here no Profiles. 2 times steps. """ @@ -2671,48 +2799,53 @@ class MEDLoaderTest4(unittest.TestCase): m.allocateCells() m.insertNextCell(NORM_QUAD4,[0,3,4,1]) m.insertNextCell(NORM_QUAD4,[1,4,5,2]) - m.checkCoherency2() + m.checkConsistency() # t=(1.1,0,-1) f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m) f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3]) f.setArray(DataArrayDouble([3.,5.,4.,6.])) ; f.getArray().setInfoOnComponents(["Smth"]) f.setName(fieldName1) - f.checkCoherency() - MEDLoader.WriteField(fname,f,True) + f.checkConsistencyLight() + WriteField(fname,f,True) f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m) f2.setArray(DataArrayDouble([7.,11.],2,1)) f2.setName(fieldName2) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2) + WriteFieldUsingAlreadyWrittenMesh(fname,f2) f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m) f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1)) f3.setName(fieldName3) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3) + WriteFieldUsingAlreadyWrittenMesh(fname,f3) # t=(2.1,1,-1) f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m) f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3]) f.setArray(DataArrayDouble([5.,3.,6.,4.])) ; f.getArray().setInfoOnComponents(["Smth"]) f.setName(fieldName1) - f.checkCoherency() - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f) + f.checkConsistencyLight() + WriteFieldUsingAlreadyWrittenMesh(fname,f) f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m) f2.setArray(DataArrayDouble([11.,7.],2,1)) f2.setName(fieldName2) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2) + WriteFieldUsingAlreadyWrittenMesh(fname,f2) f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m) f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1)) f3.setName(fieldName3) - MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3) + WriteFieldUsingAlreadyWrittenMesh(fname,f3) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2746,12 +2879,13 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([0,1]))) self.assertTrue(a9) # no copy here - for i in xrange(1,2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 2): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])] vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])] - for i in xrange(2): + for i in range(2): f=allFMTSLeavesPerCommonSupport1[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2770,14 +2904,18 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp1[i],1e-12)) pass ## Now same exercise but with a different load strategy. All is load directly. - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2810,12 +2948,13 @@ class MEDLoaderTest4(unittest.TestCase): a8,a9=mml2.retrieveNumberIdsOnCells() self.assertTrue(a8.isEqual(DataArrayInt([0,1]))) self.assertTrue(a9) # no copy here - for i in xrange(1,2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 2): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])] vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])] - for i in xrange(2): + for i in range(2): f=allFMTSLeavesPerCommonSupport1[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) @@ -2832,7 +2971,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp1[i],1e-12)) pass pass - + + @WriteInTmpDir def test19(self): """ This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual"). @@ -2844,7 +2984,7 @@ class MEDLoaderTest4(unittest.TestCase): m0=m.buildUnstructured() ; del m m1=m0.computeSkin() # - mm=MEDFileUMesh() + mm=MEDFileUMesh() mm.setMeshAtLevel(0,m0) mm.setMeshAtLevel(-1,m1) ff=MEDFileFieldMultiTS() @@ -2854,7 +2994,7 @@ class MEDLoaderTest4(unittest.TestCase): f.setName(fieldName) arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"]) f.setArray(arr) - f.checkCoherency() + f.checkConsistencyLight() f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ff.pushBackTimeStep(f1ts) # time 1 @@ -2863,21 +3003,26 @@ class MEDLoaderTest4(unittest.TestCase): f.setName(fieldName) arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"]) f.setArray(arr) - f.checkCoherency() + f.checkConsistencyLight() f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ff.pushBackTimeStep(f1ts) # mm.write(fname,2) ff.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -2916,10 +3061,11 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(not a12) self.assertTrue(a13) # no copy here - for i in xrange(1,2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 2): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(2): + for i in range(2): f=allFMTSLeavesPerCommonSupport1[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -2933,6 +3079,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test20(self): """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2). 1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile. @@ -2967,16 +3114,16 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f0) fmts0.pushBackTimeStep(f1ts) # f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m) f1.setName(fieldName1) ; f1.setTime(*t) - da=m.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["zeInfoCell"]) + da=m.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["zeInfoCell"]) f1.setArray(da) - f1.checkCoherency() + f1.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f1) fmts1.pushBackTimeStep(f1ts) @@ -2985,16 +3132,16 @@ class MEDLoaderTest4(unittest.TestCase): f2.setName(fieldName2) ; f2.setTime(*t) da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"]) f2.setArray(da) - f2.checkCoherency() + f2.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f2,mm,0,pfl2) fmts2.pushBackTimeStep(f1ts) # f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp) f3.setName(fieldName3) ; f3.setTime(*t) - da=mTmp.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["abcdefg"]) + da=mTmp.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["abcdefg"]) f3.setArray(da) - f3.checkCoherency() + f3.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f3,mm,0,pfl3) fmts3.pushBackTimeStep(f1ts) @@ -3004,16 +3151,16 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f0) fmts0.pushBackTimeStep(f1ts) # f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m) f1.setName(fieldName1) ; f1.setTime(*t) - da=m.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"]) + da=m.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"]) f1.setArray(da) - f1.checkCoherency() + f1.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f1) fmts1.pushBackTimeStep(f1ts) @@ -3022,16 +3169,16 @@ class MEDLoaderTest4(unittest.TestCase): f2.setName(fieldName2) ; f2.setTime(*t) da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"]) f2.setArray(da) - f2.checkCoherency() + f2.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f2,mm,0,pfl2) fmts2.pushBackTimeStep(f1ts) # f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp) f3.setName(fieldName3) ; f3.setTime(*t) - da=mTmp.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"]) + da=mTmp.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"]) f3.setArray(da) - f3.checkCoherency() + f3.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f3,mm,0,pfl3) fmts3.pushBackTimeStep(f1ts) @@ -3049,14 +3196,19 @@ class MEDLoaderTest4(unittest.TestCase): fs.appendGlobs(fmts3,1e-12) fs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3096,10 +3248,11 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(a12.isEqual(DataArrayInt([0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240]))) self.assertTrue(a13) # no copy here - for i in xrange(1,2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 2): self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) pass - for i in xrange(2): + for i in range(2): f=allFMTSLeavesPerCommonSupport1[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -3148,7 +3301,8 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220]))) self.assertTrue(not a13) # copy here - for i in xrange(2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(2): f=allFMTSLeavesPerCommonSupport1[1][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -3173,6 +3327,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test21(self): """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields. This test checks nothing but write a MED file to be used by MEDReader tests. @@ -3205,6 +3360,7 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) pass + @WriteInTmpDir def test22(self): """ Use case where a field on nodes (ANodeField) on a mesh defined both in meshdim 2 and meshdim 1. The only possible geometrical support that suits the field is those with meshdim equal to 1 (-1 in relative). @@ -3227,7 +3383,7 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=DataArrayDouble(9) ; da.iota() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f0) fmts0.pushBackTimeStep(f1ts) @@ -3237,7 +3393,7 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=DataArrayDouble(9) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldNoProfileSBT(f0) fmts0.pushBackTimeStep(f1ts) @@ -3245,14 +3401,19 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) fs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3292,6 +3453,7 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(not a12) self.assertTrue(a13) # no copy here + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # f=allFMTSLeavesPerCommonSupport1[0][0][0][0] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) @@ -3310,8 +3472,9 @@ class MEDLoaderTest4(unittest.TestCase): self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse() self.assertTrue(v.isEqual(vExp,1e-12)) - pass - + pass + + @WriteInTmpDir def test23(self): """ Non regression test 2219 of modes. Idem than test22 except that here the node field is on profile. """ @@ -3335,7 +3498,7 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=DataArrayDouble(4) ; da.iota() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f0,mm,-1,pfl) fmts0.pushBackTimeStep(f1ts) @@ -3345,21 +3508,26 @@ class MEDLoaderTest4(unittest.TestCase): f0.setName(fieldName0) ; f0.setTime(*t) da=DataArrayDouble(4) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"]) f0.setArray(da) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts=MEDFileField1TS() f1ts.setFieldProfile(f0,mm,-1,pfl) fmts0.pushBackTimeStep(f1ts) mm.write(fname,2) fmts0.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3398,6 +3566,7 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(not a12) self.assertTrue(a13) # no copy here + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # f=allFMTSLeavesPerCommonSupport1[0][0][0][0] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) @@ -3416,6 +3585,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass + @WriteInTmpDir def test24(self): """ Non regression test for cartesian mesh whose the 3rd direction has only one node. It a false 3D mesh. """ @@ -3452,14 +3622,19 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) fmts0.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3483,7 +3658,8 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a.isEqual(arr0,1e-12)) self.assertTrue(b.isEqual(arr1,1e-12)) self.assertTrue(c.isEqual(arr2,1e-12)) - for i in xrange(2): + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(2): f=allFMTSLeavesPerCommonSupport[0][0][0][i] fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) f.loadArraysIfNecessary() @@ -3498,6 +3674,7 @@ class MEDLoaderTest4(unittest.TestCase): pass pass + @WriteInTmpDir def test25(self): """ A tricky test that reproduces an invalid behaviour Here a same field is defined both on CELLS and GAUSS_PT, with a profile for each. @@ -3548,21 +3725,26 @@ class MEDLoaderTest4(unittest.TestCase): pfl1=DataArrayInt([1,3,5]) ; pfl1.setName(pflName1) tmp=m0[pfl1] ; f2.setMesh(tmp) f2.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.,0.],[0.1,0.1,0.1,0.1,0.6]) - f2.checkCoherency() + f2.checkConsistencyLight() f1ts.setFieldProfile(f2,m,0,pfl1) fmts.pushBackTimeStep(f1ts) # m.write(fname,2) fmts.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) # false is absolutely necessary for the test + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3597,6 +3779,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) a6,a7=mml2.retrieveFamilyIdsOnCells() self.assertTrue(a6.isEqual(DataArrayInt([-7,-8]))) self.assertTrue(not a7) # copy here because profile on cells @@ -3609,6 +3792,7 @@ class MEDLoaderTest4(unittest.TestCase): a12,a13=mml2.retrieveNumberIdsOnNodes() self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217]))) self.assertTrue(a13) # no copy here + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0] fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst) fff0.loadArraysIfNecessary() @@ -3634,6 +3818,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([4,1,4,5,2,4,4,7,8,5,4,7,10,11,8]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) a6,a7=mml2.retrieveFamilyIdsOnCells() self.assertTrue(a6.isEqual(DataArrayInt([-2,-4,-6]))) self.assertTrue(not a7) # copy here because profile on cells @@ -3669,6 +3854,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) a6,a7=mml2.retrieveFamilyIdsOnCells() self.assertTrue(a6.isEqual(DataArrayInt([-7,-8]))) self.assertTrue(not a7) # copy here because profile on cells @@ -3693,6 +3879,7 @@ class MEDLoaderTest4(unittest.TestCase): del fff0 pass + @WriteInTmpDir def test26(self): """ Test focused on field on nodes (here f0Node and f1Node) lying on a profile of nodes that do not match perfectly a sub set of cells of its underlying mesh. See bug EDF 2405 and 2177. For this type of fields the support will contain only vertices. @@ -3764,14 +3951,19 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) fs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3800,6 +3992,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,5]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) a6,a7=mml2.retrieveFamilyIdsOnCells() self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,13]))) self.assertTrue(not a7) # copy here because profile on cells @@ -3817,6 +4010,7 @@ class MEDLoaderTest4(unittest.TestCase): fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst) fff0.loadArraysIfNecessary() v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) self.assertEqual(fff0.getName(),"f0Node") self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.]) @@ -3826,12 +4020,14 @@ class MEDLoaderTest4(unittest.TestCase): fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst) fff1.loadArraysIfNecessary() v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) self.assertEqual(fff1.getName(),"f1Node") self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble([5.,4.,3.,2.,1.,0.]) self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!! pass + @WriteInTmpDir def test27(self): """ This test defines 2 fields f0 and f1 on nodes lying on an unstructured mesh with no cells. f0 is a field on all nodes. f1 is a partial field on nodes. @@ -3852,7 +4048,7 @@ class MEDLoaderTest4(unittest.TestCase): f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m0) ; f0.setName("f0NoPfl") arr0=DataArrayDouble([0.,1.,2.,3.,1.,1.5,2.2,3.1,2.,2.2,3.,3.1,3.,3.1,3.5,4.]) f0.setArray(arr0) - f0.checkCoherency() + f0.checkConsistencyLight() f1ts0.setFieldNoProfileSBT(f0) self.assertEqual(f1ts0.getMeshName(),"mesh") # @@ -3874,8 +4070,9 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) fs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() self.assertEqual(fields[0].getMeshName(),"mesh") self.assertEqual(fields[1].getMeshName(),"mesh") fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] @@ -3885,7 +4082,11 @@ class MEDLoaderTest4(unittest.TestCase): for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -3913,6 +4114,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) # fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0] fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst) @@ -3945,8 +4147,9 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(v.isEqual(vExp,1e-12)) pass + @WriteInTmpDir def test28(self): - """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh whith cells including NORM_POINT1. + """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh with cells including NORM_POINT1. Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support. f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1) This test is a more aggressive version of test26. @@ -4015,14 +4218,19 @@ class MEDLoaderTest4(unittest.TestCase): mm.write(fname,2) fs.write(fname,0) ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values - ms=MEDFileMeshes(fname) + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] allFMTSLeavesToDisplay=[] for fields in fields_per_mesh: allFMTSLeavesToDisplay2=[] for fmts in fields: - allFMTSLeavesToDisplay2+=fmts.splitDiscretizations() + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp pass allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) pass @@ -4051,6 +4259,7 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,3,1,5]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) a6,a7=mml2.retrieveFamilyIdsOnCells() self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,-12,13]))) self.assertTrue(not a7) # copy here because profile on cells @@ -4068,6 +4277,7 @@ class MEDLoaderTest4(unittest.TestCase): fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst) fff0.loadArraysIfNecessary() v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) self.assertEqual(fff0.getName(),"f0Node") self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.]) @@ -4085,10 +4295,12 @@ class MEDLoaderTest4(unittest.TestCase): self.assertTrue(a3.isEqual(DataArrayInt([3,2,6,3,3,6,7,3,4,0,4,5,1,4,1,5,6,2,4,6,8,9,7,4,8,10,11,9]))) self.assertTrue(a4 is None) self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) fff1=allFMTSLeavesPerCommonSupport1[0][0][0][0] fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst) fff1.loadArraysIfNecessary() v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) self.assertEqual(fff1.getName(),"f2Cell") self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble([2,3,0,1,4,5]) @@ -4118,11 +4330,1304 @@ class MEDLoaderTest4(unittest.TestCase): fsst=MEDFileField1TSStructItem.BuildItemFrom(fff3,mst) fff3.loadArraysIfNecessary() v=mml2.buildDataArray(fsst,fields,fff3.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) self.assertEqual(fff3.getName(),"f3Cell") self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer()) vExp=DataArrayDouble([-1.1,-3.1,5,4,3,2,1,0]) self.assertTrue(v.isEqual(vExp,1e-12)) pass + + @WriteInTmpDir + def test29(self): + """ This test focused on HEXA27 cell for which the MED numbering is not equal to the VTK numbering. So here the HEXA27 cell is those in MED file documentation (reference element). + """ + fname="ForMEDReader29.med" + coo=DataArrayDouble([[0.,2.,2.],[0.,0.,2.],[2.,0.,2.],[2.,2.,2.],[0.,2.,0.],[0.,0.,0.],[2.,0.,0.],[2.,2.,0.], [0.,1.,2.],[1.,0.,2.],[2.,1.,2.],[1.,2.,2.], [0.,1.,0.],[1.,0.,0.],[2.,1.,0.],[1.,2.,0.], [0.,2.,1.],[0.,0.,1.],[2.,0.,1.],[2.,2.,1.], [1.,1.,2.], [0.,1.,1.],[1.,0.,1.],[2.,1.,1.],[1.,2.,1.], [1.,1.,0.], [1.,1.,1.]]) + m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo) + m.allocateCells() + # MED = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26] + # VTK = [0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16,17,18,19,24,22,21,23,20,25,26] + m.insertNextCell(NORM_HEXA27,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]) + fCell=MEDCouplingFieldDouble(ON_CELLS) ; fCell.setName("fCell") + arrCell=DataArrayDouble([7.]) ; arrCell.setInfoOnComponent(0,"smth") ; fCell.setArray(arrCell) + fCell.setMesh(m) + WriteField(fname,fCell,True) + refCoo=[-1.,-1.,-1.,-1.,1.,-1.,1.,1.,-1.,1.,-1.,-1.,-1.,-1.,1.,-1.,1.,1.,1.,1.,1.,1.,-1.,1.,-1.,0.,-1.,0.,1.,-1.,1.,0.,-1.,0.,-1.,-1.,-1.,0.,1.,0.,1.,1.,1.,0.,1.,0.,-1.,1.,-1.,-1.,0.,-1.,1.,0.,1.,1.,0.,1.,-1.,0.,0.,0.,-1.,-1.,0.,0.,0.,1.,0.,1.,0.,0.,0.,-1.,0.,0.,0.,1.,0.,0.,0.] + weights=[0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.7023319615912209,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571] + gCoords=[-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,0.0,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.0,0.0,0.0,0.0,0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,0.0,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483] + fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss") + fGauss.setMesh(m) + fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights) + arrGauss=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arrGauss.setInfoOnComponent(0,"gaussc") ; arrGauss.iota() + fGauss.setArray(arrGauss) + WriteFieldUsingAlreadyWrittenMesh(fname,fGauss) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),2) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + self.assertTrue(a0.isEqual(coo,1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([29]))) + self.assertTrue(a2.isEqual(DataArrayInt([0]))) + # the connectivity must be not a iota as declared in m.insertNextCell + self.assertTrue(a3.isEqual(DataArrayInt([27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,24,22,21,23,20,25,26])))# the test is on this line to check that connectivity has been processed for HEXA27 + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][0] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertEqual(ffCell.getName(),"fCell") + self.assertTrue(v.isEqual(arrCell,1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble([7.]),1e-12)) ; self.assertEqual(v.getInfoOnComponents(),["smth"]) + del ffCell + # + ffGauss=allFMTSLeavesPerCommonSupport1[0][0][1][0] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffGauss,mst) + ffGauss.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffGauss.getUndergroundDataArray()) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + self.assertEqual(v.getHiddenCppPointer(),ffGauss.getUndergroundDataArray().getHiddenCppPointer()) + self.assertEqual(ffGauss.getName(),"fGauss") + self.assertTrue(v.isEqual(arrGauss, 1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble(list(range(27))), 1e-12)) ; self.assertEqual(v.getInfoOnComponents(), ["gaussc"]) + ffGauss=allFMTSLeavesPerCommonSupport1[0][0][1][0] + pass + + @WriteInTmpDir + def test30(self): + """ This test is focused on cartesian meshes. Here the cartesian mesh "CartMesh" has a field on HEXA8 (FieldOnCells) and a field on QUAD4 (FieldOnFaces). + So the first one (FieldOnCells) lies on a cartesian mesh whereas the second one lies on unstructured one. + """ + fname="ForMEDReader30.med" + c=MEDCouplingCMesh() + arrX=DataArrayDouble(3) ; arrX.iota() + arrY=DataArrayDouble(4) ; arrY.iota() + arrZ=DataArrayDouble(5) ; arrZ.iota() + c.setCoords(arrX,arrY,arrZ) + c.setName("CartMesh") + cc=MEDFileCMesh() + cc.setMesh(c) + tmpFacesMesh=c.build1SGTSubLevelMesh() + famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3 + famIdCells=DataArrayInt(24) ; famIdCells[:]=0 + #cc.setFamilyFieldArr(0,famIdCells) + #cc.setFamilyFieldArr(-1,famIdFaces) + cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3) + cc.setFamiliesOnGroup("FacesX1",["FacesX"]) + cc.setFamiliesOnGroup("FacesY1",["FacesY"]) + cc.setFamiliesOnGroup("FacesZ1",["FacesZ"]) + # + fmts0=MEDFileFieldMultiTS() + fmts1=MEDFileFieldMultiTS() + for i in range(30): + f1ts=MEDFileField1TS() + fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces") + arr=DataArrayDouble(98) ; arr.iota() ; arr[i]=100. + fFaces.setArray(arr) + fFaces.setTime(float(i)+0.1,i,-1) + fFaces.setMesh(tmpFacesMesh) + f1ts.setFieldNoProfileSBT(fFaces) + fmts0.pushBackTimeStep(f1ts) + # + f1ts=MEDFileField1TS() + fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells") + arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30. + fCells.setArray(arr) + fCells.setTime(float(i)+0.1,i,-1) + fCells.setMesh(c) + f1ts.setFieldNoProfileSBT(fCells) + fmts1.pushBackTimeStep(f1ts) + pass + fs=MEDFileFields() + fs.pushField(fmts0) + fs.pushField(fmts1) + cc.write(fname,2) + fs.write(fname,0) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),2) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important + (a,b,c),d=mml2.buildVTUArrays() + self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure + self.assertTrue(a.isEqual(arrX,1e-12)) + self.assertTrue(b.isEqual(arrY,1e-12)) + self.assertTrue(c.isEqual(arrZ,1e-12)) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(30): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30. + self.assertEqual(ffCell.getName(),"FieldOnCells") + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + # + fcscp=allFMTSLeavesPerCommonSupport1[1][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important + ref=ms[0].getImplicitFaceMesh().getCoords().getHiddenCppPointer() + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertEqual(ref,a0.getHiddenCppPointer()) + self.assertTrue(ncc) + self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315,320,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,480,485]))) + self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32,4,41,53,56,44,4,8,20,23,11,4,20,32,35,23,4,32,44,47,35,4,44,56,59,47,4,0,12,13,1,4,12,24,25,13,4,24,36,37,25,4,36,48,49,37,4,1,13,14,2,4,13,25,26,14,4,25,37,38,26,4,37,49,50,38,4,3,15,16,4,4,15,27,28,16,4,27,39,40,28,4,39,51,52,40,4,4,16,17,5,4,16,28,29,17,4,28,40,41,29,4,40,52,53,41,4,6,18,19,7,4,18,30,31,19,4,30,42,43,31,4,42,54,55,43,4,7,19,20,8,4,19,31,32,20,4,31,43,44,32,4,43,55,56,44,4,9,21,22,10,4,21,33,34,22,4,33,45,46,34,4,45,57,58,46,4,10,22,23,11,4,22,34,35,23,4,34,46,47,35,4,46,58,59,47,4,0,1,4,3,4,3,4,7,6,4,6,7,10,9,4,1,2,5,4,4,4,5,8,7,4,7,8,11,10,4,12,13,16,15,4,15,16,19,18,4,18,19,22,21,4,13,14,17,16,4,16,17,20,19,4,19,20,23,22,4,24,25,28,27,4,27,28,31,30,4,30,31,34,33,4,25,26,29,28,4,28,29,32,31,4,31,32,35,34,4,36,37,40,39,4,39,40,43,42,4,42,43,46,45,4,37,38,41,40,4,40,41,44,43,4,43,44,47,46,4,48,49,52,51,4,51,52,55,54,4,54,55,58,57,4,49,50,53,52,4,52,53,56,55,4,55,56,59,58]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + for i in range(30): + ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + myarr=DataArrayDouble(98) ; myarr.iota() ; myarr[i]=100. + self.assertEqual(ffCell.getName(),"FieldOnFaces") + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + pass + + @WriteInTmpDir + def test31(self): + """non regression test of EDF 7972""" + fname="ForMEDReader31.med" + c=MEDCouplingCMesh() + arrX=DataArrayDouble(3) ; arrX.iota() + arrY=DataArrayDouble(4) ; arrY.iota() + arrZ=DataArrayDouble(5) ; arrZ.iota() + c.setCoords(arrX,arrY,arrZ) + c.setName("CartMesh") + cc=MEDFileCMesh() + cc.setMesh(c) + famIdCells=DataArrayInt(24) ; famIdCells[:]=0 + cc.setFamilyFieldArr(0,famIdCells) + #cc.setFamilyFieldArr(-1,famIdFaces) + cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3) + cc.setFamiliesOnGroup("FacesX1",["FacesX"]) + cc.setFamiliesOnGroup("FacesY1",["FacesY"]) + cc.setFamiliesOnGroup("FacesZ1",["FacesZ"]) + fmts0=MEDFileFieldMultiTS() + fmts1=MEDFileFieldMultiTS() + pfl=DataArrayInt(11) ; pfl.iota() ; pfl.setName("PflOnHECA8") + for i in range(30): + f1ts=MEDFileField1TS() + fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnCells") + arr=DataArrayDouble(11) ; arr.iota() ; arr[i%11]=100. + fFaces.setArray(arr) + fFaces.setTime(float(i)+0.1,i,-1) + fFaces.setMesh(c.buildUnstructured()[:11]) + f1ts.setFieldProfile(fFaces,cc,0,pfl)# here, a test is done to check that "NORM_HEXA8" string is not 30 times appended at the end of pfl name. + self.assertEqual("PflOnHECA8",pfl.getName()) + fmts0.pushBackTimeStep(f1ts) + pass + fs=MEDFileFields() + fs.pushField(fmts0) + cc.write(fname,2) + fs.write(fname,0) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children. This is the most important line in the test. + self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,0.,0.,1.,1.,0.,1.,2.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,0.,2.,1.,1.,2.,1.,2.,2.,1.,0.,3.,1.,1.,3.,1.,2.,3.,1.,0.,0.,2.,1.,0.,2.,2.,0.,2.,0.,1.,2.,1.,1.,2.,2.,1.,2.,0.,2.,2.,1.,2.,2.,2.,2.,2.,0.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12,12,12,12]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,81,90]))) + self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,3,4,13,12,15,16,8,2,1,4,5,14,13,16,17,8,4,3,6,7,16,15,18,19,8,5,4,7,8,17,16,19,20,8,7,6,9,10,19,18,21,22,8,8,7,10,11,20,19,22,23,8,13,12,15,16,25,24,27,28,8,14,13,16,17,26,25,28,29,8,16,15,18,19,28,27,30,31,8,17,16,19,20,29,28,31,32,8,19,18,21,22,31,30,33,34]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + for i in range(30): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + # self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) # to be improved... maybe this line could be true + myarr=DataArrayDouble(11) ; myarr.iota() ; myarr[i%11]=100. + self.assertEqual(ffCell.getName(),"FieldOnCells") + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + pass + + @WriteInTmpDir + def test32(self): + """ This test is close to test30 except that here the profiles on dim-1 of structured mesh is considered here.""" + fname="ForMEDReader32.med" + c=MEDCouplingCMesh() + arrX=DataArrayDouble(3) ; arrX.iota() + arrY=DataArrayDouble(4) ; arrY.iota() + arrZ=DataArrayDouble(5) ; arrZ.iota() + c.setCoords(arrX,arrY,arrZ) + c.setName("CartMesh") + cc=MEDFileCMesh() + cc.setMesh(c) + tmpFacesMesh=c.build1SGTSubLevelMesh() + famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3 + famIdCells=DataArrayInt(24) ; famIdCells[:]=0 + cc.setFamilyFieldArr(0,famIdCells) + #cc.setFamilyFieldArr(-1,famIdFaces) + cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3) + cc.setFamiliesOnGroup("FacesX1",["FacesX"]) + cc.setFamiliesOnGroup("FacesY1",["FacesY"]) + cc.setFamiliesOnGroup("FacesZ1",["FacesZ"]) + fmts0=MEDFileFieldMultiTS() + fmts1=MEDFileFieldMultiTS() + pfl=DataArrayInt(31) ; pfl.iota() ; pfl.setName("PflOnQUAD4") + for i in range(30): + f1ts=MEDFileField1TS() + fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces") + arr=DataArrayDouble(31) ; arr.iota() ; arr[i]=100. + fFaces.setArray(arr) + fFaces.setTime(float(i)+0.1,i,-1) + fFaces.setMesh(tmpFacesMesh[:31]) + f1ts.setFieldProfile(fFaces,cc,-1,pfl)# here, a test is done to check that "NORM_QUAD4" string is not 30 times appended at the end of pfl name. + self.assertEqual("PflOnQUAD4",pfl.getName()) + fmts0.pushBackTimeStep(f1ts) + # + f1ts=MEDFileField1TS() + fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells") + arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30. + fCells.setArray(arr) + fCells.setTime(float(i)+0.1,i,-1) + fCells.setMesh(c) + f1ts.setFieldNoProfileSBT(fCells) + fmts1.pushBackTimeStep(f1ts) + pass + fs=MEDFileFields() + fs.pushField(fmts0) + fs.pushField(fmts1) + cc.write(fname,2) + fs.write(fname,0) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),2) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important + (a,b,c),d=mml2.buildVTUArrays() + self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure + self.assertTrue(a.isEqual(arrX,1e-12)) + self.assertTrue(b.isEqual(arrY,1e-12)) + self.assertTrue(c.isEqual(arrZ,1e-12)) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(30): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30. + self.assertEqual(ffCell.getName(),"FieldOnCells") + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + # + fcscp=allFMTSLeavesPerCommonSupport1[1][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + self.assertTrue(ncc)# True because, the coords are computed by the implicit unstructured level -1 structured mesh + self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,0.,0.,1.,1.,0.,1.,2.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,0.,2.,1.,1.,2.,1.,2.,2.,1.,0.,3.,1.,1.,3.,1.,2.,3.,1.,0.,0.,2.,1.,0.,2.,2.,0.,2.,0.,1.,2.,1.,1.,2.,2.,1.,2.,0.,2.,2.,1.,2.,2.,2.,2.,2.,0.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150]))) + self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + a6,a7=mml2.retrieveFamilyIdsOnCells() + self.assertTrue(a6 is None) + self.assertTrue(a7) + for i in range(30): + ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + myarr=DataArrayDouble(31) ; myarr.iota() ; myarr[i]=100. + self.assertEqual(ffCell.getName(),"FieldOnFaces") + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + pass + + @WriteInTmpDir + def test33(self): + """Non regression test concerning polygons. Thanks Adrien. This bug can't be shown by simply reading an displaying a MED file containing only polygons. A filter must be applied on it to show it. The a2 array was responsible of that bug.""" + fname="ForMEDReader33.med" + fieldName="ACellField" + coo=DataArrayDouble([(5.5,0.5),(5.5,-0.5),(6.5,0.5),(6.5,-0.5),(6.5,1.5),(7.5,0.5),(7.5,-0.5),(7.5,1.5),(7.5,2.5),(8.5,0.5),(8.5,-0.5),(8.5,1.5),(8.5,2.5),(8.5,3.5),(8.55,0.5),(8.55,-0.5),(8.55,1.5),(8.55,2.5),(8.55,3.5)]) + m=MEDCouplingUMesh("mesh",2) + m.setCoords(coo) + m.allocateCells() + for i,c in enumerate([(1,0,2,3),(3,2,5,6),(2,4,7,5),(6,5,9,10),(5,7,11,9),(7,8,12,11),(10,9,14,15),(9,11,16,14),(11,12,17,16),(12,13,18,17)]): + if i<6: + typ=NORM_QUAD4 + pass + else: + typ=NORM_POLYGON + pass + m.insertNextCell(typ,c) + pass + mm=MEDFileUMesh() + mm.setMeshAtLevel(0,m) + mm.write(fname,2) + for i in range(15): + fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i)+0.1,i,0) + fCell0.setName(fieldName) ; fCell0.setMesh(m) + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota(0) ; arr[i%10]=100. + fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]"]) + fCell0.checkConsistencyLight() + WriteFieldUsingAlreadyWrittenMesh(fname,fCell0) + pass + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(not ncc)# false because 2D in MED file + self.assertTrue(a0.isEqual(DataArrayDouble([(5.5,0.5,0),(5.5,-0.5,0),(6.5,0.5,0),(6.5,-0.5,0),(6.5,1.5,0),(7.5,0.5,0),(7.5,-0.5,0),(7.5,1.5,0),(7.5,2.5,0),(8.5,0.5,0),(8.5,-0.5,0),(8.5,1.5,0),(8.5,2.5,0),(8.5,3.5,0),(8.55,0.5,0),(8.55,-0.5,0),(8.55,1.5,0),(8.55,2.5,0),(8.55,3.5,0)]),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,7,7,7,7]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45])))# the bug was here. + self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,2,3,4,3,2,5,6,4,2,4,7,5,4,6,5,9,10,4,5,7,11,9,4,7,8,12,11,4,10,9,14,15,4,9,11,16,14,4,11,12,17,16,4,12,13,18,17]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(15): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + myarr=DataArrayDouble(10) ; myarr.iota() ; myarr[i%10]=100. ; myarr.setInfoOnComponent(0,"Comp1 [m]") + self.assertEqual(ffCell.getName(),fieldName) + self.assertTrue(v.isEqual(myarr,1e-12)) + pass + pass + + @WriteInTmpDir + def test34(self): + """ This test is the thirs ultimate test (base on test12) for the profiles with gauss points. + This test highlight the hidden imp linked to bug #8655. + This test is close to test11 but here a 2nd field on cells without profile. So here the mesh is expected to be the same than m. + """ + fname="ForMEDReader34.med" + m=MEDCouplingCMesh("mesh") + arr=DataArrayDouble(5) ; arr.iota() + m.setCoords(arr,arr) + m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"]) + mm=MEDFileUMesh() ; mm.setMeshes([m]) + # + fieldName0="zeField0" + fieldName1="zeField1" + fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() + for i in range(5): + f=MEDFileField1TS() + fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0) + fNode.setName(fieldName0) ; fNode.setMesh(m) + fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2]) + fNode.setGaussLocalizationOnCells([1,5,8,9],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01]) + fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04]) + fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005]) + arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2) + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight() + f.setFieldNoProfileSBT(fNode) + fs0.pushBackTimeStep(f) + # + f=MEDFileField1TS() + fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0) + fNode.setName(fieldName1) ; fNode.setMesh(m) + arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2) + fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight() + f.setFieldNoProfileSBT(fNode) + fs1.pushBackTimeStep(f) + pass + mm.write(fname,2) + fs0.write(fname,0) ; fs1.write(fname,0) + a0Exp=mm.getCoords().deepCopy() + del m,mm,fs0,fs1,f,fNode + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + if itmp.presenceOfMultiDiscPerGeoType(): + tmp2=itmp.splitMultiDiscrPerGeoTypes() + for iii,itmp2 in enumerate(tmp2): + name="%s_%i"%(itmp2.getName(),iii) + itmp2.setName(name) + allFMTSLeavesToDisplay2.append(itmp2) + pass + pass + else: + allFMTSLeavesToDisplay2.append(itmp) + pass + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # Here 2 MED fields in input and at the end 5 ! 1+4 ! 4 fields have been built from zeField0 due to subsplitting per dis / per geo type + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),5) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5) + allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport),5) + for i in range(5): + self.assertEqual(len(allFMTSLeavesPerCommonSupport[i][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport[4][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(not ncc) + self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75]))) + self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,13,12,17,18,4,14,13,18,19,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24]))) # <- here the mesh is NOT renumbered : the mesh is equal to m + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1, 5): + self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))) + pass + for i in range(5): + f=allFMTSLeavesPerCommonSupport[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) + f.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) + self.assertEqual(f.getName(),fieldName0) + vExp=DataArrayDouble([(0.,1.),(2.,3.),(14.,15.),(16.,17.),(18.,19.),(20.,21.),(22.,23.),(24.,25.),(44.,45.),(46.,47.),(126.,127.),(128.,129.)]) + vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]']) + vExp+=i*1000 + self.assertTrue(v.isEqual(vExp,1e-12)) + # + f=allFMTSLeavesPerCommonSupport[1][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) + f.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) + self.assertEqual(f.getName(),fieldName0) + vExp=DataArrayDouble([(4.,5.),(6.,7.),(8.,9.),(10.,11.),(12.,13.),(26.,27.),(28.,29.),(30.,31.),(32.,33.),(34.,35.),(48.,49.),(50.,51.),(52.,53.),(54.,55.),(56.,57.),(58.,59.),(60.,61.),(62.,63.),(64.,65.),(66.,67.)]) + vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]']) + vExp+=i*1000 + self.assertTrue(v.isEqual(vExp,1e-12)) + # + f=allFMTSLeavesPerCommonSupport[2][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) + f.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) + self.assertEqual(f.getName(),fieldName0) + vExp=DataArrayDouble([(36.,37.),(38.,39.),(40.,41.),(42.,43.),(68.,69.),(70.,71.),(72.,73.),(74.,75.),(104.,105.),(106.,107.),(108.,109.),(110.,111.)]) + vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]']) + vExp+=i*1000 + self.assertTrue(v.isEqual(vExp,1e-12)) + # + f=allFMTSLeavesPerCommonSupport[3][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) + f.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) + self.assertEqual(f.getName(),fieldName0) + vExp=DataArrayDouble([(76,77),(78,79),(80,81),(82,83),(84,85),(86,87),(88,89),(90,91),(92,93),(94,95),(96,97),(98,99),(100,101),(102,103),(112,113),(114,115),(116,117),(118,119),(120,121),(122,123),(124,125)]) + vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]']) + vExp+=i*1000 + self.assertTrue(v.isEqual(vExp,1e-12)) + # + f=allFMTSLeavesPerCommonSupport[4][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) + f.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray()) + self.assertEqual(f.getName(),fieldName1) + self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) + vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]']) + self.assertTrue(v.isEqual(vExp,1e-12)) + pass + pass + + @WriteInTmpDir + def test35(self): + """ Emulate MEDReader in // mode context. Here a Simple mesh having more nodes than really needed. This test focuses on that point particularly.""" + fname="ForMEDReader35.med" + arrX=DataArrayDouble(7) ; arrX.iota() + arrY=DataArrayDouble([0.,1.]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured() ; m=m[[0,5,1,4,2,3]] ; m.changeSpaceDimension(3,0.) ; m.setName("Mesh") + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") ; f.setArray(DataArrayDouble([(0.1,1.1),(2.1,3.1),(4.1,5.1),(6.1,7.1),(8.1,9.1),(10.1,11.1)])) ; f.getArray().setInfoOnComponents(["aa","bbb"]) + WriteUMesh(fname,m,True) + WriteFieldUsingAlreadyWrittenMesh(fname,f) + ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values + ms=MEDFileMeshes() # here we reproduce what is done by ParaMEDFileMeshes.ParaNew + ms.pushMesh(MEDFileUMesh.LoadPartOf(fname,"Mesh",[NORM_QUAD4],[0,2,1],-1,-1)); + ms[0].zipCoords() + ms.cartesianizeMe() + # + fields=MEDFileFields.LoadPartOf(fname,False,ms); + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + if itmp.presenceOfMultiDiscPerGeoType(): + tmp2=itmp.splitMultiDiscrPerGeoTypes() + for iii,itmp2 in enumerate(tmp2): + name="%s_%i"%(itmp2.getName(),iii) + itmp2.setName(name) + allFMTSLeavesToDisplay2.append(itmp2) + pass + pass + else: + allFMTSLeavesToDisplay2.append(itmp) + pass + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1) + allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport),1) + self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + # + fcscp=allFMTSLeavesPerCommonSupport[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(ncc) + self.assertTrue(a0.isEqual(m.getCoords()[[0,1,5,6,7,8,12,13]],1e-12))# <- the aim of the test + self.assertTrue(a1.isEqual(DataArrayByte([9,9]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,5]))) + self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,4,5,4,3,2,6,7]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny().isEqual(DataArrayInt([0,1,5,6,7,8,12,13]))) + f2=allFMTSLeavesPerCommonSupport[0][0][0][0] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst) + f2.loadArraysIfNecessary() + v=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray()) + self.assertEqual(f2.getName(),f.getName()) + vExp=DataArrayDouble([(0.1,1.1),(2.1,3.1)]) + vExp.setInfoOnComponents(['aa','bbb']) + self.assertTrue(v.isEqual(vExp,1e-12)) + pass + + @WriteInTmpDir + def test36(self): + """Bug EDF11027. Here mesh at level 0 (TRI3) does not fetch all the nodes. Level -1 (SEG2) does not fetch all the nodes neither. But all TRI3 + all SEG2 fetch all nodes. + aaa field on GAUSSPoints lying only on TRI3 share the same support than profile node field ccc. + But bbb field on all nodes is not on the same support. Past optimization that make the assumtion a support on all lev0 cells lies on all nodes is now over.""" + meshName="mesh" + fname="ForMEDReader36.med" + c=DataArrayDouble([(0,0),(1,0),(1,1),(0,1),(2,0),(-1,0),(1,2)]) + m0=MEDCoupling1SGTUMesh(meshName,NORM_TRI3) + m0.setCoords(c) + m0.setNodalConnectivity(DataArrayInt([0,2,1,3,2,0,2,4,1])) + mm=MEDFileUMesh() + mm[0]=m0 + m1=MEDCoupling1SGTUMesh(meshName,NORM_SEG2) + m1.setCoords(c) + m1.setNodalConnectivity(DataArrayInt([5,0,0,3,3,2,2,6])) + mm[-1]=m1 + # + zeTime=(1.1,2,3) + ff1=MEDFileField1TS() + f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m0) + arr=DataArrayDouble(7) ; arr.iota(2000) + f1.setArray(arr) + f1.setName("bbb") + f1.checkConsistencyLight() + f1.setTime(*zeTime) + ff1.setFieldNoProfileSBT(f1) + # + ff2=MEDFileField1TS() + f2=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f2.setMesh(m0) + arr=DataArrayDouble(9) ; arr.iota(4000) + f2.setArray(arr) + f2.setName("ddd") + f2.checkConsistencyLight() + f2.setTime(*zeTime) + ff2.setFieldNoProfileSBT(f2) + # + ff3=MEDFileField1TS() + f3=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f3.setMesh(m0) + f3.setGaussLocalizationOnType(NORM_TRI3,[0,0,1,0,0,1],[0.333333,0.333333],[0.5]) + arr=DataArrayDouble(3) ; arr.iota(1000) + f3.setArray(arr) + f3.checkConsistencyLight() + f3.setTime(*zeTime) + f3.setName("aaa") + ff3.setFieldNoProfileSBT(f3) + # + ff4=MEDFileField1TS() + m0d=m0.deepCopy() ; m0d.zipCoords() + f4=MEDCouplingFieldDouble(ON_NODES) ; f4.setMesh(m0d) + arr=DataArrayDouble(5) ; arr.iota(3000) + f4.setArray(arr) + f4.setName("ccc") + f4.checkConsistencyLight() + f4.setTime(*zeTime) + pfl=DataArrayInt([0,1,2,3,4]) ; pfl.setName("PFL") + ff4.setFieldProfile(f4,mm,0,pfl) + # + mm.write(fname,2) + ff3.write(fname,0) + ff1.write(fname,0) + ff4.write(fname,0) + ### + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),3) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children. + self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0)]),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([5,5,5]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,4,8]))) + self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + v.isEqual(DataArrayDouble([1000,1001,1002]),1e-12) + # + ffCell=allFMTSLeavesPerCommonSupport1[0][0][1][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + v.isEqual(DataArrayDouble([3000,3001,3002,3003,3004]),1e-12) + pass + fcscp=allFMTSLeavesPerCommonSupport1[1][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children. + self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0),(-1,0,0),(1,2,0)]),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3]))) + self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21]))) + self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1,2,5,0,2,0,3,2,3,2,2,2,6]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + v.isEqual(DataArrayDouble([2000,2001,2002,2003,2004,2005,2006]),1e-12) + pass + pass + + @WriteInTmpDir + def test37(self): + """ Introduction of non cartesian meshes management. Here cylindrical.""" + fname="ForMEDReader37.med" + meshName="mesh" + description="Cylindrical grid" + comps=["X [cm]","Y [cm]","Z [cm]"] + arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0]) + arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1]) + arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=1.6 ; arrZ-=8. ; arrZ.setInfoOnComponent(0,comps[2]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) + mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description) + mm.setAxisType(AX_CYL) # the test is here ! + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight() + ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f) + fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff) + # + ms=MEDFileMeshes() ; ms.pushMesh(mm) + fields=MEDFileFields() ; fields.pushField(fmts) + ms.write(fname,2) ; fields.write(fname,0) + # + del mm,fmts,fields,ms + ms=MEDFileMeshes(fname) + fields=MEDFileFields(fname,False) + ms.cartesianizeMe() + # + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))# <- hehe it is a CurveLinear no more a CMesh ! + a,b,c=mml2.buildVTUArrays() + self.assertTrue(c)# the array is thoose in structure + ref_a=DataArrayDouble([0.,0.,-8.,0.8,0.,-8.,1.6,0.,-8.,0.,0.,-8.,0.4,0.6928203230275509,-8.,0.8,1.3856406460551018,-8.,-0.,0.,-8.,-0.4,0.692820323027551,-8.,-0.8,1.385640646055102,-8.,-0.,0.,-8.,-0.8,0.,-8.,-1.6,0.,-8.,0.,0.,-6.4,0.8,0.,-6.4,1.6,0.,-6.4,0.,0.,-6.4,0.4,0.6928203230275509,-6.4,0.8,1.3856406460551018,-6.4,-0.,0.,-6.4,-0.4,0.692820323027551,-6.4,-0.8,1.385640646055102,-6.4,-0.,0.,-6.4,-0.8,0.,-6.4,-1.6,0.,-6.4,0.,0.,-4.8,0.8,0.,-4.8,1.6,0.,-4.8,0.,0.,-4.8,0.4,0.6928203230275509,-4.8,0.8,1.3856406460551018,-4.8,-0.,0.,-4.8,-0.4,0.692820323027551,-4.8,-0.8,1.385640646055102,-4.8,-0.,0.,-4.8,-0.8,0.,-4.8,-1.6,0.,-4.8,0.,0.,-3.2,0.8,0.,-3.2,1.6,0.,-3.2,0.,0.,-3.2,0.4,0.6928203230275509,-3.2,0.8,1.3856406460551018,-3.2,-0.,0.,-3.2,-0.4,0.692820323027551,-3.2,-0.8,1.385640646055102,-3.2,-0.,0.,-3.2,-0.8,0.,-3.2,-1.6,0.,-3.2,0.,0.,-1.6,0.8,0.,-1.6,1.6,0.,-1.6,0.,0.,-1.6,0.4,0.6928203230275509,-1.6,0.8,1.3856406460551018,-1.6,-0.,0.,-1.6,-0.4,0.692820323027551,-1.6,-0.8,1.385640646055102,-1.6,-0.,0.,-1.6,-0.8,0.,-1.6,-1.6,0.,-1.6],60,3) + ref_a.setInfoOnComponents(comps) + self.assertTrue(a.isEqual(ref_a,1e-14)) + self.assertEqual(b,[3,4,5]) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14)) + pass + pass + + @WriteInTmpDir + def test38(self): + """ Introduction of non cartesian meshes management. Here spherical.""" + fname="ForMEDReader38.med" + meshName="mesh" + description="Spherical grid" + comps=["X [cm]","Y [cm]","Z [cm]"] + arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0]) + arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1]) + arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) + mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description) + mm.setAxisType(AX_SPHER) # the test is here ! + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight() + ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f) + fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff) + # + ms=MEDFileMeshes() ; ms.pushMesh(mm) + fields=MEDFileFields() ; fields.pushField(fmts) + ms.write(fname,2) ; fields.write(fname,0) + # + del mm,fmts,fields,ms + ms=MEDFileMeshes(fname) + fields=MEDFileFields(fname,False) + ms.cartesianizeMe() + # + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) + a,b,c=mml2.buildVTUArrays() + self.assertTrue(c)# the array is thoose in structure + ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3) + ref_a.setInfoOnComponents(comps) + self.assertTrue(a.isEqual(ref_a,1e-14)) + self.assertEqual(b,[3,4,5]) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14)) + pass + pass + + @WriteInTmpDir + def test39(self): + """Idem test37, test38, test39, test40 except that here it is an unstructured mesh.""" + fname="ForMEDReader39.med" + meshName="mesh" + description="Spherical grid" + comps=["X [cm]","Y [cm]","Z [cm]"] + arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0]) + arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1]) + arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildUnstructured() + mm=MEDFileUMesh() ; mm[0]=m ; mm.setDescription(description) # the test is here : UMesh ! + mm.setAxisType(AX_SPHER) # the test is here ! + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight() + ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f) + fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff) + # + ms=MEDFileMeshes() ; ms.pushMesh(mm) + fields=MEDFileFields() ; fields.pushField(fmts) + ms.write(fname,2) ; fields.write(fname,0) + # + del mm,fmts,fields,ms + ms=MEDFileMeshes(fname) + fields=MEDFileFields(fname,False) + # + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(ncc) + ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3) + ref_a.setInfoOnComponents(comps) + self.assertTrue(a0.isEqual(ref_a,1e-14))#<- Test is here + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14)) + pass + + @WriteInTmpDir + def test40(self): + """Idem test37, test38, test39, test40 except that here it is a CL mesh.""" + fname="ForMEDReader40.med" + meshName="mesh" + description="Spherical grid" + comps=["X [cm]","Y [cm]","Z [cm]"] + arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0]) + arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1]) + arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildCurveLinear() + mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setDescription(description) # the test is here CLMesh! + mm.setAxisType(AX_SPHER) # the test is here ! + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight() + ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f) + fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff) + # + ms=MEDFileMeshes() ; ms.pushMesh(mm) + fields=MEDFileFields() ; fields.pushField(fmts) + ms.write(fname,2) ; fields.write(fname,0) + # + ms=MEDFileMeshes(fname) ; ms.cartesianizeMe() + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) + a,b,c=mml2.buildVTUArrays() + self.assertTrue(c) + ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3) + ref_a.setInfoOnComponents(comps) + self.assertTrue(a.isEqual(ref_a,1e-14))#<- Test is here + self.assertEqual(b,[3,4,5]) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14)) + pass + + @WriteInTmpDir + def test41(self): + """This test focused on bug revealed with // load of multi nodes field with no profile. The error was the first node field (dataarray partdef) change the partdef for the others ! """ + fname="ForMEDReader41.med" + meshName="mesh" + nx=5 + arr=DataArrayDouble(nx) ; arr.iota() + m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured() ; m.setName(meshName) + renum=DataArrayInt.Aggregate([DataArrayInt.Range(0,m.getNumberOfCells(),2),DataArrayInt.Range(1,m.getNumberOfCells(),2)]) + m=m[renum] # important think to renum if not we see nothing. The goal if to have dynamic_cast!=NULL + mm=MEDFileUMesh() ; mm[0]=m + mm.write(fname,2) + f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setName("aaa") + arr0=DataArrayDouble(nx*nx) ; arr0.iota() ; f0.setArray(arr0) + ff0=MEDFileField1TS() ; ff0.setFieldNoProfileSBT(f0) + f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName("bbb") + arr1=DataArrayDouble(nx*nx) ; arr1.iota() ; arr1+=100 ; f1.setArray(arr1) + ff1=MEDFileField1TS() ; ff1.setFieldNoProfileSBT(f1) + ff0.write(fname,0) ; ff1.write(fname,0) + # + a=8 ; b=16 + ms=MEDFileMeshes() + mm=MEDFileUMesh.LoadPartOf(fname,meshName,[NORM_QUAD4],[a,b,1],-1,-1) + ms.pushMesh(mm) + ms[0].zipCoords() + ms.cartesianizeMe() + fields=MEDFileFields.LoadPartOf(fname,False,ms); + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + if itmp.presenceOfMultiDiscPerGeoType(): + tmp2=itmp.splitMultiDiscrPerGeoTypes() + for iii,itmp2 in enumerate(tmp2): + name="%s_%i"%(itmp2.getName(),iii) + itmp2.setName(name) + allFMTSLeavesToDisplay2.append(itmp2) + pass + pass + else: + allFMTSLeavesToDisplay2.append(itmp) + pass + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]]) + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + # + f2=allFMTSLeavesPerCommonSupport[0][0][0][0] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst) + f2.loadArraysIfNecessary() + v0=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray()) + assert(v0.isEqual(DataArrayDouble([1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24]),1e-12)) + # + f2=allFMTSLeavesPerCommonSupport[0][0][1][0] + fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst) + f2.loadArraysIfNecessary() + v1=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray()) + assert(v1.isEqual(DataArrayDouble([101,102,103,104,106,107,108,109,111,112,113,114,116,117,118,119,121,122,123,124]),1e-12)) + pass + + @WriteInTmpDir + def test42(self): + """ EDF14869 - SEG4 """ + fname="ForMEDReader42.med" + meshName="mesh" + # + a0exp=DataArrayDouble([0.,1.,0.3,0.7]) + m=MEDCouplingUMesh("mesh",1) + m.setCoords(a0exp) + m.allocateCells() + m.insertNextCell(NORM_SEG4,[0,1,2,3]) + mm=MEDFileUMesh() ; mm[0]=m + # + f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") + arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight() + ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f) + fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff) + # + ms=MEDFileMeshes() ; ms.pushMesh(mm) + fields=MEDFileFields() ; fields.pushField(fmts) + ms.write(fname,2) ; fields.write(fname,0) + # + ms=MEDFileMeshes(fname) + fields=MEDFileFields(fname,False) + fields.removeFieldsWithoutAnyTimeStep() + fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()] + allFMTSLeavesToDisplay=[] + for fields in fields_per_mesh: + allFMTSLeavesToDisplay2=[] + for fmts in fields: + tmp=fmts.splitDiscretizations() + for itmp in tmp: + self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType()) + pass + allFMTSLeavesToDisplay2+=tmp + pass + allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2) + pass + # + self.assertEqual(len(allFMTSLeavesToDisplay),1) + self.assertEqual(len(allFMTSLeavesToDisplay[0]),1) + allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[])) + self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) + allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]]) + self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1) + # + mst=MEDFileMeshStruct.New(ms[0]) + fcscp=allFMTSLeavesPerCommonSupport1[0][1] + mml=fcscp.buildFromScratchDataSetSupport(0,fields) + mml2=mml.prepare() + self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) + ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays() + self.assertTrue(not ncc) + self.assertTrue(a0.isEqual(a0exp.changeNbOfComponents(3,0.),1e-12)) + self.assertTrue(a1.isEqual(DataArrayByte([35])))# VTK_CUBIC_LINE + self.assertTrue(a2.isEqual(DataArrayInt([0]))) + self.assertTrue(a3.isEqual(DataArrayInt([4,0,1,2,3]))) + self.assertTrue(a4 is None) + self.assertTrue(a5 is None) + self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None) + for i in range(1): + ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i] + fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst) + ffCell.loadArraysIfNecessary() + v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray()) + self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) + self.assertTrue(v.isEqual(DataArrayDouble([0.0]),1e-14)) + pass + pass -unittest.main() +if __name__ == "__main__": + unittest.main()