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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 435 - (hide annotations)
Thu Jan 19 03:57:30 2006 UTC (13 years, 10 months ago) by gross
File MIME type: text/x-python
File size: 29700 byte(s)
minor change
1 gross 381 # $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 gross 389 * Laplace2Dorder2_?k
18     * Laplace3Dorder1_?k
19 gross 381 * Laplace3Dorder2_?k
20    
21 gross 416
22    
23 gross 381 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 gross 383 from esys.escript import Lsup,whereZero,kronecker
39 gross 381 from esys.escript.benchmark import BenchmarkProblem, Options, BenchmarkFilter
40     import esys.finley
41 gross 383 from esys.escript.linearPDEs import LinearPDE
42 gross 381 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 gross 383 class FinleyOptions(Options):
87     """
88     finley solver options to be handed over to paso
89 gross 381
90 gross 383 """
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 gross 435 LinearPDE.PASO: "PASO",
116     LinearPDE.RILU: "RILU",
117     LinearPDE.AMG: "AMG"
118 gross 383 }
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 gross 381 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 gross 383 pde.setTolerance(options.tolerance)
165     pde.setSolverMethod(options.solver_method,options.preconditioner)
166     pde.setSolverPackage(options.package)
167 gross 381 a=os.times()[4]
168 gross 383 uh=pde.getSolution(verbose=options.verbose)
169 gross 381 a=os.times()[4]-a
170     if u==None:
171 gross 383 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : None }
172 gross 381 else:
173     error=Lsup(u-uh)/Lsup(u)
174 gross 383 return {FinleyFilter.TIME : a , FinleyFilter.ERROR : error }
175 gross 381
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 gross 383 if self.__dim==2:
226     domain=esys.finley.Rectangle(n0=self.__n,n1=self.__n,order=self.__order)
227 gross 381 else:
228 gross 383 domain=esys.finley.Brick(n0=self.__n,n1=self.__n,n2=self.__n,order=self.__order)
229 gross 381 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 gross 383 pde=LinearPDE(domain)
251 gross 381 pde.setSymmetryOn()
252 gross 383 pde.setValue(A=kronecker(domain),q=msk,r=u)
253 gross 381 return pde,u
254    
255 gross 416 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 gross 389 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 gross 381 class Laplace2DOrder2_30k(LaplaceProblem):
327 gross 389 def __init__(self):
328     super(Laplace2DOrder2_30k,self).__init__(n=86,order=2,dim=2)
329 gross 381 class Laplace2DOrder2_60k(LaplaceProblem):
330 gross 389 def __init__(self):
331     super(Laplace2DOrder2_60k,self).__init__(n=122,order=2,dim=2)
332 gross 381 class Laplace2DOrder2_120k(LaplaceProblem):
333 gross 389 def __init__(self):
334     super(Laplace2DOrder2_120k,self).__init__(n=173,order=2,dim=2)
335 gross 381 class Laplace2DOrder2_240k(LaplaceProblem):
336 gross 389 def __init__(self):
337     super(Laplace2DOrder2_240k,self).__init__(n=244,order=2,dim=2)
338 gross 381 class Laplace2DOrder2_480k(LaplaceProblem):
339 gross 389 def __init__(self):
340     super(Laplace2DOrder2_480k,self).__init__(n=346,order=2,dim=2)
341 gross 381 class Laplace2DOrder2_960k(LaplaceProblem):
342 gross 389 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 gross 416 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 gross 389 if __name__=="__main__":
659     test=""
660     n0=30000
661     for d in [2,3]:
662 gross 416 for o in [1,2]:
663     for g in [30,45]:
664 gross 389 for i in range(10):
665     dofs=n0*2**i
666     n=int((float(dofs)**(1./float(d))-1)/o+0.5)
667 gross 416 name="Anisotropic%sDOrder%sGamma%s_%sk"%(d,o,g,dofs/1000)
668     print "class %s(AnisotropicProblem):"%name
669 gross 389 print " def __init__(self):"
670 gross 416 print " super(%s,self).__init__(n=%s,order=%s,dim=%s,gamma=%s,c=0.001)"%(name,n,o,d,g)
671 gross 389 test+="addProblem(%s())\n"%name
672     print test
673    

  ViewVC Help
Powered by ViewVC 1.1.26