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

Diff of /trunk/finley/test/python/SimpleSolve.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/esys2/finley/test/python/SimpleSolve.py revision 117 by jgs, Fri Apr 1 05:48:57 2005 UTC trunk/finley/test/python/SimpleSolve.py revision 298 by gross, Fri Dec 2 05:42:11 2005 UTC
# Line 3  Line 3 
3  import sys  import sys
4  import os  import os
5  import unittest  import unittest
6    import time
7    
8  from esys.escript import *  from esys.escript import *
9  from esys.linearPDEs import *  from esys.escript.linearPDEs import *
10  from esys import finley  from esys import finley
11    
12    starttime = time.clock()
13    
14  print "\nSimpleSolve.py"  print "\nSimpleSolve.py"
15  print "--------------"  print "--------------"
16    
17  alpha=0.025  alpha=0.7
18    error_tol=1.e-5
19    
20  # generate mesh  # generate mesh
21    
# Line 19  alpha=0.025 Line 23  alpha=0.025
23  # mydomain=finley.Rectangle(140,140)  # mydomain=finley.Rectangle(140,140)
24    
25  # print "\nGenerate mesh: finley.Rectangle(4,4,1)=>"  # print "\nGenerate mesh: finley.Rectangle(4,4,1)=>"
26  # mydomain=finley.Rectangle(4,4,1)  mydomain=finley.Rectangle(150,10,1)
27    # mydomain=finley.Rectangle(190,190,1)
28    
29  print "\nGenerate mesh: finley.Rectangle(151,151,1)=>"  print "\nGenerate mesh: finley.Rectangle(151,151,1)=>"
30  mydomain=finley.Rectangle(151,151,1)  # mydomain=finley.Rectangle(151,151,1)
31  # mydomain=finley.Rectangle(128,128,1)  # mydomain=finley.Rectangle(128,128,1)
32    
33  print "\nSetup domain and functions"  print "\nSetup domain and functions"
# Line 45  u_ex=Scalar(1,n,True) Line 50  u_ex=Scalar(1,n,True)
50  print "x=e.getX():"  print "x=e.getX():"
51  x=e.getX()  x=e.getX()
52    
53  print "norm_u_ex=u_ex.Lsup():"  print "norm_u_ex=Lsup(u_ex):"
54  norm_u_ex=u_ex.Lsup()  norm_u_ex=Lsup(u_ex)
55    
56  print "\nGenerate a test solution (1)"  print "\nGenerate a test solution (1)"
57  print "----------------------------"  print "----------------------------"
# Line 54  print "----------------------------" Line 59  print "----------------------------"
59  print "mypde=LinearPDE( A=[[1.,0.8],[0.4,1.]], D=alpha, Y=alpha, domain=mydomain)"  print "mypde=LinearPDE( A=[[1.,0.8],[0.4,1.]], D=alpha, Y=alpha, domain=mydomain)"
60  mypde=LinearPDE(mydomain)  mypde=LinearPDE(mydomain)
61  mypde.setDebugOn()  mypde.setDebugOn()
62  mypde.setValue(A=[[1.,0.8],[0.4,1.]],D=alpha,Y=alpha)  mypde.setValue(A=[[1.,0.1],[0.04,1.]],D=alpha,Y=alpha)
63    
64  print "mypde.checkSymmetry()"  print "mypde.checkSymmetry()"
65  print mypde.checkSymmetry()  print mypde.checkSymmetry()
66    
67  print "\nIterative Solver (1)=>"  print "\nIterative Solver (1)=>"
68  # u_i=mypde.getSolution(preconditioner=ILU0,iter_max=3000)  mypde.setSolverMethod(mypde.BICGSTAB)
69  u_i=mypde.getSolution(iter_max=3000)  u_i=mypde.getSolution(verbose=True,iter_max=3000,preconditioner=mypde.ILU0)
   
70    
71  print "\nDirect Solver (1)=>"  print "\nDirect Solver (1)=>"
72  mypde.setSolverMethod(DIRECT)  mypde.setSolverMethod(mypde.DIRECT)
73  u_d=mypde.getSolution()  u_d=mypde.getSolution(verbose=True)
74    
75  print "\n***************************************************************"  print "\n***************************************************************"
76  error=u_ex-u_d  error=u_ex-u_d
77  print "norm of the error for direct solver is   : ",error.Lsup()/norm_u_ex  error_norm=Lsup(error)/norm_u_ex
78    print "norm of the error for direct solver is   : ",error_norm
79    if error_norm > error_tol:
80      print "### error norm exceeded maximum tolerance ###"
81      sys.exit(1)
82  error=u_ex-u_i  error=u_ex-u_i
83  print "norm of the error for iterative solver is: ",error.Lsup()/norm_u_ex  error_norm=Lsup(error)/norm_u_ex
84    print "norm of the error for iterative solver is: ",error_norm
85    if error_norm > error_tol:
86      print "### error norm exceeded maximum tolerance ###"
87      sys.exit(1)
88  print "***************************************************************"  print "***************************************************************"
89    
90  # get handles to nodes and elements 2  # get handles to nodes and elements 2
# Line 83  print "--------------------------------- Line 95  print "---------------------------------
95  print "x=n.getX():"  print "x=n.getX():"
96  x=n.getX()  x=n.getX()
97    
98  print "msk=x[0].whereZero()+(x[0]-1.).whereZero()"  print " msk=whereZero(x[0])+whereZero(x[0]-1.)"
99  msk=x[0].whereZero()+(x[0]-1.).whereZero()  msk=whereZero(x[0])+whereZero(x[0]-1.)
100    
101  print "mypde=LinearPDE(A=[[1.,0.],[0.,1.]],q=msk,r=u_ex)"  print "mypde=LinearPDE(A=[[1.,0.],[0.,1.]],q=msk,r=u_ex)"
102  mypde=LinearPDE(mydomain)  mypde=LinearPDE(mydomain)
# Line 101  print "----------------------------" Line 113  print "----------------------------"
113    
114  print "\nDirect Solver (2)=>"  print "\nDirect Solver (2)=>"
115    
116    #mypde.setSymmetryOn()
117    mypde.setTolerance(1.e-13)
118    
119  # mypde.setSymmetryOn() : is not woking yet!  # mypde.setSymmetryOn() : is not woking yet!
120  mypde.setSolverMethod(mypde.DIRECT)  mypde.setSolverMethod(mypde.DIRECT)
121  u_d=mypde.getSolution()  u_d=mypde.getSolution(verbose=True)
122    
123  print "\nIterative Solver (2)=>"  print "\nIterative Solver (2)=>"
124    
125  mypde.setSymmetryOn()  mypde.setSymmetryOn()
126  mypde.setSolverMethod(DEFAULT_METHOD)  mypde.setSolverMethod(mypde.ITERATIVE)
127  u_i=mypde.getSolution(iter_max=3000)  u_i=mypde.getSolution(verbose=True,iter_max=3000)
128    
129  print "\n******************************************************************"  print "\n******************************************************************"
130  error=u_ex-u_d  error=u_ex-u_d
131  print "norm of the error for direct solver is   : ",error.Lsup()/norm_u_ex  error_norm=Lsup(error)/norm_u_ex
132    print "norm of the error for direct solver is   : ",error_norm
133    if error_norm > error_tol:
134      print "### error norm exceeded maximum tolerance ###"
135      sys.exit(1)
136  error=u_ex-u_i  error=u_ex-u_i
137  print "norm of the error for iterative solver is: ",error.Lsup()/norm_u_ex  error_norm=Lsup(error)/norm_u_ex
138    print "norm of the error for iterative solver is: ",error_norm
139    if error_norm >  error_tol:
140      print "### error norm exceeded maximum tolerance ###"
141      sys.exit(1)
142  print "******************************************************************"  print "******************************************************************"
143    
144  print "\n-----"  print "\n-----"
145  print "Done."  print "Done."
146  print "-----"  print "-----"
147    
148    stoptime = time.clock()
149    elapsed = stoptime - starttime
150    print "\nElapsed time: ", elapsed, "\n"
151    
152    sys.exit(0)

Legend:
Removed from v.117  
changed lines
  Added in v.298

  ViewVC Help
Powered by ViewVC 1.1.26