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-2016  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
24 from MEDLoaderDataForTest import MEDLoaderDataForTest
25 m = MEDLoaderDataForTest.build1DMesh_1()
26 m.setName("mesh2")
27 #! [UG_ReadMeshFromFile_3]
28 m.checkConsecutiveCellTypesForMEDFileFrmt()
29 #! [UG_ReadMeshFromFile_3]
30 #! [UG_ReadMeshFromFile_0]
31 from MEDLoader import WriteMesh
32 WriteMesh("file2.med",m,True)
33 #! [UG_ReadMeshFromFile_0]
34 #! [UG_ReadMeshFromFile_1]
35 from MEDLoader import ReadMeshFromFile
36 m=ReadMeshFromFile("file2.med")
37 #! [UG_ReadMeshFromFile_1]
38 #! [UG_ReadMeshFromFile_2]
39 m=ReadMeshFromFile("file2.med","mesh2")
40 assert(m.getName()=="mesh2")
41 #! [UG_ReadMeshFromFile_2]
42
43 mesh3D=MEDLoaderDataForTest.build3DMesh_1()
44 mesh2D=mesh3D.computeSkin()
45 mesh1D=mesh2D.computeSkin()
46 #! [UG_ReadMeshFromFile_4]
47 from MEDLoader import MEDFileUMesh
48 mm=MEDFileUMesh.New()
49 mm.setMeshAtLevel(0,mesh3D)
50 mm.setMeshAtLevel(-1,mesh2D)
51 #! [UG_ReadMeshFromFile_4]
52 otherCoordArray=mesh3D.getCoords()
53 #! [UG_ReadMeshFromFile_5]
54 mm.setCoords(otherCoordArray)
55 #! [UG_ReadMeshFromFile_5]
56 #! [UG_ReadMeshFromFile_6]
57 groupNodes=DataArrayInt([1,3,4,5]);  groupNodes.setName("myNodes")
58 groupFaces=DataArrayInt([12,13,15]); groupFaces.setName("myFaces")
59 mm.addGroup(1,groupNodes)
60 mm.addGroup(-1,groupFaces)
61 #! [UG_ReadMeshFromFile_6]
62 oldName,newName="myNodes","myNodes2"
63 oldFamName,newFamName="Family_2","Family_3"
64 #! [UG_ReadMeshFromFile_7]
65 mm.changeGroupName(oldName,newName)
66 mm.changeFamilyName(oldFamName,newFamName)
67 #! [UG_ReadMeshFromFile_7]
68 #! [UG_ReadMeshFromFile_8]
69 mm.write("file.med",2)
70 #! [UG_ReadMeshFromFile_8]
71 mm=MEDFileUMesh.New()
72 #! [UG_ReadMeshFromFile_9]
73 mm.setMeshAtLevel(0,mesh3D,True)
74 #! [UG_ReadMeshFromFile_9]
75 pass
76
77 from MEDLoaderDataForTest import MEDLoaderDataForTest
78 f=MEDLoaderDataForTest.buildVecFieldOnGauss_1();
79 f.setName("Field1")
80 #! [UG_ReadField_0]
81 from MEDLoader import WriteField
82 WriteField("file.med",f,True)
83 #! [UG_ReadField_0]
84 #! [UG_ReadField_1]
85 from MEDLoader import ReadField
86 f=ReadField("file.med")
87 #! [UG_ReadField_1]
88 #! [UG_ReadField_2]
89 from MEDLoader import GetAllFieldNames
90 print(GetAllFieldNames("file.med"))
91 #! [UG_ReadField_2]
92 #! [UG_ReadField_3]
93 f=ReadField("file.med","Field1")
94 #! [UG_ReadField_3]
95 #! [UG_ReadField_4]
96 from MEDLoader import GetAllFieldIterations
97 print(GetAllFieldIterations("file.med","Field1"))
98 #! [UG_ReadField_4]
99 #! [UG_ReadField_5]
100 ts0,ts1=1,5
101 f=ReadField("file.med","Field1",ts0,ts1)
102 #! [UG_ReadField_5]
103 fs = [ f ]
104 #! [UG_ReadField_6]
105 m=fs[0].getMesh()
106 WriteMesh("file5.med",m,True)
107 for f in fs:
108     assert(f.getMesh().getHiddenCppPointer()==m.getHiddenCppPointer())
109     # extra line to insist on the fact that
110     WriteFieldUsingAlreadyWrittenMesh("file5.med",f)
111 #! [UG_ReadField_6]
112
113 from MEDLoaderDataForTest import MEDLoaderDataForTest
114 fname="PyExamples1.med"
115 meshName="mesh"
116 fieldName="FieldOnAll"
117 iteration=3
118 order=4
119 m=MEDLoaderDataForTest.build2DMesh_3()
120 m.setName(meshName)
121 f=m.getMeasureField(False)
122 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
123 f.setTime(5.5,iteration,order)
124 f.setName(fieldName)
125 mesh=m
126 field=f
127 level=0
128 #! [UG_RWFieldAdv_0]
129 from MEDLoader import MEDFileUMesh, MEDFileField1TS
130 mm=MEDFileUMesh.New()
131 mm.setMeshAtLevel(0,mesh)
132 ff=MEDFileField1TS.New()
133 ff.setFieldNoProfileSBT(field)
134 mm.write(fname,2)
135 ff.write(fname,0)
136 #! [UG_RWFieldAdv_0]
137 #! [UG_RWFieldAdv_1]
138 profile=DataArrayInt([1,3,7]); profile.setName("pfl137")
139 fieldPartial=field[profile]
140 fieldPartial.setName("fieldPartial")
141 ff.setFieldProfile(fieldPartial,mm,level,profile)
142 ff.write(fname,0)
143 #! [UG_RWFieldAdv_1]
144 #! [UG_RWFieldAdv_2]
145 ff=MEDFileField1TS.New(fname,fieldName,iteration,order)
146 mm=MEDFileMesh.New(fname)
147 # you can choose an appropriate method
148 field=ff.field(mm)
149 field=ff.getFieldAtLevel(ON_CELLS,level)
150 field=ff.getFieldOnMeshAtLevel(ON_CELLS,level,mm)
151 #! [UG_RWFieldAdv_2]
152 #! [UG_RWFieldAdv_3]
153 maxDim,maxRelDims=ff.getNonEmptyLevels()
154 #! [UG_RWFieldAdv_3]
155
156 fieldTS1 = f
157 fieldTS2 = f.deepCopy()
158 fieldTS2.setTime(4.5,iteration+1,order)
159 fieldPartialTS1 = fieldPartial
160 fieldPartialTS2 = fieldPartial.deepCopy()
161 fieldPartialTS1.setTime(4.0,iteration+2,order)
162 fieldPartialTS2.setTime(3.5,iteration+3,order)
163 fieldPartialTS1.setName( fieldTS1.getName() )
164 fieldPartialTS2.setName( fieldTS1.getName() )
165 fname="PyExamples2.med"
166 mm.write(fname,2)
167 #mm=MEDFileMesh.New(fname)
168 #! [UG_RWFieldAdv_4]
169 ff=MEDFileFieldMultiTS.New()
170 ff.appendFieldNoProfileSBT(fieldTS1)
171 ff.appendFieldNoProfileSBT(fieldTS2)
172 ff.appendFieldProfile(fieldPartialTS1,mm,level,profile)
173 ff.appendFieldProfile(fieldPartialTS2,mm,level,profile)
174 ff.write(fname,0)
175 #! [UG_RWFieldAdv_4]
176
177 #! [UG_RWFieldAdv_5]
178 mm=MEDFileMesh.New(fname)
179 ff=MEDFileFieldMultiTS.New(fname,fieldName)
180 for ff1TS in ff:
181     iteration,order,time=ff1TS.getTime()
182     # you can choose an appropriate method
183     field=ff1TS.field(mm)
184     field=ff1TS.getFieldAtLevel(ON_CELLS,level)
185     field=ff1TS.getFieldOnMeshAtLevel(ON_CELLS,level,mm)
186 #! [UG_RWFieldAdv_5]