X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FMEDLoaderDataForTest.py;h=e8f0f5332b857827cbbfd53cda293fb31e21e50e;hb=281f5b3852ce7e4e71642292f133e0138b27d5e9;hp=104675b3e9019f4bc3f51c6ddfd0d1a18cb78924;hpb=293a6104470482e450701aa8061d9b244f2057d5;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/Swig/MEDLoaderDataForTest.py b/src/MEDLoader/Swig/MEDLoaderDataForTest.py index 104675b3e..e8f0f5332 100644 --- a/src/MEDLoader/Swig/MEDLoaderDataForTest.py +++ b/src/MEDLoader/Swig/MEDLoaderDataForTest.py @@ -1,10 +1,10 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2012 CEA/DEN, EDF R&D +# Copyright (C) 2007-2015 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -561,6 +561,151 @@ class MEDLoaderDataForTest: f.setName("MyFieldOnGaussNE"); f.checkCoherency(); return f; + + 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) + m0.setCoords(coo) + m0.allocateCells() + m0.insertNextCell(NORM_TRI3,[1,4,2]) + m0.insertNextCell(NORM_TRI3,[4,5,2]) + m0.insertNextCell(NORM_QUAD4,[0,3,4,1]) + m0.insertNextCell(NORM_QUAD4,[6,7,4,3]) + m0.insertNextCell(NORM_QUAD4,[7,8,5,4]) + m1=m0.computeSkin() + mm=MEDFileUMesh() + #2 levels + mm.setMeshAtLevel(0,m0) ; mm.setMeshAtLevel(-1,m1) + #some grps/families on the 2 levels + grp0=DataArrayInt([0,2,4]); grp0.setName("gr0_0_2_4") + grp1=DataArrayInt([1,2,3,4]); grp1.setName("gr0_1_2_3_4") + grp2=DataArrayInt([0,4]); grp2.setName("gr0_0_4") + mm.setGroupsAtLevel(0,[grp0,grp1,grp2]) + grp3=DataArrayInt([0,1]); grp3.setName("grM1_SegOnTri3") + grp4=DataArrayInt([2,3,4,5,6,7]); grp4.setName("grM1_SegOnQuad4") + grp5=DataArrayInt([0,3]); grp5.setName("grM1_bottom") + mm.setGroupsAtLevel(-1,[grp3,grp4,grp5]) + ms=MEDFileMeshes() + ms.pushMesh(mm) + # 3 fields + fs=MEDFileFields() + # 1st Field - fNoProfile - no profile on levels 0 + f1Name="fNoProfile" + timeStepsF1=[(0,-1,0.01),(1,-1,0.02)] + f1=MEDFileFieldMultiTS() + for i,(it,order,tim) in enumerate(timeStepsF1): + f11Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) + f11Tmp.setTime(tim,it,order) + f11Tmp.setMesh(m0) + arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i ; arr*=0.1 + f11Tmp.setArray(arr) + f11Tmp.checkCoherency() + f11Tmp.setName(f1Name) + f1.appendFieldNoProfileSBT(f11Tmp) + pass + fs.pushField(f1) + # 2nd Field - fNoProfileMultiLevs - no profile on levels 0 and -1 + f2Name="fNoProfileMultiLevs" + timeStepsF2=[(0,-1,0.),(1,-1,0.1),(2,-1,0.2)] + f2=MEDFileFieldMultiTS() + for i,(it,order,tim) in enumerate(timeStepsF2): + f21Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) + f21Tmp.setTime(tim,it,order) + f21Tmp.setMesh(m0) + arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i + f21Tmp.setArray(arr) + f21Tmp.checkCoherency() + f21Tmp.setName(f2Name) + f2.appendFieldNoProfileSBT(f21Tmp) + f22Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) + f22Tmp.setTime(tim,it,order) + f22Tmp.setMesh(m1) + arr=DataArrayDouble(m1.getNumberOfCells(),1) ; arr.iota() ; arr+=100+1+i + f22Tmp.setArray(arr) + f22Tmp.checkCoherency() + f22Tmp.setName(f2Name) + f2[it,order].setFieldNoProfileSBT(f22Tmp) + pass + fs.pushField(f2) + # 3rd field - fProfileMultiLevs - The most complex one + f3Name="fProfileMultiLevs" + timeStepsF3=[(0,-1,0.),(1,-1,10.),(2,-1,20.),(3,-1,30.),] + f3=MEDFileFieldMultiTS() + for i,(it,order,tim) in enumerate(timeStepsF3): + pfl1=DataArrayInt([0,1,3,4]) ; pfl1.setName("pfl1") + m0Part=m0[pfl1] + f31Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) + f31Tmp.setTime(tim,it,order) + f31Tmp.setMesh(m0Part) + arr=DataArrayDouble(m0Part.getNumberOfCells(),1) ; arr.iota() ; arr+=1000+i+1 + f31Tmp.setArray(arr) + f31Tmp.checkCoherency() + f31Tmp.setName(f3Name) + f3.appendFieldProfile(f31Tmp,mm,0,pfl1) + pfl2=DataArrayInt([0,3]) ; pfl2.setName("pfl2Bottom") + m1Part=m1[pfl2] + f32Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) + f32Tmp.setTime(tim,it,order) + f32Tmp.setMesh(m1Part) + arr=DataArrayDouble(m1Part.getNumberOfCells(),1) ; arr.iota() ; arr+=2000+1+i + f32Tmp.setArray(arr) + f32Tmp.checkCoherency() + f32Tmp.setName(f3Name) + f3[it,order].setFieldProfile(f32Tmp,mm,-1,pfl2) + pass + fs.pushField(f3) + # + data=MEDFileData() ; data.setMeshes(ms) ; data.setFields(fs) + return data + + def buildAMEDFileDataWithGroupOnOneFamilyForSauv(self): + # Coordinates + coords = [0.,0., 0.,1., 1.,1., 1.,0.] + # lvl 0 connectivity + conn2D = [1,2,3,4] + # lvl -1 connectivity + conn1D = [0,1, 1,2, 2,3, 4,1] + # lvl 0 mesh + mesh2D=MEDCouplingUMesh.New() + mesh2D.setMeshDimension(2) + mesh2D.allocateCells(1) + mesh2D.insertNextCell(NORM_QUAD4,4,conn2D) + mesh2D.finishInsertingCells() + # lvl -1 mesh + mesh1D=MEDCouplingUMesh.New() + mesh1D.setMeshDimension(1) + mesh1D.allocateCells(4) + mesh1D.insertNextCell(NORM_SEG2,2,conn1D[0:2]) + mesh1D.insertNextCell(NORM_SEG2,2,conn1D[2:4]) + mesh1D.insertNextCell(NORM_SEG2,2,conn1D[4:6]) + mesh1D.insertNextCell(NORM_SEG2,2,conn1D[6:8]) + mesh1D.finishInsertingCells() + # assigning coordinates + meshCoords=DataArrayDouble.New() + meshCoords.setValues(coords, 4, 2) + mesh2D.setCoords(meshCoords) + mesh1D.setCoords(meshCoords) + # Creating a multi level mesh + mm = MEDFileUMesh.New() + mm.setMeshAtLevel(0, mesh2D) + mm.setMeshAtLevel(-1, mesh1D) + mm.setName("carre") + # Creating groups + # Creating a group with an element on level -1 + grp0_LM1 = DataArrayInt.New([0]) + grp0_LM1.setName("grp0_LM1") + # Creating a group with all elements on level -1 + grp1_LM1 = DataArrayInt.New([0,1,2,3]) + grp1_LM1.setName("grp1_LM1") + # + mm.setGroupsAtLevel(-1,[grp0_LM1,grp1_LM1]) + # + ms=MEDFileMeshes.New() + ms.setMeshAtPos(0,mm) + mfd=MEDFileData.New() + mfd.setMeshes(ms) + # + return mfd build1DMesh_1=classmethod(build1DMesh_1) build2DCurveMesh_1=classmethod(build2DCurveMesh_1) @@ -578,4 +723,6 @@ class MEDLoaderDataForTest: 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