/[ascend]/trunk/pygtk/test.py
ViewVC logotype

Diff of /trunk/pygtk/test.py

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

revision 978 by johnpye, Tue Dec 19 13:52:51 2006 UTC revision 979 by johnpye, Wed Dec 20 14:34:16 2006 UTC
# Line 77  class TestIntegrator(Ascend): Line 77  class TestIntegrator(Ascend):
77          self.L.load('johnpye/shm.a4c')          self.L.load('johnpye/shm.a4c')
78          M = self.L.findType('shm').getSimulation('sim')          M = self.L.findType('shm').getSimulation('sim')
79          M.setSolver(ascpy.Solver('QRSlv'))          M.setSolver(ascpy.Solver('QRSlv'))
80          print M.sim.getChildren()          print M.getChildren()
81          assert float(M.sim.x) == 10.0          assert float(M.x) == 10.0
82          assert float(M.sim.v) == 0.0          assert float(M.v) == 0.0
83          t_end = math.pi          t_end = math.pi
84    
85          I = ascpy.Integrator(M)          I = ascpy.Integrator(M)
# Line 95  class TestIntegrator(Ascend): Line 95  class TestIntegrator(Ascend):
95          I.analyse();          I.analyse();
96          I.solve();          I.solve();
97          print "At end of simulation,"          print "At end of simulation,"
98          print "x = %f" % M.sim.x          print "x = %f" % M.x
99          print "v = %f" % M.sim.v          print "v = %f" % M.v
100          assert abs(float(M.sim.x) + 10) < 1e-2          assert abs(float(M.x) + 10) < 1e-2
101          assert abs(float(M.sim.v)) < 1e-2          assert abs(float(M.v)) < 1e-2
102          assert I.getNumObservedVars() == 3          assert I.getNumObservedVars() == 3
103    
104      def testInvalidIntegrator(self):      def testInvalidIntegrator(self):
# Line 153  class TestLSODE(Ascend): Line 153  class TestLSODE(Ascend):
153          I.setMaxSubSteps(10000)          I.setMaxSubSteps(10000)
154                    
155          I.setReporter(ascpy.IntegratorReporterConsole(I))          I.setReporter(ascpy.IntegratorReporterConsole(I))
156          I.setLinearTimesteps(ascpy.Units("s"), 0, 2*float(M.sim.v)/float(M.sim.g), 2);          I.setLinearTimesteps(ascpy.Units("s"), 0, 2*float(M.v)/float(M.g), 2);
157          I.analyse()          I.analyse()
158          I.solve()          I.solve()
159          print "At end of simulation,"          print "At end of simulation,"
160          print "x = %f" % M.sim.x          print "x = %f" % M.x
161          print "v = %f" % M.sim.v          print "v = %f" % M.v
162          M.run(T.getMethod('self_test'))          M.run(T.getMethod('self_test'))
163    
164      def testlotka(self):      def testlotka(self):
# Line 170  class TestLSODE(Ascend): Line 170  class TestLSODE(Ascend):
170          I.setReporter(ascpy.IntegratorReporterConsole(I))          I.setReporter(ascpy.IntegratorReporterConsole(I))
171          I.setLinearTimesteps(ascpy.Units("s"), 0, 200, 5);          I.setLinearTimesteps(ascpy.Units("s"), 0, 200, 5);
172          I.analyse()          I.analyse()
173            print "Number of vars = %d" % I.getNumVars()
174            assert I.getNumVars()==2
175          I.solve()          I.solve()
176          assert I.getNumObservedVars() == 3;          assert I.getNumObservedVars() == 3;
177          assert abs(float(M.sim.R) - 832) < 1.0          assert abs(M.R - 832) < 1.0
178          assert abs(float(M.sim.F) - 21.36) < 0.1          assert abs(M.F - 21.36) < 0.1
179                    
180  class TestIDA(Ascend):  class TestIDA(Ascend):
181    
# Line 208  class TestIDA(Ascend): Line 210  class TestIDA(Ascend):
210          else:          else:
211              self.fail('Failed to trip invalid Integrator parameter')              self.fail('Failed to trip invalid Integrator parameter')
212    
213        def testnewton(self):
214            sys.stderr.write("STARTING TESTNEWTON\n")
215            self.L.load('johnpye/newton.a4c')
216            T = self.L.findType('newton')
217            M = T.getSimulation('sim')
218            M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter())  
219            I = ascpy.Integrator(M)
220            I.setEngine('IDA')
221            I.setParameter('safeeval',True)
222            I.setParameter('rtol',1e-8)
223            I.setMaxSubStep(0.001)
224            I.setMaxSubSteps(10000)
225            
226            I.setReporter(ascpy.IntegratorReporterConsole(I))
227            I.setLinearTimesteps(ascpy.Units("s"), 0, 2*float(M.v)/float(M.g), 2);
228            I.analyse()
229            I.solve()
230            print "At end of simulation,"
231            print "x = %f" % M.x
232            print "v = %f" % M.v
233            M.run(T.getMethod('self_test'))
234    
235        def testlotka(self):
236            self.L.load('johnpye/lotka.a4c')
237            M = self.L.findType('lotka').getSimulation('sim')
238            M.setSolver(ascpy.Solver("QRSlv"))
239            I = ascpy.Integrator(M)
240            I.setEngine('IDA')
241            I.setReporter(ascpy.IntegratorReporterConsole(I))
242            I.setLinearTimesteps(ascpy.Units("s"), 0, 200, 5);
243            I.setParameter('rtol',1e-8);
244            I.analyse()
245            assert I.getNumVars()==2
246            assert abs(M.R - 1000) < 1e-300
247            I.solve()
248            assert I.getNumObservedVars() == 3;
249            assert abs(M.R - 832) < 1.0
250            assert abs(M.F - 21.36) < 0.1
251    
252      def testzill(self):      def testzill(self):
253          self.L.load('johnpye/zill.a4c')          self.L.load('johnpye/zill.a4c')
254          T = self.L.findType('zill')          T = self.L.findType('zill')
# Line 215  class TestIDA(Ascend): Line 256  class TestIDA(Ascend):
256          M.setSolver(ascpy.Solver('QRSlv'))          M.setSolver(ascpy.Solver('QRSlv'))
257          I = ascpy.Integrator(M)          I = ascpy.Integrator(M)
258          I.setEngine('IDA')          I.setEngine('IDA')
259          I.setParameter('safeeval',True)          I.setParameter('safeeval',False)
260          I.setMinSubStep(1e-7)          I.setMinSubStep(1e-7)
261          I.setMaxSubStep(0.001)          I.setMaxSubStep(0.001)
262          I.setMaxSubSteps(10000)          I.setMaxSubSteps(10000)
# Line 241  class TestIDA(Ascend): Line 282  class TestIDA(Ascend):
282          I.setParameter('autodiff',True)          I.setParameter('autodiff',True)
283          I.analyse()          I.analyse()
284          I.solve()          I.solve()
285          assert abs(float(M.sim.y1) - 5.1091e-08) < 1e-10;          assert abs(float(M.y1) - 5.1091e-08) < 1e-10;
286          assert abs(float(M.sim.y2) - 2.0437e-13) < 1e-15;          assert abs(float(M.y2) - 2.0437e-13) < 1e-15;
287          assert abs(float(M.sim.y3) - 1.0) < 1e-5;          assert abs(float(M.y3) - 1.0) < 1e-5;
288    
289      def testdenxSPGMR(self):      def testdenxSPGMR(self):
290          self.L.load('johnpye/idadenx.a4c')          self.L.load('johnpye/idadenx.a4c')
# Line 260  class TestIDA(Ascend): Line 301  class TestIDA(Ascend):
301          I.setParameter('gsmodified',False)          I.setParameter('gsmodified',False)
302          I.analyse()          I.analyse()
303          I.solve()          I.solve()
304          assert abs(float(M.sim.y1) - 5.1091e-08) < 1e-10;          assert abs(float(M.y1) - 5.1091e-08) < 1e-10;
305          assert abs(float(M.sim.y2) - 2.0437e-13) < 1e-15;          assert abs(float(M.y2) - 2.0437e-13) < 1e-15;
306          assert abs(float(M.sim.y3) - 1.0) < 1e-5;          assert abs(float(M.y3) - 1.0) < 1e-5;
307    
308      def testkryx(self):      def testkryx(self):
309          self.L.load('johnpye/idakryx.a4c')          self.L.load('johnpye/idakryx.a4c')
# Line 280  class TestIDA(Ascend): Line 321  class TestIDA(Ascend):
321          I.setParameter('atolvect',False)          I.setParameter('atolvect',False)
322          I.analyse()          I.analyse()
323          I.setLogTimesteps(ascpy.Units("s"), 0.01, 10.24, 10);          I.setLogTimesteps(ascpy.Units("s"), 0.01, 10.24, 10);
324          print M.sim.udot[1][3];          print M.udot[1][3];
325          I.solve()          I.solve()
326          assert 0          assert 0
327            

Legend:
Removed from v.978  
changed lines
  Added in v.979

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22