LSODE: Difference between revisions

From ASCEND
Jump to navigation Jump to search
Created page with '{{solvers}} {{missing}}'
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{solvers}}
{{solvers}}
{{missing}}
{{stub}}
 
This is the ASCEND binding to the well-known [http://www.llnl.gov/casc/odepack/download/lsode_agree.html '''LSODE''' solver from LLNL]. Provides multi-step ODE integration techniques both implicit and explicit (BDF and AM).
 
Note that although '''LSODE''' is an [[ODE]] solver, it is used in ASCEND as a [[DAE]] solver through the use of an 'inner loop' solver inside '''LSODE'''. The architecture at this stage is a bit messy: '''LSODE''' just wraps around the Solver instance of [[QRSlv]] currently assigned to the model (Simulation::setSolver). This needs to be generalised so that any [[NLA]] solver can be used for the inner loop.
 
'''LSODE''' extracts solutions for the differential variables using the [[QRSlv]] solution of from the inner loop (by FIXing the states and FREEing the derivatives). Then these derivatives and the corresponding differential variable are given to '''LSODE''' for time-stepping.
 
The use of an inner loop will make '''LSODE''' slower that [[IDA]] but it does have the benefit of giving a jacobian matrix from which system eigenvalues can be computed:
 
<math>
\frac{\partial x'}{\partial x}
</math>
 
This matrix is accessible using the integrator_write_matrix or Integrator::writeMatrix function and is written in a form that can be read into the Python <tt>scipy</tt> tool, Matlab, and elsewhere (the [[MatrixMarket]] format).
 
== Solver parameters ==
<pre>meth
miter
maxord
timing
rtolvect
rtol
atolvect
atol
</pre>

Latest revision as of 02:06, 28 September 2014

NLA
QRSlv
CMSlv
IPSlv
NLP
CONOPT
IPOPT
TRON
MINOS
Opt
NGSlv
DAE/ODE
IDA
LSODE
DOPRI5
RADAU5
LA
Linsolqr
Linsol
LP
MakeMPS
Logic
LRSlv

This is the ASCEND binding to the well-known LSODE solver from LLNL. Provides multi-step ODE integration techniques both implicit and explicit (BDF and AM).

Note that although LSODE is an ODE solver, it is used in ASCEND as a DAE solver through the use of an 'inner loop' solver inside LSODE. The architecture at this stage is a bit messy: LSODE just wraps around the Solver instance of QRSlv currently assigned to the model (Simulation::setSolver). This needs to be generalised so that any NLA solver can be used for the inner loop.

LSODE extracts solutions for the differential variables using the QRSlv solution of from the inner loop (by FIXing the states and FREEing the derivatives). Then these derivatives and the corresponding differential variable are given to LSODE for time-stepping.

The use of an inner loop will make LSODE slower that IDA but it does have the benefit of giving a jacobian matrix from which system eigenvalues can be computed:

<math> \frac{\partial x'}{\partial x} </math>

This matrix is accessible using the integrator_write_matrix or Integrator::writeMatrix function and is written in a form that can be read into the Python scipy tool, Matlab, and elsewhere (the MatrixMarket format).

Solver parameters

meth
miter
maxord
timing
rtolvect
rtol
atolvect
atol