# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016 CEA/DEN, EDF R&D
+# Copyright (C) 2007-2024 CEA, EDF
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
#
# 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
+import sys
+
+def WriteInTmpDir(func):
+ def decaratedFunc(*args,**kwargs):
+ import tempfile,os
+ ret = None
+ with tempfile.TemporaryDirectory() as tmpdirname:
+ os.chdir(tmpdirname)
+ ret = func(*args,**kwargs)
+ os.chdir(os.path.dirname(tmpdirname))
+ 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]
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]
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]
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]
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]
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.,
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]
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]
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()
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()
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()
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()
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
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]]
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();
array.setInfoOnComponent(1,"density [g/cm^3]");
array.setInfoOnComponent(2,"temperature [K]");
f1.setArray(array);
- tmp=array.getPointer();
f1.setTime(2.,0,1);
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();
f1.checkConsistencyLight();
return f1;
+ @classmethod
def buildVecFieldOnGauss_1(cls):
_a=0.446948490915965;
_b=0.091576213509771;
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.checkConsistencyLight();
return f;
+ @classmethod
def buildVecFieldOnGauss_2(cls):
_a=0.446948490915965;
_b=0.091576213509771;
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);
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;
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.checkConsistencyLight();
return f;
+ @classmethod
def buildVecFieldOnGaussNE_1(cls):
m=MEDLoaderDataForTest.build2DMesh_2();
f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME);
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]");
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)
data=MEDFileData() ; data.setMeshes(ms) ; data.setFields(fs)
return data
+ @classmethod
def buildAMEDFileDataWithGroupOnOneFamilyForSauv(self):
# Coordinates
coords = [0.,0., 0.,1., 1.,1., 1.,0.]
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");