def testFieldRW1(self): f1=MEDLoaderDataForTest.buildVecFieldOnCells_1(); WriteFieldDep("Pyfile6.med",f1,False); f2=ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); # f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); WriteFieldDep("Pyfile7.med",f1,False); f2=ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); pass
def testFieldRW1(self): f1=MEDLoaderDataForTest.buildVecFieldOnCells_1(); MEDLoader.WriteField("Pyfile6.med",f1,True); f2=MEDLoader.ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); # f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); MEDLoader.WriteField("Pyfile7.med",f1,True); f2=MEDLoader.ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); self.assertRaises(Exception,MEDLoader.ReadFieldCell,"Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3); pass
def testFieldRW2(self): fileName="Pyfile8.med"; VAL1=12345.67890314; VAL2=-1111111111111.; f1=MEDLoaderDataForTest.buildVecFieldOnCells_1(); MEDLoader.WriteField(fileName,f1,True); f1.setTime(10.,8,9); f1.getArray().setIJ(0,0,VAL1); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setTime(10.14,18,19); f1.getArray().setIJ(0,0,VAL2); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1); #retrieving time steps... f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),8,9); f1.setTime(10.,8,9); f1.getArray().setIJ(0,0,VAL1); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),0,1); f3=MEDLoaderDataForTest.buildVecFieldOnCells_1(); self.assertTrue(f3.isEqual(f2,1e-12,1e-12)); f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),18,19); f1.setTime(10.14,18,19); f1.getArray().setIJ(0,0,VAL2); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); #test of throw on invalid (dt,it) self.assertRaises(Exception,MEDLoader.ReadFieldCell,fileName,f1.getMesh().getName(),0,f1.getName(),28,19); #ON NODES f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); fileName2="Pyfile9.med"; MEDLoader.WriteField(fileName2,f1,True); f1.setTime(110.,108,109); tmp=f1.getArray().getPointer(); f1.getArray().setIJ(0,3,VAL1); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1); f1.setTime(210.,208,209); f1.getArray().setIJ(0,3,VAL2); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1); f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),108,109); f1.setTime(110.,108,109); f1.getArray().setIJ(0,3,VAL1); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),2,3); f3=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); self.assertTrue(f3.isEqual(f2,1e-12,1e-12)); f2=MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),208,209); f1.setTime(210.,208,209); f1.getArray().setIJ(0,3,VAL2); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); pass
def testMultiFieldShuffleRW1(self): fileName="Pyfile17.med"; m=MEDLoaderDataForTest.build3DMesh_2(); self.assertEqual(20,m.getNumberOfCells()); self.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); self.assertEqual(3,len(fs)); self.assertTrue(fs[0].isEqual(f_1,1e-12,1e-12)); self.assertTrue(fs[1].isEqual(f_2,1e-12,1e-12)); self.assertTrue(fs[2].isEqual(f_3,1e-12,1e-12)); pass
def testWriteUMeshesRW1(self): 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); self.assertTrue(not m3d_bis.isEqual(m3d,1e-12)); m3d_bis.setName(m3d.getName()); self.assertTrue(m3d_bis.isEqual(m3d,1e-12)); m2d_bis=ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces self.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); self.assertTrue(f2.isEqual(f1,1e-12,1e-12)); pass
def testMesh3DRW(self): mesh=MEDLoaderDataForTest.build3DMesh_1(); mesh.checkConsistencyLight(); WriteUMeshDep("Pyfile5.med",mesh,False); mesh_rw=ReadUMeshFromFile("Pyfile5.med",mesh.getName(),0); self.assertTrue(mesh.isEqual(mesh_rw,1e-12)); pass
def testGetAllFieldNamesRW1(self): fileName="Pyfile22.med"; mesh=MEDLoaderDataForTest.build2DMesh_2(); f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME); f1.setName("Field1"); f1.setTime(3.44,5,6); f1.setMesh(mesh); f1.fillFromAnalytic(2,"x+y"); MEDLoader.WriteField(fileName,f1,True); f1.setTime(1002.3,7,8); f1.fillFromAnalytic(2,"x+77.*y"); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setName("Field2"); MEDLoader.WriteField(fileName,f1,False); f1.setName("Field3"); mesh.setName("2DMesh_2Bis"); MEDLoader.WriteField(fileName,f1,False); f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME); f1.setName("Field8"); f1.setTime(8.99,7,9); f1.setMesh(mesh); f1.fillFromAnalytic(3,"3*x+y"); MEDLoader.WriteField(fileName,f1,False); fs=MEDLoader.GetAllFieldNames(fileName); self.assertEqual(4,len(fs)); self.assertTrue(fs[0]=="Field1"); self.assertTrue(fs[1]=="Field2"); self.assertTrue(fs[2]=="Field3"); self.assertTrue(fs[3]=="Field8"); pass
def testFieldNodeProfilRW2(self): fileName="Pyfile23.med"; mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); MEDLoader.WriteUMesh(fileName,mesh,True); # f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME); f1.setName("FieldMix"); f1.setMesh(mesh); arr2=[1071.,1171.,1010.,1110.,1020.,1120.,1030.,1130.,1040.,1140.,1050.,1150., 1060.,1160.,1070.,1170.,1080.,1180.,1090.,1190.,1091.,1191.,1092.,1192.]; array=MEDLoader.DataArrayDouble.New(); array.setValues(arr2,12,2); f1.setArray(array); array.setInfoOnComponent(0,"plkj [mm]"); array.setInfoOnComponent(1,"pqqqss [mm]"); tmp=array.getPointer(); f1.setTime(3.17,2,7); # renumArr=[3,7,2,1,5,11,10,0,9,6,8,4] f1.renumberNodes(renumArr); f1.checkConsistencyLight(); MEDLoader.WriteField(fileName,f1,False);#<- False important for the test f2=MEDLoader.ReadFieldNode(fileName,f1.getMesh().getName(),0,f1.getName(),2,7); self.assertTrue(f2.isEqual(f1,1e-12,1e-12)); # pass
def testFieldNodeProfilRW1(self): fileName="Pyfile19.med"; fileName2="Pyfile20.med"; m=MEDLoaderDataForTest.build2DMesh_1(); nbOfNodes=m.getNumberOfNodes(); MEDLoader.WriteUMesh(fileName,m,True); f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME); f1.setName("VFieldOnNodes"); f1.setMesh(m); array=MEDLoader.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()); MEDLoader.WriteField(fileName,f2,False);#<- False important for the test # f3=MEDLoader.ReadFieldNode(fileName,f2.getMesh().getName(),0,f2.getName(),2,7); f3.checkConsistencyLight(); self.assertTrue(f3.isEqual(f2,1e-12,1e-12)); # arr3=[1,3,0,5,2,4] f2.renumberNodes(arr3); MEDLoader.WriteUMesh(fileName2,m,True); MEDLoader.WriteField(fileName2,f2,False);#<- False important for the test f3=MEDLoader.ReadFieldNode(fileName2,f2.getMesh().getName(),0,f2.getName(),2,7); f3.checkConsistencyLight(); self.assertTrue(f3.isEqual(f2,1e-12,1e-12)); # pass
def testFieldGaussRW1(self): fileName="Pyfile13.med"; f1=MEDLoaderDataForTest.buildVecFieldOnGauss_1(); MEDLoader.WriteField(fileName,f1,True); f2=MEDLoader.ReadField(MEDLoader.ON_GAUSS_PT,fileName,f1.getMesh().getName(),0,f1.getName(),1,5); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); pass
def testMesh3DRW(self): mesh = MEDLoaderDataForTest.build3DMesh_1() mesh.checkCoherency() MEDLoader.WriteUMeshDep("Pyfile5.med", mesh, False) mesh_rw = MEDLoader.ReadUMeshFromFile("Pyfile5.med", mesh.getName(), 0) self.assertTrue(mesh.isEqual(mesh_rw, 1e-12)) pass
def testFieldProfilRW1(self): fileName="Pyfile12.med"; mesh1=MEDLoaderDataForTest.build3DMesh_1(); da,b,newNbOfNodes=mesh1.mergeNodes(1e-12); MEDLoader.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(); self.assertEqual(5,nbOfCells); f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME); f1.setName("VectorFieldOnCells"); f1.setMesh(mesh2); array=MEDLoader.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(); # MEDLoader.WriteField(fileName,f1,False);#<- False important for the test # f2=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7); tt=MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName()); self.assertEqual(tt,[MEDLoader.ON_CELLS]); f2.checkConsistencyLight(); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); # pass
def testMesh2DRW(self): mesh=MEDLoaderDataForTest.build2DMesh_1(); mesh.checkCoherency(); MEDLoader.MEDLoader.WriteUMesh("Pyfile3.med",mesh,True); mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile3.med",mesh.getName(),0); self.assertTrue(mesh.isEqual(mesh_rw,1e-12)); pass
def testMesh3DSurfRW(self): mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); mesh.checkConsistencyLight(); MEDLoader.WriteUMesh("Pyfile4.med",mesh,True); mesh_rw=MEDLoader.ReadUMeshFromFile("Pyfile4.med",mesh.getName(),0); self.assertTrue(mesh.isEqual(mesh_rw,1e-12)); pass
def testFieldRW2(self): fileName = "Pyfile8.med" VAL1 = 12345.67890314 VAL2 = -1111111111111.0 f1 = MEDLoaderDataForTest.buildVecFieldOnCells_1() MEDLoader.WriteFieldDep(fileName, f1, False) f1.setTime(10.0, 8, 9) f1.getArray().setIJ(0, 0, VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(10.14, 18, 19) f1.getArray().setIJ(0, 0, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) # retrieving time steps... f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 8, 9) f1.setTime(10.0, 8, 9) f1.getArray().setIJ(0, 0, VAL1) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 0, 1) f3 = MEDLoaderDataForTest.buildVecFieldOnCells_1() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 18, 19) f1.setTime(10.14, 18, 19) f1.getArray().setIJ(0, 0, VAL2) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) # ON NODES f1 = MEDLoaderDataForTest.buildVecFieldOnNodes_1() fileName2 = "Pyfile9.med" MEDLoader.WriteFieldDep(fileName2, f1, False) f1.setTime(110.0, 108, 109) tmp = f1.getArray().getPointer() f1.getArray().setIJ(0, 3, VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2, f1) f1.setTime(210.0, 208, 209) f1.getArray().setIJ(0, 3, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2, f1) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 108, 109) f1.setTime(110.0, 108, 109) f1.getArray().setIJ(0, 3, VAL1) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 2, 3) f3 = MEDLoaderDataForTest.buildVecFieldOnNodes_1() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 208, 209) f1.setTime(210.0, 208, 209) f1.getArray().setIJ(0, 3, VAL2) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) pass
def testChangeGroupName(self): """ This test is a non regression test on MEDFileUMesh.changeGroupName thanks to Alliance. """ mfd=MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv() mesh = mfd.getMeshes().getMeshAtPos(0) mesh.changeGroupName("grp0_LM1", "xonall1") self.assertTrue("xonall1" in mesh.getGroupsNames()) pass
def testFieldGaussNERW1(self): fileName="Pyfile14.med"; f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1(); MEDLoader.WriteField(fileName,f1,True); self.assertEqual([MEDLoader.ON_GAUSS_NE],MEDLoader.GetTypesOfField(fileName,'2DMesh_2','MyFieldOnGaussNE')) #Bug 22/5/2014 f2=MEDLoader.ReadField(MEDLoader.ON_GAUSS_NE,fileName,f1.getMesh().getName(),0,f1.getName(),1,5); self.assertTrue(f1.isEqual(f2,1e-12,1e-12)); pass
def testMesh3DSurfShuffleRW(self): fileName = "Pyfile15.med" mesh = MEDLoaderDataForTest.build3DSurfMesh_1() renumber1 = [2, 5, 1, 0, 3, 4] mesh.renumberCells(renumber1, False) mesh.checkCoherency() MEDLoader.WriteUMeshDep(fileName, mesh, False) mesh_rw = MEDLoader.ReadUMeshFromFile(fileName, mesh.getName(), 0) self.assertTrue(mesh.isEqual(mesh_rw, 1e-12)) pass
def testMesh3DSurfShuffleRW(self): fileName="Pyfile15.med"; mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); renumber1=[2,5,1,0,3,4] mesh.renumberCells(renumber1,False); mesh.checkConsistencyLight(); WriteUMeshDep(fileName,mesh,False); mesh_rw=ReadUMeshFromFile(fileName,mesh.getName(),0); self.assertTrue(mesh.isEqual(mesh_rw,1e-12)); pass
def testExampleReadFieldOnAllEntity1(self): from MEDLoaderDataForTest import MEDLoaderDataForTest #! [PySnippetReadFieldOnAllEntity1_1] fname="PyExamples1.med" meshName="mesh" fieldName="FieldOnAll" iteration=3 order=4 #! [PySnippetReadFieldOnAllEntity1_1] #! [PySnippetWriteFieldOnAllEntity1_2] m=MEDLoaderDataForTest.build2DMesh_3() m=m[:10] m.setName(meshName) f=m.getMeasureField(False) f=f.buildNewTimeReprFromThis(ONE_TIME,False) f.setTime(5.5,iteration,order) f.setName(fieldName) # MEDCoupling finished, MEDLoader advanced API specific part starting from here mm=MEDFileUMesh.New() mm.setMeshAtLevel(0,m) ff=MEDFileField1TS.New() ff.setFieldNoProfileSBT(f) mm.write(fname,2) ff.write(fname,0) #! [PySnippetWriteFieldOnAllEntity1_2] #! [PySnippetReadFieldOnAllEntity1_3] medfileField1TS=MEDFileField1TS.New(fname,fieldName,iteration,order) mm=MEDFileMesh.New(fname) fread=medfileField1TS.getFieldOnMeshAtLevel(ON_CELLS,0,mm) fread2=medfileField1TS.getFieldAtLevel(ON_CELLS,0) self.assertTrue(fread.isEqual(f,1e-12,1e-12)) self.assertTrue(fread2.isEqual(f,1e-12,1e-12)) #! [PySnippetReadFieldOnAllEntity1_3] #! [PySnippetReadFieldOnAllEntity1_4] medfileFieldMTS=MEDFileFieldMultiTS.New(fname,fieldName) mm=MEDFileMesh.New(fname) fread=medfileFieldMTS.getFieldOnMeshAtLevel(ON_CELLS,iteration,order,0,mm) fread2=medfileFieldMTS.getFieldAtLevel(ON_CELLS,iteration,order,0) self.assertTrue(fread.isEqual(f,1e-12,1e-12)) self.assertTrue(fread2.isEqual(f,1e-12,1e-12)) #! [PySnippetReadFieldOnAllEntity1_4] #! [PySnippetReadFieldOnAllEntity1_5] medfileFieldMTS=MEDFileFieldMultiTS.New(fname,fieldName) for medfileField1TS in medfileFieldMTS: if medfileField1TS.getTime()[:2]==[iteration,order]: fread=medfileField1TS.getFieldOnMeshAtLevel(ON_CELLS,0,mm) fread2=medfileField1TS.getFieldAtLevel(ON_CELLS,0) self.assertTrue(fread.isEqual(f,1e-12,1e-12)) self.assertTrue(fread2.isEqual(f,1e-12,1e-12)) pass pass #! [PySnippetReadFieldOnAllEntity1_5] pass
def testMultiMeshRW1(self): 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"; WriteUMeshesPartitionDep(fileName,mnane,meshes,False); # 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); self.assertTrue(mesh6.isEqual(mesh1,1e-12)); grps=GetMeshGroupsNames(fileName,mnane); self.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); self.assertTrue(mesh2_2.isEqual(mesh2,1e-12)); vec=["mesh3"]; mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec); self.assertTrue(mesh3_2.isEqual(mesh3,1e-12)); vec=["mesh4"]; mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec); self.assertTrue(mesh4_2.isEqual(mesh4,1e-12)); vec=["3DMesh_1"]; mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec); mesh1.setName("3DMesh_1"); self.assertTrue(mesh1_2.isEqual(mesh1,1e-12)); # vec=["Family_-5","Family_-3"]; mesh2_2=ReadUMeshFromFamilies(fileName,mnane,0,vec); mesh2_2.setName("mesh2"); self.assertTrue(mesh2_2.isEqual(mesh2,1e-12)); pass
def testMixCellAndNodesFieldRW1(self): fileName="Pyfile21.med"; mesh=MEDLoaderDataForTest.build3DSurfMesh_1(); f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME); f1.setName("FieldMix"); f1.setMesh(mesh); array=MEDLoader.DataArrayDouble.New(); f1.setArray(array); arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.] array.setValues(arr1,6,2); array.setInfoOnComponent(0,"plkj [mm]"); array.setInfoOnComponent(1,"pqqqss [mm]"); f1.setTime(3.14,2,7); f1.checkConsistencyLight(); # f2=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME); f2.setName("FieldMix"); f2.setMesh(mesh); array=MEDLoader.DataArrayDouble.New(); f2.setArray(array); arr2=[1071.,1171.,1010.,1110.,1020.,1120.,1030.,1130.,1040.,1140.,1050.,1150., 1060.,1160.,1070.,1170.,1080.,1180.,1090.,1190.,1091.,1191.,1092.,1192.] array.setValues(arr2,12,2) array.setInfoOnComponent(0,"plkj [mm]"); array.setInfoOnComponent(1,"pqqqss [mm]"); f2.setTime(3.14,2,7); f2.checkConsistencyLight(); # MEDLoader.WriteField(fileName,f1,True); ts=MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName()); self.assertEqual(1,len(ts)); self.assertEqual(MEDLoader.ON_CELLS,ts[0]); fs=MEDLoader.GetAllFieldNamesOnMesh(fileName,f1.getMesh().getName()); self.assertEqual(1,len(fs)); self.assertTrue(fs[0]=="FieldMix"); MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f2); fs=MEDLoader.GetAllFieldNamesOnMesh(fileName,f1.getMesh().getName()); self.assertEqual(1,len(fs)); self.assertTrue(fs[0]=="FieldMix"); # ts=MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName()); self.assertEqual(2,len(ts)); self.assertEqual(MEDLoader.ON_NODES,ts[0]); self.assertEqual(MEDLoader.ON_CELLS,ts[1]); # f3=MEDLoader.ReadFieldNode(fileName,f1.getMesh().getName(),0,f1.getName(),2,7); self.assertTrue(f3.isEqual(f2,1e-12,1e-12)); f3=MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7); self.assertTrue(f3.isEqual(f1,1e-12,1e-12)); # pass
def testFieldNodeProfilRW1(self): fileName = "Pyfile19.med" fileName2 = "Pyfile20.med" m = MEDLoaderDataForTest.build2DMesh_1() nbOfNodes = m.getNumberOfNodes() MEDLoader.WriteUMesh(fileName, m, True) f1 = MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES, MEDLoader.ONE_TIME) f1.setName("VFieldOnNodes") f1.setMesh(m) array = MEDLoader.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()) MEDLoader.WriteField(fileName, f2, False) #<- False important for the test # f3 = MEDLoader.ReadFieldNode(fileName, f2.getMesh().getName(), 0, f2.getName(), 2, 7) f3.checkConsistencyLight() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) # arr3 = [1, 3, 0, 5, 2, 4] f2.renumberNodes(arr3) MEDLoader.WriteUMesh(fileName2, m, True) MEDLoader.WriteField(fileName2, f2, False) #<- False important for the test f3 = MEDLoader.ReadFieldNode(fileName2, f2.getMesh().getName(), 0, f2.getName(), 2, 7) f3.checkConsistencyLight() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) # pass
def testWriteUMeshesRW1(self): 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] MEDLoader.MEDLoader.WriteUMeshes(fileName, meshes, True) m3d_bis = MEDLoader.MEDLoader.ReadUMeshFromFile( fileName, m2d.getName(), 0) self.assertTrue(not m3d_bis.isEqual(m3d, 1e-12)) m3d_bis.setName(m3d.getName()) self.assertTrue(m3d_bis.isEqual(m3d, 1e-12)) m2d_bis = MEDLoader.MEDLoader.ReadUMeshFromFile( fileName, m2d.getName(), -1) #-1 for faces self.assertTrue(m2d_bis.isEqual(m2d, 1e-12)) # Creation of a field on faces. f1 = MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS, MEDLoader.ONE_TIME) f1.setName("FieldOnFacesShuffle") f1.setMesh(m2d) array = MEDLoader.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.checkCoherency() MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f2 = MEDLoader.MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), -1, f1.getName(), 2, 7) self.assertTrue(f2.isEqual(f1, 1e-12, 1e-12)) pass
def testMultiFieldShuffleRW1(self): fileName = "Pyfile17.med" m = MEDLoaderDataForTest.build3DMesh_2() self.assertEqual(20, m.getNumberOfCells()) self.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 MEDLoader.MEDLoader.WriteUMesh(fileName, m, True) f1Tmp = m.getMeasureField(False) f1 = f1Tmp.buildNewTimeReprFromThis(MEDLoader.ONE_TIME, False) f1.setTime(0., 1, 2) f_1 = f1.cloneWithMesh(True) MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.applyFunc("2*x") f1.setTime(0.01, 3, 4) f_2 = f1.cloneWithMesh(True) MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.applyFunc("2*x/3") f1.setTime(0.02, 5, 6) f_3 = f1.cloneWithMesh(True) MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) # Reading its = [(1, 2), (3, 4), (5, 6)] fs = MEDLoader.MEDLoader.ReadFieldsOnSameMesh(MEDLoader.ON_CELLS, fileName, f_1.getMesh().getName(), 0, f_1.getName(), its) self.assertEqual(3, len(fs)) self.assertTrue(fs[0].isEqual(f_1, 1e-12, 1e-12)) self.assertTrue(fs[1].isEqual(f_2, 1e-12, 1e-12)) self.assertTrue(fs[2].isEqual(f_3, 1e-12, 1e-12)) pass
def testFieldProfilRW1(self): fileName = "Pyfile12.med" mesh1 = MEDLoaderDataForTest.build3DMesh_1() da, b, newNbOfNodes = mesh1.mergeNodes(1e-12) MEDLoader.MEDLoader.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() self.assertEqual(5, nbOfCells) f1 = MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS, MEDLoader.ONE_TIME) f1.setName("VectorFieldOnCells") f1.setMesh(mesh2) array = MEDLoader.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.checkCoherency() # MEDLoader.MEDLoader.WriteField(fileName, f1, False) #<- False important for the test # f2 = MEDLoader.MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 2, 7) tt = MEDLoader.MEDLoader.GetTypesOfField(fileName, f1.getMesh().getName(), f1.getName()) self.assertEqual(tt, [MEDLoader.ON_CELLS]) f2.checkCoherency() self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) # pass
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : [email protected] # from MEDLoader import * import os from MEDLoaderDataForTest import MEDLoaderDataForTest m = MEDLoaderDataForTest.build1DMesh_1() m.setName("mesh2") #! [UG_ReadMeshFromFile_3] m.checkConsecutiveCellTypesForMEDFileFrmt() #! [UG_ReadMeshFromFile_3] #! [UG_ReadMeshFromFile_0] from MEDLoader import WriteMesh WriteMesh("file2.med", m, True) #! [UG_ReadMeshFromFile_0] #! [UG_ReadMeshFromFile_1] from MEDLoader import ReadMeshFromFile m = ReadMeshFromFile("file2.med") #! [UG_ReadMeshFromFile_1] #! [UG_ReadMeshFromFile_2]
def testFieldRW3(self): fileName = "Pyfile11.med" VAL1 = 12345.67890314 VAL2 = -1111111111111. name1 = "AField" name3 = "AMesh1" f1 = MEDLoaderDataForTest.buildVecFieldOnCells_1() f1.getMesh().setName(name3) f1.setName(name1) f1.setTime(10., 8, 9) tmp = f1.getArray().getPointer() f1.getArray().setIJ(0, 0, VAL1) MEDLoader.WriteFieldDep(fileName, f1, False) f1.setTime(10.14, 18, 19) f1.getArray().setIJ(0, 0, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.getMesh().setName(name3) f1.setTime(10.55, 28, 29) f1.getArray().setIJ(0, 0, 3 * VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(10.66, 38, 39) f1.getArray().setIJ(0, 0, 3 * VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(10.77, 48, 49) f1.getArray().setIJ(0, 0, 4 * VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) #ON NODES f1 = MEDLoaderDataForTest.buildVecFieldOnNodes_1() f1.setName(name1) f1.getMesh().setName(name3) f1.setTime(110., 8, 9) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(110., 108, 109) tmp = f1.getArray().getPointer() f1.getArray().setIJ(0, 3, VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(210., 208, 209) f1.getArray().setIJ(0, 3, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) # it1 = MEDLoader.GetCellFieldIterations(fileName, name3, name1) self.assertEqual(5, len(it1)) self.assertEqual(8, it1[0][0]) self.assertEqual(9, it1[0][1]) self.assertEqual(18, it1[1][0]) self.assertEqual(19, it1[1][1]) self.assertEqual(28, it1[2][0]) self.assertEqual(29, it1[2][1]) self.assertEqual(38, it1[3][0]) self.assertEqual(39, it1[3][1]) self.assertEqual(48, it1[4][0]) self.assertEqual(49, it1[4][1]) it3 = MEDLoader.GetNodeFieldIterations(fileName, name3, name1) self.assertEqual(3, len(it3)) self.assertEqual(8, it3[0][0]) self.assertEqual(9, it3[0][1]) self.assertEqual(108, it3[1][0]) self.assertEqual(109, it3[1][1]) self.assertEqual(208, it3[2][0]) self.assertEqual(209, it3[2][1]) # # f1 = MEDLoader.ReadFieldCell(fileName, name3, 0, name1, 8, 9) self.assertAlmostEqual(VAL1, f1.getArray().getIJ(0, 0), 13) f1 = MEDLoader.ReadFieldCell(fileName, name3, 0, name1, 18, 19) self.assertAlmostEqual(VAL2, f1.getArray().getIJ(0, 0), 13) f1 = MEDLoader.ReadFieldCell(fileName, name3, 0, name1, 28, 29) self.assertAlmostEqual(3 * VAL1, f1.getArray().getIJ(0, 0), 13) f1 = MEDLoader.ReadFieldCell(fileName, name3, 0, name1, 38, 39) self.assertAlmostEqual(3 * VAL2, f1.getArray().getIJ(0, 0), 13) f1 = MEDLoader.ReadFieldCell(fileName, name3, 0, name1, 48, 49) self.assertAlmostEqual(4 * VAL2, f1.getArray().getIJ(0, 0), 13) # f1 = MEDLoader.ReadFieldNode(fileName, name3, 0, name1, 8, 9) self.assertAlmostEqual(71., f1.getArray().getIJ(0, 3), 13) f1 = MEDLoader.ReadFieldNode(fileName, name3, 0, name1, 108, 109) self.assertAlmostEqual(VAL1, f1.getArray().getIJ(0, 3), 13) f1 = MEDLoader.ReadFieldNode(fileName, name3, 0, name1, 208, 209) self.assertAlmostEqual(VAL2, f1.getArray().getIJ(0, 3), 13) pass
def testMultiMeshRW1(self): 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 = MEDLoader.MEDCouplingUMesh.New() mesh4.setName("mesh4") mesh4.setMeshDimension(3) mesh4.allocateCells(1) conn = [0, 11, 1, 3] mesh4.insertNextCell(MEDLoader.NORM_TETRA4, 4, conn[0:4]) mesh4.finishInsertingCells() mesh4.setCoords(mesh1.getCoords()) meshes = [mesh1, mesh2, mesh3, mesh4] mnane = "3DToto" MEDLoader.WriteUMeshesPartition(fileName, mnane, meshes, True) # mesh5 = MEDLoader.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) self.assertTrue(mesh6.isEqual(mesh1, 1e-12)) grps = MEDLoader.GetMeshGroupsNames(fileName, mnane) self.assertEqual(4, len(grps)) grps.index("mesh2") grps.index("mesh3") grps.index("mesh4") grps.index("3DMesh_1") # vec = ("mesh2", ) mesh2_2 = MEDLoader.ReadUMeshFromGroups(fileName, mnane, 0, vec) self.assertTrue(mesh2_2.isEqual(mesh2, 1e-12)) vec = ["mesh3"] mesh3_2 = MEDLoader.ReadUMeshFromGroups(fileName, mnane, 0, vec) self.assertTrue(mesh3_2.isEqual(mesh3, 1e-12)) vec = ["mesh4"] mesh4_2 = MEDLoader.ReadUMeshFromGroups(fileName, mnane, 0, vec) self.assertTrue(mesh4_2.isEqual(mesh4, 1e-12)) vec = "3DMesh_1" mesh1_2 = MEDLoader.ReadUMeshFromGroups(fileName, mnane, 0, vec) mesh1.setName("3DMesh_1") self.assertTrue(mesh1_2.isEqual(mesh1, 1e-12)) # vec = ["Family_-3", "Family_-5"] mesh2_2 = MEDLoader.ReadUMeshFromFamilies(fileName, mnane, 0, vec) mesh2_2.setName("mesh2") self.assertTrue(mesh2_2.isEqual(mesh2, 1e-12)) # ret = MEDLoader.GetMeshFamiliesNamesOnGroup(fileName, "3DToto", "3DMesh_1") self.assertEqual(4, len(ret)) ref = ['Family_-3', 'Family_-4', 'Family_-2', 'Family_-5'] self.assertIn(ref[0], ret) self.assertIn(ref[1], ret) self.assertIn(ref[2], ret) self.assertIn(ref[3], ret) # ret1 = MEDLoader.GetMeshGroupsNamesOnFamily(fileName, "3DToto", "Family_-3") self.assertEqual(2, len(ret1)) self.assertEqual(ret1[0], "3DMesh_1") self.assertEqual(ret1[1], "mesh2") pass
def testFieldRW3(self): fileName="Pyfile11.med"; VAL1=12345.67890314; VAL2=-1111111111111.; name1="AField"; name3="AMesh1"; f1=MEDLoaderDataForTest.buildVecFieldOnCells_1(); f1.getMesh().setName(name3); f1.setName(name1); f1.setTime(10.,8,9); tmp=f1.getArray().getPointer(); f1.getArray().setIJ(0,0,VAL1); WriteFieldDep(fileName,f1,False); f1.setTime(10.14,18,19); f1.getArray().setIJ(0,0,VAL2); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.getMesh().setName(name3); f1.setTime(10.55,28,29); f1.getArray().setIJ(0,0,3*VAL1); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setTime(10.66,38,39); f1.getArray().setIJ(0,0,3*VAL2); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setTime(10.77,48,49); f1.getArray().setIJ(0,0,4*VAL2); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); #ON NODES f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1(); f1.setName(name1); f1.getMesh().setName(name3); f1.setTime(110.,8,9); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setTime(110.,108,109); tmp=f1.getArray().getPointer(); f1.getArray().setIJ(0,3,VAL1); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); f1.setTime(210.,208,209); f1.getArray().setIJ(0,3,VAL2); WriteFieldUsingAlreadyWrittenMesh(fileName,f1); # it1=GetCellFieldIterations(fileName,name3,name1); self.assertEqual(5,len(it1)); self.assertEqual(8,it1[0][0]); self.assertEqual(9,it1[0][1]); self.assertEqual(18,it1[1][0]); self.assertEqual(19,it1[1][1]); self.assertEqual(28,it1[2][0]); self.assertEqual(29,it1[2][1]); self.assertEqual(38,it1[3][0]); self.assertEqual(39,it1[3][1]); self.assertEqual(48,it1[4][0]); self.assertEqual(49,it1[4][1]); it3=GetNodeFieldIterations(fileName,name3,name1); self.assertEqual(3,len(it3)); self.assertEqual(8,it3[0][0]); self.assertEqual(9,it3[0][1]); self.assertEqual(108,it3[1][0]); self.assertEqual(109,it3[1][1]); self.assertEqual(208,it3[2][0]); self.assertEqual(209,it3[2][1]); # # f1=ReadFieldCell(fileName,name3,0,name1,8,9); self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,0),13); f1=ReadFieldCell(fileName,name3,0,name1,18,19); self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,0),13); f1=ReadFieldCell(fileName,name3,0,name1,28,29); self.assertAlmostEqual(3*VAL1,f1.getArray().getIJ(0,0),13); f1=ReadFieldCell(fileName,name3,0,name1,38,39); self.assertAlmostEqual(3*VAL2,f1.getArray().getIJ(0,0),13); f1=ReadFieldCell(fileName,name3,0,name1,48,49); self.assertAlmostEqual(4*VAL2,f1.getArray().getIJ(0,0),13); # f1=ReadFieldNode(fileName,name3,0,name1,8,9); self.assertAlmostEqual(71.,f1.getArray().getIJ(0,3),13); f1=ReadFieldNode(fileName,name3,0,name1,108,109); self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,3),13); f1=ReadFieldNode(fileName,name3,0,name1,208,209); self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,3),13); pass
def testExampleReadFieldPartial1(self): from MEDLoaderDataForTest import MEDLoaderDataForTest #! [PySnippetReadFieldPartial1_1] fname = "PyExamples2.med" meshName = "mesh" fieldName = "FieldPartial" iteration = 3 order = 4 #! [PySnippetReadFieldPartial1_1] #! [PySnippetWriteFieldPartial1_2] m = MEDLoaderDataForTest.build2DMesh_1() m.sortCellsInMEDFileFrmt() m.setName(meshName) # end of generation of a mesh -> let's create a field on that mesh f = m.getMeasureField(False) f = f.buildNewTimeReprFromThis(ONE_TIME, False) f.setTime(5.5, iteration, order) f.setName(fieldName) # The MEDCoupling part is finished -> let's perform advanced API mm = MEDFileUMesh.New() mm.setMeshAtLevel( 0, m ) # the MED file data structure is ready for writing. Of course mm could have been more complicated with groups, families, multilevel # Let's building a sub field pfl = DataArrayInt.New([1, 3, 4, 5]) pfl.setName( "myPfl" ) # here it is necessary to give a name to be compliant with MED file f = f[pfl] f.getMesh().setName(m.getName( )) # of course f should be in coherence with pfl -> f[pfl] # ff = MEDFileField1TS.New() tmp = f.getMesh( ) # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile f.setMesh( None ) # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile ff.setFieldProfile(f, mm, 0, pfl) f.setMesh( tmp ) # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile mm.write(fname, 2) ff.write(fname, 0) #! [PySnippetWriteFieldPartial1_2] #! [PySnippetReadFieldPartial1_3] mm = MEDFileMesh.New(fname) medfileField1TS = MEDFileField1TS.New(fname, fieldName, iteration, order) fread = medfileField1TS.getFieldOnMeshAtLevel(ON_CELLS, 0, mm) fread2 = medfileField1TS.getFieldAtLevel(ON_CELLS, 0) self.assertTrue(fread.isEqual(f, 1e-12, 1e-12)) self.assertTrue(fread2.isEqual(f, 1e-12, 1e-12)) #! [PySnippetReadFieldPartial1_3] #! [PySnippetReadFieldPartial1_4] medfileField1TS = MEDFileField1TS.New(fname, fieldName, iteration, order) mm = MEDFileMesh.New(fname) valsRead, pflRead = medfileField1TS.getFieldWithProfile( ON_CELLS, 0, mm) self.assertEqual(valsRead.getName(), f.getName()) valsRead.setName("") self.assertTrue(valsRead.isEqual(f.getArray(), 1e-12)) pflRead.setName(pfl.getName()) self.assertTrue(pflRead.isEqual(pfl)) #! [PySnippetReadFieldPartial1_4] #! [PySnippetReadFieldPartial1_5] firstApproachMesh = fread.getMesh() mm = MEDFileMesh.New(fname) wholeMesh = mm.getMeshAtLevel(0) wholeMesh.tryToShareSameCoords(firstApproachMesh, 1e-12) isIncluded, pflComputed = wholeMesh.areCellsIncludedIn( firstApproachMesh, 2) self.assertTrue(isIncluded) self.assertEqual(pflComputed.getName(), mm.getName()) pflComputed.setName(pflRead.getName()) self.assertTrue(pflComputed.isEqual(pflRead)) #! [PySnippetReadFieldPartial1_5] #! [PySnippetReadFieldPartial1_6] mm = MEDFileMesh.New(fname) wholeMesh = mm.getMeshAtLevel(0) computedMesh = wholeMesh[pflRead] computedMesh.setName(mm.getName()) self.assertTrue(computedMesh.isEqual(fread.getMesh(), 1e-12)) fieldFromSecondApproach = MEDCouplingFieldDouble.New( ON_CELLS, ONE_TIME) fieldFromSecondApproach.setName(medfileField1TS.getName()) fieldFromSecondApproach.setMesh(computedMesh) fieldFromSecondApproach.setArray(valsRead) fieldFromSecondApproach.setTime(medfileField1TS.getTime()[2], medfileField1TS.getTime()[0], medfileField1TS.getTime()[1]) self.assertTrue(fieldFromSecondApproach.isEqual(fread, 1e-12, 1e-12)) #! [PySnippetReadFieldPartial1_6] pass
def testSauvWriterGroupWithOneFamily(self): """ This test checks an option for sauv writing. It is requested here to copy a group from a family if a group is lying on a single family. """ import re mfd=MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv() sauvFile = "mesh.sauv" sw=SauvWriter.New() sw.setMEDFileDS(mfd) self.assertTrue(not sw.getCpyGrpIfOnASingleFamilyStatus()) sw.setCpyGrpIfOnASingleFamilyStatus(True) self.assertTrue(sw.getCpyGrpIfOnASingleFamilyStatus()) sw.write(sauvFile) f = open(sauvFile) # String pattern for the header of the sub meshes record ("PILE" number, number of named objects, number of objects) pattern_pile= re.compile(r'\sPILE\sNUMERO\s+(?P<number>[0-9]+)NBRE\sOBJETS\sNOMMES\s+(?P<nbnamed>[0-9]+)NBRE\sOBJETS\s+(?P<nbobjects>[0-9]+)') # String pattern for a sub mesh header (cell type, number of components and three numbers) pattern_header=re.compile(r'\s+(?P<type>[0-9]+)\s+(?P<nbsubs>[0-9]+)\s+[0-9]+\s+[0-9]+\s+[0-9]+') nbobjects=0 line = f.readline() while(line): match_pile = pattern_pile.match(line) if match_pile: number=int(match_pile.group("number")) if number == 1: nbnamed=int(match_pile.group("nbnamed")) nbobjects=int(match_pile.group("nbobjects")) break pass line=f.readline() pass # Skipping the objects names f.readline() # Skipping the objects ids f.readline() # Looking for each sub-mesh header line = f.readline() cur_object=0 while(line and cur_object < nbobjects): match_header=pattern_header.match(line) if match_header: cell_type=int(match_header.group("type")) nb_subs=int(match_header.group("nbsubs")) # Looking for a compound object if cell_type == 0: # Testing if there is only one component self.assertTrue(nb_subs > 1) else: f.readline() f.readline() cur_object = cur_object + 1 pass pass line=f.readline() pass f.close() os.remove(sauvFile) pass
def testMixCellAndNodesFieldRW1(self): fileName = "Pyfile21.med" mesh = MEDLoaderDataForTest.build3DSurfMesh_1() f1 = MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS, MEDLoader.ONE_TIME) f1.setName("FieldMix") f1.setMesh(mesh) array = MEDLoader.DataArrayDouble.New() f1.setArray(array) arr1 = [ 71., 171., 10., 110., 20., 120., 30., 130., 40., 140., 50., 150. ] array.setValues(arr1, 6, 2) array.setInfoOnComponent(0, "plkj [mm]") array.setInfoOnComponent(1, "pqqqss [mm]") f1.setTime(3.14, 2, 7) f1.checkConsistencyLight() # f2 = MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES, MEDLoader.ONE_TIME) f2.setName("FieldMix") f2.setMesh(mesh) array = MEDLoader.DataArrayDouble.New() f2.setArray(array) arr2 = [ 1071., 1171., 1010., 1110., 1020., 1120., 1030., 1130., 1040., 1140., 1050., 1150., 1060., 1160., 1070., 1170., 1080., 1180., 1090., 1190., 1091., 1191., 1092., 1192. ] array.setValues(arr2, 12, 2) array.setInfoOnComponent(0, "plkj [mm]") array.setInfoOnComponent(1, "pqqqss [mm]") f2.setTime(3.14, 2, 7) f2.checkConsistencyLight() # MEDLoader.WriteField(fileName, f1, True) ts = MEDLoader.GetTypesOfField(fileName, f1.getMesh().getName(), f1.getName()) self.assertEqual(1, len(ts)) self.assertEqual(MEDLoader.ON_CELLS, ts[0]) fs = MEDLoader.GetAllFieldNamesOnMesh(fileName, f1.getMesh().getName()) self.assertEqual(1, len(fs)) self.assertTrue(fs[0] == "FieldMix") MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f2) fs = MEDLoader.GetAllFieldNamesOnMesh(fileName, f1.getMesh().getName()) self.assertEqual(1, len(fs)) self.assertTrue(fs[0] == "FieldMix") # ts = MEDLoader.GetTypesOfField(fileName, f1.getMesh().getName(), f1.getName()) self.assertEqual(2, len(ts)) self.assertEqual(MEDLoader.ON_NODES, ts[0]) self.assertEqual(MEDLoader.ON_CELLS, ts[1]) # f3 = MEDLoader.ReadFieldNode(fileName, f1.getMesh().getName(), 0, f1.getName(), 2, 7) self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) f3 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 2, 7) self.assertTrue(f3.isEqual(f1, 1e-12, 1e-12)) # pass
def testFieldRW2(self): fileName = "Pyfile8.med" VAL1 = 12345.67890314 VAL2 = -1111111111111. f1 = MEDLoaderDataForTest.buildVecFieldOnCells_1() MEDLoader.WriteField(fileName, f1, True) f1.setTime(10., 8, 9) f1.getArray().setIJ(0, 0, VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) f1.setTime(10.14, 18, 19) f1.getArray().setIJ(0, 0, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName, f1) #retrieving time steps... f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 8, 9) f1.setTime(10., 8, 9) f1.getArray().setIJ(0, 0, VAL1) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 0, 1) f3 = MEDLoaderDataForTest.buildVecFieldOnCells_1() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldCell(fileName, f1.getMesh().getName(), 0, f1.getName(), 18, 19) f1.setTime(10.14, 18, 19) f1.getArray().setIJ(0, 0, VAL2) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) #test of throw on invalid (dt,it) self.assertRaises(Exception, MEDLoader.ReadFieldCell, fileName, f1.getMesh().getName(), 0, f1.getName(), 28, 19) #ON NODES f1 = MEDLoaderDataForTest.buildVecFieldOnNodes_1() fileName2 = "Pyfile9.med" MEDLoader.WriteField(fileName2, f1, True) f1.setTime(110., 108, 109) tmp = f1.getArray().getPointer() f1.getArray().setIJ(0, 3, VAL1) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2, f1) f1.setTime(210., 208, 209) f1.getArray().setIJ(0, 3, VAL2) MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2, f1) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 108, 109) f1.setTime(110., 108, 109) f1.getArray().setIJ(0, 3, VAL1) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 2, 3) f3 = MEDLoaderDataForTest.buildVecFieldOnNodes_1() self.assertTrue(f3.isEqual(f2, 1e-12, 1e-12)) f2 = MEDLoader.ReadFieldNode(fileName2, f1.getMesh().getName(), 0, f1.getName(), 208, 209) f1.setTime(210., 208, 209) f1.getArray().setIJ(0, 3, VAL2) self.assertTrue(f1.isEqual(f2, 1e-12, 1e-12)) pass
def testSauvWriterGroupWithOneFamily(self): """ This test checks an option for sauv writing. It is requested here to copy a group from a family if a group is lying on a single family. """ import re mfd = MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv( ) sauvFile = "mesh.sauv" sw = SauvWriter.New() sw.setMEDFileDS(mfd) self.assertTrue(not sw.getCpyGrpIfOnASingleFamilyStatus()) sw.setCpyGrpIfOnASingleFamilyStatus(True) self.assertTrue(sw.getCpyGrpIfOnASingleFamilyStatus()) sw.write(sauvFile) f = open(sauvFile) # String pattern for the header of the sub meshes record ("PILE" number, number of named objects, number of objects) pattern_pile = re.compile( r'\sPILE\sNUMERO\s+(?P<number>[0-9]+)NBRE\sOBJETS\sNOMMES\s+(?P<nbnamed>[0-9]+)NBRE\sOBJETS\s+(?P<nbobjects>[0-9]+)' ) # String pattern for a sub mesh header (cell type, number of components and three numbers) pattern_header = re.compile( r'\s+(?P<type>[0-9]+)\s+(?P<nbsubs>[0-9]+)\s+[0-9]+\s+[0-9]+\s+[0-9]+' ) nbobjects = 0 line = f.readline() while (line): match_pile = pattern_pile.match(line) if match_pile: number = int(match_pile.group("number")) if number == 1: nbnamed = int(match_pile.group("nbnamed")) nbobjects = int(match_pile.group("nbobjects")) break pass line = f.readline() pass # Skipping the objects names f.readline() # Skipping the objects ids f.readline() # Looking for each sub-mesh header line = f.readline() cur_object = 0 while (line and cur_object < nbobjects): match_header = pattern_header.match(line) if match_header: cell_type = int(match_header.group("type")) nb_subs = int(match_header.group("nbsubs")) # Looking for a compound object if cell_type == 0: # Testing if there is only one component self.assertTrue(nb_subs > 1) else: f.readline() f.readline() cur_object = cur_object + 1 pass pass line = f.readline() pass f.close() os.remove(sauvFile) pass
def testExampleReadFieldPartial1(self): from MEDLoaderDataForTest import MEDLoaderDataForTest #! [PySnippetReadFieldPartial1_1] fname="PyExamples2.med" meshName="mesh" fieldName="FieldPartial" iteration=3 order=4 #! [PySnippetReadFieldPartial1_1] #! [PySnippetWriteFieldPartial1_2] m=MEDLoaderDataForTest.build2DMesh_1() m.sortCellsInMEDFileFrmt() m.setName(meshName) # end of generation of a mesh -> let's create a field on that mesh f=m.getMeasureField(False) f=f.buildNewTimeReprFromThis(ONE_TIME,False) f.setTime(5.5,iteration,order) f.setName(fieldName) # The MEDCoupling part is finished -> let's perform advanced API mm=MEDFileUMesh.New() mm.setMeshAtLevel(0,m) # the MED file data structure is ready for writing. Of course mm could have been more complicated with groups, families, multilevel # Let's building a sub field pfl=DataArrayInt.New([1,3,4,5]) pfl.setName("myPfl") # here it is necessary to give a name to be compliant with MED file f=f[pfl] ; f.getMesh().setName(m.getName()) # of course f should be in coherence with pfl -> f[pfl] # ff=MEDFileField1TS.New() tmp=f.getMesh() # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile f.setMesh(None) # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile ff.setFieldProfile(f,mm,0,pfl) f.setMesh(tmp) # useless line, only to show that mesh into f is not considered by MEDFileField1TS.setFieldProfile mm.write(fname,2) ff.write(fname,0) #! [PySnippetWriteFieldPartial1_2] #! [PySnippetReadFieldPartial1_3] mm=MEDFileMesh.New(fname) medfileField1TS=MEDFileField1TS.New(fname,fieldName,iteration,order) fread=medfileField1TS.getFieldOnMeshAtLevel(ON_CELLS,0,mm) fread2=medfileField1TS.getFieldAtLevel(ON_CELLS,0) self.assertTrue(fread.isEqual(f,1e-12,1e-12)) self.assertTrue(fread2.isEqual(f,1e-12,1e-12)) #! [PySnippetReadFieldPartial1_3] #! [PySnippetReadFieldPartial1_4] medfileField1TS=MEDFileField1TS.New(fname,fieldName,iteration,order) mm=MEDFileMesh.New(fname) valsRead,pflRead=medfileField1TS.getFieldWithProfile(ON_CELLS,0,mm) self.assertEqual(valsRead.getName(),f.getName()) valsRead.setName("") self.assertTrue(valsRead.isEqual(f.getArray(),1e-12)) pflRead.setName(pfl.getName()) self.assertTrue(pflRead.isEqual(pfl)) #! [PySnippetReadFieldPartial1_4] #! [PySnippetReadFieldPartial1_5] firstApproachMesh=fread.getMesh() mm=MEDFileMesh.New(fname) wholeMesh=mm.getMeshAtLevel(0) wholeMesh.tryToShareSameCoords(firstApproachMesh,1e-12) isIncluded,pflComputed=wholeMesh.areCellsIncludedIn(firstApproachMesh,2) self.assertTrue(isIncluded) self.assertEqual(pflComputed.getName(),mm.getName()) pflComputed.setName(pflRead.getName()) self.assertTrue(pflComputed.isEqual(pflRead)) #! [PySnippetReadFieldPartial1_5] #! [PySnippetReadFieldPartial1_6] mm=MEDFileMesh.New(fname) wholeMesh=mm.getMeshAtLevel(0) computedMesh=wholeMesh[pflRead] ; computedMesh.setName(mm.getName()) self.assertTrue(computedMesh.isEqual(fread.getMesh(),1e-12)) fieldFromSecondApproach=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) fieldFromSecondApproach.setName(medfileField1TS.getName()) fieldFromSecondApproach.setMesh(computedMesh) fieldFromSecondApproach.setArray(valsRead) fieldFromSecondApproach.setTime(medfileField1TS.getTime()[2],medfileField1TS.getTime()[0],medfileField1TS.getTime()[1]) self.assertTrue(fieldFromSecondApproach.isEqual(fread,1e-12,1e-12)) #! [PySnippetReadFieldPartial1_6] pass