/[escript]/trunk/finley/py_src/finleybench.py
ViewVC logotype

Contents of /trunk/finley/py_src/finleybench.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 416 - (show annotations)
Wed Jan 4 05:38:35 2006 UTC (14 years, 7 months ago) by gross
File MIME type: text/x-python
File size: 29609 byte(s)
changes in Paso have been worked in
1 # $Id:$
2
3 #
4 # COPYRIGHT ACcESS 2004 - All Rights Reserved
5 #
6 # This software is the property of ACcESS. No part of this code
7 # may be copied in any form or by any means without the expressed written
8 # consent of ACcESS. Copying, use or modification of this software
9 # by any unauthorised person is illegal unless that
10 # person has a software license agreement with ACcESS.
11 #
12
13 """
14 some benchmarks for tetsing the finley solver. The idea is to develop a set of standart benchmarks
15
16 * Laplace2Dorder1_?k
17 * Laplace2Dorder2_?k
18 * Laplace3Dorder1_?k
19 * Laplace3Dorder2_?k
20
21
22
23 where ? is approximatively the number of unknowns in 1000.
24
25 @var __author__: name of author
26 @var __licence__: licence agreement
27 var __url__: url entry point on documentation
28 @var __version__: version
29 @var __date__: date of the version
30 """
31
32 __author__="Lutz Gross, l.gross@uq.edu.au"
33 __licence__="contact: esys@access.uq.edu.au"
34 __url__="http://www.iservo.edu.au/esys/escript"
35 __version__="$Revision:$"
36 __date__="$Date:$"
37
38 from esys.escript import Lsup,whereZero,kronecker
39 from esys.escript.benchmark import BenchmarkProblem, Options, BenchmarkFilter
40 import esys.finley
41 from esys.escript.linearPDEs import LinearPDE
42 import os
43
44 class FinleyFilter(BenchmarkFilter):
45 """
46 defines a filter for L{FinleyProblem} characteristics
47 """
48 TIME="t [sec]"
49 ERROR="rel. error"
50
51
52 def __init__(self,args=None):
53 """
54 sets up the filter
55
56 @param args: list of value names to be filtered
57 @type args: C{list} of L{TIME}, L{ERROR}
58 """
59 if args==None: args=[FinleyFilter.TIME,FinleyFilter.ERROR]
60 super(FinleyFilter,self).__init__()
61 self.__args=args
62
63 def getResultNames(self):
64 """
65 return the names of the results produced when run() is called.
66
67 @return: names the list of the names to be used when the results of the run() call are printed
68 @rtype: C{list} of C{str}
69 """
70 return self.__args
71
72 def __call__(self,result):
73 """
74 filters out the characteristic values
75
76 @param result: characteristics rturned by a L{FinleyProblem} run
77 @type result: C{dict}
78 @return: filtered values
79 @rtype: C{list} of C{str}
80 """
81 out=[]
82 for a in self.__args:
83 out.append(result[a])
84 return out
85
86 class FinleyOptions(Options):
87 """
88 finley solver options to be handed over to paso
89
90 """
91 def __init__(self,solver_method=None,
92 preconditioner=None,
93 package=None,
94 tolerance=None,
95 verbose=False):
96 self.strmap={
97 LinearPDE.DIRECT : "DIRECT",
98 LinearPDE.PCG: "PCG",
99 LinearPDE.CR: "CR",
100 LinearPDE.CGS: "CGS",
101 LinearPDE.BICGSTAB: "BICGSTAB",
102 LinearPDE.SSOR: "SSOR",
103 LinearPDE.ILU0: "ILU0",
104 LinearPDE.ILUT: "ILUT",
105 LinearPDE.JACOBI: "JACOBI",
106 LinearPDE.GMRES: "GMRES",
107 LinearPDE.PRES20: "PRES20",
108 LinearPDE.LUMPING: "LUMPIMG",
109 LinearPDE.NO_REORDERING: "NO_REORDERING",
110 LinearPDE.MINIMUM_FILL_IN: "MINIMUM_FILL_IN",
111 LinearPDE.NESTED_DISSECTION: "NESTED_DISSECTION",
112 LinearPDE.SCSL: "SCSL",
113 LinearPDE.MKL: "MKL",
114 LinearPDE.UMFPACK: "UMFPACK",
115 LinearPDE.PASO: "PASO"
116 }
117 name=""
118 if solver_method==None:
119 solver_method==LinearPDE.PRES20
120 else:
121 name+=self.strmap[solver_method]
122 if preconditioner==None:
123 preconditioner==LinearPDE.JACOBI
124 else:
125 if not name=="": name+="+"
126 name+=self.strmap[preconditioner]
127 if package==None:
128 package==LinearPDE.PASO
129 else:
130 if not name=="": name+=" with "
131 name+=self.strmap[package]
132 if tolerance==None:
133 tolerance=1.e-8
134 else:
135 if not name=="": name+=", "
136 name+="tol = %s"%tolerance
137 self.solver_method=solver_method
138 self.preconditioner=preconditioner
139 self.tolerance=tolerance
140 self.package=package
141 self.verbose=verbose
142 super(FinleyOptions,self).__init__(name=name)
143
144
145
146 class FinleyProblem(BenchmarkProblem):
147 """
148 The general benchmark problem for Finley
149 """
150 def run(self,options):
151 """
152 creates a domain and a PDE on this domain, solves it (with the given options) and returns the
153 elapsed time and the error.
154
155 @param options: paso solver options
156 @type options: L{PasoOptions}
157 @return: elapsed time and the error of calculated solution
158 @rtype: pair of C{float}
159 """
160 domain=self.getDomain()
161 pde,u=self.getTestProblem(domain)
162 pde.setTolerance(options.tolerance)
163 pde.setSolverMethod(options.solver_method,options.preconditioner)
164 pde.setSolverPackage(options.package)
165 a=os.times()[4]
166 uh=pde.getSolution(verbose=options.verbose)
167 a=os.times()[4]-a
168 if u==None:
169 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : None }
170 else:
171 error=Lsup(u-uh)/Lsup(u)
172 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : error }
173
174 def getTestProblem(self,domain):
175 """
176 returns a PDEto be solved and an exact solution
177
178 @param domain: the PDE domain
179 @type domain: L{escript.Domain}
180 @return: a linear PDE to be solved an a reference solution
181 @rtype: L{LinearPDE},L{escript.Data}
182 @remark: must be overwritten by a particular problem
183 """
184 raise NotImplementedError
185
186 def getDomain(self):
187 """
188 returns the domain of the problem
189
190 @return: a domain
191 @rtype: L{escript.Domain}
192 @remark: must be overwritten by a particular problem
193 """
194 raise NotImplementedError
195
196 class RegularFinleyProblem(FinleyProblem):
197 """
198 base class for finley problem on a rectangular mesh
199 """
200 def __init__(self,n=1,order=1,dim=2):
201 """
202 sets up a recangular mesh in finley on a unit cube/square
203
204 @param n: number of elements in each spactial direction
205 @type n: C{int}
206 @param order: element order
207 @type order: 1 or 2
208 @param dim: spatial dimension
209 @type n: 2 or 3
210 """
211 super(RegularFinleyProblem,self).__init__(name=str((order*n+1)**dim))
212 self.__n=n
213 self.__order=order
214 self.__dim=dim
215
216 def getDomain(self):
217 """
218 returns the unit square/cube with a rectangular mesh
219
220 @return: a domain
221 @rtype: L{escript.Domain}
222 """
223 if self.__dim==2:
224 domain=esys.finley.Rectangle(n0=self.__n,n1=self.__n,order=self.__order)
225 else:
226 domain=esys.finley.Brick(n0=self.__n,n1=self.__n,n2=self.__n,order=self.__order)
227 return domain
228
229 class LaplaceProblem(RegularFinleyProblem):
230 """
231 base class for the Lapalce eqaution on a rectangular mesh
232 """
233 def getTestProblem(self,domain):
234 """
235 returns a PDE and a test solution on the given domain
236
237 @param doamin: a domain
238 @type domain: L{escript.Domain}
239 @return: the Laplace equation and a test solution
240 @rtype: C{tuple} of C{LinearPDE} and C{escript.Data}
241 """
242 x=domain.getX()
243 msk=whereZero(x[0])+whereZero(x[0]-1.)
244 u=x[0]
245 for i in range(1,domain.getDim()):
246 msk+=whereZero(x[i])+whereZero(x[i]-1.)
247 u*=(x[i]-i)
248 pde=LinearPDE(domain)
249 pde.setSymmetryOn()
250 pde.setValue(A=kronecker(domain),q=msk,r=u)
251 return pde,u
252
253 class AnisotropicProblem(RegularFinleyProblem):
254 """
255 base class for the Anisotropic scalar problem on a rectangular mesh
256 """
257 def __init__(self,n,order,dim,gamma,c):
258 self.c=c
259 self.gamma=gamma
260 super(AnisotropicProblem,self).__init__(n,order,dim)
261
262
263 def getTestProblem(self,domain):
264 """
265 returns a PDE and a test solution on the given domain
266
267 @param doamin: a domain
268 @type domain: L{escript.Domain}
269 @return: the Laplace equation and a test solution
270 @rtype: C{tuple} of C{LinearPDE} and C{escript.Data}
271 """
272 x=domain.getX()
273 msk=whereZero(x[0])+whereZero(x[0]-1.)
274 u=x[0]
275 for i in range(1,domain.getDim()):
276 msk+=whereZero(x[i])+whereZero(x[i]-1.)
277 u*=(x[i]-i)
278
279 gamma_rad=self.gamma/360.*8*math.atan(1.)
280 cg=maths.cos(self.gamma_rad)
281 sg=maths.sin(self.gamma_rad)
282 C=kronecker(domain)
283 C[0,0]=cg**2+self.c*sg**2
284 C[1,0]=(self.c-1.)*cg*sg
285 C[0,1]=C[0,1]
286 C[1,1]=sg**2+self.c*cg**2
287 F=2*(1.-self.c)*cg*sg
288 if domain.getDim()==3: F*=x[2]-2.
289 pde=LinearPDE(domain)
290 pde.setSymmetryOn()
291 pde.setValue(A=C,Y=F,q=msk,r=u)
292 return pde,u
293
294 class Laplace2DOrder1_30k(LaplaceProblem):
295 def __init__(self):
296 super(Laplace2DOrder1_30k,self).__init__(n=172,order=1,dim=2)
297 class Laplace2DOrder1_60k(LaplaceProblem):
298 def __init__(self):
299 super(Laplace2DOrder1_60k,self).__init__(n=244,order=1,dim=2)
300 class Laplace2DOrder1_120k(LaplaceProblem):
301 def __init__(self):
302 super(Laplace2DOrder1_120k,self).__init__(n=345,order=1,dim=2)
303 class Laplace2DOrder1_240k(LaplaceProblem):
304 def __init__(self):
305 super(Laplace2DOrder1_240k,self).__init__(n=489,order=1,dim=2)
306 class Laplace2DOrder1_480k(LaplaceProblem):
307 def __init__(self):
308 super(Laplace2DOrder1_480k,self).__init__(n=692,order=1,dim=2)
309 class Laplace2DOrder1_960k(LaplaceProblem):
310 def __init__(self):
311 super(Laplace2DOrder1_960k,self).__init__(n=979,order=1,dim=2)
312 class Laplace2DOrder1_1920k(LaplaceProblem):
313 def __init__(self):
314 super(Laplace2DOrder1_1920k,self).__init__(n=1385,order=1,dim=2)
315 class Laplace2DOrder1_3840k(LaplaceProblem):
316 def __init__(self):
317 super(Laplace2DOrder1_3840k,self).__init__(n=1959,order=1,dim=2)
318 class Laplace2DOrder1_7680k(LaplaceProblem):
319 def __init__(self):
320 super(Laplace2DOrder1_7680k,self).__init__(n=2770,order=1,dim=2)
321 class Laplace2DOrder1_15360k(LaplaceProblem):
322 def __init__(self):
323 super(Laplace2DOrder1_15360k,self).__init__(n=3918,order=1,dim=2)
324 class Laplace2DOrder2_30k(LaplaceProblem):
325 def __init__(self):
326 super(Laplace2DOrder2_30k,self).__init__(n=86,order=2,dim=2)
327 class Laplace2DOrder2_60k(LaplaceProblem):
328 def __init__(self):
329 super(Laplace2DOrder2_60k,self).__init__(n=122,order=2,dim=2)
330 class Laplace2DOrder2_120k(LaplaceProblem):
331 def __init__(self):
332 super(Laplace2DOrder2_120k,self).__init__(n=173,order=2,dim=2)
333 class Laplace2DOrder2_240k(LaplaceProblem):
334 def __init__(self):
335 super(Laplace2DOrder2_240k,self).__init__(n=244,order=2,dim=2)
336 class Laplace2DOrder2_480k(LaplaceProblem):
337 def __init__(self):
338 super(Laplace2DOrder2_480k,self).__init__(n=346,order=2,dim=2)
339 class Laplace2DOrder2_960k(LaplaceProblem):
340 def __init__(self):
341 super(Laplace2DOrder2_960k,self).__init__(n=489,order=2,dim=2)
342 class Laplace2DOrder2_1920k(LaplaceProblem):
343 def __init__(self):
344 super(Laplace2DOrder2_1920k,self).__init__(n=692,order=2,dim=2)
345 class Laplace2DOrder2_3840k(LaplaceProblem):
346 def __init__(self):
347 super(Laplace2DOrder2_3840k,self).__init__(n=979,order=2,dim=2)
348 class Laplace2DOrder2_7680k(LaplaceProblem):
349 def __init__(self):
350 super(Laplace2DOrder2_7680k,self).__init__(n=1385,order=2,dim=2)
351 class Laplace2DOrder2_15360k(LaplaceProblem):
352 def __init__(self):
353 super(Laplace2DOrder2_15360k,self).__init__(n=1959,order=2,dim=2)
354 class Laplace3DOrder1_30k(LaplaceProblem):
355 def __init__(self):
356 super(Laplace3DOrder1_30k,self).__init__(n=30,order=1,dim=3)
357 class Laplace3DOrder1_60k(LaplaceProblem):
358 def __init__(self):
359 super(Laplace3DOrder1_60k,self).__init__(n=38,order=1,dim=3)
360 class Laplace3DOrder1_120k(LaplaceProblem):
361 def __init__(self):
362 super(Laplace3DOrder1_120k,self).__init__(n=48,order=1,dim=3)
363 class Laplace3DOrder1_240k(LaplaceProblem):
364 def __init__(self):
365 super(Laplace3DOrder1_240k,self).__init__(n=61,order=1,dim=3)
366 class Laplace3DOrder1_480k(LaplaceProblem):
367 def __init__(self):
368 super(Laplace3DOrder1_480k,self).__init__(n=77,order=1,dim=3)
369 class Laplace3DOrder1_960k(LaplaceProblem):
370 def __init__(self):
371 super(Laplace3DOrder1_960k,self).__init__(n=98,order=1,dim=3)
372 class Laplace3DOrder1_1920k(LaplaceProblem):
373 def __init__(self):
374 super(Laplace3DOrder1_1920k,self).__init__(n=123,order=1,dim=3)
375 class Laplace3DOrder1_3840k(LaplaceProblem):
376 def __init__(self):
377 super(Laplace3DOrder1_3840k,self).__init__(n=156,order=1,dim=3)
378 class Laplace3DOrder1_7680k(LaplaceProblem):
379 def __init__(self):
380 super(Laplace3DOrder1_7680k,self).__init__(n=196,order=1,dim=3)
381 class Laplace3DOrder1_15360k(LaplaceProblem):
382 def __init__(self):
383 super(Laplace3DOrder1_15360k,self).__init__(n=248,order=1,dim=3)
384 class Laplace3DOrder2_30k(LaplaceProblem):
385 def __init__(self):
386 super(Laplace3DOrder2_30k,self).__init__(n=15,order=2,dim=3)
387 class Laplace3DOrder2_60k(LaplaceProblem):
388 def __init__(self):
389 super(Laplace3DOrder2_60k,self).__init__(n=19,order=2,dim=3)
390 class Laplace3DOrder2_120k(LaplaceProblem):
391 def __init__(self):
392 super(Laplace3DOrder2_120k,self).__init__(n=24,order=2,dim=3)
393 class Laplace3DOrder2_240k(LaplaceProblem):
394 def __init__(self):
395 super(Laplace3DOrder2_240k,self).__init__(n=31,order=2,dim=3)
396 class Laplace3DOrder2_480k(LaplaceProblem):
397 def __init__(self):
398 super(Laplace3DOrder2_480k,self).__init__(n=39,order=2,dim=3)
399 class Laplace3DOrder2_960k(LaplaceProblem):
400 def __init__(self):
401 super(Laplace3DOrder2_960k,self).__init__(n=49,order=2,dim=3)
402 class Laplace3DOrder2_1920k(LaplaceProblem):
403 def __init__(self):
404 super(Laplace3DOrder2_1920k,self).__init__(n=62,order=2,dim=3)
405 class Laplace3DOrder2_3840k(LaplaceProblem):
406 def __init__(self):
407 super(Laplace3DOrder2_3840k,self).__init__(n=78,order=2,dim=3)
408 class Laplace3DOrder2_7680k(LaplaceProblem):
409 def __init__(self):
410 super(Laplace3DOrder2_7680k,self).__init__(n=98,order=2,dim=3)
411 class Laplace3DOrder2_15360k(LaplaceProblem):
412 def __init__(self):
413 super(Laplace3DOrder2_15360k,self).__init__(n=124,order=2,dim=3)
414
415 class Anisotropic2DOrder1Gamma30_30k(AnisotropicProblem):
416 def __init__(self):
417 super(Anisotropic2DOrder1Gamma30_30k,self).__init__(n=172,order=1,dim=2,gamma=30,c=0.001)
418 class Anisotropic2DOrder1Gamma30_60k(AnisotropicProblem):
419 def __init__(self):
420 super(Anisotropic2DOrder1Gamma30_60k,self).__init__(n=244,order=1,dim=2,gamma=30,c=0.001)
421 class Anisotropic2DOrder1Gamma30_120k(AnisotropicProblem):
422 def __init__(self):
423 super(Anisotropic2DOrder1Gamma30_120k,self).__init__(n=345,order=1,dim=2,gamma=30,c=0.001)
424 class Anisotropic2DOrder1Gamma30_240k(AnisotropicProblem):
425 def __init__(self):
426 super(Anisotropic2DOrder1Gamma30_240k,self).__init__(n=489,order=1,dim=2,gamma=30,c=0.001)
427 class Anisotropic2DOrder1Gamma30_480k(AnisotropicProblem):
428 def __init__(self):
429 super(Anisotropic2DOrder1Gamma30_480k,self).__init__(n=692,order=1,dim=2,gamma=30,c=0.001)
430 class Anisotropic2DOrder1Gamma30_960k(AnisotropicProblem):
431 def __init__(self):
432 super(Anisotropic2DOrder1Gamma30_960k,self).__init__(n=979,order=1,dim=2,gamma=30,c=0.001)
433 class Anisotropic2DOrder1Gamma30_1920k(AnisotropicProblem):
434 def __init__(self):
435 super(Anisotropic2DOrder1Gamma30_1920k,self).__init__(n=1385,order=1,dim=2,gamma=30,c=0.001)
436 class Anisotropic2DOrder1Gamma30_3840k(AnisotropicProblem):
437 def __init__(self):
438 super(Anisotropic2DOrder1Gamma30_3840k,self).__init__(n=1959,order=1,dim=2,gamma=30,c=0.001)
439 class Anisotropic2DOrder1Gamma30_7680k(AnisotropicProblem):
440 def __init__(self):
441 super(Anisotropic2DOrder1Gamma30_7680k,self).__init__(n=2770,order=1,dim=2,gamma=30,c=0.001)
442 class Anisotropic2DOrder1Gamma30_15360k(AnisotropicProblem):
443 def __init__(self):
444 super(Anisotropic2DOrder1Gamma30_15360k,self).__init__(n=3918,order=1,dim=2,gamma=30,c=0.001)
445 class Anisotropic2DOrder1Gamma45_30k(AnisotropicProblem):
446 def __init__(self):
447 super(Anisotropic2DOrder1Gamma45_30k,self).__init__(n=172,order=1,dim=2,gamma=45,c=0.001)
448 class Anisotropic2DOrder1Gamma45_60k(AnisotropicProblem):
449 def __init__(self):
450 super(Anisotropic2DOrder1Gamma45_60k,self).__init__(n=244,order=1,dim=2,gamma=45,c=0.001)
451 class Anisotropic2DOrder1Gamma45_120k(AnisotropicProblem):
452 def __init__(self):
453 super(Anisotropic2DOrder1Gamma45_120k,self).__init__(n=345,order=1,dim=2,gamma=45,c=0.001)
454 class Anisotropic2DOrder1Gamma45_240k(AnisotropicProblem):
455 def __init__(self):
456 super(Anisotropic2DOrder1Gamma45_240k,self).__init__(n=489,order=1,dim=2,gamma=45,c=0.001)
457 class Anisotropic2DOrder1Gamma45_480k(AnisotropicProblem):
458 def __init__(self):
459 super(Anisotropic2DOrder1Gamma45_480k,self).__init__(n=692,order=1,dim=2,gamma=45,c=0.001)
460 class Anisotropic2DOrder1Gamma45_960k(AnisotropicProblem):
461 def __init__(self):
462 super(Anisotropic2DOrder1Gamma45_960k,self).__init__(n=979,order=1,dim=2,gamma=45,c=0.001)
463 class Anisotropic2DOrder1Gamma45_1920k(AnisotropicProblem):
464 def __init__(self):
465 super(Anisotropic2DOrder1Gamma45_1920k,self).__init__(n=1385,order=1,dim=2,gamma=45,c=0.001)
466 class Anisotropic2DOrder1Gamma45_3840k(AnisotropicProblem):
467 def __init__(self):
468 super(Anisotropic2DOrder1Gamma45_3840k,self).__init__(n=1959,order=1,dim=2,gamma=45,c=0.001)
469 class Anisotropic2DOrder1Gamma45_7680k(AnisotropicProblem):
470 def __init__(self):
471 super(Anisotropic2DOrder1Gamma45_7680k,self).__init__(n=2770,order=1,dim=2,gamma=45,c=0.001)
472 class Anisotropic2DOrder1Gamma45_15360k(AnisotropicProblem):
473 def __init__(self):
474 super(Anisotropic2DOrder1Gamma45_15360k,self).__init__(n=3918,order=1,dim=2,gamma=45,c=0.001)
475 class Anisotropic2DOrder2Gamma30_30k(AnisotropicProblem):
476 def __init__(self):
477 super(Anisotropic2DOrder2Gamma30_30k,self).__init__(n=86,order=2,dim=2,gamma=30,c=0.001)
478 class Anisotropic2DOrder2Gamma30_60k(AnisotropicProblem):
479 def __init__(self):
480 super(Anisotropic2DOrder2Gamma30_60k,self).__init__(n=122,order=2,dim=2,gamma=30,c=0.001)
481 class Anisotropic2DOrder2Gamma30_120k(AnisotropicProblem):
482 def __init__(self):
483 super(Anisotropic2DOrder2Gamma30_120k,self).__init__(n=173,order=2,dim=2,gamma=30,c=0.001)
484 class Anisotropic2DOrder2Gamma30_240k(AnisotropicProblem):
485 def __init__(self):
486 super(Anisotropic2DOrder2Gamma30_240k,self).__init__(n=244,order=2,dim=2,gamma=30,c=0.001)
487 class Anisotropic2DOrder2Gamma30_480k(AnisotropicProblem):
488 def __init__(self):
489 super(Anisotropic2DOrder2Gamma30_480k,self).__init__(n=346,order=2,dim=2,gamma=30,c=0.001)
490 class Anisotropic2DOrder2Gamma30_960k(AnisotropicProblem):
491 def __init__(self):
492 super(Anisotropic2DOrder2Gamma30_960k,self).__init__(n=489,order=2,dim=2,gamma=30,c=0.001)
493 class Anisotropic2DOrder2Gamma30_1920k(AnisotropicProblem):
494 def __init__(self):
495 super(Anisotropic2DOrder2Gamma30_1920k,self).__init__(n=692,order=2,dim=2,gamma=30,c=0.001)
496 class Anisotropic2DOrder2Gamma30_3840k(AnisotropicProblem):
497 def __init__(self):
498 super(Anisotropic2DOrder2Gamma30_3840k,self).__init__(n=979,order=2,dim=2,gamma=30,c=0.001)
499 class Anisotropic2DOrder2Gamma30_7680k(AnisotropicProblem):
500 def __init__(self):
501 super(Anisotropic2DOrder2Gamma30_7680k,self).__init__(n=1385,order=2,dim=2,gamma=30,c=0.001)
502 class Anisotropic2DOrder2Gamma30_15360k(AnisotropicProblem):
503 def __init__(self):
504 super(Anisotropic2DOrder2Gamma30_15360k,self).__init__(n=1959,order=2,dim=2,gamma=30,c=0.001)
505 class Anisotropic2DOrder2Gamma45_30k(AnisotropicProblem):
506 def __init__(self):
507 super(Anisotropic2DOrder2Gamma45_30k,self).__init__(n=86,order=2,dim=2,gamma=45,c=0.001)
508 class Anisotropic2DOrder2Gamma45_60k(AnisotropicProblem):
509 def __init__(self):
510 super(Anisotropic2DOrder2Gamma45_60k,self).__init__(n=122,order=2,dim=2,gamma=45,c=0.001)
511 class Anisotropic2DOrder2Gamma45_120k(AnisotropicProblem):
512 def __init__(self):
513 super(Anisotropic2DOrder2Gamma45_120k,self).__init__(n=173,order=2,dim=2,gamma=45,c=0.001)
514 class Anisotropic2DOrder2Gamma45_240k(AnisotropicProblem):
515 def __init__(self):
516 super(Anisotropic2DOrder2Gamma45_240k,self).__init__(n=244,order=2,dim=2,gamma=45,c=0.001)
517 class Anisotropic2DOrder2Gamma45_480k(AnisotropicProblem):
518 def __init__(self):
519 super(Anisotropic2DOrder2Gamma45_480k,self).__init__(n=346,order=2,dim=2,gamma=45,c=0.001)
520 class Anisotropic2DOrder2Gamma45_960k(AnisotropicProblem):
521 def __init__(self):
522 super(Anisotropic2DOrder2Gamma45_960k,self).__init__(n=489,order=2,dim=2,gamma=45,c=0.001)
523 class Anisotropic2DOrder2Gamma45_1920k(AnisotropicProblem):
524 def __init__(self):
525 super(Anisotropic2DOrder2Gamma45_1920k,self).__init__(n=692,order=2,dim=2,gamma=45,c=0.001)
526 class Anisotropic2DOrder2Gamma45_3840k(AnisotropicProblem):
527 def __init__(self):
528 super(Anisotropic2DOrder2Gamma45_3840k,self).__init__(n=979,order=2,dim=2,gamma=45,c=0.001)
529 class Anisotropic2DOrder2Gamma45_7680k(AnisotropicProblem):
530 def __init__(self):
531 super(Anisotropic2DOrder2Gamma45_7680k,self).__init__(n=1385,order=2,dim=2,gamma=45,c=0.001)
532 class Anisotropic2DOrder2Gamma45_15360k(AnisotropicProblem):
533 def __init__(self):
534 super(Anisotropic2DOrder2Gamma45_15360k,self).__init__(n=1959,order=2,dim=2,gamma=45,c=0.001)
535 class Anisotropic3DOrder1Gamma30_30k(AnisotropicProblem):
536 def __init__(self):
537 super(Anisotropic3DOrder1Gamma30_30k,self).__init__(n=30,order=1,dim=3,gamma=30,c=0.001)
538 class Anisotropic3DOrder1Gamma30_60k(AnisotropicProblem):
539 def __init__(self):
540 super(Anisotropic3DOrder1Gamma30_60k,self).__init__(n=38,order=1,dim=3,gamma=30,c=0.001)
541 class Anisotropic3DOrder1Gamma30_120k(AnisotropicProblem):
542 def __init__(self):
543 super(Anisotropic3DOrder1Gamma30_120k,self).__init__(n=48,order=1,dim=3,gamma=30,c=0.001)
544 class Anisotropic3DOrder1Gamma30_240k(AnisotropicProblem):
545 def __init__(self):
546 super(Anisotropic3DOrder1Gamma30_240k,self).__init__(n=61,order=1,dim=3,gamma=30,c=0.001)
547 class Anisotropic3DOrder1Gamma30_480k(AnisotropicProblem):
548 def __init__(self):
549 super(Anisotropic3DOrder1Gamma30_480k,self).__init__(n=77,order=1,dim=3,gamma=30,c=0.001)
550 class Anisotropic3DOrder1Gamma30_960k(AnisotropicProblem):
551 def __init__(self):
552 super(Anisotropic3DOrder1Gamma30_960k,self).__init__(n=98,order=1,dim=3,gamma=30,c=0.001)
553 class Anisotropic3DOrder1Gamma30_1920k(AnisotropicProblem):
554 def __init__(self):
555 super(Anisotropic3DOrder1Gamma30_1920k,self).__init__(n=123,order=1,dim=3,gamma=30,c=0.001)
556 class Anisotropic3DOrder1Gamma30_3840k(AnisotropicProblem):
557 def __init__(self):
558 super(Anisotropic3DOrder1Gamma30_3840k,self).__init__(n=156,order=1,dim=3,gamma=30,c=0.001)
559 class Anisotropic3DOrder1Gamma30_7680k(AnisotropicProblem):
560 def __init__(self):
561 super(Anisotropic3DOrder1Gamma30_7680k,self).__init__(n=196,order=1,dim=3,gamma=30,c=0.001)
562 class Anisotropic3DOrder1Gamma30_15360k(AnisotropicProblem):
563 def __init__(self):
564 super(Anisotropic3DOrder1Gamma30_15360k,self).__init__(n=248,order=1,dim=3,gamma=30,c=0.001)
565 class Anisotropic3DOrder1Gamma45_30k(AnisotropicProblem):
566 def __init__(self):
567 super(Anisotropic3DOrder1Gamma45_30k,self).__init__(n=30,order=1,dim=3,gamma=45,c=0.001)
568 class Anisotropic3DOrder1Gamma45_60k(AnisotropicProblem):
569 def __init__(self):
570 super(Anisotropic3DOrder1Gamma45_60k,self).__init__(n=38,order=1,dim=3,gamma=45,c=0.001)
571 class Anisotropic3DOrder1Gamma45_120k(AnisotropicProblem):
572 def __init__(self):
573 super(Anisotropic3DOrder1Gamma45_120k,self).__init__(n=48,order=1,dim=3,gamma=45,c=0.001)
574 class Anisotropic3DOrder1Gamma45_240k(AnisotropicProblem):
575 def __init__(self):
576 super(Anisotropic3DOrder1Gamma45_240k,self).__init__(n=61,order=1,dim=3,gamma=45,c=0.001)
577 class Anisotropic3DOrder1Gamma45_480k(AnisotropicProblem):
578 def __init__(self):
579 super(Anisotropic3DOrder1Gamma45_480k,self).__init__(n=77,order=1,dim=3,gamma=45,c=0.001)
580 class Anisotropic3DOrder1Gamma45_960k(AnisotropicProblem):
581 def __init__(self):
582 super(Anisotropic3DOrder1Gamma45_960k,self).__init__(n=98,order=1,dim=3,gamma=45,c=0.001)
583 class Anisotropic3DOrder1Gamma45_1920k(AnisotropicProblem):
584 def __init__(self):
585 super(Anisotropic3DOrder1Gamma45_1920k,self).__init__(n=123,order=1,dim=3,gamma=45,c=0.001)
586 class Anisotropic3DOrder1Gamma45_3840k(AnisotropicProblem):
587 def __init__(self):
588 super(Anisotropic3DOrder1Gamma45_3840k,self).__init__(n=156,order=1,dim=3,gamma=45,c=0.001)
589 class Anisotropic3DOrder1Gamma45_7680k(AnisotropicProblem):
590 def __init__(self):
591 super(Anisotropic3DOrder1Gamma45_7680k,self).__init__(n=196,order=1,dim=3,gamma=45,c=0.001)
592 class Anisotropic3DOrder1Gamma45_15360k(AnisotropicProblem):
593 def __init__(self):
594 super(Anisotropic3DOrder1Gamma45_15360k,self).__init__(n=248,order=1,dim=3,gamma=45,c=0.001)
595 class Anisotropic3DOrder2Gamma30_30k(AnisotropicProblem):
596 def __init__(self):
597 super(Anisotropic3DOrder2Gamma30_30k,self).__init__(n=15,order=2,dim=3,gamma=30,c=0.001)
598 class Anisotropic3DOrder2Gamma30_60k(AnisotropicProblem):
599 def __init__(self):
600 super(Anisotropic3DOrder2Gamma30_60k,self).__init__(n=19,order=2,dim=3,gamma=30,c=0.001)
601 class Anisotropic3DOrder2Gamma30_120k(AnisotropicProblem):
602 def __init__(self):
603 super(Anisotropic3DOrder2Gamma30_120k,self).__init__(n=24,order=2,dim=3,gamma=30,c=0.001)
604 class Anisotropic3DOrder2Gamma30_240k(AnisotropicProblem):
605 def __init__(self):
606 super(Anisotropic3DOrder2Gamma30_240k,self).__init__(n=31,order=2,dim=3,gamma=30,c=0.001)
607 class Anisotropic3DOrder2Gamma30_480k(AnisotropicProblem):
608 def __init__(self):
609 super(Anisotropic3DOrder2Gamma30_480k,self).__init__(n=39,order=2,dim=3,gamma=30,c=0.001)
610 class Anisotropic3DOrder2Gamma30_960k(AnisotropicProblem):
611 def __init__(self):
612 super(Anisotropic3DOrder2Gamma30_960k,self).__init__(n=49,order=2,dim=3,gamma=30,c=0.001)
613 class Anisotropic3DOrder2Gamma30_1920k(AnisotropicProblem):
614 def __init__(self):
615 super(Anisotropic3DOrder2Gamma30_1920k,self).__init__(n=62,order=2,dim=3,gamma=30,c=0.001)
616 class Anisotropic3DOrder2Gamma30_3840k(AnisotropicProblem):
617 def __init__(self):
618 super(Anisotropic3DOrder2Gamma30_3840k,self).__init__(n=78,order=2,dim=3,gamma=30,c=0.001)
619 class Anisotropic3DOrder2Gamma30_7680k(AnisotropicProblem):
620 def __init__(self):
621 super(Anisotropic3DOrder2Gamma30_7680k,self).__init__(n=98,order=2,dim=3,gamma=30,c=0.001)
622 class Anisotropic3DOrder2Gamma30_15360k(AnisotropicProblem):
623 def __init__(self):
624 super(Anisotropic3DOrder2Gamma30_15360k,self).__init__(n=124,order=2,dim=3,gamma=30,c=0.001)
625 class Anisotropic3DOrder2Gamma45_30k(AnisotropicProblem):
626 def __init__(self):
627 super(Anisotropic3DOrder2Gamma45_30k,self).__init__(n=15,order=2,dim=3,gamma=45,c=0.001)
628 class Anisotropic3DOrder2Gamma45_60k(AnisotropicProblem):
629 def __init__(self):
630 super(Anisotropic3DOrder2Gamma45_60k,self).__init__(n=19,order=2,dim=3,gamma=45,c=0.001)
631 class Anisotropic3DOrder2Gamma45_120k(AnisotropicProblem):
632 def __init__(self):
633 super(Anisotropic3DOrder2Gamma45_120k,self).__init__(n=24,order=2,dim=3,gamma=45,c=0.001)
634 class Anisotropic3DOrder2Gamma45_240k(AnisotropicProblem):
635 def __init__(self):
636 super(Anisotropic3DOrder2Gamma45_240k,self).__init__(n=31,order=2,dim=3,gamma=45,c=0.001)
637 class Anisotropic3DOrder2Gamma45_480k(AnisotropicProblem):
638 def __init__(self):
639 super(Anisotropic3DOrder2Gamma45_480k,self).__init__(n=39,order=2,dim=3,gamma=45,c=0.001)
640 class Anisotropic3DOrder2Gamma45_960k(AnisotropicProblem):
641 def __init__(self):
642 super(Anisotropic3DOrder2Gamma45_960k,self).__init__(n=49,order=2,dim=3,gamma=45,c=0.001)
643 class Anisotropic3DOrder2Gamma45_1920k(AnisotropicProblem):
644 def __init__(self):
645 super(Anisotropic3DOrder2Gamma45_1920k,self).__init__(n=62,order=2,dim=3,gamma=45,c=0.001)
646 class Anisotropic3DOrder2Gamma45_3840k(AnisotropicProblem):
647 def __init__(self):
648 super(Anisotropic3DOrder2Gamma45_3840k,self).__init__(n=78,order=2,dim=3,gamma=45,c=0.001)
649 class Anisotropic3DOrder2Gamma45_7680k(AnisotropicProblem):
650 def __init__(self):
651 super(Anisotropic3DOrder2Gamma45_7680k,self).__init__(n=98,order=2,dim=3,gamma=45,c=0.001)
652 class Anisotropic3DOrder2Gamma45_15360k(AnisotropicProblem):
653 def __init__(self):
654 super(Anisotropic3DOrder2Gamma45_15360k,self).__init__(n=124,order=2,dim=3,gamma=45,c=0.001)
655
656 if __name__=="__main__":
657 test=""
658 n0=30000
659 for d in [2,3]:
660 for o in [1,2]:
661 for g in [30,45]:
662 for i in range(10):
663 dofs=n0*2**i
664 n=int((float(dofs)**(1./float(d))-1)/o+0.5)
665 name="Anisotropic%sDOrder%sGamma%s_%sk"%(d,o,g,dofs/1000)
666 print "class %s(AnisotropicProblem):"%name
667 print " def __init__(self):"
668 print " super(%s,self).__init__(n=%s,order=%s,dim=%s,gamma=%s,c=0.001)"%(name,n,o,d,g)
669 test+="addProblem(%s())\n"%name
670 print test
671

  ViewVC Help
Powered by ViewVC 1.1.26