/[escript]/trunk/esys2/finley/test/python/RecTest.py
ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 104 - (hide annotations)
Fri Dec 17 07:43:12 2004 UTC (15 years, 7 months ago) by jgs
File MIME type: text/x-python
File size: 2941 byte(s)
*** empty log message ***

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

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26