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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 148 - (show annotations)
Tue Aug 23 01:24:31 2005 UTC (14 years, 2 months ago) by jgs
Original Path: trunk/esys2/finley/test/python/SimpleSolve.py
File MIME type: text/x-python
File size: 3664 byte(s)
Merge of development branch dev-02 back to main trunk on 2005-08-23

1 # $Id$
2
3 import sys
4 import os
5 import unittest
6
7 from escript.escript import *
8 from escript.linearPDEs import *
9 from finley import finley
10
11 print "\nSimpleSolve.py"
12 print "--------------"
13
14 alpha=0.07
15 error_tol=1.e-5
16
17 # generate mesh
18
19 # print "\nGenerate mesh: finley.Rectangle(9,12,1)=>"
20 # mydomain=finley.Rectangle(140,140)
21
22 # print "\nGenerate mesh: finley.Rectangle(4,4,1)=>"
23 mydomain=finley.Rectangle(190,190,1)
24
25 print "\nGenerate mesh: finley.Rectangle(151,151,1)=>"
26 # mydomain=finley.Rectangle(151,151,1)
27 # mydomain=finley.Rectangle(128,128,1)
28
29 print "\nSetup domain and functions"
30 print "--------------------------"
31
32 print "e=Function(mydomain):"
33 e=Function(mydomain)
34
35 print "n=ContinuousFunction(mydomain):"
36 n=ContinuousFunction(mydomain)
37
38 # get handles to nodes and elements 1
39
40 print "\nGet handles to nodes and elements(1)=>"
41 print "--------------------------------------"
42
43 print "u_ex=Scalar(1,n,True):"
44 u_ex=Scalar(1,n,True)
45
46 print "x=e.getX():"
47 x=e.getX()
48
49 print "norm_u_ex=u_ex.Lsup():"
50 norm_u_ex=u_ex.Lsup()
51
52 print "\nGenerate a test solution (1)"
53 print "----------------------------"
54
55 print "mypde=LinearPDE( A=[[1.,0.8],[0.4,1.]], D=alpha, Y=alpha, domain=mydomain)"
56 mypde=LinearPDE(mydomain)
57 mypde.setDebugOn()
58 mypde.setValue(A=[[1.,0.8],[0.4,1.]],D=alpha,Y=alpha)
59
60 print "mypde.checkSymmetry()"
61 print mypde.checkSymmetry()
62
63 print "\nIterative Solver (1)=>"
64 # u_i=mypde.getSolution(preconditioner=ILU0,iter_max=3000)
65 u_i=mypde.getSolution(iter_max=3000)
66
67 print "\nDirect Solver (1)=>"
68 mypde.setSolverMethod(mypde.DIRECT)
69 u_d=mypde.getSolution()
70
71 print "\n***************************************************************"
72 error=u_ex-u_d
73 error_norm=error.Lsup()/norm_u_ex
74 print "norm of the error for direct solver is : ",error_norm
75 if error_norm > error_tol:
76 print "### error norm exceeded maximum tolerance ###"
77 sys.exit(1)
78 error=u_ex-u_i
79 error_norm=error.Lsup()/norm_u_ex
80 print "norm of the error for iterative solver is: ",error_norm
81 if error_norm > error_tol:
82 print "### error norm exceeded maximum tolerance ###"
83 sys.exit(1)
84 print "***************************************************************"
85
86 # get handles to nodes and elements 2
87
88 print "\nGet handles to nodes and elements(2)=>"
89 print "--------------------------------------"
90
91 print "x=n.getX():"
92 x=n.getX()
93
94 print "msk=x[0].whereZero()+(x[0]-1.).whereZero()"
95 msk=x[0].whereZero()+(x[0]-1.).whereZero()
96
97 print "mypde=LinearPDE(A=[[1.,0.],[0.,1.]],q=msk,r=u_ex)"
98 mypde=LinearPDE(mydomain)
99 mypde.setDebugOn()
100 mypde.setValue(A=[[1.,0.],[0.,1.]],q=msk,r=u_ex)
101
102 print "mypde.checkSymmetry()"
103 print mypde.checkSymmetry()
104
105 # generate a test solution 2
106
107 print "\nGenerate a test solution (2)"
108 print "----------------------------"
109
110 print "\nDirect Solver (2)=>"
111
112 #mypde.setSymmetryOn()
113 mypde.setTolerance(1.e-13)
114
115 # mypde.setSymmetryOn() : is not woking yet!
116 mypde.setSolverMethod(mypde.DIRECT)
117 u_d=mypde.getSolution()
118
119 print "\nIterative Solver (2)=>"
120
121 mypde.setSymmetryOn()
122 mypde.setSolverMethod(mypde.DEFAULT_METHOD)
123 u_i=mypde.getSolution(iter_max=3000)
124
125 print "\n******************************************************************"
126 error=u_ex-u_d
127 error_norm=error.Lsup()/norm_u_ex
128 print "norm of the error for direct solver is : ",error_norm
129 if error_norm > error_tol:
130 print "### error norm exceeded maximum tolerance ###"
131 sys.exit(1)
132 error=u_ex-u_i
133 error_norm=error.Lsup()/norm_u_ex
134 print "norm of the error for iterative solver is: ",error_norm
135 if error_norm > error_tol:
136 print "### error norm exceeded maximum tolerance ###"
137 sys.exit(1)
138 print "******************************************************************"
139
140 print "\n-----"
141 print "Done."
142 print "-----"
143
144 sys.exit(0)

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26