1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2020 CEA/DEN, EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (EDF R&D)
22 from MEDLoader import *
23 from math import pi,e,sqrt
25 def WriteInTmpDir(func):
26 def decaratedFunc(*args,**kwargs):
29 with tempfile.TemporaryDirectory() as tmpdirname:
31 ret = func(*args,**kwargs)
36 class MEDLoaderDataForTest:
37 def build1DMesh_1(cls):
38 coords=[ 0.0, 0.3, 0.75, 1.0, 1.4, 1.3 ]
39 conn=[ 0,1, 1,2, 2,3 , 3,4,5]
40 mesh=MEDCouplingUMesh.New();
41 mesh.setName("1DMesh_1");
42 mesh.setMeshDimension(1);
43 mesh.allocateCells(4);
44 mesh.insertNextCell(NORM_SEG2,2,conn[0:2])
45 mesh.insertNextCell(NORM_SEG2,2,conn[2:4])
46 mesh.insertNextCell(NORM_SEG2,2,conn[4:6])
47 mesh.insertNextCell(NORM_SEG3,3,conn[6:9])
48 mesh.finishInsertingCells();
49 myCoords=DataArrayDouble.New();
50 myCoords.setValues(coords,6,1);
51 myCoords.setInfoOnComponent(0,"tototototototot [m*m*m*m*m*m*m*m]");
52 mesh.setCoords(myCoords);
55 def build2DCurveMesh_1(cls):
56 coords=[ 0.0,0.0, 0.3,0.3, 0.75,0.75, 1.0,1.0, 1.4,1.4, 1.3,1.3 ]
57 conn=[ 0,1, 1,2, 2,3 , 3,4,5]
58 mesh=MEDCouplingUMesh.New();
59 mesh.setName("2DCurveMesh_1");
60 mesh.setMeshDimension(1);
61 mesh.allocateCells(4);
62 mesh.insertNextCell(NORM_SEG2,2,conn[0:2])
63 mesh.insertNextCell(NORM_SEG2,2,conn[2:4])
64 mesh.insertNextCell(NORM_SEG2,2,conn[4:6])
65 mesh.insertNextCell(NORM_SEG3,3,conn[6:9])
66 mesh.finishInsertingCells();
67 myCoords=DataArrayDouble.New();
68 myCoords.setValues(coords,6,2);
69 mesh.setCoords(myCoords);
72 def build2DMesh_1(cls):
73 targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7,
74 -0.05,0.95, 0.2,1.2, 0.45,0.95]
75 targetConn=[1,4,2, 4,5,2, 6,10,8,9,11,7, 0,3,4,1, 6,7,4,3, 7,8,5,4]
76 targetMesh=MEDCouplingUMesh.New();
77 targetMesh.setMeshDimension(2);
78 targetMesh.allocateCells(6);
79 targetMesh.setName("2DMesh_1");
80 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
81 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
82 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
83 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[12:16])
84 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[16:20])
85 targetMesh.insertNextCell(NORM_POLYGON,4,targetConn[20:24])
86 targetMesh.finishInsertingCells();
87 myCoords=DataArrayDouble.New();
88 myCoords.setValues(targetCoords,12,2);
89 myCoords.setInfoOnComponent(0,"tototototototot [m]");
90 myCoords.setInfoOnComponent(1,"energie [kW]");
91 targetMesh.setCoords(myCoords)
94 def build2DMesh_2(cls):
95 targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7,
96 -0.05,0.95, 0.2,1.2, 0.45,0.95]
97 targetConn=[1,4,2, 4,5,2, 6,10,8,9,11,7, 0,3,4,1, 6,7,4,3, 7,8,5,4]
98 targetMesh=MEDCouplingUMesh.New();
99 targetMesh.setMeshDimension(2);
100 targetMesh.allocateCells(5);
101 targetMesh.setName("2DMesh_2");
102 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
103 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
104 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[12:16])
105 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[16:20])
106 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
107 targetMesh.finishInsertingCells();
108 myCoords=DataArrayDouble.New();
109 myCoords.setValues(targetCoords,12,2);
110 myCoords.setInfoOnComponent(0,"toto [m]");
111 myCoords.setInfoOnComponent(1,"energie [kW]");
112 targetMesh.setCoords(myCoords);
115 #this mesh has several cells duplicated ! it is not beautiful but efficient to test file WR.
116 def build2DMesh_3(cls):
117 targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7,
118 -0.05,0.95, 0.2,1.2, 0.45,0.95]
119 targetConn=[1,4,2, 4,5,2, 6,10,8,9,11,7, 0,3,4,1, 6,7,4,3, 7,8,5,4]
120 targetMesh=MEDCouplingUMesh.New();
121 targetMesh.setMeshDimension(2);
122 targetMesh.allocateCells(13);
123 targetMesh.setName("2DMesh_3");
124 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
125 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
126 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
127 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
128 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
129 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
130 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[12:16])
131 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[16:20])
132 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[12:16])
133 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[16:20])
134 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
135 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
136 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
137 targetMesh.finishInsertingCells();
138 myCoords=DataArrayDouble.New();
139 myCoords.setValues(targetCoords,12,2);
140 myCoords.setInfoOnComponent(0,"toto [m]");
141 myCoords.setInfoOnComponent(1,"energie [kW]");
142 targetMesh.setCoords(myCoords);
145 def build3DMesh_1(cls):
146 coords=[0.,0.,0., 1.,1.,0., 1.,1.25,0., 0.,1.,0., 1.,1.5,0., 2.,0.,0., 2.,1.,0., 1.,2.,0., 0.,2.,0., 3.,1.,0.,
147 3.,2.,0., 0.,1.,0., 1.,3.,0., 2.,2.,0., 2.,3.,0.,
148 0.,0.,1., 1.,1.,1., 1.,1.25,1., 0.,1.,1., 1.,1.5,1., 2.,0.,1., 2.,1.,1., 1.,2.,1., 0.,2.,1., 3.,1.,1.,
149 3.,2.,1., 0.,1.,1., 1.,3.,1., 2.,2.,1., 2.,3.,1.,
150 0.,0.,2., 1.,1.,2., 1.,1.25,2., 0.,1.,2., 1.,1.5,2., 2.,0.,2., 2.,1.,2., 1.,2.,2., 0.,2.,2., 3.,1.,2.,
151 3.,2.,2., 0.,1.,2., 1.,3.,2., 2.,2.,2., 2.,3.,2.,
152 0.,0.,3., 1.,1.,3., 1.,1.25,3., 0.,1.,3., 1.,1.5,3., 2.,0.,3., 2.,1.,3., 1.,2.,3., 0.,2.,3., 3.,1.,3.,
153 3.,2.,3., 0.,1.,3., 1.,3.,3., 2.,2.,3., 2.,3.,3.]
156 0,11,1,3,15,26,16,18, 1,2,4,7,13,6,-1,1,16,21,6,-1,6,21,28,13,-1,13,7,22,28,-1,7,4,19,22,-1,4,2,17,19,-1,2,1,16,17,-1,16,21,28,22,19,17,
157 1,6,5,3,16,21,20,18, 13,10,9,6,28,25,24,21,
158 11,8,7,4,2,1,-1,11,26,16,1,-1,1,16,17,2,-1,2,17,19,4,-1,4,19,22,7,-1,7,8,23,22,-1,8,11,26,23,-1,26,16,17,19,22,23,
159 7,12,14,13,22,27,29,28,
161 15,26,16,18,30,41,31,33, 16,17,19,22,28,21,-1,16,31,36,21,-1,21,36,43,28,-1,28,22,37,43,-1,22,19,34,37,-1,19,17,32,34,-1,17,16,31,32,-1,31,36,43,37,34,32,
162 16,21,20,18,31,36,35,33, 28,25,24,21,43,40,39,36,
163 26,23,22,19,17,16,-1,26,41,31,16,-1,16,31,32,17,-1,17,32,34,19,-1,19,34,37,22,-1,22,23,38,37,-1,23,26,41,38,-1,41,31,32,34,37,38,
164 22,27,29,28,37,42,44,43,
166 30,41,31,33,45,56,46,48, 31,32,34,37,43,36,-1,31,46,51,36,-1,36,51,58,43,-1,43,37,52,58,-1,37,34,49,52,-1,34,32,47,49,-1,32,31,46,47,-1,46,51,58,52,49,47,
167 31,36,35,33,46,51,50,48, 43,40,39,36,58,55,54,51,
168 41,38,37,34,32,31,-1,41,56,46,31,-1,31,46,47,32,-1,32,47,49,34,-1,34,49,52,37,-1,37,38,53,52,-1,38,41,56,53,-1,56,46,47,49,52,53,
169 37,42,44,43,52,57,59,58]
171 ret=MEDCouplingUMesh.New();
172 ret.setName("3DMesh_1");
173 ret.setMeshDimension(3);
174 ret.allocateCells(18);
176 ret.insertNextCell(NORM_HEXA8,8,conn[0:8])
177 ret.insertNextCell(NORM_HEXA8,8,conn[51:59])
178 ret.insertNextCell(NORM_HEXA8,8,conn[59:67])
179 ret.insertNextCell(NORM_HEXA8,8,conn[110:118])
181 ret.insertNextCell(NORM_HEXA8,8,conn[118:126])
182 ret.insertNextCell(NORM_HEXA8,8,conn[169:177])
183 ret.insertNextCell(NORM_HEXA8,8,conn[177:185])
184 ret.insertNextCell(NORM_HEXA8,8,conn[228:236])
186 ret.insertNextCell(NORM_HEXA8,8,conn[236:244])
187 ret.insertNextCell(NORM_HEXA8,8,conn[287:295])
188 ret.insertNextCell(NORM_HEXA8,8,conn[295:303])
189 ret.insertNextCell(NORM_HEXA8,8,conn[346:354])
191 ret.insertNextCell(NORM_POLYHED,43,conn[8:51])
192 ret.insertNextCell(NORM_POLYHED,43,conn[67:110])
193 ret.insertNextCell(NORM_POLYHED,43,conn[126:169])
194 ret.insertNextCell(NORM_POLYHED,43,conn[185:228])
195 ret.insertNextCell(NORM_POLYHED,43,conn[244:287])
196 ret.insertNextCell(NORM_POLYHED,43,conn[303:346])
198 ret.finishInsertingCells();
199 myCoords=DataArrayDouble.New();
200 myCoords.setValues(coords,60,3);
201 myCoords.setInfoOnComponent(0,"titi [m]");
202 myCoords.setInfoOnComponent(1,"density power [MW/m^3]");
203 myCoords.setInfoOnComponent(2,"t [kW]");
204 ret.setCoords(myCoords);
207 def build3DSurfMesh_1(cls):
208 targetCoords=[-0.3,-0.3,-0.3, 0.2,-0.3,-0.3, 0.7,-0.3,-0.3, -0.3,0.2,-0.3, 0.2,0.2,-0.3, 0.7,0.2,-0.3, -0.3,0.7,-0.3, 0.2,0.7,-0.3, 0.7,0.7,-0.3
209 ,-0.05,0.95,-0.3, 0.2,1.2,-0.3, 0.45,0.95,-0.3]
210 targetConn=[1,4,2, 4,5,2, 6,10,8,9,11,7, 0,3,4,1, 6,7,4,3, 7,8,5,4]
211 targetMesh=MEDCouplingUMesh.New();
212 targetMesh.setMeshDimension(2);
213 targetMesh.allocateCells(6);
214 targetMesh.setName("3DSurfMesh_1");
215 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[0:3])
216 targetMesh.insertNextCell(NORM_TRI3,3,targetConn[3:6])
217 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[12:16])
218 targetMesh.insertNextCell(NORM_QUAD4,4,targetConn[16:20])
219 targetMesh.insertNextCell(NORM_TRI6,6,targetConn[6:12])
220 targetMesh.insertNextCell(NORM_POLYGON,4,targetConn[20:24])
221 targetMesh.finishInsertingCells();
222 myCoords=DataArrayDouble.New();
223 myCoords.setValues(targetCoords,12,3);
224 myCoords.setInfoOnComponent(0,"toto [m]");
225 myCoords.setInfoOnComponent(2,"ff [km]");#component 1 is not set for test
226 targetMesh.setCoords(myCoords);
229 def build3DMesh_2(cls):
230 m3dsurfBase=MEDLoaderDataForTest.build3DSurfMesh_1();
232 m3dsurf=m3dsurfBase.buildPartOfMySelf(numbers,False);
233 m1dBase=MEDLoaderDataForTest.build1DMesh_1();
235 m1d=m1dBase.buildPartOfMySelf(numbers2,False);
236 m1d.changeSpaceDimension(3);
239 m1d.rotate(pt,vec,-pi/2.);
240 ret=m3dsurf.buildExtrudedMesh(m1d,0);
243 def buildMultiLevelMesh_1(cls):
244 coo=[10.,0.,10.,1.25,10.,2.5,10.,3.75,10.,5.,8.75,0.,8.75,1.25,8.75,2.5,8.75,3.75,8.75,5.,7.5,0.,7.5,1.25,7.5,2.5,7.5,3.75,7.5,5.,6.25,0.,6.25,1.25,6.25,2.5,6.25,3.75,6.25,5.,5.,0.,5.,1.25,5.,2.5,5.,3.75,5.,5.,3.75,0.,3.75,1.25,3.75,2.5,3.75,3.75,3.75,5.,2.5,0.,2.5,1.25,2.5,2.5,2.5,3.75,2.5,5.,1.25,0.,1.25,1.25,1.25,2.5,1.25,3.75,1.25,5.,0.,1.25,0.,2.5,0.,3.75,0.,5.,0.,0.,0.,5.,10.,5.,0.,10.,10.,10.,5.,5.,5.,5.,5.,10.,5.,10.,0.625,5.,1.25,5.,1.875,5.,2.5,5.,3.125,5.,3.75,5.,4.375,5.,5.,6.25,5.,7.5,5.,8.75,4.375,10.,3.75,10.,3.125,10.,2.5,10.,1.875,10.,1.25,10.,0.625,10.,0.,8.75,0.,7.5,0.,6.25,4.375,6.25,4.375,7.5,4.375,8.75,3.75,6.25,3.75,7.5,3.75,8.75,3.125,6.25,3.125,7.5,3.125,8.75,2.5,6.25,2.5,7.5,2.5,8.75,1.875,6.25,1.875,7.5,1.875,8.75,1.25,6.25,1.25,7.5,1.25,8.75,0.625,6.25,0.625,7.5,0.625,8.75,5.625,5.,6.25,5.,6.875,5.,7.5,5.,8.125,5.,8.75,5.,9.375,5.,10.,6.25,10.,7.5,10.,8.75,9.375,10.,8.75,10.,8.125,10.,7.5,10.,6.875,10.,6.25,10.,5.625,10.,5.,8.75,5.,7.5,5.,6.25,9.375,6.25,9.375,7.5,9.375,8.75,8.75,6.25,8.75,7.5,8.75,8.75,8.125,6.25,8.125,7.5,8.125,8.75,7.5,6.25,7.5,7.5,7.5,8.75,6.875,6.25,6.875,7.5,6.875,8.75,6.25,6.25,6.25,7.5,6.25,8.75,5.625,6.25,5.625,7.5,5.625,8.75]
245 coo2=DataArrayDouble.New()
246 coo2.setValues(coo,135,2)
247 coo2=coo2.changeNbOfComponents(3,0.)
248 coo2.setInfoOnComponent(0,"X [INCONNUE]")
249 coo2.setInfoOnComponent(1,"Y [INCONNUE]")
250 coo2.setInfoOnComponent(2,"Z [INCONNUE]")
251 c2tri=[0,1,6,0,6,5,1,2,6,2,7,6,2,3,8,2,8,7,3,4,8,4,9,8,5,6,11,5,11,10,6,7,11,7,12,11,7,8,13,7,13,12,8,9,13,9,14,13,10,11,16,10,16,15,11,12,16,12,17,16,12,13,18,12,18,17,13,14,18,14,19,18,15,16,21,15,21,20,16,17,21,17,22,21,17,18,23,17,23,22,18,19,23,19,24,23,20,21,26,20,26,25,21,22,26,22,27,26,22,23,28,22,28,27,23,24,28,24,29,28,25,26,31,25,31,30,26,27,31,27,32,31,27,28,33,27,33,32,28,29,33,29,34,33,30,31,36,30,36,35,31,32,36,32,37,36,32,33,38,32,38,37,33,34,38,34,39,38,35,36,40,35,40,44,36,37,40,37,41,40,37,38,42,37,42,41,38,39,42,39,43,42]
252 c2quad4=[46,101,114,100,101,102,115,114,102,103,116,115,103,48,104,116,100,114,117,99,114,115,118,117,115,116,119,118,116,104,105,119,99,117,120,98,117,118,121,120,118,119,122,121,119,105,106,122,98,120,123,97,120,121,124,123,121,122,125,124,122,106,107,125,97,123,126,96,123,124,127,126,124,125,128,127,125,107,108,128,96,126,129,95,126,127,130,129,127,128,131,130,128,108,109,131,95,129,132,94,129,130,133,132,130,131,134,133,131,109,110,134,94,132,113,50,132,133,112,113,133,134,111,112,134,110,51,111,49,60,73,59,60,61,74,73,61,62,75,74,62,52,63,75,59,73,76,58,73,74,77,76,74,75,78,77,75,63,64,78,58,76,79,57,76,77,80,79,77,78,81,80,78,64,65,81,57,79,82,56,79,80,83,82,80,81,84,83,81,65,66,84,56,82,85,55,82,83,86,85,83,84,87,86,84,66,67,87,55,85,88,54,85,86,89,88,86,87,90,89,87,67,68,90,54,88,91,53,88,89,92,91,89,90,93,92,90,68,69,93,53,91,72,45,91,92,71,72,92,93,70,71,93,69,47,70]
253 m2=MEDCouplingUMesh.New("ma",2)
255 m2.allocateCells(128)
256 nbTri = len(c2tri) // 3
257 for i in range(nbTri):
258 m2.insertNextCell(NORM_TRI3,3,c2tri[3*i:3*i+3])
260 nbQua = len(c2quad4) // 4
261 for i in range(nbQua):
262 m2.insertNextCell(NORM_QUAD4,4,c2quad4[4*i:4*i+4])
264 m2.finishInsertingCells()
265 m2.setDescription("CREE PAR CODE_ASTER")
266 m1=MEDCouplingUMesh.New("ma",1)
268 c1seg=[0,1,1,2,2,3,3,4,4,9,9,14,14,19,19,24,24,29,29,34,34,39,39,43,43,42,42,41,41,40,40,44,44,35,35,30,30,25,25,20,20,15,15,10,10,5,5,0,43,39,39,34,34,29,29,24,24,19,19,14,14,9,9,4,45,53,53,54,54,55,55,56,56,57,57,58,58,59,59,49,49,60,60,61,61,62,62,52,52,63,63,64,64,65,65,66,66,67,67,68,68,69,69,47,47,70,70,71,71,72,72,45,50,94,94,95,95,96,96,97,97,98,98,99,99,100,100,46,46,101,101,102,102,103,103,48,48,104,104,105,105,106,106,107,107,108,108,109,109,110,110,51,51,111,111,112,112,113,113,50]
271 m1.insertNextCell(NORM_SEG2,2,c1seg[2*i:2*i+2])
273 m1.finishInsertingCells()
274 m1.setDescription("CREE PAR CODE_ASTER")
275 m0=MEDCouplingUMesh.New("ma",0)
280 m0.insertNextCell(NORM_POINT1,1,[c0pt[i]])
282 m0.finishInsertingCells()
283 f2=DataArrayInt.New()
288 f1=DataArrayInt.New()
304 f0=DataArrayInt.New()
305 f0.setValues([-4,-5,-6,-7],4,1)
309 p1=DataArrayInt.New()
312 p[[0,4,24,43,44,45,46,47,48,49,50,51,52]]=p1
313 n2=DataArrayInt.New()
316 n1=DataArrayInt.New()
319 n0=DataArrayInt.New()
322 fns=['A1A2____________________________', 'A1______________________________', 'A2A4____________________________', 'A2______________________________', 'A3A1____________________________', 'A3C5____________________________', 'A3______________________________', 'A4A3____________________________', 'A4______________________________', 'B1C1____________________________', 'B1______________________________', 'B2B4____________________________', 'B2______________________________', 'B3B1____________________________', 'B3______________________________', 'B4C3____________________________', 'B4______________________________', 'C1C4____________________________', 'C1______________________________', 'C2B2____________________________', 'C2______________________________', 'C3C2____________________________', 'C3______________________________', 'C4B3____________________________', 'C4______________________________', 'C5A4____________________________', 'C5______PMMA____________________', 'FAMILLE_ZERO', 'MESH____APPS____AP1_____________', 'MESH____APPS____AP2_____________', 'MESH____APPS____AP3_____________', 'MESH____APPS____AP4_____________', 'MESH____DALQ1___DALLE___________', 'MESH____DALQ2___DALLE___________', 'MESH____DALT3___DALLE___________']
323 fids=[-11, 5, -8, 1, -10, -12, 4, -9, 2, -14, 6, -19, 7, -17, 8, -20, 9, -15, 10, -18, 11, -21, 12, -16, 13, -13, 3, 0, -4, -5, -6, -7, -3, -2, -1]
324 grpns=['A1', 'A1A2', 'A2', 'A2A4', 'A3', 'A3A1', 'A3C5', 'A4', 'A4A3', 'AP1', 'AP2', 'AP3', 'AP4', 'APPS', 'B1', 'B1C1', 'B2', 'B2B4', 'B3', 'B3B1', 'B4', 'B4C3', 'C1', 'C1C4', 'C2', 'C2B2', 'C3', 'C3C2', 'C4', 'C4B3', 'C5', 'C5A4', 'DALLE', 'DALQ1', 'DALQ2', 'DALT3', 'MESH', 'PMMA']
325 famIdsPerGrp=[[5],[-11],[1],[-8],[4],[-10],[-12],[2],[-9],[-4],[-5],[-6],[-7],[-4,-5,-6,-7],[6],[-14],[7],[-19],[8],[-17],[9],[-20],[10],[-15],[11],[-18],[12],[-21],[13],[-16],[3],[-13],[-3,-2,-1],[-3],[-2],[-1],[-4,-5,-6,-7,-3,-2,-1],[3]]
326 return m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp
328 def buildMLMeshUnPolyze(cls,tester):
329 """Level 0 (meshDim=3) - 2 TETRA4 + 3 PENTA6 + 2 POLYH
330 # POLYH #0 becomes 1 TETRA4
331 # POLYH #1 becomes HEXA8
332 # Level -1 (meshDim=2) - 2 TRI3 + 3 QUAD4 + 4 POLYG
333 # POLYG #2 becomes TRI3"""
334 meshName="NightmareMesh"
336 coords=DataArrayDouble.New(38,3) ; coords.rearrange(1) ; coords.iota(1000.) ; coords.rearrange(3) ; coords.setInfoOnComponents(["X [m]","Y [m]","Z [m]"])
337 mesh0=MEDCouplingUMesh(meshName,3)
338 type0=[NORM_TETRA4,NORM_TETRA4, NORM_PENTA6,NORM_PENTA6,NORM_PENTA6, NORM_POLYHED,NORM_POLYHED]
339 conn0=[[0,1,2,3],[4,5,6,7], [8,9,10,11,12,13],[14,15,16,17,18,19],[20,21,22,23,24,25], [26,27,28,-1,26,29,27,-1,27,29,28,-1,28,29,26],[30,31,32,33,-1,34,37,36,35,-1,30,34,35,31,-1,31,35,36,32,-1,32,36,37,33,-1,33,37,34,30]]
340 mesh0.allocateCells(len(type0))
341 for typ,nodalConn in zip(type0,conn0):
342 mesh0.insertNextCell(typ,nodalConn);
344 mesh0.finishInsertingCells()
345 mesh0.setCoords(coords)
347 meshM1=MEDCouplingUMesh(meshName,2)
348 typeM1=[NORM_TRI3,NORM_TRI3, NORM_QUAD4,NORM_QUAD4,NORM_QUAD4, NORM_POLYGON,NORM_POLYGON,NORM_POLYGON,NORM_POLYGON]
349 connM1=[[0,1,2],[3,4,5], [6,7,8,9],[10,11,12,13],[14,15,16,17], [18,19,20,21,22],[23,24,25,26,27],[28,29,30],[31,32,33,34,35,36,37]]
350 meshM1.allocateCells(len(typeM1))
351 for typ,nodalConn in zip(typeM1,connM1):
352 meshM1.insertNextCell(typ,nodalConn);
354 meshM1.finishInsertingCells()
355 meshM1.setCoords(coords)
357 mm=MEDFileUMesh.New()
358 mm.setMeshAtLevel(0,mesh0)
359 mm.setMeshAtLevel(-1,meshM1)
360 grp0_L0=DataArrayInt.New([0,1,5,7]) ; grp0_L0.setName("grp0_L0")
361 grp1_L0=DataArrayInt.New([1,2,3,4,6]) ; grp1_L0.setName("grp1_L0")
362 tester.assertRaises(InterpKernelException,mm.setGroupsAtLevel,0,[grp0_L0,grp1_L0])# presence of 7 in grp0_L0 (only 7 cells at level 0) -> throw
363 grp0_L0=DataArrayInt.New([0,1,5,6]) ; grp0_L0.setName("grp0_L0")
364 mm.setGroupsAtLevel(0,[grp0_L0,grp1_L0])
365 grp0_LM1=DataArrayInt.New([1,2,3,4,7]) ; grp0_LM1.setName("grp0_LM1")
366 grp1_LM1=DataArrayInt.New([2,3,4,5]) ; grp1_LM1.setName("grp1_LM1")
367 grp2_LM1=DataArrayInt.New([5,6,7,8]) ; grp2_LM1.setName("grp2_LM1")
368 mm.setGroupsAtLevel(-1,[grp0_LM1,grp1_LM1,grp2_LM1])
369 grp0_Node=DataArrayInt.New([0,11,15,16]) ; grp0_Node.setName("grp0_Node")
370 grp1_Node=DataArrayInt.New([1,2,13,14,16]) ; grp1_Node.setName("grp1_Node")
371 mm.setGroupsAtLevel(1,[grp0_Node,grp1_Node])
373 tester.assertRaises(InterpKernelException,mm.setRenumFieldArr,0,DataArrayInt.New([0,8,9,4,5,6,7,10]))# to big array
374 mm.setRenumFieldArr(0,DataArrayInt.New([0,8,9,4,5,6,7]))
375 da=DataArrayInt.New([0,8,9,4,5,6,7,11,12])
376 mm.setRenumFieldArr(-1,da)
377 mm.setRenumFieldArr(-1,None)
378 mm.setRenumFieldArr(-1,da)
379 da=DataArrayInt.New(mm.getNumberOfNodes()+1) ; da.iota(8) ; tester.assertRaises(InterpKernelException,mm.setRenumFieldArr,1,da) # to big array more than number of nodes
380 da=DataArrayInt.New(mm.getNumberOfNodes()) ; da.iota(8) ; mm.setRenumFieldArr(1,da)
383 def buildVecFieldOnCells_1(cls):
384 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
385 nbOfCells=mesh.getNumberOfCells();
386 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
387 f1.setName("VectorFieldOnCells");
389 array=DataArrayDouble.New();
390 arr1=[0.,10.,20.,1.,11.,21.,2.,12.,22.,3.,13.,23.,4.,14.,24.,5.,15.,25.]
391 array.setValues(arr1,nbOfCells,3);
392 array.setInfoOnComponent(0,"power [MW/m^3]");
393 array.setInfoOnComponent(1,"density [g/cm^3]");
394 array.setInfoOnComponent(2,"temperature [K]");
396 tmp=array.getPointer();
398 f1.checkConsistencyLight();
401 def buildVecFieldOnNodes_1(cls):
402 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
403 nbOfNodes=mesh.getNumberOfNodes();
404 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
405 f1.setName("VectorFieldOnNodes");
407 array=DataArrayDouble.New();
409 arr1=[70.,80.,90.,71.,81.,91.,72.,82.,92.,73.,83.,93.,74.,84.,94.,75.,85.,95.,
410 1000.,10010.,10020.,1001.,10011.,10021.,1002.,10012.,10022.,1003.,10013.,10023.,1004.,10014.,10024.,1005.,10015.,10025.]
411 array.setValues(arr1,nbOfNodes,3);
412 array.setInfoOnComponent(0,"power [MW/m^3]");
413 array.setInfoOnComponent(1,"density [g/cm^3]");
414 array.setInfoOnComponent(2,"temperature [K]");
415 f1.setTime(2.12,2,3);
416 f1.checkConsistencyLight();
419 def buildVecFieldOnGauss_1(cls):
420 _a=0.446948490915965;
421 _b=0.091576213509771;
422 _p1=0.11169079483905;
423 _p2=0.0549758718227661;
424 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
425 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
426 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ];
427 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
431 m=MEDLoaderDataForTest.build2DMesh_2();
432 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
435 f.setGaussLocalizationOnType(NORM_TRI3,_refCoo1,_gsCoo1,_wg1);
436 refCoo2=[-1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 ]
438 _gsCoo1=_gsCoo1[0:6];
442 refCoo3=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
444 _gsCoo1=_gsCoo1[0:4];
446 f.setGaussLocalizationOnType(NORM_QUAD4,_refCoo3,_gsCoo1,_wg1);
447 f.setGaussLocalizationOnType(NORM_TRI6,_refCoo2,_gsCoo2,_wg2);
448 array=DataArrayDouble.New();
450 ptr=array.getPointer();
451 for i in range(19 * 2):
452 array.setIJ(0,i,float(i+7));
455 f.setName("MyFirstFieldOnGaussPoint");
456 array.setInfoOnComponent(0,"power [MW/m^3]");
457 array.setInfoOnComponent(1,"density");
458 f.checkConsistencyLight();
461 def buildVecFieldOnGauss_2(cls):
462 _a=0.446948490915965;
463 _b=0.091576213509771;
464 _p1=0.11169079483905;
465 _p2=0.0549758718227661;
466 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
467 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
468 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ];
469 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
473 m=MEDLoaderDataForTest.build2DMesh_3();
474 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
477 di=DataArrayInt.New(); di.setValues([0,2,3],3,1)
478 f.setGaussLocalizationOnCells(di,_refCoo1,_gsCoo1,_wg1)
480 f.setGaussLocalizationOnCells([1,5],_refCoo1,_gsCoo1,_wg1);
482 f.setGaussLocalizationOnCells([4],_refCoo1,_gsCoo1,_wg1);
483 refCoo2=[-1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 ]
485 _gsCoo1=_gsCoo1[0:6];
489 refCoo3=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
491 _gsCoo1=_gsCoo1[0:4];
493 f.setGaussLocalizationOnCells([6,7,8],_refCoo3,_gsCoo1,_wg1);
495 f.setGaussLocalizationOnCells([9],_refCoo3,_gsCoo1,_wg1);
496 f.setGaussLocalizationOnType(NORM_TRI6,_refCoo2,_gsCoo2,_wg2);
497 array=DataArrayDouble.New();
499 ptr=array.getPointer();
500 for i in range(53 * 2):
501 array.setIJ(0,i,float(i+7));
504 f.setName("MyFirstFieldOnGaussPoint");
505 array.setInfoOnComponent(0,"power [MW/m^3]");
506 array.setInfoOnComponent(1,"density");
507 f.checkConsistencyLight();
510 # idem buildVecFieldOnGauss_2 except that different discretizations are sorted inside one type
511 def buildVecFieldOnGauss_2_Simpler(cls):
512 _a=0.446948490915965;
513 _b=0.091576213509771;
514 _p1=0.11169079483905;
515 _p2=0.0549758718227661;
516 refCoo1=[ 0.,0., 1.,0., 0.,1. ]
517 gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
518 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ];
519 wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
523 m=MEDLoaderDataForTest.build2DMesh_3();
524 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME);
527 di=DataArrayInt.New(); di.setValues([0,1,2],3,1)
528 f.setGaussLocalizationOnCells(di,_refCoo1,_gsCoo1,_wg1)
530 f.setGaussLocalizationOnCells([3,4],_refCoo1,_gsCoo1,_wg1);
532 f.setGaussLocalizationOnCells([5],_refCoo1,_gsCoo1,_wg1);
533 refCoo2=[-1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 ]
535 _gsCoo1=_gsCoo1[0:6];
539 refCoo3=[ 0.,0., 1.,0., 1.,1., 0.,1. ]
541 _gsCoo1=_gsCoo1[0:4];
543 f.setGaussLocalizationOnCells([6,7,8],_refCoo3,_gsCoo1,_wg1);
545 f.setGaussLocalizationOnCells([9],_refCoo3,_gsCoo1,_wg1);
546 f.setGaussLocalizationOnType(NORM_TRI6,_refCoo2,_gsCoo2,_wg2);
547 array=DataArrayDouble.New();
549 ptr=array.getPointer();
550 for i in range(53 * 2):
551 array.setIJ(0,i,float(i+7));
554 f.setName("MyFirstFieldOnGaussPoint");
555 array.setInfoOnComponent(0,"power [MW/m^3]");
556 array.setInfoOnComponent(1,"density");
557 f.checkConsistencyLight();
560 def buildVecFieldOnGaussNE_1(cls):
561 m=MEDLoaderDataForTest.build2DMesh_2();
562 f=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME);
565 array=DataArrayDouble.New();
567 for i in range(2 * 20):
568 array.setIJ(0,i,float(i+8));
570 array.setInfoOnComponent(0,"power [W]");
571 array.setInfoOnComponent(1,"temperature");
572 f.setName("MyFieldOnGaussNE");
573 f.checkConsistencyLight();
576 def buildACompleteMEDDataStructureWithFieldsOnCells_1(cls):
577 coo=DataArrayDouble([0,0,1,0,2,0,0,1,1,1,2,1,0,2,1,2,2,2],9,2)
578 m0=MEDCouplingUMesh("mesh",2)
581 m0.insertNextCell(NORM_TRI3,[1,4,2])
582 m0.insertNextCell(NORM_TRI3,[4,5,2])
583 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
584 m0.insertNextCell(NORM_QUAD4,[6,7,4,3])
585 m0.insertNextCell(NORM_QUAD4,[7,8,5,4])
589 mm.setMeshAtLevel(0,m0) ; mm.setMeshAtLevel(-1,m1)
590 #some grps/families on the 2 levels
591 grp0=DataArrayInt([0,2,4]); grp0.setName("gr0_0_2_4")
592 grp1=DataArrayInt([1,2,3,4]); grp1.setName("gr0_1_2_3_4")
593 grp2=DataArrayInt([0,4]); grp2.setName("gr0_0_4")
594 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
595 grp3=DataArrayInt([0,1]); grp3.setName("grM1_SegOnTri3")
596 grp4=DataArrayInt([2,3,4,5,6,7]); grp4.setName("grM1_SegOnQuad4")
597 grp5=DataArrayInt([0,3]); grp5.setName("grM1_bottom")
598 mm.setGroupsAtLevel(-1,[grp3,grp4,grp5])
603 # 1st Field - fNoProfile - no profile on levels 0
605 timeStepsF1=[(0,-1,0.01),(1,-1,0.02)]
606 f1=MEDFileFieldMultiTS()
607 for i,(it,order,tim) in enumerate(timeStepsF1):
608 f11Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
609 f11Tmp.setTime(tim,it,order)
611 arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i ; arr*=0.1
613 f11Tmp.checkConsistencyLight()
614 f11Tmp.setName(f1Name)
615 f1.appendFieldNoProfileSBT(f11Tmp)
618 # 2nd Field - fNoProfileMultiLevs - no profile on levels 0 and -1
619 f2Name="fNoProfileMultiLevs"
620 timeStepsF2=[(0,-1,0.),(1,-1,0.1),(2,-1,0.2)]
621 f2=MEDFileFieldMultiTS()
622 for i,(it,order,tim) in enumerate(timeStepsF2):
623 f21Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
624 f21Tmp.setTime(tim,it,order)
626 arr=DataArrayDouble(m0.getNumberOfCells(),1) ; arr.iota() ; arr+=1+i
628 f21Tmp.checkConsistencyLight()
629 f21Tmp.setName(f2Name)
630 f2.appendFieldNoProfileSBT(f21Tmp)
631 f22Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
632 f22Tmp.setTime(tim,it,order)
634 arr=DataArrayDouble(m1.getNumberOfCells(),1) ; arr.iota() ; arr+=100+1+i
636 f22Tmp.checkConsistencyLight()
637 f22Tmp.setName(f2Name)
638 f2[it,order].setFieldNoProfileSBT(f22Tmp)
641 # 3rd field - fProfileMultiLevs - The most complex one
642 f3Name="fProfileMultiLevs"
643 timeStepsF3=[(0,-1,0.),(1,-1,10.),(2,-1,20.),(3,-1,30.),]
644 f3=MEDFileFieldMultiTS()
645 for i,(it,order,tim) in enumerate(timeStepsF3):
646 pfl1=DataArrayInt([0,1,3,4]) ; pfl1.setName("pfl1")
648 f31Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
649 f31Tmp.setTime(tim,it,order)
650 f31Tmp.setMesh(m0Part)
651 arr=DataArrayDouble(m0Part.getNumberOfCells(),1) ; arr.iota() ; arr+=1000+i+1
653 f31Tmp.checkConsistencyLight()
654 f31Tmp.setName(f3Name)
655 f3.appendFieldProfile(f31Tmp,mm,0,pfl1)
656 pfl2=DataArrayInt([0,3]) ; pfl2.setName("pfl2Bottom")
658 f32Tmp=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
659 f32Tmp.setTime(tim,it,order)
660 f32Tmp.setMesh(m1Part)
661 arr=DataArrayDouble(m1Part.getNumberOfCells(),1) ; arr.iota() ; arr+=2000+1+i
663 f32Tmp.checkConsistencyLight()
664 f32Tmp.setName(f3Name)
665 f3[it,order].setFieldProfile(f32Tmp,mm,-1,pfl2)
669 data=MEDFileData() ; data.setMeshes(ms) ; data.setFields(fs)
672 def buildAMEDFileDataWithGroupOnOneFamilyForSauv(self):
674 coords = [0.,0., 0.,1., 1.,1., 1.,0.]
677 # lvl -1 connectivity
678 conn1D = [0,1, 1,2, 2,3, 4,1]
680 mesh2D=MEDCouplingUMesh.New()
681 mesh2D.setMeshDimension(2)
682 mesh2D.allocateCells(1)
683 mesh2D.insertNextCell(NORM_QUAD4,4,conn2D)
684 mesh2D.finishInsertingCells()
686 mesh1D=MEDCouplingUMesh.New()
687 mesh1D.setMeshDimension(1)
688 mesh1D.allocateCells(4)
689 mesh1D.insertNextCell(NORM_SEG2,2,conn1D[0:2])
690 mesh1D.insertNextCell(NORM_SEG2,2,conn1D[2:4])
691 mesh1D.insertNextCell(NORM_SEG2,2,conn1D[4:6])
692 mesh1D.insertNextCell(NORM_SEG2,2,conn1D[6:8])
693 mesh1D.finishInsertingCells()
694 # assigning coordinates
695 meshCoords=DataArrayDouble.New()
696 meshCoords.setValues(coords, 4, 2)
697 mesh2D.setCoords(meshCoords)
698 mesh1D.setCoords(meshCoords)
699 # Creating a multi level mesh
700 mm = MEDFileUMesh.New()
701 mm.setMeshAtLevel(0, mesh2D)
702 mm.setMeshAtLevel(-1, mesh1D)
705 # Creating a group with an element on level -1
706 grp0_LM1 = DataArrayInt.New([0])
707 grp0_LM1.setName("grp0_LM1")
708 # Creating a group with all elements on level -1
709 grp1_LM1 = DataArrayInt.New([0,1,2,3])
710 grp1_LM1.setName("grp1_LM1")
712 mm.setGroupsAtLevel(-1,[grp0_LM1,grp1_LM1])
714 ms=MEDFileMeshes.New()
715 ms.setMeshAtPos(0,mm)
716 mfd=MEDFileData.New()
721 build1DMesh_1=classmethod(build1DMesh_1)
722 build2DCurveMesh_1=classmethod(build2DCurveMesh_1)
723 build2DMesh_1=classmethod(build2DMesh_1)
724 build2DMesh_2=classmethod(build2DMesh_2)
725 build2DMesh_3=classmethod(build2DMesh_3)
726 build3DMesh_1=classmethod(build3DMesh_1)
727 build3DSurfMesh_1=classmethod(build3DSurfMesh_1)
728 build3DMesh_2=classmethod(build3DMesh_2)
729 buildMLMeshUnPolyze=classmethod(buildMLMeshUnPolyze)
730 buildMultiLevelMesh_1=classmethod(buildMultiLevelMesh_1)
731 buildVecFieldOnCells_1=classmethod(buildVecFieldOnCells_1)
732 buildVecFieldOnNodes_1=classmethod(buildVecFieldOnNodes_1)
733 buildVecFieldOnGauss_1=classmethod(buildVecFieldOnGauss_1)
734 buildVecFieldOnGauss_2=classmethod(buildVecFieldOnGauss_2)
735 buildVecFieldOnGauss_2_Simpler=classmethod(buildVecFieldOnGauss_2_Simpler)
736 buildVecFieldOnGaussNE_1=classmethod(buildVecFieldOnGaussNE_1)
737 buildACompleteMEDDataStructureWithFieldsOnCells_1=classmethod(buildACompleteMEDDataStructureWithFieldsOnCells_1)
738 buildAMEDFileDataWithGroupOnOneFamilyForSauv=classmethod(buildAMEDFileDataWithGroupOnOneFamilyForSauv)
741 def TestWriteUMeshesRW1(tester):
742 fileName="Pyfile18.med";
743 m3d=MEDLoaderDataForTest.build3DMesh_2();
746 nodes=m3d.findNodesOnPlane(pt,vec,1e-12);
747 m2d=m3d.buildFacePartOfMySelfNode(nodes,True);
749 m2d.renumberCells(renumber,False);
750 m2d.setName("ExampleOfMultiDimW");
752 WriteUMeshes(fileName,meshes,False);
753 m3d_bis=ReadUMeshFromFile(fileName,m2d.getName(),0);
754 tester.assertTrue(not m3d_bis.isEqual(m3d,1e-12));
755 m3d_bis.setName(m3d.getName());
756 tester.assertTrue(m3d_bis.isEqual(m3d,1e-12));
757 m2d_bis=ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces
758 tester.assertTrue(m2d_bis.isEqual(m2d,1e-12));
759 # Creation of a field on faces.
760 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
761 f1.setName("FieldOnFacesShuffle");
763 array=DataArrayDouble.New();
764 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
765 array.setValues(arr1,m2d.getNumberOfCells(),2);
766 array.setInfoOnComponent(0,"plkj [mm]");
767 array.setInfoOnComponent(1,"pqqqss [mm]");
769 tmp=array.setValues(arr1,m2d.getNumberOfCells(),2);
770 f1.setTime(3.14,2,7);
771 f1.checkConsistencyLight();
772 WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
773 f2=ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7);
774 tester.assertTrue(f2.isEqual(f1,1e-12,1e-12));
777 def TestMultiFieldShuffleRW1(tester):
778 fileName="Pyfile17.med";
779 m=MEDLoaderDataForTest.build3DMesh_2();
780 tester.assertEqual(20,m.getNumberOfCells());
781 tester.assertEqual(45,m.getNumberOfNodes());
783 m.convertToPolyTypes(polys);
784 renum=[1,3,2,8,9,12,13,16,19,0,4,7,5,15,14,17,10,18,6,11]
785 m.renumberCells(renum,False);
786 m.orientCorrectlyPolyhedrons();
788 WriteUMeshDep(fileName,m,False);
789 f1Tmp=m.getMeasureField(False);
790 f1=f1Tmp.buildNewTimeReprFromThis(ONE_TIME,False);
792 f_1=f1.cloneWithMesh(True);
793 WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
795 f1.setTime(0.01,3,4);
796 f_2=f1.cloneWithMesh(True);
797 WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
798 f1.applyFunc("2*x/3");
799 f1.setTime(0.02,5,6);
800 f_3=f1.cloneWithMesh(True);
801 WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
803 its=[(1,2),(3,4),(5,6)];
804 fs=ReadFieldsOnSameMesh(ON_CELLS,fileName,f_1.getMesh().getName(),0,f_1.getName(),its);
805 tester.assertEqual(3,len(fs));
806 tester.assertTrue(fs[0].isEqual(f_1,1e-12,1e-12));
807 tester.assertTrue(fs[1].isEqual(f_2,1e-12,1e-12));
808 tester.assertTrue(fs[2].isEqual(f_3,1e-12,1e-12));
810 def GeneratePyfile13(tester):
811 fileName="Pyfile13.med";
812 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_1();
813 WriteField(fileName,f1,True);
814 f2=ReadField(ON_GAUSS_PT,fileName,f1.getMesh().getName(),0,f1.getName(),1,5);
815 tester.assertTrue(f1.isEqual(f2,1e-12,1e-12));
818 def GeneratePyfile14(tester):
819 fileName="Pyfile14.med";
820 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
821 WriteField(fileName,f1,True);
822 tester.assertEqual([ON_GAUSS_NE],GetTypesOfField(fileName,'2DMesh_2','MyFieldOnGaussNE')) #Bug 22/5/2014
823 f2=ReadField(ON_GAUSS_NE,fileName,f1.getMesh().getName(),0,f1.getName(),1,5);
824 tester.assertTrue(f1.isEqual(f2,1e-12,1e-12));
827 def GeneratePyfile18(tester):
828 fileName="Pyfile18.med";
829 m3d=MEDLoaderDataForTest.build3DMesh_2();
832 nodes=m3d.findNodesOnPlane(pt,vec,1e-12);
833 m2d=m3d.buildFacePartOfMySelfNode(nodes,True);
835 m2d.renumberCells(renumber,False);
836 m2d.setName("ExampleOfMultiDimW");
838 WriteUMeshes(fileName,meshes,True);
839 m3d_bis=ReadUMeshFromFile(fileName,m2d.getName(),0);
840 tester.assertTrue(not m3d_bis.isEqual(m3d,1e-12));
841 m3d_bis.setName(m3d.getName());
842 tester.assertTrue(m3d_bis.isEqual(m3d,1e-12));
843 m2d_bis=ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces
844 tester.assertTrue(m2d_bis.isEqual(m2d,1e-12));
845 # Creation of a field on faces.
846 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
847 f1.setName("FieldOnFacesShuffle");
849 array=DataArrayDouble.New();
850 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
851 array.setValues(arr1,m2d.getNumberOfCells(),2);
852 array.setInfoOnComponent(0,"plkj [mm]");
853 array.setInfoOnComponent(1,"pqqqss [mm]");
855 tmp=array.setValues(arr1,m2d.getNumberOfCells(),2);
856 f1.setTime(3.14,2,7);
857 f1.checkConsistencyLight();
858 WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
859 f2=ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7);
860 tester.assertTrue(f2.isEqual(f1,1e-12,1e-12));
862 def GeneratePyfile19(tester):
863 fileName="Pyfile19.med";
864 fileName2="Pyfile20.med";
865 m=MEDLoaderDataForTest.build2DMesh_1();
866 nbOfNodes=m.getNumberOfNodes();
867 WriteUMesh(fileName,m,True);
868 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME);
869 f1.setName("VFieldOnNodes");
871 array=DataArrayDouble.New();
872 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.]
873 array.setValues(arr1,nbOfNodes,2);
875 array.setInfoOnComponent(0,"tyty [mm]");
876 array.setInfoOnComponent(1,"uiop [MW]");
877 f1.setTime(3.14,2,7);
878 f1.checkConsistencyLight();
880 f2=f1.buildSubPart(arr2);
881 f2.getMesh().setName(f1.getMesh().getName());
882 WriteField(fileName,f2,False);#<- False important for the test
884 f3=ReadFieldNode(fileName,f2.getMesh().getName(),0,f2.getName(),2,7);
885 f3.checkConsistencyLight();
886 tester.assertTrue(f3.isEqual(f2,1e-12,1e-12));
889 f2.renumberNodes(arr3);
890 WriteUMesh(fileName2,m,True);
891 WriteField(fileName2,f2,False);#<- False important for the test
892 f3=ReadFieldNode(fileName2,f2.getMesh().getName(),0,f2.getName(),2,7);
893 f3.checkConsistencyLight();
894 tester.assertTrue(f3.isEqual(f2,1e-12,1e-12));
898 def GeneratePyfile7(tester):
899 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
900 WriteField("Pyfile6.med",f1,True);
901 f2=ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1);
902 tester.assertTrue(f1.isEqual(f2,1e-12,1e-12));
904 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
905 WriteField("Pyfile7.med",f1,True);
906 f2=ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
907 tester.assertTrue(f1.isEqual(f2,1e-12,1e-12));
908 tester.assertRaises(Exception,ReadFieldCell,"Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
911 def GeneratePyfile12(tester):
912 fileName="Pyfile12.med";
913 mesh1=MEDLoaderDataForTest.build3DMesh_1();
914 da,b,newNbOfNodes=mesh1.mergeNodes(1e-12);
915 WriteUMesh(fileName,mesh1,True);
917 mesh2=mesh1.buildPartOfMySelf(part1,True);
918 mesh2.setName(mesh1.getName());#<- important for the test
920 nbOfCells=mesh2.getNumberOfCells();
921 tester.assertEqual(5,nbOfCells);
922 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME);
923 f1.setName("VectorFieldOnCells");
925 array=DataArrayDouble.New();
926 array.alloc(nbOfCells,2);
928 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
929 array.setValues(arr1,nbOfCells,2);
930 f1.setTime(3.14,2,7);
931 f1.checkConsistencyLight();
933 WriteField(fileName,f1,False);#<- False important for the test
935 f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7);
936 tt=GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName());
937 tester.assertEqual(tt,[ON_CELLS]);
938 f2.checkConsistencyLight();
939 tester.assertTrue(f1.isEqual(f2,1e-12,1e-12));
941 def GeneratePyfile10(tester):
942 fileName="Pyfile10.med";
943 mesh1=MEDLoaderDataForTest.build3DMesh_1();
945 mesh2=mesh1.buildPartOfMySelf(part1,True);
946 mesh2.setName("mesh2");
948 mesh3=mesh1.buildPartOfMySelf(part2,True);
949 mesh3.setName("mesh3");
950 mesh4=MEDCouplingUMesh.New();
951 mesh4.setName("mesh4");
952 mesh4.setMeshDimension(3);
953 mesh4.allocateCells(1);
955 mesh4.insertNextCell(NORM_TETRA4,4,conn[0:4])
956 mesh4.finishInsertingCells();
957 mesh4.setCoords(mesh1.getCoords());
958 meshes=[mesh1,mesh2,mesh3,mesh4]
960 WriteUMeshesPartition(fileName,mnane,meshes,True);
962 mesh5=ReadUMeshFromFile(fileName,mnane);
963 mesh1.setName(mnane);
964 part3=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
965 mesh6=mesh5.buildPartOfMySelf(part3,True);
966 mesh6.setName(mnane);
967 tester.assertTrue(mesh6.isEqual(mesh1,1e-12));
968 grps=GetMeshGroupsNames(fileName,mnane);
969 tester.assertEqual(4,len(grps));
973 grps.index("3DMesh_1");
976 mesh2_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
977 tester.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
979 mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
980 tester.assertTrue(mesh3_2.isEqual(mesh3,1e-12));
982 mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
983 tester.assertTrue(mesh4_2.isEqual(mesh4,1e-12));
985 mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
986 mesh1.setName("3DMesh_1");
987 tester.assertTrue(mesh1_2.isEqual(mesh1,1e-12));
989 vec=["Family_-3","Family_-5"];
990 mesh2_2=ReadUMeshFromFamilies(fileName,mnane,0,vec);
991 mesh2_2.setName("mesh2");
992 tester.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
994 ret=GetMeshFamiliesNamesOnGroup(fileName,"3DToto","3DMesh_1");
995 tester.assertEqual(4,len(ret));
996 ref=['Family_-3','Family_-4','Family_-2','Family_-5']
997 tester.assertIn(ref[0],ret);
998 tester.assertIn(ref[1],ret);
999 tester.assertIn(ref[2],ret);
1000 tester.assertIn(ref[3],ret);
1002 ret1=GetMeshGroupsNamesOnFamily(fileName,"3DToto","Family_-3");
1003 tester.assertEqual(2,len(ret1));
1004 tester.assertEqual(ret1[0],"3DMesh_1");
1005 tester.assertEqual(ret1[1],"mesh2");