1 |
|
2 |
######################################################## |
3 |
# |
4 |
# Copyright (c) 2003-2008 by University of Queensland |
5 |
# Earth Systems Science Computational Center (ESSCC) |
6 |
# http://www.uq.edu.au/esscc |
7 |
# |
8 |
# Primary Business: Queensland, Australia |
9 |
# Licensed under the Open Software License version 3.0 |
10 |
# http://www.opensource.org/licenses/osl-3.0.php |
11 |
# |
12 |
######################################################## |
13 |
|
14 |
__copyright__="""Copyright (c) 2003-2008 by University of Queensland |
15 |
Earth Systems Science Computational Center (ESSCC) |
16 |
http://www.uq.edu.au/esscc |
17 |
Primary Business: Queensland, Australia""" |
18 |
__license__="""Licensed under the Open Software License version 3.0 |
19 |
http://www.opensource.org/licenses/osl-3.0.php""" |
20 |
__url__="http://www.uq.edu.au/esscc/escript-finley" |
21 |
|
22 |
""" |
23 |
checks the mesh generators against the reference meshes in test_meshes and test the finley integration schemes. |
24 |
""" |
25 |
|
26 |
import sys |
27 |
import os |
28 |
import unittest |
29 |
from esys.escript import * |
30 |
from esys.finley import Rectangle,Brick,JoinFaces, ReadGmsh, ReadMesh |
31 |
|
32 |
try: |
33 |
FINLEY_TEST_DATA=os.environ['FINLEY_TEST_DATA'] |
34 |
except KeyError: |
35 |
FINLEY_TEST_DATA='.' |
36 |
|
37 |
try: |
38 |
FINLEY_WORKDIR=os.environ['FINLEY_WORKDIR'] |
39 |
except KeyError: |
40 |
FINLEY_WORKDIR='.' |
41 |
|
42 |
FINLEY_TEST_MESH_PATH=FINLEY_TEST_DATA+"/data_meshes/" |
43 |
#if os.name == "nt": |
44 |
# FINLEY_TEST_MESH_PATH = FINLEY_TEST_MESH_PATH+"win32/" |
45 |
FINLEY_WORKDIR_PATH=FINLEY_WORKDIR+"/" |
46 |
|
47 |
TEST_FILE_EXT=".test" |
48 |
class Test_Generators(unittest.TestCase): |
49 |
|
50 |
def checker(self,dom,reference): |
51 |
if getMPISizeWorld() > 1: return |
52 |
dom_file=FINLEY_WORKDIR_PATH+TEST_FILE_EXT |
53 |
dom.write(dom_file) |
54 |
# Uncomment this section to dump the files for regression testing |
55 |
# if True: |
56 |
# dom.write(FINLEY_TEST_MESH_PATH+reference) |
57 |
dom_string=open(dom_file).read().splitlines() |
58 |
ref_string=open(FINLEY_TEST_MESH_PATH+reference).read().splitlines() |
59 |
self.failUnlessEqual(len(dom_string),len(ref_string),"number of lines in mesh files does not match reference") |
60 |
for l in range(1,len(ref_string)): |
61 |
line=dom_string[l].strip() |
62 |
if os.name == "nt": |
63 |
line=line.replace("e+00","e+0").replace("e-00","e-0") |
64 |
self.failUnlessEqual(line,ref_string[l].strip(),"line %d (%s) in mesh files does not match reference (%s)"%(l,ref_string[l].strip(),line)) |
65 |
|
66 |
def test_hex_2D_order1(self): |
67 |
file="hex_2D_order1.msh" |
68 |
my_dom=Rectangle(1,1,1) |
69 |
self.checker(my_dom,file) |
70 |
|
71 |
def test_hex_2D_order1_onFace(self): |
72 |
file="hex_2D_order1_onFace.msh" |
73 |
my_dom=Rectangle(1,1,1,useElementsOnFace=1) |
74 |
self.checker(my_dom,file) |
75 |
|
76 |
def test_hex_2D_order2(self): |
77 |
file="hex_2D_order2.msh" |
78 |
my_dom=Rectangle(1,1,2) |
79 |
self.checker(my_dom,file) |
80 |
|
81 |
def test_hex_2D_order2_onFace(self): |
82 |
file="hex_2D_order2_onFace.msh" |
83 |
my_dom=Rectangle(1,1,2,useElementsOnFace=1) |
84 |
self.checker(my_dom,file) |
85 |
|
86 |
def test_hex_3D_order1(self): |
87 |
file="hex_3D_order1.msh" |
88 |
my_dom=Brick(1,1,1,1) |
89 |
self.checker(my_dom,file) |
90 |
|
91 |
def test_hex_3D_order1_onFace(self): |
92 |
file="hex_3D_order1_onFace.msh" |
93 |
my_dom=Brick(1,1,1,1,useElementsOnFace=1) |
94 |
self.checker(my_dom,file) |
95 |
|
96 |
def test_hex_3D_order2(self): |
97 |
file="hex_3D_order2.msh" |
98 |
my_dom=Brick(1,1,1,2) |
99 |
self.checker(my_dom,file) |
100 |
|
101 |
def test_hex_3D_order2_onFace(self): |
102 |
file="hex_3D_order2_onFace.msh" |
103 |
my_dom=Brick(1,1,1,2,useElementsOnFace=1) |
104 |
self.checker(my_dom,file) |
105 |
|
106 |
def test_hex_contact_2D_order1(self): |
107 |
if getMPISizeWorld() != 1: return |
108 |
file="hex_contact_2D_order1.msh" |
109 |
ms1=Rectangle(1,1,1,l1=0.5,useElementsOnFace=False) |
110 |
ms2=Rectangle(1,1,1,l1=0.5,useElementsOnFace=False) |
111 |
ms2.setX(ms2.getX()+[0,0.5]) |
112 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
113 |
self.checker(my_dom,file) |
114 |
|
115 |
def test_hex_contact_2D_order1_onFace(self): |
116 |
if getMPISizeWorld() != 1: return |
117 |
file="hex_contact_2D_order1_onFace.msh" |
118 |
ms1=Rectangle(1,1,1,l1=0.5,useElementsOnFace=True) |
119 |
ms2=Rectangle(1,1,1,l1=0.5,useElementsOnFace=True) |
120 |
ms2.setX(ms2.getX()+[0,0.5]) |
121 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
122 |
self.checker(my_dom,file) |
123 |
|
124 |
def test_hex_contact_2D_order2(self): |
125 |
if getMPISizeWorld() != 1: return |
126 |
file="hex_contact_2D_order2.msh" |
127 |
ms1=Rectangle(1,1,2,l1=0.5,useElementsOnFace=False) |
128 |
ms2=Rectangle(1,1,2,l1=0.5,useElementsOnFace=False) |
129 |
ms2.setX(ms2.getX()+[0,0.5]) |
130 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
131 |
self.checker(my_dom,file) |
132 |
|
133 |
def test_hex_contact_2D_order2_onFace(self): |
134 |
if getMPISizeWorld() != 1: return |
135 |
file="hex_contact_2D_order2_onFace.msh" |
136 |
ms1=Rectangle(1,1,2,l1=0.5,useElementsOnFace=True) |
137 |
ms2=Rectangle(1,1,2,l1=0.5,useElementsOnFace=True) |
138 |
ms2.setX(ms2.getX()+[0,0.5]) |
139 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
140 |
self.checker(my_dom,file) |
141 |
|
142 |
def test_hex_contact_3D_order1(self): |
143 |
if getMPISizeWorld() != 1: return |
144 |
file="hex_contact_3D_order1.msh" |
145 |
ms1=Brick(1,1,1,1,l2=0.5,useElementsOnFace=False) |
146 |
ms2=Brick(1,1,1,1,l2=0.5,useElementsOnFace=False) |
147 |
ms2.setX(ms2.getX()+[0,0,0.5]) |
148 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
149 |
self.checker(my_dom,file) |
150 |
|
151 |
def test_hex_contact_3D_order1_onFace(self): |
152 |
if getMPISizeWorld() != 1: return |
153 |
file="hex_contact_3D_order1_onFace.msh" |
154 |
ms1=Brick(1,1,1,1,l2=0.5,useElementsOnFace=True) |
155 |
ms2=Brick(1,1,1,1,l2=0.5,useElementsOnFace=True) |
156 |
ms2.setX(ms2.getX()+[0,0,0.5]) |
157 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
158 |
self.checker(my_dom,file) |
159 |
|
160 |
def test_hex_contact_3D_order2(self): |
161 |
if getMPISizeWorld() != 1: return |
162 |
file="hex_contact_3D_order2.msh" |
163 |
ms1=Brick(1,1,1,2,l2=0.5,useElementsOnFace=False) |
164 |
ms2=Brick(1,1,1,2,l2=0.5,useElementsOnFace=False) |
165 |
ms2.setX(ms2.getX()+[0,0,0.5]) |
166 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
167 |
self.checker(my_dom,file) |
168 |
|
169 |
def test_hex_contact_3D_order2_onFace(self): |
170 |
if getMPISizeWorld() != 1: return |
171 |
file="hex_contact_3D_order2_onFace.msh" |
172 |
ms1=Brick(1,1,1,2,l2=0.5,useElementsOnFace=True) |
173 |
ms2=Brick(1,1,1,2,l2=0.5,useElementsOnFace=True) |
174 |
ms2.setX(ms2.getX()+[0,0,0.5]) |
175 |
my_dom=JoinFaces([ms1,ms2],optimize=False) |
176 |
self.checker(my_dom,file) |
177 |
|
178 |
class Test_GMSHReader(unittest.TestCase): |
179 |
def compare(self, test_file, reference_file): |
180 |
dom_string=open(test_file).read().splitlines() |
181 |
ref_string=open(reference_file).read().splitlines() |
182 |
self.failUnlessEqual(len(dom_string),len(ref_string),"number of lines in mesh files does not match reference") |
183 |
for l in range(1,len(ref_string)): |
184 |
line=dom_string[l].strip() |
185 |
if os.name == "nt": |
186 |
line=line.replace("e+00","e+0").replace("e-00","e-0") |
187 |
self.failUnlessEqual(line,ref_string[l].strip(),"line %d (%s) in mesh files does not match reference (%s)"%(l,ref_string[l].strip(),line)) |
188 |
|
189 |
def test_Tri3(self): |
190 |
# ReadGmsh is not MPI parallel |
191 |
if getMPISizeWorld() == 1: |
192 |
file="tri3_gmsh.msh" |
193 |
ref ="tri3.fly" |
194 |
test = FINLEY_WORKDIR+os.sep+"tri3_test.fly" |
195 |
dom = ReadGmsh(FINLEY_TEST_MESH_PATH+os.sep+file,2,optimize=False) |
196 |
dom.write(test) |
197 |
self.compare(test, FINLEY_TEST_MESH_PATH+os.sep+ref) |
198 |
|
199 |
def test_Tri6(self): |
200 |
# ReadGmsh is not MPI parallel |
201 |
if getMPISizeWorld() == 1: |
202 |
file="tri6_gmsh.msh" |
203 |
ref="tri6.fly" |
204 |
test = FINLEY_WORKDIR+os.sep+"tri8_test.fly" |
205 |
dom = ReadGmsh(FINLEY_TEST_MESH_PATH+os.sep+file,2,optimize=False) |
206 |
dom.write(test) |
207 |
self.compare(test, FINLEY_TEST_MESH_PATH+os.sep+ref) |
208 |
|
209 |
def test_Tet4(self): |
210 |
# ReadGmsh is not MPI parallel |
211 |
if getMPISizeWorld() == 1: |
212 |
file="tet4_gmsh.msh" |
213 |
ref="tet4.fly" |
214 |
test = FINLEY_WORKDIR+os.sep+"tet4_test.fly" |
215 |
dom = ReadGmsh(FINLEY_TEST_MESH_PATH+os.sep+file,3,optimize=False) |
216 |
dom.write(test) |
217 |
self.compare(test, FINLEY_TEST_MESH_PATH+os.sep+ref) |
218 |
|
219 |
def test_Tet10(self): |
220 |
# ReadGmsh is not MPI parallel |
221 |
if getMPISizeWorld() == 1: |
222 |
file="tet10_gmsh.msh" |
223 |
ref="tet10.fly" |
224 |
test = FINLEY_WORKDIR+os.sep+"tet10_test.fly" |
225 |
dom = ReadGmsh(FINLEY_TEST_MESH_PATH+os.sep+file,3,optimize=False) |
226 |
dom.write(test) |
227 |
self.compare(test, FINLEY_TEST_MESH_PATH+os.sep+ref) |
228 |
|
229 |
class Test_Reader(unittest.TestCase): |
230 |
def test_ReadWriteTagNames(self): |
231 |
if getMPISizeWorld() != 1: return |
232 |
file="hex_2D_order2.msh" |
233 |
test = FINLEY_WORKDIR+os.sep+"test.fly" |
234 |
dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+file,3,optimize=False) |
235 |
insertTagNames(dom,A=1,B=2) |
236 |
dom.write(test) |
237 |
dom2 = ReadMesh(test,3,optimize=False) |
238 |
t=getTagNames(dom) |
239 |
self.failUnless(len(t)==6) |
240 |
self.failUnless("A" in t) |
241 |
self.failUnless("B" in t) |
242 |
self.failUnless(dom2.getTag("A") == 1) |
243 |
self.failUnless(dom2.getTag("B") == 2) |
244 |
self.failUnless(dom2.isValidTagName("A")) |
245 |
self.failUnless(dom2.isValidTagName("B")) |
246 |
|
247 |
class Test_Integration(unittest.TestCase): |
248 |
TOL=EPSILON*100. |
249 |
def __test_2DQ(self,dom,order): |
250 |
x=Function(dom).getX() |
251 |
x_bound=FunctionOnBoundary(dom).getX() |
252 |
for i in xrange(order+1): |
253 |
for j in xrange(order+1): |
254 |
res=integrate(x[0]**i*x[1]**j) |
255 |
ref=1./((i+1)*(j+1)) |
256 |
error=abs(res-ref)/abs(ref) |
257 |
self.failUnless(error<=self.TOL,"integration for order (%s,%s) failed. True value = %s, calculated = %s"%(i,j,ref,res)) |
258 |
|
259 |
res=integrate(x_bound[0]**i*x_bound[1]**j) |
260 |
ref=0 |
261 |
if i == 0: |
262 |
ref += 2./(j+1) |
263 |
else: |
264 |
ref += 1./(j+1) |
265 |
if j == 0: |
266 |
ref += 2./(i+1) |
267 |
else: |
268 |
ref += 1./(i+1) |
269 |
error=abs(res-ref)/abs(ref) |
270 |
self.failUnless(error<=self.TOL,"surface integration for order (%s,%s) failed. True value = %s, calculated = %s"%(i,j,ref,res)) |
271 |
|
272 |
def __test_2DT(self,dom,order,raise_tol=1.): |
273 |
x=Function(dom).getX() |
274 |
x_bound=FunctionOnBoundary(dom).getX() |
275 |
for i in xrange(order+1): |
276 |
for j in xrange(order+1): |
277 |
if i+j<=order: |
278 |
res=integrate(x[0]**i*x[1]**j) |
279 |
ref=1./((i+1)*(j+1)) |
280 |
error=abs(res-ref)/abs(ref) |
281 |
# print order,error |
282 |
self.failUnless(error<=self.TOL*raise_tol,"integration for order (%s,%s) failed. True value = %s, calculated = %s"%(i,j,ref,res)) |
283 |
|
284 |
res=integrate(x_bound[0]**i*x_bound[1]**j) |
285 |
ref=0 |
286 |
if i == 0: |
287 |
ref += 2./(j+1) |
288 |
else: |
289 |
ref += 1./(j+1) |
290 |
if j == 0: |
291 |
ref += 2./(i+1) |
292 |
else: |
293 |
ref += 1./(i+1) |
294 |
error=abs(res-ref)/abs(ref) |
295 |
self.failUnless(error<=self.TOL*raise_tol,"surface integration for order (%s,%s) failed. True value = %s, calculated = %s"%(i,j,ref,res)) |
296 |
|
297 |
|
298 |
def __test_3DQ(self,dom,order): |
299 |
x=Function(dom).getX() |
300 |
x_bound=FunctionOnBoundary(dom).getX() |
301 |
for i in xrange(order+1): |
302 |
for j in xrange(order+1): |
303 |
for k in xrange(order+1): |
304 |
res=integrate(x[0]**i*x[1]**j*x[2]**k) |
305 |
ref=1./((i+1)*(j+1)*(k+1)) |
306 |
error=abs(res-ref)/abs(ref) |
307 |
self.failUnless(error<=self.TOL,"integration for order (%s,%s,%s) failed. True value = %s, calculated = %s"%(i,j,k,ref,res)) |
308 |
|
309 |
res=integrate(x_bound[0]**i*x_bound[1]**j*x_bound[2]**k) |
310 |
ref=0 |
311 |
if i == 0: |
312 |
ref += 2./((j+1)*(k+1)) |
313 |
else: |
314 |
ref += 1./((j+1)*(k+1)) |
315 |
if j == 0: |
316 |
ref += 2./((i+1)*(k+1)) |
317 |
else: |
318 |
ref += 1./((i+1)*(k+1)) |
319 |
if k == 0: |
320 |
ref += 2./((i+1)*(j+1)) |
321 |
else: |
322 |
ref += 1./((i+1)*(j+1)) |
323 |
error=abs(res-ref)/abs(ref) |
324 |
self.failUnless(error<=self.TOL,"surface integration for order (%s,%s,%s) failed. True value = %s, calculated = %s"%(i,j,k,ref,res)) |
325 |
|
326 |
def __test_3DT(self,dom,order,raise_tol=1.): |
327 |
x=Function(dom).getX() |
328 |
x_bound=FunctionOnBoundary(dom).getX() |
329 |
for i in xrange(order+1): |
330 |
for j in xrange(order+1): |
331 |
for k in xrange(order+1): |
332 |
if i+j+k<=order: |
333 |
res=integrate(x[0]**i*x[1]**j*x[2]**k) |
334 |
ref=1./((i+1)*(j+1)*(k+1)) |
335 |
error=abs(res-ref)/abs(ref) |
336 |
self.failUnless(error<=self.TOL*raise_tol,"integration for order (%s,%s,%s) failed. True value = %s, calculated = %s"%(i,j,k,ref,res)) |
337 |
|
338 |
res=integrate(x_bound[0]**i*x_bound[1]**j*x_bound[2]**k) |
339 |
ref=0 |
340 |
if i == 0: |
341 |
ref += 2./((j+1)*(k+1)) |
342 |
else: |
343 |
ref += 1./((j+1)*(k+1)) |
344 |
if j == 0: |
345 |
ref += 2./((i+1)*(k+1)) |
346 |
else: |
347 |
ref += 1./((i+1)*(k+1)) |
348 |
if k == 0: |
349 |
ref += 2./((i+1)*(j+1)) |
350 |
else: |
351 |
ref += 1./((i+1)*(j+1)) |
352 |
error=abs(res-ref)/abs(ref) |
353 |
self.failUnless(error<=self.TOL*raise_tol,"surface integration for order (%s,%s,%s) failed. True value = %s, calculated = %s"%(i,j,k,ref,res)) |
354 |
|
355 |
def test_hex2D_order1(self): |
356 |
my_dom=Rectangle(1,1,integrationOrder=1) |
357 |
self.__test_2DQ(my_dom,1) |
358 |
def test_hex2D_order2(self): |
359 |
my_dom=Rectangle(1,1,integrationOrder=2) |
360 |
self.__test_2DQ(my_dom,2) |
361 |
def test_hex2D_order3(self): |
362 |
my_dom=Rectangle(1,1,integrationOrder=3) |
363 |
self.__test_2DQ(my_dom,3) |
364 |
def test_hex2D_order4(self): |
365 |
my_dom=Rectangle(1,1,integrationOrder=4) |
366 |
self.__test_2DQ(my_dom,4) |
367 |
def test_hex2D_order5(self): |
368 |
my_dom=Rectangle(1,1,integrationOrder=5) |
369 |
self.__test_2DQ(my_dom,5) |
370 |
def test_hex2D_order6(self): |
371 |
my_dom=Rectangle(1,1,integrationOrder=6) |
372 |
self.__test_2DQ(my_dom,6) |
373 |
def test_hex2D_order7(self): |
374 |
my_dom=Rectangle(1,1,integrationOrder=7) |
375 |
self.__test_2DQ(my_dom,7) |
376 |
def test_hex2D_order8(self): |
377 |
my_dom=Rectangle(1,1,integrationOrder=8) |
378 |
self.__test_2DQ(my_dom,8) |
379 |
def test_hex2D_order9(self): |
380 |
my_dom=Rectangle(1,1,integrationOrder=9) |
381 |
self.__test_2DQ(my_dom,9) |
382 |
def test_hex2D_order10(self): |
383 |
my_dom=Rectangle(1,1,integrationOrder=10) |
384 |
self.__test_2DQ(my_dom,10) |
385 |
|
386 |
def test_Tet2D_order1(self): |
387 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=1) |
388 |
self.__test_2DT(my_dom,1) |
389 |
def test_Tet2D_order2(self): |
390 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=2) |
391 |
self.__test_2DT(my_dom,2) |
392 |
def test_Tet2D_order3(self): |
393 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=3) |
394 |
self.__test_2DT(my_dom,3) |
395 |
def test_Tet2D_order4(self): |
396 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=4) |
397 |
self.__test_2DT(my_dom,4) |
398 |
def test_Tet2D_order5(self): |
399 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=5) |
400 |
self.__test_2DT(my_dom,5) |
401 |
def test_Tet2D_order6(self): |
402 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=6) |
403 |
self.__test_2DT(my_dom,6) |
404 |
def test_Tet2D_order7(self): |
405 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=7) |
406 |
self.__test_2DT(my_dom,7) |
407 |
def test_Tet2D_order8(self): |
408 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=8) |
409 |
self.__test_2DT(my_dom,8,1./sqrt(EPSILON)) |
410 |
def test_Tet2D_order9(self): |
411 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=9) |
412 |
self.__test_2DT(my_dom,9,1./sqrt(EPSILON)) |
413 |
def test_Tet2D_order10(self): |
414 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tri3.fly",optimize=False,integrationOrder=10) |
415 |
self.__test_2DT(my_dom,10) |
416 |
|
417 |
def test_hex3D_order1(self): |
418 |
my_dom=Brick(1,1,1,integrationOrder=1) |
419 |
self.__test_3DQ(my_dom,1) |
420 |
def test_hex3D_order2(self): |
421 |
my_dom=Brick(1,1,1,integrationOrder=2) |
422 |
self.__test_3DQ(my_dom,2) |
423 |
def test_hex3D_order3(self): |
424 |
my_dom=Brick(1,1,1,integrationOrder=3) |
425 |
self.__test_3DQ(my_dom,3) |
426 |
def test_hex3D_order4(self): |
427 |
my_dom=Brick(1,1,1,integrationOrder=4) |
428 |
self.__test_3DQ(my_dom,4) |
429 |
def test_hex3D_order5(self): |
430 |
my_dom=Brick(1,1,1,integrationOrder=5) |
431 |
self.__test_3DQ(my_dom,5) |
432 |
def test_hex3D_order6(self): |
433 |
my_dom=Brick(1,1,1,integrationOrder=6) |
434 |
self.__test_3DQ(my_dom,6) |
435 |
def test_hex3D_order7(self): |
436 |
my_dom=Brick(1,1,1,integrationOrder=7) |
437 |
self.__test_3DQ(my_dom,7) |
438 |
def test_hex3D_order8(self): |
439 |
my_dom=Brick(1,1,1,integrationOrder=8) |
440 |
self.__test_3DQ(my_dom,8) |
441 |
def test_hex3D_order9(self): |
442 |
my_dom=Brick(1,1,1,integrationOrder=9) |
443 |
self.__test_3DQ(my_dom,9) |
444 |
def test_hex3D_order10(self): |
445 |
my_dom=Brick(1,1,1,integrationOrder=10) |
446 |
self.__test_3DQ(my_dom,10) |
447 |
|
448 |
def test_Tet3D_order1(self): |
449 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=1) |
450 |
self.__test_3DT(my_dom,1) |
451 |
def test_Tet3D_order2(self): |
452 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=2) |
453 |
self.__test_3DT(my_dom,2) |
454 |
def test_Tet3D_order3(self): |
455 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=3) |
456 |
self.__test_3DT(my_dom,3) |
457 |
def test_Tet3D_order4(self): |
458 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=4) |
459 |
self.__test_3DT(my_dom,4) |
460 |
def test_Tet3D_order5(self): |
461 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=5) |
462 |
self.__test_3DT(my_dom,5) |
463 |
def test_Tet3D_order6(self): |
464 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=6) |
465 |
self.__test_3DT(my_dom,6,1./sqrt(EPSILON)) |
466 |
def test_Tet3D_order7(self): |
467 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=7) |
468 |
self.__test_3DT(my_dom,7,1./sqrt(EPSILON)) |
469 |
def test_Tet3D_order8(self): |
470 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=8) |
471 |
self.__test_3DT(my_dom,8,1./sqrt(EPSILON)) |
472 |
def test_Tet3D_order9(self): |
473 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=9) |
474 |
self.__test_3DT(my_dom,9,1./sqrt(EPSILON)) |
475 |
def test_Tet3D_order10(self): |
476 |
my_dom = ReadMesh(FINLEY_TEST_MESH_PATH+os.sep+"tet4.fly",optimize=False,integrationOrder=10) |
477 |
self.__test_3DT(my_dom,10) |
478 |
|
479 |
if __name__ == '__main__': |
480 |
suite = unittest.TestSuite() |
481 |
suite.addTest(unittest.makeSuite(Test_Generators)) |
482 |
suite.addTest(unittest.makeSuite(Test_GMSHReader)) |
483 |
suite.addTest(unittest.makeSuite(Test_Reader)) |
484 |
suite.addTest(unittest.makeSuite(Test_Integration)) |
485 |
s=unittest.TextTestRunner(verbosity=2).run(suite) |
486 |
if not s.wasSuccessful(): sys.exit(1) |
487 |
|