Annotation of /trunk/finley/test/python/RecTest.py

Revision 82 - (hide annotations)
Tue Oct 26 06:53:54 2004 UTC (15 years, 5 months ago) by jgs
Original Path: trunk/esys2/finley/test/python/RecTest.py
File MIME type: text/x-python
File size: 3242 byte(s)
Initial revision

 1 jgs 82 # \$Id\$ 2 import sys 3 import os 4 import unittest 5 6 esys_root=os.getenv('ESYS_ROOT') 7 sys.path.append(esys_root+'/finley/lib') 8 sys.path.append(esys_root+'/escript/lib') 9 sys.path.append(esys_root+'/escript/py_src') 10 11 from escript import * 12 from util import * 13 from linearPDE import * 14 15 import finley 16 17 # 18 # this test the assemblage of problems with periodic boundary conditions: 19 # 20 numElements=11 21 sml=0.1 22 # 23 # test solution is u_ex=sin(2*Pi*n*x0)*...*sin(2*Pi*n*x_dim) 24 # 25 def TheTest(msh,constraints,reduce): 26 n=ContinuousFunction(msh) 27 x=n.getX() 28 # set a test problem: 29 u_ex=Scalar(1,what=n) 30 for i in range(msh.getDim()): 31 u_ex*=sin(2*Pi*x[i]) 32 mypde=linearPDE(A=Id(msh.getDim()),D=sml,Y=(sml+4*Pi**2*msh.getDim())*u_ex,q=constraints,r=u_ex) 33 mypde.setReducedOrderForEquationsTo(reduce) 34 return Lsup(mypde.getSolution()-u_ex)/Lsup(u_ex) 35 36 max_error=0 37 for onElements in [False,True]: 38 if onElements==True: 39 onElmtext=", with elements on faces" 40 else: 41 onElmtext="" 42 for order in [1,2]: 43 for reduce in [False,True]: 44 if reduce==True: 45 redtext=",reduced" 46 else: 47 redtext="" 48 for dim in [2,3]: 49 if dim==2: 50 for i0 in [True,False]: 51 for i1 in [True,False]: 52 msh=finley.Rectangle(numElements,numElements,order,periodic0=i0,periodic1=i1,useElementsOnFace=onElements) 53 n=ContinuousFunction(msh) 54 x=n.getX() 55 c=Scalar(0,what=n) 56 if i0==False: 57 c+=x[0].whereZero()+(x[0]-1.).whereZero() 58 if i1==False: 59 c+=x[1].whereZero()+(x[1]-1.).whereZero() 60 error=TheTest(msh,c,reduce) 61 text="Rectangle order = %d%s%s, periodic0= %d, periodic1= %d: error= %f"%(order,redtext,onElmtext,i0,i1,error) 62 print "@@ ",text 63 if error>max_error: 64 max_error=error 65 max_text=text 66 elif dim==3: 67 for i0 in [True,False]: 68 for i1 in [True,False]: 69 for i2 in [True,False]: 70 msh=finley.Brick(numElements,numElements,numElements,order,periodic0=i0,periodic1=i1,periodic2=i2,useElementsOnFace=onElements) 71 n=ContinuousFunction(msh) 72 x=n.getX() 73 c=Scalar(0,what=n) 74 if i0==False: 75 c+=x[0].whereZero()+(x[0]-1.).whereZero() 76 if i1==False: 77 c+=x[1].whereZero()+(x[1]-1.).whereZero() 78 if i2==False: 79 c+=x[2].whereZero()+(x[2]-1.).whereZero() 80 error=TheTest(msh,c,reduce) 81 text="Brick order = %d%s%s, periodic0= %d, periodic1= %d, periodic2= %d: error= %f"%(order,redtext,onElmtext,i0,i1,i2,error) 82 print "@@ ",text 83 if error>max_error: 84 max_error=error 85 max_text=text 86 87 print "@@@@ maximum error for :",max_text

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision