249 |
assert abs(M.R - 832) < 1.0 |
assert abs(M.R - 832) < 1.0 |
250 |
assert abs(M.F - 21.36) < 0.1 |
assert abs(M.F - 21.36) < 0.1 |
251 |
|
|
252 |
|
def testlotkaDENSE(self): |
253 |
|
self.L.load('johnpye/lotka.a4c') |
254 |
|
M = self.L.findType('lotka').getSimulation('sim') |
255 |
|
M.setSolver(ascpy.Solver("QRSlv")) |
256 |
|
I = ascpy.Integrator(M) |
257 |
|
I.setEngine('IDA') |
258 |
|
I.setReporter(ascpy.IntegratorReporterConsole(I)) |
259 |
|
I.setLinearTimesteps(ascpy.Units("s"), 0, 200, 5); |
260 |
|
I.setParameter('linsolver','DENSE') |
261 |
|
I.setParameter('rtol',1e-8); |
262 |
|
I.analyse() |
263 |
|
assert I.getNumVars()==2 |
264 |
|
assert abs(M.R - 1000) < 1e-300 |
265 |
|
I.solve() |
266 |
|
assert I.getNumObservedVars() == 3; |
267 |
|
assert abs(M.R - 832) < 1.0 |
268 |
|
assert abs(M.F - 21.36) < 0.1 |
269 |
|
|
270 |
def testzill(self): |
def testzill(self): |
271 |
self.L.load('johnpye/zill.a4c') |
self.L.load('johnpye/zill.a4c') |
272 |
T = self.L.findType('zill') |
T = self.L.findType('zill') |
321 |
I.setParameter('atolvect',False) |
I.setParameter('atolvect',False) |
322 |
I.setParameter('calcic',True) |
I.setParameter('calcic',True) |
323 |
I.analyse() |
I.analyse() |
324 |
I.setLogTimesteps(ascpy.Units("s"), 0.01, 10.24, 10); |
I.setLogTimesteps(ascpy.Units("s"), 0.01, 10.24, 11); |
325 |
I.solve() |
I.solve() |
326 |
assert abs(M.u[2][2].getValue()) < 1e-5 |
assert abs(M.u[2][2].getValue()) < 1e-5 |
327 |
|
|
328 |
def testdenxSPGMR(self): |
def testdenxSPGMR(self): |
329 |
self.L.load('johnpye/idadenx.a4c') |
self.L.load('johnpye/idadenx.a4c') |
330 |
M = self.L.findType('idadenx').getSimulation('sim') |
M = self.L.findType('idadenx').getSimulation('sim') |
331 |
|
M.setSolver(ascpy.Solver('QRSlv')) |
332 |
I = ascpy.Integrator(M) |
I = ascpy.Integrator(M) |
333 |
I.setEngine('IDA') |
I.setEngine('IDA') |
334 |
I.setReporter(ascpy.IntegratorReporterConsole(I)) |
I.setReporter(ascpy.IntegratorReporterConsole(I)) |
339 |
I.setParameter('autodiff',True) |
I.setParameter('autodiff',True) |
340 |
I.setParameter('linsolver','SPGMR') |
I.setParameter('linsolver','SPGMR') |
341 |
I.setParameter('gsmodified',False) |
I.setParameter('gsmodified',False) |
342 |
|
I.setParameter('maxncf',10) |
343 |
I.analyse() |
I.analyse() |
344 |
I.solve() |
I.solve() |
345 |
assert abs(float(M.y1) - 5.1091e-08) < 1e-10; |
assert abs(float(M.y1) - 5.1091e-08) < 1e-10; |
346 |
assert abs(float(M.y2) - 2.0437e-13) < 1e-15; |
assert abs(float(M.y2) - 2.0437e-13) < 1e-15; |
347 |
assert abs(float(M.y3) - 1.0) < 1e-5; |
assert abs(float(M.y3) - 1.0) < 1e-5; |
348 |
|
|
349 |
def testkryxSPGMR(self): |
def testkryx(self): |
350 |
self.L.load('johnpye/idakryx.a4c') |
self.L.load('johnpye/idakryx.a4c') |
351 |
M = self.L.findType('idakryx').getSimulation('sim') |
M = self.L.findType('idakryx').getSimulation('sim') |
352 |
M.build() |
M.build() |
353 |
I = ascpy.Integrator(M) |
I = ascpy.Integrator(M) |
354 |
I.setEngine('IDA') |
I.setEngine('IDA') |
355 |
I.setReporter(ascpy.IntegratorReporterConsole(I)) |
I.setReporter(ascpy.IntegratorReporterConsole(I)) |
356 |
I.setParameter('linsolver','SPGMR') |
I.setParameter('linsolver','SPTFQMR') |
357 |
I.setParameter('maxl',8) |
I.setParameter('maxl',8) |
358 |
I.setParameter('gsmodified',False) |
I.setParameter('gsmodified',False) |
359 |
I.setParameter('autodiff',True) |
I.setParameter('autodiff',True) |