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