X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FMEDLoaderDataForTest.py;h=348247b38a92bcbe58672dbea5e3ca62ad09d69e;hb=1e1c28ef182a074dc64e39500963305ce1e9fb6e;hp=7acc53263142db49ab28329fc6f11c1a58269205;hpb=1123dccd6613b2e8abba35182759d5c4a11ecc8d;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/Swig/MEDLoaderDataForTest.py b/src/MEDLoader/Swig/MEDLoaderDataForTest.py index 7acc53263..348247b38 100644 --- a/src/MEDLoader/Swig/MEDLoaderDataForTest.py +++ b/src/MEDLoader/Swig/MEDLoaderDataForTest.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2014 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 @@ -17,12 +17,24 @@ # # 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 * from math import pi,e,sqrt +def WriteInTmpDir(func): + def decaratedFunc(*args,**kwargs): + import tempfile,os + ret = None + with tempfile.TemporaryDirectory() as tmpdirname: + os.chdir(tmpdirname) + ret = func(*args,**kwargs) + pass + return ret + return decaratedFunc + class MEDLoaderDataForTest: + @classmethod def build1DMesh_1(cls): coords=[ 0.0, 0.3, 0.75, 1.0, 1.4, 1.3 ] conn=[ 0,1, 1,2, 2,3 , 3,4,5] @@ -41,6 +53,7 @@ class MEDLoaderDataForTest: mesh.setCoords(myCoords); return mesh; + @classmethod def build2DCurveMesh_1(cls): coords=[ 0.0,0.0, 0.3,0.3, 0.75,0.75, 1.0,1.0, 1.4,1.4, 1.3,1.3 ] conn=[ 0,1, 1,2, 2,3 , 3,4,5] @@ -58,6 +71,7 @@ class MEDLoaderDataForTest: mesh.setCoords(myCoords); return mesh; + @classmethod def build2DMesh_1(cls): targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7, -0.05,0.95, 0.2,1.2, 0.45,0.95] @@ -80,6 +94,7 @@ class MEDLoaderDataForTest: targetMesh.setCoords(myCoords) return targetMesh; + @classmethod def build2DMesh_2(cls): targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7, -0.05,0.95, 0.2,1.2, 0.45,0.95] @@ -102,6 +117,7 @@ class MEDLoaderDataForTest: return targetMesh; #this mesh has several cells duplicated ! it is not beautiful but efficient to test file WR. + @classmethod def build2DMesh_3(cls): targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7, -0.05,0.95, 0.2,1.2, 0.45,0.95] @@ -131,6 +147,7 @@ class MEDLoaderDataForTest: targetMesh.setCoords(myCoords); return targetMesh; + @classmethod def build3DMesh_1(cls): coords=[0.,0.,0., 1.,1.,0., 1.,1.25,0., 0.,1.,0., 1.,1.5,0., 2.,0.,0., 2.,1.,0., 1.,2.,0., 0.,2.,0., 3.,1.,0., 3.,2.,0., 0.,1.,0., 1.,3.,0., 2.,2.,0., 2.,3.,0., @@ -192,7 +209,8 @@ class MEDLoaderDataForTest: myCoords.setInfoOnComponent(2,"t [kW]"); ret.setCoords(myCoords); return ret; - + + @classmethod def build3DSurfMesh_1(cls): targetCoords=[-0.3,-0.3,-0.3, 0.2,-0.3,-0.3, 0.7,-0.3,-0.3, -0.3,0.2,-0.3, 0.2,0.2,-0.3, 0.7,0.2,-0.3, -0.3,0.7,-0.3, 0.2,0.7,-0.3, 0.7,0.7,-0.3 ,-0.05,0.95,-0.3, 0.2,1.2,-0.3, 0.45,0.95,-0.3] @@ -214,7 +232,8 @@ class MEDLoaderDataForTest: myCoords.setInfoOnComponent(2,"ff [km]");#component 1 is not set for test targetMesh.setCoords(myCoords); return targetMesh; - + + @classmethod def build3DMesh_2(cls): m3dsurfBase=MEDLoaderDataForTest.build3DSurfMesh_1(); numbers=[0,1,2,3,5] @@ -229,6 +248,7 @@ class MEDLoaderDataForTest: ret=m3dsurf.buildExtrudedMesh(m1d,0); return ret; + @classmethod def buildMultiLevelMesh_1(cls): coo=[10.,0.,10.,1.25,10.,2.5,10.,3.75,10.,5.,8.75,0.,8.75,1.25,8.75,2.5,8.75,3.75,8.75,5.,7.5,0.,7.5,1.25,7.5,2.5,7.5,3.75,7.5,5.,6.25,0.,6.25,1.25,6.25,2.5,6.25,3.75,6.25,5.,5.,0.,5.,1.25,5.,2.5,5.,3.75,5.,5.,3.75,0.,3.75,1.25,3.75,2.5,3.75,3.75,3.75,5.,2.5,0.,2.5,1.25,2.5,2.5,2.5,3.75,2.5,5.,1.25,0.,1.25,1.25,1.25,2.5,1.25,3.75,1.25,5.,0.,1.25,0.,2.5,0.,3.75,0.,5.,0.,0.,0.,5.,10.,5.,0.,10.,10.,10.,5.,5.,5.,5.,5.,10.,5.,10.,0.625,5.,1.25,5.,1.875,5.,2.5,5.,3.125,5.,3.75,5.,4.375,5.,5.,6.25,5.,7.5,5.,8.75,4.375,10.,3.75,10.,3.125,10.,2.5,10.,1.875,10.,1.25,10.,0.625,10.,0.,8.75,0.,7.5,0.,6.25,4.375,6.25,4.375,7.5,4.375,8.75,3.75,6.25,3.75,7.5,3.75,8.75,3.125,6.25,3.125,7.5,3.125,8.75,2.5,6.25,2.5,7.5,2.5,8.75,1.875,6.25,1.875,7.5,1.875,8.75,1.25,6.25,1.25,7.5,1.25,8.75,0.625,6.25,0.625,7.5,0.625,8.75,5.625,5.,6.25,5.,6.875,5.,7.5,5.,8.125,5.,8.75,5.,9.375,5.,10.,6.25,10.,7.5,10.,8.75,9.375,10.,8.75,10.,8.125,10.,7.5,10.,6.875,10.,6.25,10.,5.625,10.,5.,8.75,5.,7.5,5.,6.25,9.375,6.25,9.375,7.5,9.375,8.75,8.75,6.25,8.75,7.5,8.75,8.75,8.125,6.25,8.125,7.5,8.125,8.75,7.5,6.25,7.5,7.5,7.5,8.75,6.875,6.25,6.875,7.5,6.875,8.75,6.25,6.25,6.25,7.5,6.25,8.75,5.625,6.25,5.625,7.5,5.625,8.75] coo2=DataArrayDouble.New() @@ -242,12 +262,12 @@ class MEDLoaderDataForTest: m2=MEDCouplingUMesh.New("ma",2) m2.setCoords(coo2) m2.allocateCells(128) - nbTri=len(c2tri)/3 - for i in xrange(nbTri): + nbTri = len(c2tri) // 3 + for i in range(nbTri): m2.insertNextCell(NORM_TRI3,3,c2tri[3*i:3*i+3]) pass - nbQua=len(c2quad4)/4 - for i in xrange(nbQua): + nbQua = len(c2quad4) // 4 + for i in range(nbQua): m2.insertNextCell(NORM_QUAD4,4,c2quad4[4*i:4*i+4]) pass m2.finishInsertingCells() @@ -256,7 +276,7 @@ class MEDLoaderDataForTest: m1.setCoords(coo2) c1seg=[0,1,1,2,2,3,3,4,4,9,9,14,14,19,19,24,24,29,29,34,34,39,39,43,43,42,42,41,41,40,40,44,44,35,35,30,30,25,25,20,20,15,15,10,10,5,5,0,43,39,39,34,34,29,29,24,24,19,19,14,14,9,9,4,45,53,53,54,54,55,55,56,56,57,57,58,58,59,59,49,49,60,60,61,61,62,62,52,52,63,63,64,64,65,65,66,66,67,67,68,68,69,69,47,47,70,70,71,71,72,72,45,50,94,94,95,95,96,96,97,97,98,98,99,99,100,100,46,46,101,101,102,102,103,103,48,48,104,104,105,105,106,106,107,107,108,108,109,109,110,110,51,51,111,111,112,112,113,113,50] m1.allocateCells(80) - for i in xrange(80): + for i in range(80): m1.insertNextCell(NORM_SEG2,2,c1seg[2*i:2*i+2]) pass m1.finishInsertingCells() @@ -265,7 +285,7 @@ class MEDLoaderDataForTest: m0.setCoords(coo2) c0pt=[44,0,47,48] m0.allocateCells(4) - for i in xrange(4): + for i in range(4): m0.insertNextCell(NORM_POINT1,1,[c0pt[i]]) pass m0.finishInsertingCells() @@ -314,6 +334,7 @@ class MEDLoaderDataForTest: famIdsPerGrp=[[5],[-11],[1],[-8],[4],[-10],[-12],[2],[-9],[-4],[-5],[-6],[-7],[-4,-5,-6,-7],[6],[-14],[7],[-19],[8],[-17],[9],[-20],[10],[-15],[11],[-18],[12],[-21],[13],[-16],[3],[-13],[-3,-2,-1],[-3],[-2],[-1],[-4,-5,-6,-7,-3,-2,-1],[3]] return m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp + @classmethod def buildMLMeshUnPolyze(cls,tester): """Level 0 (meshDim=3) - 2 TETRA4 + 3 PENTA6 + 2 POLYH # POLYH #0 becomes 1 TETRA4 @@ -332,7 +353,7 @@ class MEDLoaderDataForTest: pass mesh0.finishInsertingCells() mesh0.setCoords(coords) - + meshM1=MEDCouplingUMesh(meshName,2) typeM1=[NORM_TRI3,NORM_TRI3, NORM_QUAD4,NORM_QUAD4,NORM_QUAD4, NORM_POLYGON,NORM_POLYGON,NORM_POLYGON,NORM_POLYGON] connM1=[[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,27],[28,29,30],[31,32,33,34,35,36,37]] @@ -369,6 +390,7 @@ class MEDLoaderDataForTest: da=DataArrayInt.New(mm.getNumberOfNodes()) ; da.iota(8) ; mm.setRenumFieldArr(1,da) return mm + @classmethod def buildVecFieldOnCells_1(cls): mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); nbOfCells=mesh.getNumberOfCells(); @@ -382,11 +404,43 @@ class MEDLoaderDataForTest: array.setInfoOnComponent(1,"density [g/cm^3]"); array.setInfoOnComponent(2,"temperature [K]"); f1.setArray(array); - tmp=array.getPointer(); f1.setTime(2.,0,1); - f1.checkCoherency(); + f1.checkConsistencyLight(); return f1; + @classmethod + def buildIntVecFieldOnCells_1(cls): + mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); + nbOfCells=mesh.getNumberOfCells(); + f1=MEDCouplingFieldInt.New(ON_CELLS,ONE_TIME); + f1.setName("IntVectorFieldOnCells"); + f1.setMesh(mesh); + array=DataArrayInt32([0,10,20,1,11,21,2,12,22,3,13,23,4,14,24,5,15,25],nbOfCells ,3) + array.setInfoOnComponent(0,"va1 [MW/m^3]"); + array.setInfoOnComponent(1,"va2 [g/cm^3]"); + array.setInfoOnComponent(2,"val3 [K]"); + f1.setArray(array); + f1.setTime(2.,0,1); + f1.checkConsistencyLight(); + return f1; + + @classmethod + def buildFloatVecFieldOnCells_1(cls): + mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); + nbOfCells=mesh.getNumberOfCells(); + f1=MEDCouplingFieldFloat.New(ON_CELLS,ONE_TIME); + f1.setName("FloatVectorFieldOnCells"); + f1.setMesh(mesh); + array=DataArrayFloat([0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.], nbOfCells, 3); + array.setInfoOnComponent(0,"power [MW/m^3]"); + array.setInfoOnComponent(1,"density [g/cm^3]"); + array.setInfoOnComponent(2,"temperature [K]"); + f1.setArray(array); + f1.setTime(2.,0,1); + f1.checkConsistencyLight(); + return f1; + + @classmethod def buildVecFieldOnNodes_1(cls): mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); nbOfNodes=mesh.getNumberOfNodes(); @@ -402,9 +456,10 @@ class MEDLoaderDataForTest: array.setInfoOnComponent(1,"density [g/cm^3]"); array.setInfoOnComponent(2,"temperature [K]"); f1.setTime(2.12,2,3); - f1.checkCoherency(); + f1.checkConsistencyLight(); return f1; + @classmethod def buildVecFieldOnGauss_1(cls): _a=0.446948490915965; _b=0.091576213509771; @@ -437,16 +492,17 @@ class MEDLoaderDataForTest: array=DataArrayDouble.New(); array.alloc(19,2); ptr=array.getPointer(); - for i in xrange(19*2): + for i in range(19 * 2): array.setIJ(0,i,float(i+7)); pass f.setArray(array); f.setName("MyFirstFieldOnGaussPoint"); array.setInfoOnComponent(0,"power [MW/m^3]"); array.setInfoOnComponent(1,"density"); - f.checkCoherency(); + f.checkConsistencyLight(); return f; + @classmethod def buildVecFieldOnGauss_2(cls): _a=0.446948490915965; _b=0.091576213509771; @@ -486,17 +542,18 @@ class MEDLoaderDataForTest: array=DataArrayDouble.New(); array.alloc(53,2); ptr=array.getPointer(); - for i in xrange(53*2): + for i in range(53 * 2): array.setIJ(0,i,float(i+7)); pass f.setArray(array); f.setName("MyFirstFieldOnGaussPoint"); array.setInfoOnComponent(0,"power [MW/m^3]"); array.setInfoOnComponent(1,"density"); - f.checkCoherency(); + f.checkConsistencyLight(); return f; # idem buildVecFieldOnGauss_2 except that different discretizations are sorted inside one type + @classmethod def buildVecFieldOnGauss_2_Simpler(cls): _a=0.446948490915965; _b=0.091576213509771; @@ -536,16 +593,17 @@ class MEDLoaderDataForTest: array=DataArrayDouble.New(); array.alloc(53,2); ptr=array.getPointer(); - for i in xrange(53*2): + for i in range(53 * 2): array.setIJ(0,i,float(i+7)); pass f.setArray(array); f.setName("MyFirstFieldOnGaussPoint"); array.setInfoOnComponent(0,"power [MW/m^3]"); array.setInfoOnComponent(1,"density"); - f.checkCoherency(); + f.checkConsistencyLight(); return f; + @classmethod def buildVecFieldOnGaussNE_1(cls): m=MEDLoaderDataForTest.build2DMesh_2(); f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME); @@ -553,15 +611,16 @@ class MEDLoaderDataForTest: f.setMesh(m); array=DataArrayDouble.New(); array.alloc(20,2); - for i in xrange(2*20): + for i in range(2 * 20): array.setIJ(0,i,float(i+8)); f.setArray(array); array.setInfoOnComponent(0,"power [W]"); array.setInfoOnComponent(1,"temperature"); f.setName("MyFieldOnGaussNE"); - f.checkCoherency(); + f.checkConsistencyLight(); return f; + @classmethod def buildACompleteMEDDataStructureWithFieldsOnCells_1(cls): coo=DataArrayDouble([0,0,1,0,2,0,0,1,1,1,2,1,0,2,1,2,2,2],9,2) m0=MEDCouplingUMesh("mesh",2) @@ -599,7 +658,7 @@ class MEDLoaderDataForTest: f11Tmp.setMesh(m0) arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i ; arr*=0.1 f11Tmp.setArray(arr) - f11Tmp.checkCoherency() + f11Tmp.checkConsistencyLight() f11Tmp.setName(f1Name) f1.appendFieldNoProfileSBT(f11Tmp) pass @@ -614,7 +673,7 @@ class MEDLoaderDataForTest: f21Tmp.setMesh(m0) arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i f21Tmp.setArray(arr) - f21Tmp.checkCoherency() + f21Tmp.checkConsistencyLight() f21Tmp.setName(f2Name) f2.appendFieldNoProfileSBT(f21Tmp) f22Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) @@ -622,7 +681,7 @@ class MEDLoaderDataForTest: f22Tmp.setMesh(m1) arr=DataArrayDouble(m1.getNumberOfCells(),1) ; arr.iota() ; arr+=100+1+i f22Tmp.setArray(arr) - f22Tmp.checkCoherency() + f22Tmp.checkConsistencyLight() f22Tmp.setName(f2Name) f2[it,order].setFieldNoProfileSBT(f22Tmp) pass @@ -639,7 +698,7 @@ class MEDLoaderDataForTest: f31Tmp.setMesh(m0Part) arr=DataArrayDouble(m0Part.getNumberOfCells(),1) ; arr.iota() ; arr+=1000+i+1 f31Tmp.setArray(arr) - f31Tmp.checkCoherency() + f31Tmp.checkConsistencyLight() f31Tmp.setName(f3Name) f3.appendFieldProfile(f31Tmp,mm,0,pfl1) pfl2=DataArrayInt([0,3]) ; pfl2.setName("pfl2Bottom") @@ -649,7 +708,7 @@ class MEDLoaderDataForTest: f32Tmp.setMesh(m1Part) arr=DataArrayDouble(m1Part.getNumberOfCells(),1) ; arr.iota() ; arr+=2000+1+i f32Tmp.setArray(arr) - f32Tmp.checkCoherency() + f32Tmp.checkConsistencyLight() f32Tmp.setName(f3Name) f3[it,order].setFieldProfile(f32Tmp,mm,-1,pfl2) pass @@ -658,6 +717,7 @@ class MEDLoaderDataForTest: data=MEDFileData() ; data.setMeshes(ms) ; data.setFields(fs) return data + @classmethod def buildAMEDFileDataWithGroupOnOneFamilyForSauv(self): # Coordinates coords = [0.,0., 0.,1., 1.,1., 1.,0.] @@ -706,23 +766,271 @@ class MEDLoaderDataForTest: mfd.setMeshes(ms) # return mfd - - build1DMesh_1=classmethod(build1DMesh_1) - build2DCurveMesh_1=classmethod(build2DCurveMesh_1) - build2DMesh_1=classmethod(build2DMesh_1) - build2DMesh_2=classmethod(build2DMesh_2) - build2DMesh_3=classmethod(build2DMesh_3) - build3DMesh_1=classmethod(build3DMesh_1) - build3DSurfMesh_1=classmethod(build3DSurfMesh_1) - build3DMesh_2=classmethod(build3DMesh_2) - buildMLMeshUnPolyze=classmethod(buildMLMeshUnPolyze) - buildMultiLevelMesh_1=classmethod(buildMultiLevelMesh_1) - buildVecFieldOnCells_1=classmethod(buildVecFieldOnCells_1) - buildVecFieldOnNodes_1=classmethod(buildVecFieldOnNodes_1) - buildVecFieldOnGauss_1=classmethod(buildVecFieldOnGauss_1) - buildVecFieldOnGauss_2=classmethod(buildVecFieldOnGauss_2) - buildVecFieldOnGauss_2_Simpler=classmethod(buildVecFieldOnGauss_2_Simpler) - buildVecFieldOnGaussNE_1=classmethod(buildVecFieldOnGaussNE_1) - buildACompleteMEDDataStructureWithFieldsOnCells_1=classmethod(buildACompleteMEDDataStructureWithFieldsOnCells_1) - buildAMEDFileDataWithGroupOnOneFamilyForSauv=classmethod(buildAMEDFileDataWithGroupOnOneFamilyForSauv) + + pass + +def TestWriteUMeshesRW1(tester): + fileName="Pyfile18.med"; + m3d=MEDLoaderDataForTest.build3DMesh_2(); + pt=[0.,0.,-0.3] + vec=[0.,0.,1.] + nodes=m3d.findNodesOnPlane(pt,vec,1e-12); + m2d=m3d.buildFacePartOfMySelfNode(nodes,True); + renumber=[1,2,0,4,3] + m2d.renumberCells(renumber,False); + m2d.setName("ExampleOfMultiDimW"); + meshes=[m2d,m3d] + WriteUMeshes(fileName,meshes,False); + m3d_bis=ReadUMeshFromFile(fileName,m2d.getName(),0); + tester.assertTrue(not m3d_bis.isEqual(m3d,1e-12)); + m3d_bis.setName(m3d.getName()); + tester.assertTrue(m3d_bis.isEqual(m3d,1e-12)); + m2d_bis=ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces + tester.assertTrue(m2d_bis.isEqual(m2d,1e-12)); + # Creation of a field on faces. + f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME); + f1.setName("FieldOnFacesShuffle"); + f1.setMesh(m2d); + array=DataArrayDouble.New(); + arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.] + array.setValues(arr1,m2d.getNumberOfCells(),2); + array.setInfoOnComponent(0,"plkj [mm]"); + array.setInfoOnComponent(1,"pqqqss [mm]"); + f1.setArray(array); + tmp=array.setValues(arr1,m2d.getNumberOfCells(),2); + f1.setTime(3.14,2,7); + f1.checkConsistencyLight(); + WriteFieldUsingAlreadyWrittenMesh(fileName,f1); + f2=ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7); + tester.assertTrue(f2.isEqual(f1,1e-12,1e-12)); + pass + +def TestMultiFieldShuffleRW1(tester): + fileName="Pyfile17.med"; + m=MEDLoaderDataForTest.build3DMesh_2(); + tester.assertEqual(20,m.getNumberOfCells()); + tester.assertEqual(45,m.getNumberOfNodes()); + polys=[1,4,6] + m.convertToPolyTypes(polys); + renum=[1,3,2,8,9,12,13,16,19,0,4,7,5,15,14,17,10,18,6,11] + m.renumberCells(renum,False); + m.orientCorrectlyPolyhedrons(); + # Writing + WriteUMeshDep(fileName,m,False); + f1Tmp=m.getMeasureField(False); + f1=f1Tmp.buildNewTimeReprFromThis(ONE_TIME,False); + f1.setTime(0.,1,2); + f_1=f1.cloneWithMesh(True); + WriteFieldUsingAlreadyWrittenMesh(fileName,f1); + f1.applyFunc("2*x"); + f1.setTime(0.01,3,4); + f_2=f1.cloneWithMesh(True); + WriteFieldUsingAlreadyWrittenMesh(fileName,f1); + f1.applyFunc("2*x/3"); + f1.setTime(0.02,5,6); + f_3=f1.cloneWithMesh(True); + WriteFieldUsingAlreadyWrittenMesh(fileName,f1); + # Reading + its=[(1,2),(3,4),(5,6)]; + fs=ReadFieldsOnSameMesh(ON_CELLS,fileName,f_1.getMesh().getName(),0,f_1.getName(),its); + tester.assertEqual(3,len(fs)); + tester.assertTrue(fs[0].isEqual(f_1,1e-12,1e-12)); + tester.assertTrue(fs[1].isEqual(f_2,1e-12,1e-12)); + tester.assertTrue(fs[2].isEqual(f_3,1e-12,1e-12)); + +def GeneratePyfile13(tester): + fileName="Pyfile13.med"; + f1=MEDLoaderDataForTest.buildVecFieldOnGauss_1(); + WriteField(fileName,f1,True); + f2=ReadField(ON_GAUSS_PT,fileName,f1.getMesh().getName(),0,f1.getName(),1,5); + tester.assertTrue(f1.isEqual(f2,1e-12,1e-12)); pass + +def GeneratePyfile14(tester): + fileName="Pyfile14.med"; + f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1(); + WriteField(fileName,f1,True); + tester.assertEqual([ON_GAUSS_NE],GetTypesOfField(fileName,'2DMesh_2','MyFieldOnGaussNE')) #Bug 22/5/2014 + f2=ReadField(ON_GAUSS_NE,fileName,f1.getMesh().getName(),0,f1.getName(),1,5); + tester.assertTrue(f1.isEqual(f2,1e-12,1e-12)); + + +def GeneratePyfile18(tester): + fileName="Pyfile18.med"; + m3d=MEDLoaderDataForTest.build3DMesh_2(); + pt=[0.,0.,-0.3] + vec=[0.,0.,1.] + nodes=m3d.findNodesOnPlane(pt,vec,1e-12); + m2d=m3d.buildFacePartOfMySelfNode(nodes,True); + renumber=[1,2,0,4,3] + m2d.renumberCells(renumber,False); + m2d.setName("ExampleOfMultiDimW"); + meshes=[m2d,m3d] + WriteUMeshes(fileName,meshes,True); + m3d_bis=ReadUMeshFromFile(fileName,m2d.getName(),0); + tester.assertTrue(not m3d_bis.isEqual(m3d,1e-12)); + m3d_bis.setName(m3d.getName()); + tester.assertTrue(m3d_bis.isEqual(m3d,1e-12)); + m2d_bis=ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces + tester.assertTrue(m2d_bis.isEqual(m2d,1e-12)); + # Creation of a field on faces. + f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME); + f1.setName("FieldOnFacesShuffle"); + f1.setMesh(m2d); + array=DataArrayDouble.New(); + arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.] + array.setValues(arr1,m2d.getNumberOfCells(),2); + array.setInfoOnComponent(0,"plkj [mm]"); + array.setInfoOnComponent(1,"pqqqss [mm]"); + f1.setArray(array); + tmp=array.setValues(arr1,m2d.getNumberOfCells(),2); + f1.setTime(3.14,2,7); + f1.checkConsistencyLight(); + WriteFieldUsingAlreadyWrittenMesh(fileName,f1); + f2=ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7); + tester.assertTrue(f2.isEqual(f1,1e-12,1e-12)); + +def GeneratePyfile19(tester): + fileName="Pyfile19.med"; + fileName2="Pyfile20.med"; + m=MEDLoaderDataForTest.build2DMesh_1(); + nbOfNodes=m.getNumberOfNodes(); + WriteUMesh(fileName,m,True); + f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME); + f1.setName("VFieldOnNodes"); + f1.setMesh(m); + array=DataArrayDouble.New(); + arr1=[1.,101.,2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.] + array.setValues(arr1,nbOfNodes,2); + f1.setArray(array); + array.setInfoOnComponent(0,"tyty [mm]"); + array.setInfoOnComponent(1,"uiop [MW]"); + f1.setTime(3.14,2,7); + f1.checkConsistencyLight(); + arr2=[1,4] + f2=f1.buildSubPart(arr2); + f2.getMesh().setName(f1.getMesh().getName()); + WriteField(fileName,f2,False);#<- False important for the test + # + f3=ReadFieldNode(fileName,f2.getMesh().getName(),0,f2.getName(),2,7); + f3.checkConsistencyLight(); + tester.assertTrue(f3.isEqual(f2,1e-12,1e-12)); + # + arr3=[1,3,0,5,2,4] + f2.renumberNodes(arr3); + WriteUMesh(fileName2,m,True); + WriteField(fileName2,f2,False);#<- False important for the test + f3=ReadFieldNode(fileName2,f2.getMesh().getName(),0,f2.getName(),2,7); + f3.checkConsistencyLight(); + tester.assertTrue(f3.isEqual(f2,1e-12,1e-12)); + # + pass + +def GeneratePyfile7(tester): + f1=MEDLoaderDataForTest.buildVecFieldOnCells_1(); + WriteField("Pyfile6.med",f1,True); + f2=ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1); + tester.assertTrue(f1.isEqual(f2,1e-12,1e-12)); + # + f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); + WriteField("Pyfile7.med",f1,True); + f2=ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3); + tester.assertTrue(f1.isEqual(f2,1e-12,1e-12)); + tester.assertRaises(Exception,ReadFieldCell,"Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3); + pass + +def GeneratePyfile12(tester): + fileName="Pyfile12.med"; + mesh1=MEDLoaderDataForTest.build3DMesh_1(); + da,b,newNbOfNodes=mesh1.mergeNodes(1e-12); + WriteUMesh(fileName,mesh1,True); + part1=[1,2,4,13,15] + mesh2=mesh1.buildPartOfMySelf(part1,True); + mesh2.setName(mesh1.getName());#<- important for the test + # + nbOfCells=mesh2.getNumberOfCells(); + tester.assertEqual(5,nbOfCells); + f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME); + f1.setName("VectorFieldOnCells"); + f1.setMesh(mesh2); + array=DataArrayDouble.New(); + array.alloc(nbOfCells,2); + f1.setArray(array); + arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.] + array.setValues(arr1,nbOfCells,2); + f1.setTime(3.14,2,7); + f1.checkConsistencyLight(); + # + WriteField(fileName,f1,False);#<- False important for the test + # + f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7); + tt=GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName()); + tester.assertEqual(tt,[ON_CELLS]); + f2.checkConsistencyLight(); + tester.assertTrue(f1.isEqual(f2,1e-12,1e-12)); + +def GeneratePyfile10(tester): + fileName="Pyfile10.med"; + mesh1=MEDLoaderDataForTest.build3DMesh_1(); + part1=[1,2,4,13,15] + mesh2=mesh1.buildPartOfMySelf(part1,True); + mesh2.setName("mesh2"); + part2=[3,4,13,14] + mesh3=mesh1.buildPartOfMySelf(part2,True); + mesh3.setName("mesh3"); + mesh4=MEDCouplingUMesh.New(); + mesh4.setName("mesh4"); + mesh4.setMeshDimension(3); + mesh4.allocateCells(1); + conn=[0,11,1,3] + mesh4.insertNextCell(NORM_TETRA4,4,conn[0:4]) + mesh4.finishInsertingCells(); + mesh4.setCoords(mesh1.getCoords()); + meshes=[mesh1,mesh2,mesh3,mesh4] + mnane="3DToto"; + WriteUMeshesPartition(fileName,mnane,meshes,True); + # + mesh5=ReadUMeshFromFile(fileName,mnane); + mesh1.setName(mnane); + part3=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] + mesh6=mesh5.buildPartOfMySelf(part3,True); + mesh6.setName(mnane); + tester.assertTrue(mesh6.isEqual(mesh1,1e-12)); + grps=GetMeshGroupsNames(fileName,mnane); + tester.assertEqual(4,len(grps)); + grps.index("mesh2"); + grps.index("mesh3"); + grps.index("mesh4"); + grps.index("3DMesh_1"); + # + vec=("mesh2",); + mesh2_2=ReadUMeshFromGroups(fileName,mnane,0,vec); + tester.assertTrue(mesh2_2.isEqual(mesh2,1e-12)); + vec=["mesh3"]; + mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec); + tester.assertTrue(mesh3_2.isEqual(mesh3,1e-12)); + vec=["mesh4"]; + mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec); + tester.assertTrue(mesh4_2.isEqual(mesh4,1e-12)); + vec="3DMesh_1"; + mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec); + mesh1.setName("3DMesh_1"); + tester.assertTrue(mesh1_2.isEqual(mesh1,1e-12)); + # + vec=["Family_-3","Family_-5"]; + mesh2_2=ReadUMeshFromFamilies(fileName,mnane,0,vec); + mesh2_2.setName("mesh2"); + tester.assertTrue(mesh2_2.isEqual(mesh2,1e-12)); + # + ret=GetMeshFamiliesNamesOnGroup(fileName,"3DToto","3DMesh_1"); + tester.assertEqual(4,len(ret)); + ref=['Family_-3','Family_-4','Family_-2','Family_-5'] + tester.assertIn(ref[0],ret); + tester.assertIn(ref[1],ret); + tester.assertIn(ref[2],ret); + tester.assertIn(ref[3],ret); + # + ret1=GetMeshGroupsNamesOnFamily(fileName,"3DToto","Family_-3"); + tester.assertEqual(2,len(ret1)); + tester.assertEqual(ret1[0],"3DMesh_1"); + tester.assertEqual(ret1[1],"mesh2");