Parent Directory
|
Revision Log
Transport class uses now useBackwardEuler rather than the mysterious theta.
1 | ksteube | 1809 | |
2 | ######################################################## | ||
3 | ksteube | 1312 | # |
4 | ksteube | 1809 | # Copyright (c) 2003-2008 by University of Queensland |
5 | # Earth Systems Science Computational Center (ESSCC) | ||
6 | # http://www.uq.edu.au/esscc | ||
7 | ksteube | 1312 | # |
8 | ksteube | 1809 | # Primary Business: Queensland, Australia |
9 | # Licensed under the Open Software License version 3.0 | ||
10 | # http://www.opensource.org/licenses/osl-3.0.php | ||
11 | ksteube | 1312 | # |
12 | ksteube | 1809 | ######################################################## |
13 | jgs | 149 | |
14 | ksteube | 1809 | __copyright__="""Copyright (c) 2003-2008 by University of Queensland |
15 | Earth Systems Science Computational Center (ESSCC) | ||
16 | http://www.uq.edu.au/esscc | ||
17 | Primary Business: Queensland, Australia""" | ||
18 | __license__="""Licensed under the Open Software License version 3.0 | ||
19 | http://www.opensource.org/licenses/osl-3.0.php""" | ||
20 | __url__="http://www.uq.edu.au/esscc/escript-finley" | ||
21 | |||
22 | jgs | 149 | """ |
23 | Test suite for linearPDEs class | ||
24 | |||
25 | The tests must be linked with a Domain class object in the setUp method: | ||
26 | |||
27 | from esys.finley import Rectangle | ||
28 | class Test_LinearPDEOnFinley(Test_LinearPDE): | ||
29 | def setUp(self): | ||
30 | self.domain = Rectangle(10,10,2) | ||
31 | gross | 798 | def tearDown(self): |
32 | del self.domain | ||
33 | jgs | 149 | suite = unittest.TestSuite() |
34 | suite.addTest(unittest.makeSuite(Test_LinearPDEOnFinley)) | ||
35 | unittest.TextTestRunner(verbosity=2).run(suite) | ||
36 | |||
37 | gross | 637 | @var __author__: name of author |
38 | @var __copyright__: copyrights | ||
39 | @var __license__: licence agreement | ||
40 | @var __url__: url entry point on documentation | ||
41 | @var __version__: version | ||
42 | @var __date__: date of the version | ||
43 | jgs | 149 | """ |
44 | |||
45 | __author__="Lutz Gross, l.gross@uq.edu.au" | ||
46 | |||
47 | gross | 2325 | from esys.escript.util import Lsup,kronecker,interpolate,whereZero, outer, swap_axes |
48 | ksteube | 1312 | from esys.escript import Function,FunctionOnBoundary,FunctionOnContactZero,Solution,ReducedSolution,Vector,ContinuousFunction,Scalar, ReducedFunction,ReducedFunctionOnBoundary,ReducedFunctionOnContactZero,Data, Tensor4, Tensor |
49 | gross | 2325 | from esys.escript.linearPDEs import LinearPDE,IllegalCoefficientValue,Poisson, IllegalCoefficientFunctionSpace, TransportPDE, IllegalCoefficient, Helmholtz, LameEquation |
50 | jgs | 149 | import numarray |
51 | import unittest | ||
52 | |||
53 | class Test_linearPDEs(unittest.TestCase): | ||
54 | TOL=1.e-6 | ||
55 | jgs | 153 | SOLVER_TOL=1.e-10 |
56 | jgs | 149 | DEBUG=False |
57 | VERBOSE=False | ||
58 | def check(self,arg,ref_arg,tol=None): | ||
59 | """ | ||
60 | checks if arg and ref_arg are nearly identical using the L{Lsup<esys.escript.util.Lsup>} | ||
61 | """ | ||
62 | if tol==None: tol=self.TOL | ||
63 | return Lsup(arg-ref_arg)<=tol*Lsup(ref_arg) | ||
64 | |||
65 | gross | 2325 | class Test_LameEquation(Test_linearPDEs): |
66 | |||
67 | def test_config(self): | ||
68 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
69 | d=self.domain.getDim() | ||
70 | self.failUnlessEqual((mypde.getNumEquations(),mypde.getNumSolutions(),mypde.isSymmetric()),(d,d,True),"set up incorrect") | ||
71 | |||
72 | def test_setCoefficient_q(self): | ||
73 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
74 | x=self.domain.getX() | ||
75 | mypde.setValue(q=x) | ||
76 | |||
77 | q_ref=interpolate(x,Solution(self.domain)) | ||
78 | self.failUnless(self.check(mypde.getCoefficient("A"),0),"A is not 0") | ||
79 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
80 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
81 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
82 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
83 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
84 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
85 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
86 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
87 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
88 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
89 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
90 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
91 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
92 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
93 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
94 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
95 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
96 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
97 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
98 | self.failUnless(self.check(mypde.getCoefficient("q"),q_ref),"q is not empty") | ||
99 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
100 | |||
101 | def test_setCoefficient_r(self): | ||
102 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
103 | x=self.domain.getX() | ||
104 | mypde.setValue(r=x) | ||
105 | |||
106 | r_ref=interpolate(x,Solution(self.domain)) | ||
107 | self.failUnless(self.check(mypde.getCoefficient("A"),0),"A is not 0") | ||
108 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
109 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
110 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
111 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
112 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
113 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
114 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
115 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
116 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
117 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
118 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
119 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
120 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
121 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
122 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
123 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
124 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
125 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
126 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
127 | self.failUnless(self.check(mypde.getCoefficient("r"),r_ref),"r is nor x") | ||
128 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
129 | |||
130 | |||
131 | def test_setCoefficient_F(self): | ||
132 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
133 | x=self.domain.getX() | ||
134 | mypde.setValue(F=x) | ||
135 | |||
136 | Y_ref=interpolate(x,Function(self.domain)) | ||
137 | self.failUnless(self.check(mypde.getCoefficient("A"),0),"A is not 0") | ||
138 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
139 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
140 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
141 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
142 | self.failUnless(self.check(mypde.getCoefficient("Y"),Y_ref),"Y is not x") | ||
143 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
144 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
145 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
146 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
147 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
148 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
149 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
150 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
151 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
152 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
153 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
154 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
155 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
156 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
157 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
158 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
159 | |||
160 | def test_setCoefficient_f(self): | ||
161 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
162 | x=self.domain.getX() | ||
163 | mypde.setValue(f=x) | ||
164 | |||
165 | y_ref=interpolate(x,FunctionOnBoundary(self.domain)) | ||
166 | self.failUnless(self.check(mypde.getCoefficient("A"),0),"A is not 0") | ||
167 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
168 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
169 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
170 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
171 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
172 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
173 | self.failUnless(self.check(mypde.getCoefficient("y"),y_ref),"d is not x[0]") | ||
174 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
175 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
176 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
177 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
178 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
179 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
180 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
181 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"X_reduced is not empty") | ||
182 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
183 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
184 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
185 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
186 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
187 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
188 | |||
189 | def test_setCoefficient_sigma(self): | ||
190 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
191 | x=self.domain.getX() | ||
192 | mypde.setValue(sigma=outer(x,x)) | ||
193 | |||
194 | X_ref=interpolate(outer(x,x),Function(self.domain)) | ||
195 | self.failUnless(self.check(mypde.getCoefficient("A"),0),"A is not 0") | ||
196 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
197 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
198 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
199 | self.failUnless(self.check(mypde.getCoefficient("X"),X_ref),"X is not x X x") | ||
200 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
201 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
202 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
203 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
204 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
205 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
206 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
207 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
208 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
209 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
210 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"X_reduced is not empty") | ||
211 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
212 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
213 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
214 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
215 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
216 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
217 | |||
218 | def test_setCoefficient_lambda(self): | ||
219 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
220 | x=self.domain.getX() | ||
221 | mypde.setValue(lame_lambda=x[0]) | ||
222 | |||
223 | |||
224 | k3=kronecker(Function(self.domain)) | ||
225 | k3Xk3=outer(k3,k3) | ||
226 | A_ref=x[0]*k3Xk3 | ||
227 | |||
228 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
229 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
230 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
231 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
232 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
233 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
234 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
235 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
236 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
237 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
238 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
239 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
240 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
241 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
242 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
243 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
244 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
245 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
246 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
247 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
248 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
249 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
250 | |||
251 | def test_setCoefficient_mu(self): | ||
252 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
253 | x=self.domain.getX() | ||
254 | mypde.setValue(lame_mu=x[0]) | ||
255 | |||
256 | |||
257 | k3=kronecker(Function(self.domain)) | ||
258 | k3Xk3=outer(k3,k3) | ||
259 | A_ref=x[0]*(swap_axes(k3Xk3,0,3)+swap_axes(k3Xk3,1,3)) | ||
260 | |||
261 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
262 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
263 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
264 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
265 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
266 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
267 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
268 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
269 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
270 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
271 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
272 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
273 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
274 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
275 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
276 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
277 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
278 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
279 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
280 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
281 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
282 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
283 | |||
284 | def test_setCoefficient_lambdamu(self): | ||
285 | mypde=LameEquation(self.domain,debug=self.DEBUG) | ||
286 | x=self.domain.getX() | ||
287 | mypde.setValue(lame_lambda=x[0], lame_mu=x[1]) | ||
288 | |||
289 | k3=kronecker(Function(self.domain)) | ||
290 | k3Xk3=outer(k3,k3) | ||
291 | A_ref=x[0]*k3Xk3+x[1]*(swap_axes(k3Xk3,0,3)+swap_axes(k3Xk3,1,3)) | ||
292 | |||
293 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
294 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
295 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
296 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
297 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
298 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
299 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
300 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
301 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
302 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
303 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
304 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
305 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
306 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
307 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
308 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
309 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
310 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
311 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
312 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
313 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
314 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
315 | |||
316 | def test_solve(self): | ||
317 | d=self.domain.getDim() | ||
318 | mypde=LameEquation(self.domain) | ||
319 | cf=ContinuousFunction(self.domain) | ||
320 | x=cf.getX() | ||
321 | u_ex=x | ||
322 | msk=Vector(0.,cf) | ||
323 | for i in range(d): msk[i]=whereZero(x[i]) | ||
324 | mypde.setValue(q=msk,r=u_ex,lame_mu=3,lame_lambda=50,f=(2*3+50*d)*FunctionOnBoundary(self.domain).getNormal()) | ||
325 | |||
326 | u=mypde.getSolution() | ||
327 | self.failUnless(self.check(u,u_ex,10*self.TOL),"incorrect solution") | ||
328 | |||
329 | gross | 2323 | class Test_Helmholtz(Test_linearPDEs): |
330 | |||
331 | def test_config(self): | ||
332 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
333 | self.failUnlessEqual((mypde.getNumEquations(),mypde.getNumSolutions(),mypde.isSymmetric()),(1,1,True),"set up incorrect") | ||
334 | def test_setCoefficient_q(self): | ||
335 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
336 | x=self.domain.getX() | ||
337 | mypde.setValue(q=whereZero(x[0])) | ||
338 | |||
339 | q_ref=interpolate(whereZero(x[0]),Solution(self.domain)) | ||
340 | A_ref=kronecker(self.domain) | ||
341 | |||
342 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
343 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
344 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
345 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
346 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
347 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
348 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
349 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
350 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
351 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
352 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
353 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
354 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
355 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
356 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
357 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
358 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
359 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
360 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
361 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
362 | self.failUnless(self.check(mypde.getCoefficient("q"),q_ref),"q is not empty") | ||
363 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
364 | |||
365 | def test_setCoefficient_r(self): | ||
366 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
367 | x=self.domain.getX() | ||
368 | mypde.setValue(r=x[0]) | ||
369 | |||
370 | r_ref=interpolate(x[0],Solution(self.domain)) | ||
371 | A_ref=kronecker(self.domain) | ||
372 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
373 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
374 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
375 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
376 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
377 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
378 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
379 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
380 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
381 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
382 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
383 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
384 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
385 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
386 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
387 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
388 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
389 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
390 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
391 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
392 | self.failUnless(self.check(mypde.getCoefficient("r"),r_ref),"r is nor x[0]") | ||
393 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
394 | |||
395 | |||
396 | def test_setCoefficient_f(self): | ||
397 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
398 | x=self.domain.getX() | ||
399 | mypde.setValue(f=x[0]) | ||
400 | |||
401 | Y_ref=interpolate(x[0],Function(self.domain)) | ||
402 | A_ref=kronecker(self.domain) | ||
403 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
404 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
405 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
406 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
407 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
408 | self.failUnless(self.check(mypde.getCoefficient("Y"),Y_ref),"Y is not x[0]") | ||
409 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
410 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
411 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
412 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
413 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
414 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
415 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
416 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
417 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
418 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
419 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
420 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
421 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
422 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
423 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
424 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
425 | |||
426 | def test_setCoefficient_alpha(self): | ||
427 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
428 | x=self.domain.getX() | ||
429 | mypde.setValue(alpha=x[0]) | ||
430 | |||
431 | d_ref=interpolate(x[0],FunctionOnBoundary(self.domain)) | ||
432 | A_ref=kronecker(self.domain) | ||
433 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
434 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
435 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
436 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
437 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
438 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
439 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
440 | self.failUnless(self.check(mypde.getCoefficient("d"),d_ref),"d is not x[0]") | ||
441 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
442 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
443 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
444 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
445 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
446 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
447 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
448 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"X_reduced is not empty") | ||
449 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
450 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
451 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
452 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
453 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
454 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
455 | |||
456 | def test_setCoefficient_g(self): | ||
457 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
458 | x=self.domain.getX() | ||
459 | mypde.setValue(g=x[0]) | ||
460 | |||
461 | y_ref=interpolate(x[0],FunctionOnBoundary(self.domain)) | ||
462 | A_ref=kronecker(self.domain) | ||
463 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
464 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
465 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
466 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
467 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
468 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
469 | self.failUnless(self.check(mypde.getCoefficient("y"),y_ref),"y is not x[0]") | ||
470 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
471 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
472 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
473 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
474 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
475 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
476 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
477 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
478 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
479 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
480 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
481 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
482 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
483 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
484 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
485 | |||
486 | def test_setCoefficient_omega(self): | ||
487 | mypde=Helmholtz(self.domain,debug=self.DEBUG) | ||
488 | x=self.domain.getX() | ||
489 | mypde.setValue(omega=x[0]) | ||
490 | |||
491 | D_ref=interpolate(x[0],Function(self.domain)) | ||
492 | A_ref=kronecker(self.domain) | ||
493 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") | ||
494 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
495 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
496 | self.failUnless(self.check(mypde.getCoefficient("D"),D_ref),"D is not x[0]") | ||
497 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
498 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
499 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
500 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
501 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
502 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
503 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
504 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
505 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
506 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
507 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
508 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
509 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
510 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
511 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
512 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
513 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
514 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
515 | |||
516 | def test_solve(self): | ||
517 | d=self.domain.getDim() | ||
518 | cf=ContinuousFunction(self.domain) | ||
519 | u_ex=Scalar(1.,cf) | ||
520 | mypde=Helmholtz(self.domain) | ||
521 | mypde.setValue(f=3,omega=3,alpha=2,g=2) | ||
522 | u=mypde.getSolution() | ||
523 | self.failUnless(self.check(u,u_ex,10*self.TOL),"incorrect solution") | ||
524 | |||
525 | jgs | 149 | class Test_Poisson(Test_linearPDEs): |
526 | |||
527 | def test_config(self): | ||
528 | mypde=Poisson(self.domain,debug=self.DEBUG) | ||
529 | self.failUnlessEqual((mypde.getNumEquations(),mypde.getNumSolutions(),mypde.isSymmetric()),(1,1,True),"set up incorrect") | ||
530 | def test_setCoefficient_q(self): | ||
531 | mypde=Poisson(self.domain,debug=self.DEBUG) | ||
532 | x=self.domain.getX() | ||
533 | gross | 304 | q_ref=interpolate(whereZero(x[0]),Solution(self.domain)) |
534 | jgs | 149 | A_ref=kronecker(self.domain) |
535 | gross | 304 | mypde.setValue(q=whereZero(x[0])) |
536 | gross | 1841 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") |
537 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
538 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
539 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
540 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
541 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
542 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
543 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
544 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
545 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
546 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
547 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
548 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
549 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
550 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
551 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
552 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
553 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
554 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
555 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
556 | self.failUnless(self.check(mypde.getCoefficient("q"),q_ref),"q is not empty") | ||
557 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
558 | jgs | 149 | def test_setCoefficient_f(self): |
559 | mypde=Poisson(self.domain,debug=self.DEBUG) | ||
560 | x=self.domain.getX() | ||
561 | Y_ref=interpolate(x[0],Function(self.domain)) | ||
562 | A_ref=kronecker(self.domain) | ||
563 | mypde.setValue(f=x[0]) | ||
564 | gross | 1841 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") |
565 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
566 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
567 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
568 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
569 | self.failUnless(self.check(mypde.getCoefficient("Y"),Y_ref),"Y is not x[0]") | ||
570 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
571 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
572 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
573 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
574 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
575 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
576 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
577 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
578 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
579 | self.failUnless(mypde.getCoefficient("Y_reduced").isEmpty(),"Y_reduced is not empty") | ||
580 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
581 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
582 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
583 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
584 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
585 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
586 | gross | 1072 | def test_setCoefficient_f_reduced(self): |
587 | mypde=Poisson(self.domain,debug=self.DEBUG) | ||
588 | x=self.domain.getX() | ||
589 | Y_ref=interpolate(x[0],ReducedFunction(self.domain)) | ||
590 | A_ref=kronecker(self.domain) | ||
591 | mypde.setValue(f_reduced=x[0]) | ||
592 | gross | 1841 | self.failUnless(self.check(mypde.getCoefficient("A"),A_ref),"A is not kronecker") |
593 | self.failUnless(mypde.getCoefficient("B").isEmpty(),"B is not empty") | ||
594 | self.failUnless(mypde.getCoefficient("C").isEmpty(),"C is not empty") | ||
595 | self.failUnless(mypde.getCoefficient("D").isEmpty(),"D is not empty") | ||
596 | self.failUnless(mypde.getCoefficient("X").isEmpty(),"X is not empty") | ||
597 | self.failUnless(mypde.getCoefficient("Y").isEmpty(),"Y is not empty") | ||
598 | self.failUnless(mypde.getCoefficient("y").isEmpty(),"y is not empty") | ||
599 | self.failUnless(mypde.getCoefficient("d").isEmpty(),"d is not empty") | ||
600 | self.failUnless(mypde.getCoefficient("d_contact").isEmpty(),"d_contact is not empty") | ||
601 | self.failUnless(mypde.getCoefficient("y_contact").isEmpty(),"y_contact is not empty") | ||
602 | self.failUnless(mypde.getCoefficient("A_reduced").isEmpty(),"A_reduced is not empty") | ||
603 | self.failUnless(mypde.getCoefficient("B_reduced").isEmpty(),"B_reduced is not empty") | ||
604 | self.failUnless(mypde.getCoefficient("C_reduced").isEmpty(),"C_reduced is not empty") | ||
605 | self.failUnless(mypde.getCoefficient("D_reduced").isEmpty(),"D_reduced is not empty") | ||
606 | self.failUnless(mypde.getCoefficient("X_reduced").isEmpty(),"X_reduced is not empty") | ||
607 | self.failUnless(self.check(mypde.getCoefficient("Y_reduced"),Y_ref),"Y_reduced is not x[0]") | ||
608 | self.failUnless(mypde.getCoefficient("y_reduced").isEmpty(),"y_reduced is not empty") | ||
609 | self.failUnless(mypde.getCoefficient("d_reduced").isEmpty(),"d_reduced is not empty") | ||
610 | self.failUnless(mypde.getCoefficient("d_contact_reduced").isEmpty(),"d_contact_reduced is not empty") | ||
611 | self.failUnless(mypde.getCoefficient("y_contact_reduced").isEmpty(),"y_contact_reduced is not empty") | ||
612 | self.failUnless(mypde.getCoefficient("q").isEmpty(),"q is not empty") | ||
613 | self.failUnless(mypde.getCoefficient("r").isEmpty(),"r is not empty") | ||
614 | jgs | 149 | def test_solve(self): |
615 | d=self.domain.getDim() | ||
616 | cf=ContinuousFunction(self.domain) | ||
617 | x=cf.getX() | ||
618 | #construct exact solution: | ||
619 | u_ex=Scalar(1.,cf) | ||
620 | for i in range(d): | ||
621 | u_ex*=x[i]*(2.-x[i]) | ||
622 | #construct mask: | ||
623 | msk=Scalar(0.,cf) | ||
624 | for i in range(d): | ||
625 | gross | 304 | msk+=whereZero(x[i]) |
626 | jgs | 149 | #construct right hand side |
627 | f=Scalar(0,cf) | ||
628 | for i in range(d): | ||
629 | f_p=Scalar(1,cf) | ||
630 | for j in range(d): | ||
631 | if i==j: | ||
632 | f_p*=2. | ||
633 | else: | ||
634 | f_p*=x[j]*(2-x[j]) | ||
635 | f+=f_p | ||
636 | mypde=Poisson(self.domain) | ||
637 | mypde.setValue(f=f,q=msk) | ||
638 | u=mypde.getSolution() | ||
639 | self.failUnless(self.check(u,u_ex,10*self.TOL),"incorrect solution") | ||
640 | |||
641 | gross | 855 | class Test_LinearPDE_noLumping(Test_linearPDEs): |
642 | jgs | 149 | N=4 |
643 | def test_setCoefficient_WithIllegalFunctionSpace(self): | ||
644 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
645 | gross | 1859 | self.failUnlessRaises(IllegalCoefficientFunctionSpace,mypde.setValue, C=Vector(0.,FunctionOnBoundary(self.domain))) |
646 | |||
647 | def test_setCoefficient_WithWrongName(self): | ||
648 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
649 | self.failUnlessRaises(IllegalCoefficient, mypde.setValue, ROMA=0.) | ||
650 | |||
651 | jgs | 149 | def test_resetCoefficient_WithWrongShape(self): |
652 | mypde=LinearPDE(self.domain,numEquations=2,debug=self.DEBUG) | ||
653 | gross | 1859 | self.failUnlessRaises(IllegalCoefficientValue, mypde.setValue, C=0.) |
654 | |||
655 | jgs | 149 | def test_reducedOn(self): |
656 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
657 | x=self.domain.getX() | ||
658 | mypde.setReducedOrderOn() | ||
659 | mypde.setValue(A=kronecker(self.domain),D=x[0],Y=x[0]) | ||
660 | u=mypde.getSolution() | ||
661 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
662 | |||
663 | def test_attemptToChangeOrderAfterDefinedCoefficient(self): | ||
664 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
665 | mypde.setValue(D=1.) | ||
666 | gross | 1859 | self.failUnlessRaises(RuntimeError,mypde.setReducedOrderOn) |
667 | jgs | 149 | |
668 | def test_reducedOnConfig(self): | ||
669 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
670 | mypde.setReducedOrderOn() | ||
671 | self.failUnlessEqual((mypde.getFunctionSpaceForSolution(),mypde.getFunctionSpaceForEquation()),(ReducedSolution(self.domain),ReducedSolution(self.domain)),"reduced function spaces expected.") | ||
672 | # | ||
673 | # set coefficients for scalars: | ||
674 | # | ||
675 | def test_setCoefficient_A_Scalar(self): | ||
676 | d=self.domain.getDim() | ||
677 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
678 | mypde.setValue(A=numarray.ones((d,d))) | ||
679 | gross | 1841 | coeff=mypde.getCoefficient("A") |
680 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,d),Function(self.domain),1,1)) |
681 | def test_setCoefficient_B_Scalar(self): | ||
682 | d=self.domain.getDim() | ||
683 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
684 | mypde.setValue(B=numarray.ones((d,))) | ||
685 | gross | 1841 | coeff=mypde.getCoefficient("B") |
686 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),Function(self.domain),1,1)) |
687 | def test_setCoefficient_C_Scalar(self): | ||
688 | d=self.domain.getDim() | ||
689 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
690 | mypde.setValue(C=numarray.ones((d,))) | ||
691 | gross | 1841 | coeff=mypde.getCoefficient("C") |
692 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),Function(self.domain),1,1)) |
693 | def test_setCoefficient_D_Scalar(self): | ||
694 | d=self.domain.getDim() | ||
695 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
696 | mypde.setValue(D=1.) | ||
697 | gross | 1841 | coeff=mypde.getCoefficient("D") |
698 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),Function(self.domain),1,1)) |
699 | def test_setCoefficient_X_Scalar(self): | ||
700 | d=self.domain.getDim() | ||
701 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
702 | mypde.setValue(X=numarray.ones((d,))) | ||
703 | gross | 1841 | coeff=mypde.getCoefficient("X") |
704 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((d,),Function(self.domain),1)) |
705 | def test_setCoefficient_Y_Scalar(self): | ||
706 | d=self.domain.getDim() | ||
707 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
708 | mypde.setValue(Y=1.) | ||
709 | gross | 1841 | coeff=mypde.getCoefficient("Y") |
710 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),Function(self.domain),1)) |
711 | def test_setCoefficient_y_Scalar(self): | ||
712 | d=self.domain.getDim() | ||
713 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
714 | mypde.setValue(y=1.) | ||
715 | gross | 1841 | coeff=mypde.getCoefficient("y") |
716 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),FunctionOnBoundary(self.domain),1)) |
717 | def test_setCoefficient_d_Scalar(self): | ||
718 | d=self.domain.getDim() | ||
719 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
720 | mypde.setValue(d=1.) | ||
721 | gross | 1841 | coeff=mypde.getCoefficient("d") |
722 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),FunctionOnBoundary(self.domain),1,1)) |
723 | def test_setCoefficient_d_contact_Scalar(self): | ||
724 | d=self.domain.getDim() | ||
725 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
726 | mypde.setValue(d_contact=1.) | ||
727 | gross | 1841 | coeff=mypde.getCoefficient("d_contact") |
728 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),FunctionOnContactZero(self.domain),1,1)) |
729 | def test_setCoefficient_y_contact_Scalar(self): | ||
730 | d=self.domain.getDim() | ||
731 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
732 | mypde.setValue(y_contact=1.) | ||
733 | gross | 1841 | coeff=mypde.getCoefficient("y_contact") |
734 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),FunctionOnContactZero(self.domain),1)) |
735 | gross | 1072 | def test_setCoefficient_A_reduced_Scalar(self): |
736 | d=self.domain.getDim() | ||
737 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
738 | mypde.setValue(A_reduced=numarray.ones((d,d))) | ||
739 | gross | 1841 | coeff=mypde.getCoefficient("A_reduced") |
740 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,d),ReducedFunction(self.domain),1,1)) |
741 | def test_setCoefficient_B_reduced_Scalar(self): | ||
742 | d=self.domain.getDim() | ||
743 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
744 | mypde.setValue(B_reduced=numarray.ones((d,))) | ||
745 | gross | 1841 | coeff=mypde.getCoefficient("B_reduced") |
746 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1,1)) |
747 | def test_setCoefficient_C_reduced_Scalar(self): | ||
748 | d=self.domain.getDim() | ||
749 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
750 | mypde.setValue(C_reduced=numarray.ones((d,))) | ||
751 | gross | 1841 | coeff=mypde.getCoefficient("C_reduced") |
752 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1,1)) |
753 | def test_setCoefficient_D_reduced_Scalar(self): | ||
754 | d=self.domain.getDim() | ||
755 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
756 | mypde.setValue(D_reduced=1.) | ||
757 | gross | 1841 | coeff=mypde.getCoefficient("D_reduced") |
758 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunction(self.domain),1,1)) |
759 | def test_setCoefficient_X_reduced_Scalar(self): | ||
760 | d=self.domain.getDim() | ||
761 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
762 | mypde.setValue(X_reduced=numarray.ones((d,))) | ||
763 | gross | 1841 | coeff=mypde.getCoefficient("X_reduced") |
764 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1)) |
765 | def test_setCoefficient_Y_reduced_Scalar(self): | ||
766 | d=self.domain.getDim() | ||
767 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
768 | mypde.setValue(Y_reduced=1.) | ||
769 | gross | 1841 | coeff=mypde.getCoefficient("Y_reduced") |
770 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunction(self.domain),1)) |
771 | def test_setCoefficient_y_reduced_Scalar(self): | ||
772 | d=self.domain.getDim() | ||
773 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
774 | mypde.setValue(y_reduced=1.) | ||
775 | gross | 1841 | coeff=mypde.getCoefficient("y_reduced") |
776 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunctionOnBoundary(self.domain),1)) |
777 | def test_setCoefficient_d_reduced_Scalar(self): | ||
778 | d=self.domain.getDim() | ||
779 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
780 | mypde.setValue(d_reduced=1.) | ||
781 | gross | 1841 | coeff=mypde.getCoefficient("d_reduced") |
782 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunctionOnBoundary(self.domain),1,1)) |
783 | def test_setCoefficient_d_contact_reduced_Scalar(self): | ||
784 | d=self.domain.getDim() | ||
785 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
786 | mypde.setValue(d_contact_reduced=1.) | ||
787 | gross | 1841 | coeff=mypde.getCoefficient("d_contact_reduced") |
788 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunctionOnContactZero(self.domain),1,1)) |
789 | def test_setCoefficient_y_contact_reduced_Scalar(self): | ||
790 | d=self.domain.getDim() | ||
791 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
792 | mypde.setValue(y_contact_reduced=1.) | ||
793 | gross | 1841 | coeff=mypde.getCoefficient("y_contact_reduced") |
794 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunctionOnContactZero(self.domain),1)) |
795 | jgs | 149 | def test_setCoefficient_r_Scalar(self): |
796 | d=self.domain.getDim() | ||
797 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
798 | mypde.setValue(r=1.) | ||
799 | gross | 1841 | coeff=mypde.getCoefficient("r") |
800 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((),Solution(self.domain),1)) |
801 | def test_setCoefficient_q_Scalar(self): | ||
802 | d=self.domain.getDim() | ||
803 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
804 | mypde.setValue(q=1.) | ||
805 | gross | 1841 | coeff=mypde.getCoefficient("q") |
806 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((),Solution(self.domain),1)) |
807 | def test_setCoefficient_r_Scalar_reducedOn(self): | ||
808 | d=self.domain.getDim() | ||
809 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
810 | mypde.setReducedOrderOn() | ||
811 | mypde.setValue(r=1.) | ||
812 | gross | 1841 | coeff=mypde.getCoefficient("r") |
813 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((),ReducedSolution(self.domain),1)) |
814 | def test_setCoefficient_q_Scalar_reducedOn(self): | ||
815 | d=self.domain.getDim() | ||
816 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
817 | mypde.setReducedOrderOn() | ||
818 | mypde.setValue(q=1.) | ||
819 | gross | 1841 | coeff=mypde.getCoefficient("q") |
820 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((),ReducedSolution(self.domain),1)) |
821 | |||
822 | gross | 1072 | def test_setCoefficient_A_reduced_Scalar_usingA(self): |
823 | d=self.domain.getDim() | ||
824 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
825 | mypde.setValue(A=Data(numarray.ones((d,d)),ReducedFunction(self.domain))) | ||
826 | gross | 1841 | coeff=mypde.getCoefficient("A_reduced") |
827 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,d),ReducedFunction(self.domain),1,1)) |
828 | def test_setCoefficient_B_reduced_Scalar_usingB(self): | ||
829 | d=self.domain.getDim() | ||
830 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
831 | mypde.setValue(B=Data(numarray.ones((d,)),ReducedFunction(self.domain))) | ||
832 | gross | 1841 | coeff=mypde.getCoefficient("B_reduced") |
833 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1,1)) |
834 | def test_setCoefficient_C_reduced_Scalar_usingC(self): | ||
835 | d=self.domain.getDim() | ||
836 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
837 | mypde.setValue(C=Data(numarray.ones((d,)),ReducedFunction(self.domain))) | ||
838 | gross | 1841 | coeff=mypde.getCoefficient("C_reduced") |
839 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1,1)) |
840 | def test_setCoefficient_D_reduced_Scalar_usingD(self): | ||
841 | d=self.domain.getDim() | ||
842 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
843 | mypde.setValue(D=Scalar(1.,ReducedFunction(self.domain))) | ||
844 | gross | 1841 | coeff=mypde.getCoefficient("D_reduced") |
845 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunction(self.domain),1,1)) |
846 | def test_setCoefficient_X_reduced_Scalar_usingX(self): | ||
847 | d=self.domain.getDim() | ||
848 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
849 | mypde.setValue(X_reduced=Data(numarray.ones((d,)),ReducedFunction(self.domain))) | ||
850 | gross | 1841 | coeff=mypde.getCoefficient("X_reduced") |
851 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((d,),ReducedFunction(self.domain),1)) |
852 | def test_setCoefficient_Y_reduced_Scalar_usingY(self): | ||
853 | d=self.domain.getDim() | ||
854 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
855 | mypde.setValue(Y=Scalar(1.,ReducedFunction(self.domain))) | ||
856 | gross | 1841 | coeff=mypde.getCoefficient("Y_reduced") |
857 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunction(self.domain),1)) |
858 | def test_setCoefficient_y_reduced_Scalar_using_y(self): | ||
859 | d=self.domain.getDim() | ||
860 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
861 | mypde.setValue(y=Scalar(1.,ReducedFunctionOnBoundary(self.domain))) | ||
862 | gross | 1841 | coeff=mypde.getCoefficient("y_reduced") |
863 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunctionOnBoundary(self.domain),1)) |
864 | def test_setCoefficient_d_reduced_Scalar_using_d(self): | ||
865 | d=self.domain.getDim() | ||
866 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
867 | mypde.setValue(d=Scalar(1.,ReducedFunctionOnBoundary(self.domain))) | ||
868 | gross | 1841 | coeff=mypde.getCoefficient("d_reduced") |
869 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunctionOnBoundary(self.domain),1,1)) |
870 | def test_setCoefficient_d_contact_reduced_Scalar_using_d_contact(self): | ||
871 | d=self.domain.getDim() | ||
872 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
873 | mypde.setValue(d_contact=Scalar(1.,ReducedFunctionOnContactZero(self.domain))) | ||
874 | gross | 1841 | coeff=mypde.getCoefficient("d_contact_reduced") |
875 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((),ReducedFunctionOnContactZero(self.domain),1,1)) |
876 | def test_setCoefficient_y_contact_reduced_Scalar_using_y_contact(self): | ||
877 | d=self.domain.getDim() | ||
878 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
879 | mypde.setValue(y_contact=Scalar(1.,ReducedFunctionOnContactZero(self.domain))) | ||
880 | gross | 1841 | coeff=mypde.getCoefficient("y_contact_reduced") |
881 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((),ReducedFunctionOnContactZero(self.domain),1)) |
882 | jgs | 149 | # |
883 | # set coefficients for systems: | ||
884 | # | ||
885 | def test_setCoefficient_A_System(self): | ||
886 | d=self.domain.getDim() | ||
887 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
888 | mypde.setValue(A=numarray.ones((self.N,d,self.N,d))) | ||
889 | gross | 1841 | coeff=mypde.getCoefficient("A") |
890 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N,d),Function(self.domain),self.N,self.N)) |
891 | def test_setCoefficient_B_System(self): | ||
892 | d=self.domain.getDim() | ||
893 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
894 | mypde.setValue(B=numarray.ones((self.N,d,self.N))) | ||
895 | gross | 1841 | coeff=mypde.getCoefficient("B") |
896 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N),Function(self.domain),self.N,self.N)) |
897 | def test_setCoefficient_C_System(self): | ||
898 | d=self.domain.getDim() | ||
899 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
900 | mypde.setValue(C=numarray.ones((self.N,self.N,d))) | ||
901 | gross | 1841 | coeff=mypde.getCoefficient("C") |
902 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N,d),Function(self.domain),self.N,self.N)) |
903 | def test_setCoefficient_D_System(self): | ||
904 | d=self.domain.getDim() | ||
905 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
906 | mypde.setValue(D=numarray.ones((self.N,self.N))) | ||
907 | gross | 1841 | coeff=mypde.getCoefficient("D") |
908 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),Function(self.domain),self.N,self.N)) |
909 | def test_setCoefficient_X_System(self): | ||
910 | d=self.domain.getDim() | ||
911 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
912 | mypde.setValue(X=numarray.ones((self.N,d))) | ||
913 | gross | 1841 | coeff=mypde.getCoefficient("X") |
914 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,d),Function(self.domain),self.N)) |
915 | def test_setCoefficient_Y_System(self): | ||
916 | d=self.domain.getDim() | ||
917 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
918 | mypde.setValue(Y=numarray.ones((self.N,))) | ||
919 | gross | 1841 | coeff=mypde.getCoefficient("Y") |
920 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),Function(self.domain),self.N)) |
921 | def test_setCoefficient_y_System(self): | ||
922 | d=self.domain.getDim() | ||
923 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
924 | mypde.setValue(y=numarray.ones((self.N,))) | ||
925 | gross | 1841 | coeff=mypde.getCoefficient("y") |
926 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),FunctionOnBoundary(self.domain),self.N)) |
927 | def test_setCoefficient_d_System(self): | ||
928 | d=self.domain.getDim() | ||
929 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
930 | mypde.setValue(d=numarray.ones((self.N,self.N))) | ||
931 | gross | 1841 | coeff=mypde.getCoefficient("d") |
932 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),FunctionOnBoundary(self.domain),self.N,self.N)) |
933 | def test_setCoefficient_d_contact_System(self): | ||
934 | d=self.domain.getDim() | ||
935 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
936 | mypde.setValue(d_contact=numarray.ones((self.N,self.N))) | ||
937 | gross | 1841 | coeff=mypde.getCoefficient("d_contact") |
938 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),FunctionOnContactZero(self.domain),self.N,self.N)) |
939 | def test_setCoefficient_y_contact_System(self): | ||
940 | d=self.domain.getDim() | ||
941 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
942 | mypde.setValue(y_contact=numarray.ones((self.N,))) | ||
943 | gross | 1841 | coeff=mypde.getCoefficient("y_contact") |
944 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),FunctionOnContactZero(self.domain),self.N)) |
945 | gross | 1072 | def test_setCoefficient_A_reduced_System(self): |
946 | d=self.domain.getDim() | ||
947 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
948 | mypde.setValue(A_reduced=numarray.ones((self.N,d,self.N,d))) | ||
949 | gross | 1841 | coeff=mypde.getCoefficient("A_reduced") |
950 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N,d),ReducedFunction(self.domain),self.N,self.N)) |
951 | def test_setCoefficient_B_reduced_System(self): | ||
952 | d=self.domain.getDim() | ||
953 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
954 | mypde.setValue(B_reduced=numarray.ones((self.N,d,self.N))) | ||
955 | gross | 1841 | coeff=mypde.getCoefficient("B_reduced") |
956 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N),ReducedFunction(self.domain),self.N,self.N)) |
957 | def test_setCoefficient_C_reduced_System(self): | ||
958 | d=self.domain.getDim() | ||
959 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
960 | mypde.setValue(C_reduced=numarray.ones((self.N,self.N,d))) | ||
961 | gross | 1841 | coeff=mypde.getCoefficient("C_reduced") |
962 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N,d),ReducedFunction(self.domain),self.N,self.N)) |
963 | def test_setCoefficient_D_System_reduced(self): | ||
964 | d=self.domain.getDim() | ||
965 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
966 | mypde.setValue(D_reduced=numarray.ones((self.N,self.N))) | ||
967 | gross | 1841 | coeff=mypde.getCoefficient("D_reduced") |
968 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunction(self.domain),self.N,self.N)) |
969 | def test_setCoefficient_X_System_reduced(self): | ||
970 | d=self.domain.getDim() | ||
971 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
972 | mypde.setValue(X_reduced=numarray.ones((self.N,d))) | ||
973 | gross | 1841 | coeff=mypde.getCoefficient("X_reduced") |
974 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,d),ReducedFunction(self.domain),self.N)) |
975 | def test_setCoefficient_Y_System_reduced(self): | ||
976 | d=self.domain.getDim() | ||
977 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
978 | mypde.setValue(Y_reduced=numarray.ones((self.N,))) | ||
979 | gross | 1841 | coeff=mypde.getCoefficient("Y_reduced") |
980 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunction(self.domain),self.N)) |
981 | def test_setCoefficient_y_System_reduced(self): | ||
982 | d=self.domain.getDim() | ||
983 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
984 | mypde.setValue(y_reduced=numarray.ones((self.N,))) | ||
985 | gross | 1841 | coeff=mypde.getCoefficient("y_reduced") |
986 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunctionOnBoundary(self.domain),self.N)) |
987 | def test_setCoefficient_d_reduced_System(self): | ||
988 | d=self.domain.getDim() | ||
989 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
990 | mypde.setValue(d_reduced=numarray.ones((self.N,self.N))) | ||
991 | gross | 1841 | coeff=mypde.getCoefficient("d_reduced") |
992 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunctionOnBoundary(self.domain),self.N,self.N)) |
993 | def test_setCoefficient_d_contact_reduced_System(self): | ||
994 | d=self.domain.getDim() | ||
995 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
996 | mypde.setValue(d_contact_reduced=numarray.ones((self.N,self.N))) | ||
997 | gross | 1841 | coeff=mypde.getCoefficient("d_contact_reduced") |
998 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunctionOnContactZero(self.domain),self.N,self.N)) |
999 | def test_setCoefficient_y_contact_reduced_System(self): | ||
1000 | d=self.domain.getDim() | ||
1001 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
1002 | mypde.setValue(y_contact_reduced=numarray.ones((self.N,))) | ||
1003 | gross | 1841 | coeff=mypde.getCoefficient("y_contact_reduced") |
1004 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunctionOnContactZero(self.domain),self.N)) |
1005 | jgs | 149 | def test_setCoefficient_r_System(self): |
1006 | d=self.domain.getDim() | ||
1007 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
1008 | mypde.setValue(r=numarray.ones((self.N,))) | ||
1009 | gross | 1841 | coeff=mypde.getCoefficient("r") |
1010 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((self.N,),Solution(self.domain),self.N)) |
1011 | def test_setCoefficient_q_System(self): | ||
1012 | d=self.domain.getDim() | ||
1013 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
1014 | mypde.setValue(q=numarray.ones((self.N,))) | ||
1015 | gross | 1841 | coeff=mypde.getCoefficient("q") |
1016 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((self.N,),Solution(self.domain),self.N)) |
1017 | def test_setCoefficient_r_System_reducedOn(self): | ||
1018 | d=self.domain.getDim() | ||
1019 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
1020 | mypde.setReducedOrderOn() | ||
1021 | mypde.setValue(r=numarray.ones((self.N,))) | ||
1022 | gross | 1841 | coeff=mypde.getCoefficient("r") |
1023 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((self.N,),ReducedSolution(self.domain),self.N)) |
1024 | def test_setCoefficient_q_System_reducedOn(self): | ||
1025 | d=self.domain.getDim() | ||
1026 | mypde=LinearPDE(self.domain,numEquations=3,debug=self.DEBUG) | ||
1027 | mypde.setReducedOrderOn() | ||
1028 | mypde.setValue(q=numarray.ones((self.N,))) | ||
1029 | gross | 1841 | coeff=mypde.getCoefficient("q") |
1030 | jgs | 149 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions()),((self.N,),ReducedSolution(self.domain),self.N)) |
1031 | |||
1032 | gross | 1072 | def test_setCoefficient_A_reduced_System_using_A(self): |
1033 | d=self.domain.getDim() | ||
1034 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1035 | mypde.setValue(A=Data(numarray.ones((self.N,d,self.N,d)),ReducedFunction(self.domain))) | ||
1036 | gross | 1841 | coeff=mypde.getCoefficient("A_reduced") |
1037 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N,d),ReducedFunction(self.domain),self.N,self.N)) |
1038 | def test_setCoefficient_B_reduced_System_using_B(self): | ||
1039 | d=self.domain.getDim() | ||
1040 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1041 | mypde.setValue(B=Data(numarray.ones((self.N,d,self.N)),ReducedFunction(self.domain))) | ||
1042 | gross | 1841 | coeff=mypde.getCoefficient("B_reduced") |
1043 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,d,self.N),ReducedFunction(self.domain),self.N,self.N)) |
1044 | def test_setCoefficient_C_reduced_System_using_C(self): | ||
1045 | d=self.domain.getDim() | ||
1046 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1047 | mypde.setValue(C=Data(numarray.ones((self.N,self.N,d)),ReducedFunction(self.domain))) | ||
1048 | gross | 1841 | coeff=mypde.getCoefficient("C_reduced") |
1049 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N,d),ReducedFunction(self.domain),self.N,self.N)) |
1050 | def test_setCoefficient_D_System_reduced_using_D(self): | ||
1051 | d=self.domain.getDim() | ||
1052 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1053 | mypde.setValue(D=Data(numarray.ones((self.N,self.N)),ReducedFunction(self.domain))) | ||
1054 | gross | 1841 | coeff=mypde.getCoefficient("D_reduced") |
1055 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunction(self.domain),self.N,self.N)) |
1056 | def test_setCoefficient_X_System_reduced_using_X(self): | ||
1057 | d=self.domain.getDim() | ||
1058 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
1059 | mypde.setValue(X=Data(numarray.ones((self.N,d)),ReducedFunction(self.domain))) | ||
1060 | gross | 1841 | coeff=mypde.getCoefficient("X_reduced") |
1061 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,d),ReducedFunction(self.domain),self.N)) |
1062 | def test_setCoefficient_Y_System_reduced_using_Y(self): | ||
1063 | d=self.domain.getDim() | ||
1064 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
1065 | mypde.setValue(Y=Data(numarray.ones((self.N,)),ReducedFunction(self.domain))) | ||
1066 | gross | 1841 | coeff=mypde.getCoefficient("Y_reduced") |
1067 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunction(self.domain),self.N)) |
1068 | def test_setCoefficient_y_reduced_System_using_y(self): | ||
1069 | d=self.domain.getDim() | ||
1070 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
1071 | mypde.setValue(y=Data(numarray.ones((self.N,)),ReducedFunctionOnBoundary(self.domain))) | ||
1072 | gross | 1841 | coeff=mypde.getCoefficient("y_reduced") |
1073 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunctionOnBoundary(self.domain),self.N)) |
1074 | def test_setCoefficient_d_reduced_System_using_d(self): | ||
1075 | d=self.domain.getDim() | ||
1076 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1077 | mypde.setValue(d=Data(numarray.ones((self.N,self.N)),ReducedFunctionOnBoundary(self.domain))) | ||
1078 | gross | 1841 | coeff=mypde.getCoefficient("d_reduced") |
1079 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunctionOnBoundary(self.domain),self.N,self.N)) |
1080 | def test_setCoefficient_d_contact_reduced_System_using_d_contact(self): | ||
1081 | d=self.domain.getDim() | ||
1082 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1083 | mypde.setValue(d_contact=Data(numarray.ones((self.N,self.N)),ReducedFunctionOnContactZero(self.domain))) | ||
1084 | gross | 1841 | coeff=mypde.getCoefficient("d_contact_reduced") |
1085 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumSolutions(),mypde.getNumEquations()),((self.N,self.N),ReducedFunctionOnContactZero(self.domain),self.N,self.N)) |
1086 | def test_setCoefficient_y_contact_reduced_System_using_y_contact(self): | ||
1087 | d=self.domain.getDim() | ||
1088 | mypde=LinearPDE(self.domain,numSolutions=3,debug=self.DEBUG) | ||
1089 | mypde.setValue(y_contact=Data(numarray.ones((self.N,)),ReducedFunctionOnContactZero(self.domain))) | ||
1090 | gross | 1841 | coeff=mypde.getCoefficient("y_contact_reduced") |
1091 | gross | 1072 | self.failUnlessEqual((coeff.getShape(),coeff.getFunctionSpace(),mypde.getNumEquations()),((self.N,),ReducedFunctionOnContactZero(self.domain),self.N)) |
1092 | jgs | 149 | def test_resetCoefficient_HomogeneousConstraint(self): |
1093 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1094 | x=self.domain.getX() | ||
1095 | gross | 304 | mypde.setValue(A=kronecker(self.domain),Y=1.,q=whereZero(x[0])) |
1096 | jgs | 149 | u1=mypde.getSolution() |
1097 | mypde.setValue(Y=2.) | ||
1098 | u2=mypde.getSolution() | ||
1099 | self.failUnless(self.check(u2,2*u1),'solution is wrong.') | ||
1100 | |||
1101 | def test_resetCoefficient_InHomogeneousConstraint(self): | ||
1102 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1103 | jgs | 154 | mypde.setSymmetryOn() |
1104 | jgs | 149 | x=self.domain.getX() |
1105 | gross | 304 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.,r=1,q=whereZero(x[0])) |
1106 | jgs | 154 | u1=mypde.getSolution(verbose=self.VERBOSE) |
1107 | jgs | 149 | mypde.setValue(Y=2.,D=2) |
1108 | jgs | 154 | u2=mypde.getSolution(verbose=self.VERBOSE) |
1109 | self.failUnless(self.check(u2,u1),'first solution is wrong.') | ||
1110 | u2=mypde.getSolution(verbose=self.VERBOSE) | ||
1111 | self.failUnless(self.check(u2,u1),'first solution is wrong.') | ||
1112 | jgs | 149 | mypde.setValue(r=2,Y=4.) |
1113 | jgs | 154 | u2=mypde.getSolution(verbose=self.VERBOSE) |
1114 | self.failUnless(self.check(u2,2*u1),'second solution is wrong.') | ||
1115 | jgs | 149 | |
1116 | def test_symmetryCheckTrue_System(self): | ||
1117 | d=self.domain.getDim() | ||
1118 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1119 | A=numarray.ones((self.N,d,self.N,d)) | ||
1120 | C=2*numarray.ones((self.N,self.N,d)) | ||
1121 | B=2*numarray.ones((self.N,d,self.N)) | ||
1122 | D=3*numarray.ones((self.N,self.N)) | ||
1123 | d=4*numarray.ones((self.N,self.N)) | ||
1124 | d_contact=5*numarray.ones((self.N,self.N)) | ||
1125 | gross | 1072 | mypde.setValue(A=A,B=B,C=C,D=D,d=d,d_contact=d_contact,A_reduced=-A,B_reduced=-B,C_reduced=-C,D_reduced=-D,d_reduced=-d,d_contact_reduced=-d_contact) |
1126 | jgs | 149 | self.failUnless(mypde.checkSymmetry(verbose=False),"symmetry detected") |
1127 | |||
1128 | def test_symmetryCheckFalse_A_System(self): | ||
1129 | d=self.domain.getDim() | ||
1130 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1131 | A=numarray.ones((self.N,d,self.N,d)) | ||
1132 | A[1,1,1,0]=0. | ||
1133 | mypde.setValue(A=A) | ||
1134 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1135 | def test_symmetryCheckFalse_BC_System(self): | ||
1136 | d=self.domain.getDim() | ||
1137 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1138 | C=2*numarray.ones((self.N,self.N,d)) | ||
1139 | B=2*numarray.ones((self.N,d,self.N)) | ||
1140 | B[0,0,1]=1. | ||
1141 | mypde.setValue(B=B,C=C) | ||
1142 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1143 | |||
1144 | def test_symmetryCheckFalse_D_System(self): | ||
1145 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1146 | D=3*numarray.ones((self.N,self.N)) | ||
1147 | D[0,1]=0. | ||
1148 | mypde.setValue(D=D) | ||
1149 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1150 | |||
1151 | def test_symmetryCheckFalse_d_System(self): | ||
1152 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1153 | d=4*numarray.ones((self.N,self.N)) | ||
1154 | d[0,1]=0. | ||
1155 | mypde.setValue(d=d) | ||
1156 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1157 | |||
1158 | def test_symmetryCheckFalse_d_contact_System(self): | ||
1159 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1160 | d_contact=5*numarray.ones((self.N,self.N)) | ||
1161 | d_contact[0,1]=0. | ||
1162 | mypde.setValue(d_contact=d_contact) | ||
1163 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1164 | |||
1165 | gross | 1072 | def test_symmetryCheckFalse_A_reduced_System(self): |
1166 | d=self.domain.getDim() | ||
1167 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1168 | A=numarray.ones((self.N,d,self.N,d)) | ||
1169 | A[1,1,1,0]=0. | ||
1170 | mypde.setValue(A_reduced=A) | ||
1171 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1172 | def test_symmetryCheckFalse_BC_reduced_System(self): | ||
1173 | d=self.domain.getDim() | ||
1174 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1175 | C=2*numarray.ones((self.N,self.N,d)) | ||
1176 | B=2*numarray.ones((self.N,d,self.N)) | ||
1177 | B[0,0,1]=1. | ||
1178 | mypde.setValue(B_reduced=B,C_reduced=C) | ||
1179 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1180 | |||
1181 | def test_symmetryCheckFalse_D_reduced_System(self): | ||
1182 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1183 | D=3*numarray.ones((self.N,self.N)) | ||
1184 | D[0,1]=0. | ||
1185 | mypde.setValue(D_reduced=D) | ||
1186 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1187 | |||
1188 | def test_symmetryCheckFalse_d_reduced_System(self): | ||
1189 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1190 | d=4*numarray.ones((self.N,self.N)) | ||
1191 | d[0,1]=0. | ||
1192 | mypde.setValue(d_reduced=d) | ||
1193 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1194 | |||
1195 | def test_symmetryCheckFalse_d_contact_reduced_System(self): | ||
1196 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1197 | d_contact=5*numarray.ones((self.N,self.N)) | ||
1198 | d_contact[0,1]=0. | ||
1199 | mypde.setValue(d_contact_reduced=d_contact) | ||
1200 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1201 | |||
1202 | jgs | 149 | def test_symmetryCheckTrue_Scalar(self): |
1203 | d=self.domain.getDim() | ||
1204 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1205 | A=numarray.ones((d,d)) | ||
1206 | C=2*numarray.ones((d,)) | ||
1207 | B=2*numarray.ones((d,)) | ||
1208 | D=3 | ||
1209 | d=4 | ||
1210 | d_contact=5 | ||
1211 | gross | 1072 | mypde.setValue(A=A,B=B,C=C,D=D,d=d,d_contact=d_contact,A_reduced=-A,B_reduced=-B,C_reduced=-C,D_reduced=-D,d_reduced=-d,d_contact_reduced=-d_contact) |
1212 | jgs | 149 | self.failUnless(mypde.checkSymmetry(verbose=False),"symmetry detected") |
1213 | |||
1214 | def test_symmetryCheckFalse_A_Scalar(self): | ||
1215 | d=self.domain.getDim() | ||
1216 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1217 | A=numarray.ones((d,d)) | ||
1218 | A[1,0]=0. | ||
1219 | mypde.setValue(A=A) | ||
1220 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1221 | def test_symmetryCheckFalse_BC_Scalar(self): | ||
1222 | d=self.domain.getDim() | ||
1223 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1224 | C=2*numarray.ones((d,)) | ||
1225 | B=2*numarray.ones((d,)) | ||
1226 | B[0]=1. | ||
1227 | mypde.setValue(B=B,C=C) | ||
1228 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1229 | gross | 1072 | def test_symmetryCheckFalse_A_reduced_Scalar(self): |
1230 | d=self.domain.getDim() | ||
1231 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1232 | A=numarray.ones((d,d)) | ||
1233 | A[1,0]=0. | ||
1234 | mypde.setValue(A_reduced=A) | ||
1235 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1236 | def test_symmetryCheckFalse_BC_reduced_Scalar(self): | ||
1237 | d=self.domain.getDim() | ||
1238 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1239 | C=2*numarray.ones((d,)) | ||
1240 | B=2*numarray.ones((d,)) | ||
1241 | B[0]=1. | ||
1242 | mypde.setValue(B_reduced=B,C_reduced=C) | ||
1243 | self.failUnless(not mypde.checkSymmetry(verbose=False),"symmetry detected") | ||
1244 | jgs | 149 | # |
1245 | ksteube | 1312 | # solver checks (single PDE) |
1246 | jgs | 149 | # |
1247 | def test_symmetryOnIterative(self): | ||
1248 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1249 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1250 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1251 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1252 | def test_symmetryOnDirect(self): | ||
1253 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1254 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1255 | mypde.setSolverMethod(mypde.DIRECT) | ||
1256 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1257 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1258 | def test_PCG_JACOBI(self): | ||
1259 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1260 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1261 | gross | 387 | mypde.setSolverMethod(mypde.PCG,mypde.JACOBI) |
1262 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1263 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1264 | def test_PCG_ILU0(self): | ||
1265 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1266 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1267 | gross | 387 | mypde.setSolverMethod(mypde.PCG,mypde.ILU0) |
1268 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1269 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1270 | gross | 1859 | def test_PCG_RILU(self): |
1271 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1272 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1273 | mypde.setSolverMethod(mypde.PCG,mypde.RILU) | ||
1274 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1275 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1276 | jgs | 149 | def test_DIRECT(self): |
1277 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1278 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1279 | mypde.setSolverMethod(mypde.DIRECT) | ||
1280 | jgs | 154 | u=mypde.getSolution(verbose=self.VERBOSE) |
1281 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1282 | def test_BICGSTAB_JACOBI(self): | ||
1283 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1284 | gross | 387 | mypde.setSolverMethod(mypde.BICGSTAB,mypde.JACOBI) |
1285 | jgs | 149 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) |
1286 | gross | 387 | u=mypde.getSolution(verbose=self.VERBOSE) |
1287 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1288 | def test_BICGSTAB_ILU0(self): | ||
1289 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1290 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1291 | gross | 387 | mypde.setSolverMethod(mypde.BICGSTAB,mypde.ILU0) |
1292 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1293 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1294 | gross | 1859 | def test_BICGSTAB_RILU(self): |
1295 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1296 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1297 | mypde.setSolverMethod(mypde.BICGSTAB,mypde.RILU) | ||
1298 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1299 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1300 | gross | 1861 | def test_MINRES_JACOBI(self): |
1301 | gross | 1859 | mypde=LinearPDE(self.domain,debug=self.DEBUG) |
1302 | mypde.setSolverMethod(mypde.MINRES,mypde.JACOBI) | ||
1303 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1304 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1305 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1306 | gross | 1861 | def test_MINRES_ILU0(self): |
1307 | gross | 1859 | mypde=LinearPDE(self.domain,debug=self.DEBUG) |
1308 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1309 | mypde.setSolverMethod(mypde.MINRES,mypde.ILU0) | ||
1310 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1311 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1312 | gross | 1861 | def test_MINRES_RILU(self): |
1313 | gross | 1859 | mypde=LinearPDE(self.domain,debug=self.DEBUG) |
1314 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1315 | mypde.setSolverMethod(mypde.MINRES,mypde.RILU) | ||
1316 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1317 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1318 | def test_TFQMR_JACOBI(self): | ||
1319 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1320 | mypde.setSolverMethod(mypde.TFQMR,mypde.JACOBI) | ||
1321 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1322 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1323 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1324 | def test_TFQMR_ILU0(self): | ||
1325 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1326 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1327 | mypde.setSolverMethod(mypde.TFQMR,mypde.ILU0) | ||
1328 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1329 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1330 | def test_TFQMR_RILU(self): | ||
1331 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1332 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1333 | mypde.setSolverMethod(mypde.TFQMR,mypde.RILU) | ||
1334 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1335 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1336 | jgs | 149 | def test_PRES20_JACOBI(self): |
1337 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1338 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1339 | gross | 387 | mypde.setSolverMethod(mypde.PRES20,mypde.JACOBI) |
1340 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1341 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1342 | def test_PRES20_ILU0(self): | ||
1343 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1344 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1345 | gross | 387 | mypde.setSolverMethod(mypde.PRES20,mypde.ILU0) |
1346 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1347 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1348 | gross | 1859 | def test_PRES20_RILU(self): |
1349 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1350 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1351 | mypde.setSolverMethod(mypde.PRES20,mypde.RILU) | ||
1352 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1353 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1354 | jgs | 149 | def test_GMRESnoRestart_JACOBI(self): |
1355 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1356 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1357 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.JACOBI) |
1358 | gross | 1859 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=50) |
1359 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1360 | def test_GMRESnoRestart_ILU0(self): | ||
1361 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1362 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1363 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.ILU0) |
1364 | gross | 1859 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=50) |
1365 | gross | 387 | u=mypde.getSolution(verbose=self.VERBOSE) |
1366 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1367 | gross | 1859 | def test_GMRESnoRestart_RILU(self): |
1368 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1369 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1370 | mypde.setSolverMethod(mypde.GMRES,mypde.RILU) | ||
1371 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=50) | ||
1372 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1373 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1374 | jgs | 149 | def test_GMRES_JACOBI(self): |
1375 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1376 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1377 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.JACOBI) |
1378 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1379 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1380 | def test_GMRES_ILU0(self): | ||
1381 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1382 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1383 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.ILU0) |
1384 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1385 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1386 | gross | 1859 | def test_GMRES_RILU(self): |
1387 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1388 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1389 | mypde.setSolverMethod(mypde.GMRES,mypde.RILU) | ||
1390 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1391 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1392 | jgs | 149 | def test_GMRES_truncation_restart_JACOBI(self): |
1393 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1394 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1395 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.JACOBI) |
1396 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=10,restart=20) | ||
1397 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1398 | def test_GMRES_truncation_restart_ILU0(self): | ||
1399 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1400 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1401 | gross | 387 | mypde.setSolverMethod(mypde.GMRES,mypde.ILU0) |
1402 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=10,restart=20) | ||
1403 | jgs | 149 | self.failUnless(self.check(u,1.),'solution is wrong.') |
1404 | gross | 1859 | def test_GMRES_truncation_restart_RILU(self): |
1405 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1406 | mypde.setValue(A=kronecker(self.domain),D=1.,Y=1.) | ||
1407 | mypde.setSolverMethod(mypde.GMRES,mypde.RILU) | ||
1408 | u=mypde.getSolution(verbose=self.VERBOSE,truncation=10,restart=20) | ||
1409 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1410 | ksteube | 1312 | # |
1411 | # solver checks (PDE system) | ||
1412 | # | ||
1413 | def test_symmetryOnIterative_System(self): | ||
1414 | A=Tensor4(0.,Function(self.domain)) | ||
1415 | D=Tensor(1.,Function(self.domain)) | ||
1416 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1417 | for i in range(self.domain.getDim()): | ||
1418 | A[i,:,i,:]=kronecker(self.domain) | ||
1419 | D[i,i]+=i | ||
1420 | Y[i]+=i | ||
1421 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1422 | mypde.setValue(A=A,D=D,Y=Y) | ||
1423 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1424 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1425 | def test_symmetryOnDirect_System(self): | ||
1426 | A=Tensor4(0.,Function(self.domain)) | ||
1427 | D=Tensor(1.,Function(self.domain)) | ||
1428 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1429 | for i in range(self.domain.getDim()): | ||
1430 | A[i,:,i,:]=kronecker(self.domain) | ||
1431 | D[i,i]+=i | ||
1432 | Y[i]+=i | ||
1433 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1434 | mypde.setValue(A=A,D=D,Y=Y) | ||
1435 | mypde.setSolverMethod(mypde.DIRECT) | ||
1436 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1437 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1438 | def test_PCG_JACOBI_System(self): | ||
1439 | A=Tensor4(0.,Function(self.domain)) | ||
1440 | D=Tensor(1.,Function(self.domain)) | ||
1441 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1442 | for i in range(self.domain.getDim()): | ||
1443 | A[i,:,i,:]=kronecker(self.domain) | ||
1444 | D[i,i]+=i | ||
1445 | Y[i]+=i | ||
1446 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1447 | mypde.setValue(A=A,D=D,Y=Y) | ||
1448 | mypde.setSolverMethod(mypde.PCG,mypde.JACOBI) | ||
1449 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1450 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1451 | def test_PCG_ILU0_System(self): | ||
1452 | A=Tensor4(0.,Function(self.domain)) | ||
1453 | D=Tensor(1.,Function(self.domain)) | ||
1454 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1455 | for i in range(self.domain.getDim()): | ||
1456 | A[i,:,i,:]=kronecker(self.domain) | ||
1457 | D[i,i]+=i | ||
1458 | Y[i]+=i | ||
1459 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1460 | mypde.setValue(A=A,D=D,Y=Y) | ||
1461 | mypde.setSolverMethod(mypde.PCG,mypde.ILU0) | ||
1462 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1463 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1464 | def test_DIRECT_System(self): | ||
1465 | A=Tensor4(0.,Function(self.domain)) | ||
1466 | D=Tensor(1.,Function(self.domain)) | ||
1467 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1468 | for i in range(self.domain.getDim()): | ||
1469 | A[i,:,i,:]=kronecker(self.domain) | ||
1470 | D[i,i]+=i | ||
1471 | Y[i]+=i | ||
1472 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1473 | mypde.setValue(A=A,D=D,Y=Y) | ||
1474 | mypde.setSolverMethod(mypde.DIRECT) | ||
1475 | u=mypde.getSolution(verbose=self.VERBOSE) | ||
1476 | self.failUnless(self.check(u,1.),'solution is wrong.') | ||
1477 | def test_BICGSTAB_JACOBI_System(self): | ||
1478 | A=Tensor4(0.,Function(self.domain)) | ||
1479 | D=Tensor(1.,Function(self.domain)) | ||
1480 | Y=Vector(self.domain.getDim(),Function(self.domain)) | ||
1481 | for i in range(self.domain.getDim()): | ||
1482 | A[i,:,i,:]=kronecker(self.domain) | ||
1483 | D[i,i]+=i | ||
1484 | Y[i]+=i | ||
1485 | mypde=LinearPDE(self.domain,debug=self.DEBUG) | ||
1486 | mypde.setValue(A=A,D= |