/[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 435 - (show annotations)
Thu Jan 19 03:57:30 2006 UTC (17 years, 2 months ago) by gross
File MIME type: text/x-python
File size: 29700 byte(s)
minor change
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 LinearPDE.RILU: "RILU",
117 LinearPDE.AMG: "AMG"
118 }
119 name=""
120 if solver_method==None:
121 solver_method==LinearPDE.PRES20
122 else:
123 name+=self.strmap[solver_method]
124 if preconditioner==None:
125 preconditioner==LinearPDE.JACOBI
126 else:
127 if not name=="": name+="+"
128 name+=self.strmap[preconditioner]
129 if package==None:
130 package==LinearPDE.PASO
131 else:
132 if not name=="": name+=" with "
133 name+=self.strmap[package]
134 if tolerance==None:
135 tolerance=1.e-8
136 else:
137 if not name=="": name+=", "
138 name+="tol = %s"%tolerance
139 self.solver_method=solver_method
140 self.preconditioner=preconditioner
141 self.tolerance=tolerance
142 self.package=package
143 self.verbose=verbose
144 super(FinleyOptions,self).__init__(name=name)
145
146
147
148 class FinleyProblem(BenchmarkProblem):
149 """
150 The general benchmark problem for Finley
151 """
152 def run(self,options):
153 """
154 creates a domain and a PDE on this domain, solves it (with the given options) and returns the
155 elapsed time and the error.
156
157 @param options: paso solver options
158 @type options: L{PasoOptions}
159 @return: elapsed time and the error of calculated solution
160 @rtype: pair of C{float}
161 """
162 domain=self.getDomain()
163 pde,u=self.getTestProblem(domain)
164 pde.setTolerance(options.tolerance)
165 pde.setSolverMethod(options.solver_method,options.preconditioner)
166 pde.setSolverPackage(options.package)
167 a=os.times()[4]
168 uh=pde.getSolution(verbose=options.verbose)
169 a=os.times()[4]-a
170 if u==None:
171 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : None }
172 else:
173 error=Lsup(u-uh)/Lsup(u)
174 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : error }
175
176 def getTestProblem(self,domain):
177 """
178 returns a PDEto be solved and an exact solution
179
180 @param domain: the PDE domain
181 @type domain: L{escript.Domain}
182 @return: a linear PDE to be solved an a reference solution
183 @rtype: L{LinearPDE},L{escript.Data}
184 @remark: must be overwritten by a particular problem
185 """
186 raise NotImplementedError
187
188 def getDomain(self):
189 """
190 returns the domain of the problem
191
192 @return: a domain
193 @rtype: L{escript.Domain}
194 @remark: must be overwritten by a particular problem
195 """
196 raise NotImplementedError
197
198 class RegularFinleyProblem(FinleyProblem):
199 """
200 base class for finley problem on a rectangular mesh
201 """
202 def __init__(self,n=1,order=1,dim=2):
203 """
204 sets up a recangular mesh in finley on a unit cube/square
205
206 @param n: number of elements in each spactial direction
207 @type n: C{int}
208 @param order: element order
209 @type order: 1 or 2
210 @param dim: spatial dimension
211 @type n: 2 or 3
212 """
213 super(RegularFinleyProblem,self).__init__(name=str((order*n+1)**dim))
214 self.__n=n
215 self.__order=order
216 self.__dim=dim
217
218 def getDomain(self):
219 """
220 returns the unit square/cube with a rectangular mesh
221
222 @return: a domain
223 @rtype: L{escript.Domain}
224 """
225 if self.__dim==2:
226 domain=esys.finley.Rectangle(n0=self.__n,n1=self.__n,order=self.__order)
227 else:
228 domain=esys.finley.Brick(n0=self.__n,n1=self.__n,n2=self.__n,order=self.__order)
229 return domain
230
231 class LaplaceProblem(RegularFinleyProblem):
232 """
233 base class for the Lapalce eqaution on a rectangular mesh
234 """
235 def getTestProblem(self,domain):
236 """
237 returns a PDE and a test solution on the given domain
238
239 @param doamin: a domain
240 @type domain: L{escript.Domain}
241 @return: the Laplace equation and a test solution
242 @rtype: C{tuple} of C{LinearPDE} and C{escript.Data}
243 """
244 x=domain.getX()
245 msk=whereZero(x[0])+whereZero(x[0]-1.)
246 u=x[0]
247 for i in range(1,domain.getDim()):
248 msk+=whereZero(x[i])+whereZero(x[i]-1.)
249 u*=(x[i]-i)
250 pde=LinearPDE(domain)
251 pde.setSymmetryOn()
252 pde.setValue(A=kronecker(domain),q=msk,r=u)
253 return pde,u
254
255 class AnisotropicProblem(RegularFinleyProblem):
256 """
257 base class for the Anisotropic scalar problem on a rectangular mesh
258 """
259 def __init__(self,n,order,dim,gamma,c):
260 self.c=c
261 self.gamma=gamma
262 super(AnisotropicProblem,self).__init__(n,order,dim)
263
264
265 def getTestProblem(self,domain):
266 """
267 returns a PDE and a test solution on the given domain
268
269 @param doamin: a domain
270 @type domain: L{escript.Domain}
271 @return: the Laplace equation and a test solution
272 @rtype: C{tuple} of C{LinearPDE} and C{escript.Data}
273 """
274 x=domain.getX()
275 msk=whereZero(x[0])+whereZero(x[0]-1.)
276 u=x[0]
277 for i in range(1,domain.getDim()):
278 msk+=whereZero(x[i])+whereZero(x[i]-1.)
279 u*=(x[i]-i)
280
281 gamma_rad=self.gamma/360.*8*math.atan(1.)
282 cg=maths.cos(self.gamma_rad)
283 sg=maths.sin(self.gamma_rad)
284 C=kronecker(domain)
285 C[0,0]=cg**2+self.c*sg**2
286 C[1,0]=(self.c-1.)*cg*sg
287 C[0,1]=C[0,1]
288 C[1,1]=sg**2+self.c*cg**2
289 F=2*(1.-self.c)*cg*sg
290 if domain.getDim()==3: F*=x[2]-2.
291 pde=LinearPDE(domain)
292 pde.setSymmetryOn()
293 pde.setValue(A=C,Y=F,q=msk,r=u)
294 return pde,u
295
296 class Laplace2DOrder1_30k(LaplaceProblem):
297 def __init__(self):
298 super(Laplace2DOrder1_30k,self).__init__(n=172,order=1,dim=2)
299 class Laplace2DOrder1_60k(LaplaceProblem):
300 def __init__(self):
301 super(Laplace2DOrder1_60k,self).__init__(n=244,order=1,dim=2)
302 class Laplace2DOrder1_120k(LaplaceProblem):
303 def __init__(self):
304 super(Laplace2DOrder1_120k,self).__init__(n=345,order=1,dim=2)
305 class Laplace2DOrder1_240k(LaplaceProblem):
306 def __init__(self):
307 super(Laplace2DOrder1_240k,self).__init__(n=489,order=1,dim=2)
308 class Laplace2DOrder1_480k(LaplaceProblem):
309 def __init__(self):
310 super(Laplace2DOrder1_480k,self).__init__(n=692,order=1,dim=2)
311 class Laplace2DOrder1_960k(LaplaceProblem):
312 def __init__(self):
313 super(Laplace2DOrder1_960k,self).__init__(n=979,order=1,dim=2)
314 class Laplace2DOrder1_1920k(LaplaceProblem):
315 def __init__(self):
316 super(Laplace2DOrder1_1920k,self).__init__(n=1385,order=1,dim=2)
317 class Laplace2DOrder1_3840k(LaplaceProblem):
318 def __init__(self):
319 super(Laplace2DOrder1_3840k,self).__init__(n=1959,order=1,dim=2)
320 class Laplace2DOrder1_7680k(LaplaceProblem):
321 def __init__(self):
322 super(Laplace2DOrder1_7680k,self).__init__(n=2770,order=1,dim=2)
323 class Laplace2DOrder1_15360k(LaplaceProblem):
324 def __init__(self):
325 super(Laplace2DOrder1_15360k,self).__init__(n=3918,order=1,dim=2)
326 class Laplace2DOrder2_30k(LaplaceProblem):
327 def __init__(self):
328 super(Laplace2DOrder2_30k,self).__init__(n=86,order=2,dim=2)
329 class Laplace2DOrder2_60k(LaplaceProblem):
330 def __init__(self):
331 super(Laplace2DOrder2_60k,self).__init__(n=122,order=2,dim=2)
332 class Laplace2DOrder2_120k(LaplaceProblem):
333 def __init__(self):
334 super(Laplace2DOrder2_120k,self).__init__(n=173,order=2,dim=2)
335 class Laplace2DOrder2_240k(LaplaceProblem):
336 def __init__(self):
337 super(Laplace2DOrder2_240k,self).__init__(n=244,order=2,dim=2)
338 class Laplace2DOrder2_480k(LaplaceProblem):
339 def __init__(self):
340 super(Laplace2DOrder2_480k,self).__init__(n=346,order=2,dim=2)
341 class Laplace2DOrder2_960k(LaplaceProblem):
342 def __init__(self):
343 super(Laplace2DOrder2_960k,self).__init__(n=489,order=2,dim=2)
344 class Laplace2DOrder2_1920k(LaplaceProblem):
345 def __init__(self):
346 super(Laplace2DOrder2_1920k,self).__init__(n=692,order=2,dim=2)
347 class Laplace2DOrder2_3840k(LaplaceProblem):
348 def __init__(self):
349 super(Laplace2DOrder2_3840k,self).__init__(n=979,order=2,dim=2)
350 class Laplace2DOrder2_7680k(LaplaceProblem):
351 def __init__(self):
352 super(Laplace2DOrder2_7680k,self).__init__(n=1385,order=2,dim=2)
353 class Laplace2DOrder2_15360k(LaplaceProblem):
354 def __init__(self):
355 super(Laplace2DOrder2_15360k,self).__init__(n=1959,order=2,dim=2)
356 class Laplace3DOrder1_30k(LaplaceProblem):
357 def __init__(self):
358 super(Laplace3DOrder1_30k,self).__init__(n=30,order=1,dim=3)
359 class Laplace3DOrder1_60k(LaplaceProblem):
360 def __init__(self):
361 super(Laplace3DOrder1_60k,self).__init__(n=38,order=1,dim=3)
362 class Laplace3DOrder1_120k(LaplaceProblem):
363 def __init__(self):
364 super(Laplace3DOrder1_120k,self).__init__(n=48,order=1,dim=3)
365 class Laplace3DOrder1_240k(LaplaceProblem):
366 def __init__(self):
367 super(Laplace3DOrder1_240k,self).__init__(n=61,order=1,dim=3)
368 class Laplace3DOrder1_480k(LaplaceProblem):
369 def __init__(self):
370 super(Laplace3DOrder1_480k,self).__init__(n=77,order=1,dim=3)
371 class Laplace3DOrder1_960k(LaplaceProblem):
372 def __init__(self):
373 super(Laplace3DOrder1_960k,self).__init__(n=98,order=1,dim=3)
374 class Laplace3DOrder1_1920k(LaplaceProblem):
375 def __init__(self):
376 super(Laplace3DOrder1_1920k,self).__init__(n=123,order=1,dim=3)
377 class Laplace3DOrder1_3840k(LaplaceProblem):
378 def __init__(self):
379 super(Laplace3DOrder1_3840k,self).__init__(n=156,order=1,dim=3)
380 class Laplace3DOrder1_7680k(LaplaceProblem):
381 def __init__(self):
382 super(Laplace3DOrder1_7680k,self).__init__(n=196,order=1,dim=3)
383 class Laplace3DOrder1_15360k(LaplaceProblem):
384 def __init__(self):
385 super(Laplace3DOrder1_15360k,self).__init__(n=248,order=1,dim=3)
386 class Laplace3DOrder2_30k(LaplaceProblem):
387 def __init__(self):
388 super(Laplace3DOrder2_30k,self).__init__(n=15,order=2,dim=3)
389 class Laplace3DOrder2_60k(LaplaceProblem):
390 def __init__(self):
391 super(Laplace3DOrder2_60k,self).__init__(n=19,order=2,dim=3)
392 class Laplace3DOrder2_120k(LaplaceProblem):
393 def __init__(self):
394 super(Laplace3DOrder2_120k,self).__init__(n=24,order=2,dim=3)
395 class Laplace3DOrder2_240k(LaplaceProblem):
396 def __init__(self):
397 super(Laplace3DOrder2_240k,self).__init__(n=31,order=2,dim=3)
398 class Laplace3DOrder2_480k(LaplaceProblem):
399 def __init__(self):
400 super(Laplace3DOrder2_480k,self).__init__(n=39,order=2,dim=3)
401 class Laplace3DOrder2_960k(LaplaceProblem):
402 def __init__(self):
403 super(Laplace3DOrder2_960k,self).__init__(n=49,order=2,dim=3)
404 class Laplace3DOrder2_1920k(LaplaceProblem):
405 def __init__(self):
406 super(Laplace3DOrder2_1920k,self).__init__(n=62,order=2,dim=3)
407 class Laplace3DOrder2_3840k(LaplaceProblem):
408 def __init__(self):
409 super(Laplace3DOrder2_3840k,self).__init__(n=78,order=2,dim=3)
410 class Laplace3DOrder2_7680k(LaplaceProblem):
411 def __init__(self):
412 super(Laplace3DOrder2_7680k,self).__init__(n=98,order=2,dim=3)
413 class Laplace3DOrder2_15360k(LaplaceProblem):
414 def __init__(self):
415 super(Laplace3DOrder2_15360k,self).__init__(n=124,order=2,dim=3)
416
417 class Anisotropic2DOrder1Gamma30_30k(AnisotropicProblem):
418 def __init__(self):
419 super(Anisotropic2DOrder1Gamma30_30k,self).__init__(n=172,order=1,dim=2,gamma=30,c=0.001)
420 class Anisotropic2DOrder1Gamma30_60k(AnisotropicProblem):
421 def __init__(self):
422 super(Anisotropic2DOrder1Gamma30_60k,self).__init__(n=244,order=1,dim=2,gamma=30,c=0.001)
423 class Anisotropic2DOrder1Gamma30_120k(AnisotropicProblem):
424 def __init__(self):
425 super(Anisotropic2DOrder1Gamma30_120k,self).__init__(n=345,order=1,dim=2,gamma=30,c=0.001)
426 class Anisotropic2DOrder1Gamma30_240k(AnisotropicProblem):
427 def __init__(self):
428 super(Anisotropic2DOrder1Gamma30_240k,self).__init__(n=489,order=1,dim=2,gamma=30,c=0.001)
429 class Anisotropic2DOrder1Gamma30_480k(AnisotropicProblem):
430 def __init__(self):
431 super(Anisotropic2DOrder1Gamma30_480k,self).__init__(n=692,order=1,dim=2,gamma=30,c=0.001)
432 class Anisotropic2DOrder1Gamma30_960k(AnisotropicProblem):
433 def __init__(self):
434 super(Anisotropic2DOrder1Gamma30_960k,self).__init__(n=979,order=1,dim=2,gamma=30,c=0.001)
435 class Anisotropic2DOrder1Gamma30_1920k(AnisotropicProblem):
436 def __init__(self):
437 super(Anisotropic2DOrder1Gamma30_1920k,self).__init__(n=1385,order=1,dim=2,gamma=30,c=0.001)
438 class Anisotropic2DOrder1Gamma30_3840k(AnisotropicProblem):
439 def __init__(self):
440 super(Anisotropic2DOrder1Gamma30_3840k,self).__init__(n=1959,order=1,dim=2,gamma=30,c=0.001)
441 class Anisotropic2DOrder1Gamma30_7680k(AnisotropicProblem):
442 def __init__(self):
443 super(Anisotropic2DOrder1Gamma30_7680k,self).__init__(n=2770,order=1,dim=2,gamma=30,c=0.001)
444 class Anisotropic2DOrder1Gamma30_15360k(AnisotropicProblem):
445 def __init__(self):
446 super(Anisotropic2DOrder1Gamma30_15360k,self).__init__(n=3918,order=1,dim=2,gamma=30,c=0.001)
447 class Anisotropic2DOrder1Gamma45_30k(AnisotropicProblem):
448 def __init__(self):
449 super(Anisotropic2DOrder1Gamma45_30k,self).__init__(n=172,order=1,dim=2,gamma=45,c=0.001)
450 class Anisotropic2DOrder1Gamma45_60k(AnisotropicProblem):
451 def __init__(self):
452 super(Anisotropic2DOrder1Gamma45_60k,self).__init__(n=244,order=1,dim=2,gamma=45,c=0.001)
453 class Anisotropic2DOrder1Gamma45_120k(AnisotropicProblem):
454 def __init__(self):
455 super(Anisotropic2DOrder1Gamma45_120k,self).__init__(n=345,order=1,dim=2,gamma=45,c=0.001)
456 class Anisotropic2DOrder1Gamma45_240k(AnisotropicProblem):
457 def __init__(self):
458 super(Anisotropic2DOrder1Gamma45_240k,self).__init__(n=489,order=1,dim=2,gamma=45,c=0.001)
459 class Anisotropic2DOrder1Gamma45_480k(AnisotropicProblem):
460 def __init__(self):
461 super(Anisotropic2DOrder1Gamma45_480k,self).__init__(n=692,order=1,dim=2,gamma=45,c=0.001)
462 class Anisotropic2DOrder1Gamma45_960k(AnisotropicProblem):
463 def __init__(self):
464 super(Anisotropic2DOrder1Gamma45_960k,self).__init__(n=979,order=1,dim=2,gamma=45,c=0.001)
465 class Anisotropic2DOrder1Gamma45_1920k(AnisotropicProblem):
466 def __init__(self):
467 super(Anisotropic2DOrder1Gamma45_1920k,self).__init__(n=1385,order=1,dim=2,gamma=45,c=0.001)
468 class Anisotropic2DOrder1Gamma45_3840k(AnisotropicProblem):
469 def __init__(self):
470 super(Anisotropic2DOrder1Gamma45_3840k,self).__init__(n=1959,order=1,dim=2,gamma=45,c=0.001)
471 class Anisotropic2DOrder1Gamma45_7680k(AnisotropicProblem):
472 def __init__(self):
473 super(Anisotropic2DOrder1Gamma45_7680k,self).__init__(n=2770,order=1,dim=2,gamma=45,c=0.001)
474 class Anisotropic2DOrder1Gamma45_15360k(AnisotropicProblem):
475 def __init__(self):
476 super(Anisotropic2DOrder1Gamma45_15360k,self).__init__(n=3918,order=1,dim=2,gamma=45,c=0.001)
477 class Anisotropic2DOrder2Gamma30_30k(AnisotropicProblem):
478 def __init__(self):
479 super(Anisotropic2DOrder2Gamma30_30k,self).__init__(n=86,order=2,dim=2,gamma=30,c=0.001)
480 class Anisotropic2DOrder2Gamma30_60k(AnisotropicProblem):
481 def __init__(self):
482 super(Anisotropic2DOrder2Gamma30_60k,self).__init__(n=122,order=2,dim=2,gamma=30,c=0.001)
483 class Anisotropic2DOrder2Gamma30_120k(AnisotropicProblem):
484 def __init__(self):
485 super(Anisotropic2DOrder2Gamma30_120k,self).__init__(n=173,order=2,dim=2,gamma=30,c=0.001)
486 class Anisotropic2DOrder2Gamma30_240k(AnisotropicProblem):
487 def __init__(self):
488 super(Anisotropic2DOrder2Gamma30_240k,self).__init__(n=244,order=2,dim=2,gamma=30,c=0.001)
489 class Anisotropic2DOrder2Gamma30_480k(AnisotropicProblem):
490 def __init__(self):
491 super(Anisotropic2DOrder2Gamma30_480k,self).__init__(n=346,order=2,dim=2,gamma=30,c=0.001)
492 class Anisotropic2DOrder2Gamma30_960k(AnisotropicProblem):
493 def __init__(self):
494 super(Anisotropic2DOrder2Gamma30_960k,self).__init__(n=489,order=2,dim=2,gamma=30,c=0.001)
495 class Anisotropic2DOrder2Gamma30_1920k(AnisotropicProblem):
496 def __init__(self):
497 super(Anisotropic2DOrder2Gamma30_1920k,self).__init__(n=692,order=2,dim=2,gamma=30,c=0.001)
498 class Anisotropic2DOrder2Gamma30_3840k(AnisotropicProblem):
499 def __init__(self):
500 super(Anisotropic2DOrder2Gamma30_3840k,self).__init__(n=979,order=2,dim=2,gamma=30,c=0.001)
501 class Anisotropic2DOrder2Gamma30_7680k(AnisotropicProblem):
502 def __init__(self):
503 super(Anisotropic2DOrder2Gamma30_7680k,self).__init__(n=1385,order=2,dim=2,gamma=30,c=0.001)
504 class Anisotropic2DOrder2Gamma30_15360k(AnisotropicProblem):
505 def __init__(self):
506 super(Anisotropic2DOrder2Gamma30_15360k,self).__init__(n=1959,order=2,dim=2,gamma=30,c=0.001)
507 class Anisotropic2DOrder2Gamma45_30k(AnisotropicProblem):
508 def __init__(self):
509 super(Anisotropic2DOrder2Gamma45_30k,self).__init__(n=86,order=2,dim=2,gamma=45,c=0.001)
510 class Anisotropic2DOrder2Gamma45_60k(AnisotropicProblem):
511 def __init__(self):
512 super(Anisotropic2DOrder2Gamma45_60k,self).__init__(n=122,order=2,dim=2,gamma=45,c=0.001)
513 class Anisotropic2DOrder2Gamma45_120k(AnisotropicProblem):
514 def __init__(self):
515 super(Anisotropic2DOrder2Gamma45_120k,self).__init__(n=173,order=2,dim=2,gamma=45,c=0.001)
516 class Anisotropic2DOrder2Gamma45_240k(AnisotropicProblem):
517 def __init__(self):
518 super(Anisotropic2DOrder2Gamma45_240k,self).__init__(n=244,order=2,dim=2,gamma=45,c=0.001)
519 class Anisotropic2DOrder2Gamma45_480k(AnisotropicProblem):
520 def __init__(self):
521 super(Anisotropic2DOrder2Gamma45_480k,self).__init__(n=346,order=2,dim=2,gamma=45,c=0.001)
522 class Anisotropic2DOrder2Gamma45_960k(AnisotropicProblem):
523 def __init__(self):
524 super(Anisotropic2DOrder2Gamma45_960k,self).__init__(n=489,order=2,dim=2,gamma=45,c=0.001)
525 class Anisotropic2DOrder2Gamma45_1920k(AnisotropicProblem):
526 def __init__(self):
527 super(Anisotropic2DOrder2Gamma45_1920k,self).__init__(n=692,order=2,dim=2,gamma=45,c=0.001)
528 class Anisotropic2DOrder2Gamma45_3840k(AnisotropicProblem):
529 def __init__(self):
530 super(Anisotropic2DOrder2Gamma45_3840k,self).__init__(n=979,order=2,dim=2,gamma=45,c=0.001)
531 class Anisotropic2DOrder2Gamma45_7680k(AnisotropicProblem):
532 def __init__(self):
533 super(Anisotropic2DOrder2Gamma45_7680k,self).__init__(n=1385,order=2,dim=2,gamma=45,c=0.001)
534 class Anisotropic2DOrder2Gamma45_15360k(AnisotropicProblem):
535 def __init__(self):
536 super(Anisotropic2DOrder2Gamma45_15360k,self).__init__(n=1959,order=2,dim=2,gamma=45,c=0.001)
537 class Anisotropic3DOrder1Gamma30_30k(AnisotropicProblem):
538 def __init__(self):
539 super(Anisotropic3DOrder1Gamma30_30k,self).__init__(n=30,order=1,dim=3,gamma=30,c=0.001)
540 class Anisotropic3DOrder1Gamma30_60k(AnisotropicProblem):
541 def __init__(self):
542 super(Anisotropic3DOrder1Gamma30_60k,self).__init__(n=38,order=1,dim=3,gamma=30,c=0.001)
543 class Anisotropic3DOrder1Gamma30_120k(AnisotropicProblem):
544 def __init__(self):
545 super(Anisotropic3DOrder1Gamma30_120k,self).__init__(n=48,order=1,dim=3,gamma=30,c=0.001)
546 class Anisotropic3DOrder1Gamma30_240k(AnisotropicProblem):
547 def __init__(self):
548 super(Anisotropic3DOrder1Gamma30_240k,self).__init__(n=61,order=1,dim=3,gamma=30,c=0.001)
549 class Anisotropic3DOrder1Gamma30_480k(AnisotropicProblem):
550 def __init__(self):
551 super(Anisotropic3DOrder1Gamma30_480k,self).__init__(n=77,order=1,dim=3,gamma=30,c=0.001)
552 class Anisotropic3DOrder1Gamma30_960k(AnisotropicProblem):
553 def __init__(self):
554 super(Anisotropic3DOrder1Gamma30_960k,self).__init__(n=98,order=1,dim=3,gamma=30,c=0.001)
555 class Anisotropic3DOrder1Gamma30_1920k(AnisotropicProblem):
556 def __init__(self):
557 super(Anisotropic3DOrder1Gamma30_1920k,self).__init__(n=123,order=1,dim=3,gamma=30,c=0.001)
558 class Anisotropic3DOrder1Gamma30_3840k(AnisotropicProblem):
559 def __init__(self):
560 super(Anisotropic3DOrder1Gamma30_3840k,self).__init__(n=156,order=1,dim=3,gamma=30,c=0.001)
561 class Anisotropic3DOrder1Gamma30_7680k(AnisotropicProblem):
562 def __init__(self):
563 super(Anisotropic3DOrder1Gamma30_7680k,self).__init__(n=196,order=1,dim=3,gamma=30,c=0.001)
564 class Anisotropic3DOrder1Gamma30_15360k(AnisotropicProblem):
565 def __init__(self):
566 super(Anisotropic3DOrder1Gamma30_15360k,self).__init__(n=248,order=1,dim=3,gamma=30,c=0.001)
567 class Anisotropic3DOrder1Gamma45_30k(AnisotropicProblem):
568 def __init__(self):
569 super(Anisotropic3DOrder1Gamma45_30k,self).__init__(n=30,order=1,dim=3,gamma=45,c=0.001)
570 class Anisotropic3DOrder1Gamma45_60k(AnisotropicProblem):
571 def __init__(self):
572 super(Anisotropic3DOrder1Gamma45_60k,self).__init__(n=38,order=1,dim=3,gamma=45,c=0.001)
573 class Anisotropic3DOrder1Gamma45_120k(AnisotropicProblem):
574 def __init__(self):
575 super(Anisotropic3DOrder1Gamma45_120k,self).__init__(n=48,order=1,dim=3,gamma=45,c=0.001)
576 class Anisotropic3DOrder1Gamma45_240k(AnisotropicProblem):
577 def __init__(self):
578 super(Anisotropic3DOrder1Gamma45_240k,self).__init__(n=61,order=1,dim=3,gamma=45,c=0.001)
579 class Anisotropic3DOrder1Gamma45_480k(AnisotropicProblem):
580 def __init__(self):
581 super(Anisotropic3DOrder1Gamma45_480k,self).__init__(n=77,order=1,dim=3,gamma=45,c=0.001)
582 class Anisotropic3DOrder1Gamma45_960k(AnisotropicProblem):
583 def __init__(self):
584 super(Anisotropic3DOrder1Gamma45_960k,self).__init__(n=98,order=1,dim=3,gamma=45,c=0.001)
585 class Anisotropic3DOrder1Gamma45_1920k(AnisotropicProblem):
586 def __init__(self):
587 super(Anisotropic3DOrder1Gamma45_1920k,self).__init__(n=123,order=1,dim=3,gamma=45,c=0.001)
588 class Anisotropic3DOrder1Gamma45_3840k(AnisotropicProblem):
589 def __init__(self):
590 super(Anisotropic3DOrder1Gamma45_3840k,self).__init__(n=156,order=1,dim=3,gamma=45,c=0.001)
591 class Anisotropic3DOrder1Gamma45_7680k(AnisotropicProblem):
592 def __init__(self):
593 super(Anisotropic3DOrder1Gamma45_7680k,self).__init__(n=196,order=1,dim=3,gamma=45,c=0.001)
594 class Anisotropic3DOrder1Gamma45_15360k(AnisotropicProblem):
595 def __init__(self):
596 super(Anisotropic3DOrder1Gamma45_15360k,self).__init__(n=248,order=1,dim=3,gamma=45,c=0.001)
597 class Anisotropic3DOrder2Gamma30_30k(AnisotropicProblem):
598 def __init__(self):
599 super(Anisotropic3DOrder2Gamma30_30k,self).__init__(n=15,order=2,dim=3,gamma=30,c=0.001)
600 class Anisotropic3DOrder2Gamma30_60k(AnisotropicProblem):
601 def __init__(self):
602 super(Anisotropic3DOrder2Gamma30_60k,self).__init__(n=19,order=2,dim=3,gamma=30,c=0.001)
603 class Anisotropic3DOrder2Gamma30_120k(AnisotropicProblem):
604 def __init__(self):
605 super(Anisotropic3DOrder2Gamma30_120k,self).__init__(n=24,order=2,dim=3,gamma=30,c=0.001)
606 class Anisotropic3DOrder2Gamma30_240k(AnisotropicProblem):
607 def __init__(self):
608 super(Anisotropic3DOrder2Gamma30_240k,self).__init__(n=31,order=2,dim=3,gamma=30,c=0.001)
609 class Anisotropic3DOrder2Gamma30_480k(AnisotropicProblem):
610 def __init__(self):
611 super(Anisotropic3DOrder2Gamma30_480k,self).__init__(n=39,order=2,dim=3,gamma=30,c=0.001)
612 class Anisotropic3DOrder2Gamma30_960k(AnisotropicProblem):
613 def __init__(self):
614 super(Anisotropic3DOrder2Gamma30_960k,self).__init__(n=49,order=2,dim=3,gamma=30,c=0.001)
615 class Anisotropic3DOrder2Gamma30_1920k(AnisotropicProblem):
616 def __init__(self):
617 super(Anisotropic3DOrder2Gamma30_1920k,self).__init__(n=62,order=2,dim=3,gamma=30,c=0.001)
618 class Anisotropic3DOrder2Gamma30_3840k(AnisotropicProblem):
619 def __init__(self):
620 super(Anisotropic3DOrder2Gamma30_3840k,self).__init__(n=78,order=2,dim=3,gamma=30,c=0.001)
621 class Anisotropic3DOrder2Gamma30_7680k(AnisotropicProblem):
622 def __init__(self):
623 super(Anisotropic3DOrder2Gamma30_7680k,self).__init__(n=98,order=2,dim=3,gamma=30,c=0.001)
624 class Anisotropic3DOrder2Gamma30_15360k(AnisotropicProblem):
625 def __init__(self):
626 super(Anisotropic3DOrder2Gamma30_15360k,self).__init__(n=124,order=2,dim=3,gamma=30,c=0.001)
627 class Anisotropic3DOrder2Gamma45_30k(AnisotropicProblem):
628 def __init__(self):
629 super(Anisotropic3DOrder2Gamma45_30k,self).__init__(n=15,order=2,dim=3,gamma=45,c=0.001)
630 class Anisotropic3DOrder2Gamma45_60k(AnisotropicProblem):
631 def __init__(self):
632 super(Anisotropic3DOrder2Gamma45_60k,self).__init__(n=19,order=2,dim=3,gamma=45,c=0.001)
633 class Anisotropic3DOrder2Gamma45_120k(AnisotropicProblem):
634 def __init__(self):
635 super(Anisotropic3DOrder2Gamma45_120k,self).__init__(n=24,order=2,dim=3,gamma=45,c=0.001)
636 class Anisotropic3DOrder2Gamma45_240k(AnisotropicProblem):
637 def __init__(self):
638 super(Anisotropic3DOrder2Gamma45_240k,self).__init__(n=31,order=2,dim=3,gamma=45,c=0.001)
639 class Anisotropic3DOrder2Gamma45_480k(AnisotropicProblem):
640 def __init__(self):
641 super(Anisotropic3DOrder2Gamma45_480k,self).__init__(n=39,order=2,dim=3,gamma=45,c=0.001)
642 class Anisotropic3DOrder2Gamma45_960k(AnisotropicProblem):
643 def __init__(self):
644 super(Anisotropic3DOrder2Gamma45_960k,self).__init__(n=49,order=2,dim=3,gamma=45,c=0.001)
645 class Anisotropic3DOrder2Gamma45_1920k(AnisotropicProblem):
646 def __init__(self):
647 super(Anisotropic3DOrder2Gamma45_1920k,self).__init__(n=62,order=2,dim=3,gamma=45,c=0.001)
648 class Anisotropic3DOrder2Gamma45_3840k(AnisotropicProblem):
649 def __init__(self):
650 super(Anisotropic3DOrder2Gamma45_3840k,self).__init__(n=78,order=2,dim=3,gamma=45,c=0.001)
651 class Anisotropic3DOrder2Gamma45_7680k(AnisotropicProblem):
652 def __init__(self):
653 super(Anisotropic3DOrder2Gamma45_7680k,self).__init__(n=98,order=2,dim=3,gamma=45,c=0.001)
654 class Anisotropic3DOrder2Gamma45_15360k(AnisotropicProblem):
655 def __init__(self):
656 super(Anisotropic3DOrder2Gamma45_15360k,self).__init__(n=124,order=2,dim=3,gamma=45,c=0.001)
657
658 if __name__=="__main__":
659 test=""
660 n0=30000
661 for d in [2,3]:
662 for o in [1,2]:
663 for g in [30,45]:
664 for i in range(10):
665 dofs=n0*2**i
666 n=int((float(dofs)**(1./float(d))-1)/o+0.5)
667 name="Anisotropic%sDOrder%sGamma%s_%sk"%(d,o,g,dofs/1000)
668 print "class %s(AnisotropicProblem):"%name
669 print " def __init__(self):"
670 print " super(%s,self).__init__(n=%s,order=%s,dim=%s,gamma=%s,c=0.001)"%(name,n,o,d,g)
671 test+="addProblem(%s())\n"%name
672 print test
673

  ViewVC Help
Powered by ViewVC 1.1.26