Salome HOME
Merge branch 'master' of https://codev-tuleap.cea.fr/plugins/git/salome/medcoupling
[tools/medcoupling.git] / src / MEDLoader / Swig / UsersGuideExamplesTest.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2019  CEA/DEN, EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 from MEDLoader import *
22 import os
23 import tempfile,os,shutil
24
25 zeDir = tempfile.mkdtemp()
26 os.chdir(zeDir)
27
28 from MEDLoaderDataForTest import MEDLoaderDataForTest
29 m = MEDLoaderDataForTest.build1DMesh_1()
30 m.setName("mesh2")
31 #! [UG_ReadMeshFromFile_3]
32 m.checkConsecutiveCellTypesForMEDFileFrmt()
33 #! [UG_ReadMeshFromFile_3]
34 #! [UG_ReadMeshFromFile_0]
35 from MEDLoader import WriteMesh
36 WriteMesh("file2.med",m,True)
37 #! [UG_ReadMeshFromFile_0]
38 #! [UG_ReadMeshFromFile_1]
39 from MEDLoader import ReadMeshFromFile
40 m=ReadMeshFromFile("file2.med")
41 #! [UG_ReadMeshFromFile_1]
42 #! [UG_ReadMeshFromFile_2]
43 m=ReadMeshFromFile("file2.med","mesh2")
44 assert(m.getName()=="mesh2")
45 #! [UG_ReadMeshFromFile_2]
46
47 mesh3D=MEDLoaderDataForTest.build3DMesh_1()
48 mesh2D=mesh3D.computeSkin()
49 mesh1D=mesh2D.computeSkin()
50 #! [UG_ReadMeshFromFile_4]
51 from MEDLoader import MEDFileUMesh
52 mm=MEDFileUMesh.New()
53 mm.setMeshAtLevel(0,mesh3D)
54 mm.setMeshAtLevel(-1,mesh2D)
55 #! [UG_ReadMeshFromFile_4]
56 otherCoordArray=mesh3D.getCoords()
57 #! [UG_ReadMeshFromFile_5]
58 mm.setCoords(otherCoordArray)
59 #! [UG_ReadMeshFromFile_5]
60 #! [UG_ReadMeshFromFile_6]
61 groupNodes=DataArrayInt([1,3,4,5]);  groupNodes.setName("myNodes")
62 groupFaces=DataArrayInt([12,13,15]); groupFaces.setName("myFaces")
63 mm.addGroup(1,groupNodes)
64 mm.addGroup(-1,groupFaces)
65 #! [UG_ReadMeshFromFile_6]
66 oldName,newName="myNodes","myNodes2"
67 oldFamName,newFamName="Family_2","Family_3"
68 #! [UG_ReadMeshFromFile_7]
69 mm.changeGroupName(oldName,newName)
70 mm.changeFamilyName(oldFamName,newFamName)
71 #! [UG_ReadMeshFromFile_7]
72 #! [UG_ReadMeshFromFile_8]
73 mm.write("file.med",2)
74 #! [UG_ReadMeshFromFile_8]
75 mm=MEDFileUMesh.New()
76 #! [UG_ReadMeshFromFile_9]
77 mm.setMeshAtLevel(0,mesh3D,True)
78 #! [UG_ReadMeshFromFile_9]
79 pass
80
81 from MEDLoaderDataForTest import MEDLoaderDataForTest
82 f=MEDLoaderDataForTest.buildVecFieldOnGauss_1();
83 f.setName("Field1")
84 #! [UG_ReadField_0]
85 from MEDLoader import WriteField
86 WriteField("file.med",f,True)
87 #! [UG_ReadField_0]
88 #! [UG_ReadField_1]
89 from MEDLoader import ReadField
90 f=ReadField("file.med")
91 #! [UG_ReadField_1]
92 #! [UG_ReadField_2]
93 from MEDLoader import GetAllFieldNames
94 print(GetAllFieldNames("file.med"))
95 #! [UG_ReadField_2]
96 #! [UG_ReadField_3]
97 f=ReadField("file.med","Field1")
98 #! [UG_ReadField_3]
99 #! [UG_ReadField_4]
100 from MEDLoader import GetAllFieldIterations
101 print(GetAllFieldIterations("file.med","Field1"))
102 #! [UG_ReadField_4]
103 #! [UG_ReadField_5]
104 ts0,ts1=1,5
105 f=ReadField("file.med","Field1",ts0,ts1)
106 #! [UG_ReadField_5]
107 fs = [ f ]
108 #! [UG_ReadField_6]
109 m=fs[0].getMesh()
110 WriteMesh("file5.med",m,True)
111 for f in fs:
112     assert(f.getMesh().getHiddenCppPointer()==m.getHiddenCppPointer())
113     # extra line to insist on the fact that
114     WriteFieldUsingAlreadyWrittenMesh("file5.med",f)
115 #! [UG_ReadField_6]
116
117 from MEDLoaderDataForTest import MEDLoaderDataForTest
118 fname="PyExamples1.med"
119 meshName="mesh"
120 fieldName="FieldOnAll"
121 iteration=3
122 order=4
123 m=MEDLoaderDataForTest.build2DMesh_3()
124 m.setName(meshName)
125 f=m.getMeasureField(False)
126 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
127 f.setTime(5.5,iteration,order)
128 f.setName(fieldName)
129 mesh=m
130 field=f
131 level=0
132 #! [UG_RWFieldAdv_0]
133 from MEDLoader import MEDFileUMesh, MEDFileField1TS
134 mm=MEDFileUMesh.New()
135 mm.setMeshAtLevel(0,mesh)
136 ff=MEDFileField1TS.New()
137 ff.setFieldNoProfileSBT(field)
138 mm.write(fname,2)
139 ff.write(fname,0)
140 #! [UG_RWFieldAdv_0]
141 #! [UG_RWFieldAdv_1]
142 profile=DataArrayInt([1,3,7]); profile.setName("pfl137")
143 fieldPartial=field[profile]
144 fieldPartial.setName("fieldPartial")
145 ff.setFieldProfile(fieldPartial,mm,level,profile)
146 ff.write(fname,0)
147 #! [UG_RWFieldAdv_1]
148 #! [UG_RWFieldAdv_2]
149 ff=MEDFileField1TS.New(fname,fieldName,iteration,order)
150 mm=MEDFileMesh.New(fname)
151 # you can choose an appropriate method
152 field=ff.field(mm)
153 field=ff.getFieldAtLevel(ON_CELLS,level)
154 field=ff.getFieldOnMeshAtLevel(ON_CELLS,level,mm)
155 #! [UG_RWFieldAdv_2]
156 #! [UG_RWFieldAdv_3]
157 maxDim,maxRelDims=ff.getNonEmptyLevels()
158 #! [UG_RWFieldAdv_3]
159
160 fieldTS1 = f
161 fieldTS2 = f.deepCopy()
162 fieldTS2.setTime(4.5,iteration+1,order)
163 fieldPartialTS1 = fieldPartial
164 fieldPartialTS2 = fieldPartial.deepCopy()
165 fieldPartialTS1.setTime(4.0,iteration+2,order)
166 fieldPartialTS2.setTime(3.5,iteration+3,order)
167 fieldPartialTS1.setName( fieldTS1.getName() )
168 fieldPartialTS2.setName( fieldTS1.getName() )
169 fname="PyExamples2.med"
170 mm.write(fname,2)
171 #mm=MEDFileMesh.New(fname)
172 #! [UG_RWFieldAdv_4]
173 ff=MEDFileFieldMultiTS.New()
174 ff.appendFieldNoProfileSBT(fieldTS1)
175 ff.appendFieldNoProfileSBT(fieldTS2)
176 ff.appendFieldProfile(fieldPartialTS1,mm,level,profile)
177 ff.appendFieldProfile(fieldPartialTS2,mm,level,profile)
178 ff.write(fname,0)
179 #! [UG_RWFieldAdv_4]
180
181 #! [UG_RWFieldAdv_5]
182 mm=MEDFileMesh.New(fname)
183 ff=MEDFileFieldMultiTS.New(fname,fieldName)
184 for ff1TS in ff:
185     iteration,order,time=ff1TS.getTime()
186     # you can choose an appropriate method
187     field=ff1TS.field(mm)
188     field=ff1TS.getFieldAtLevel(ON_CELLS,level)
189     field=ff1TS.getFieldOnMeshAtLevel(ON_CELLS,level,mm)
190 #! [UG_RWFieldAdv_5]
191 shutil.rmtree(zeDir)