LOSDAR is a multistep method for solving explicit ordinary differential equations on the form,

\[\dot{y} = f(t,y), \quad y(t_0) = y_0.\]

LSODAR automatically switches between using an ADAMS method or an BDF method and is also able to monitor events.

LSODAR is part of ODEPACK,


  • State events (root funtions) : True
  • Step events (completed step) : True
  • Time events : True


Import the solver together with the correct problem:

from assimulo.solvers import LSODAR
from assimulo.problem import Explicit_Problem

Define the problem, such as:

def rhs(t, y): #Note that y are a 1-D numpy array.
    yd = -1.0
    return N.array([yd]) #Note that the return must be numpy array, NOT a scalar.

y0 = [1.0]
t0 = 1.0

Create a problem instance:

mod = Explicit_Problem(rhs, y0, t0)


For complex problems, it is recommended to check the available examples and the documentation in the problem class, Explicit_Problem. It is also recommended to define your problem as a subclass of Explicit_Problem.


When subclassing from a problem class, the function for calculating the right-hand-side (for ODEs) must be named rhs and in the case with a residual function (for DAEs) it must be named res.

Create a solver instance:

sim = LSODAR(mod)

Modify (optionally) the solver parameters.


  • atol Defines the absolute tolerance(s) that is to be used by the solver.
  • backward Specifies if the simulation is done in reverse time.
  • clock_step Specifies if the elapsed time of an integrator step should be timed or not.
  • display_progress This option actives output during the integration in terms of that the current integration is periodically printed to the stdout.
  • maxh The absolute value of the maximal stepsize for all methods Parameters:: maxh - Default: 0.
  • maxordn The maximum order used by the Adams-Moulton method (nonstiff case) Parameters:: maxordn - Default 12 - Should be a positive integer.
  • maxords The maximum order used by the BDF method (stiff case) Parameters:: maxords - Default 5 - Should be a positive integer.
  • maxsteps The maximum number of steps allowed to be taken to reach the final time.
  • num_threads This options specifies the number of threads to be used for those solvers that supports it.
  • report_continuously This options specifies if the solver should report the solution continuously after steps.
  • rkstarter This defines how LSODAR is started.
  • rtol Defines the relative tolerance that is to be used by the solver.
  • store_event_points This options specifies if the solver should save additional points at the events, \(t_e^-, t_e^+\).
  • time_limit This option can be used to limit the time of an integration.
  • usejac This sets the option to use the user defined jacobian.
  • verbosity This determines the level of the output.


Simulate the problem: