solver

Tools for solving compartmental ODEs

class summer2.solver.SolverArgs

Bases: object

Options for ODE solver used by model

DEFAULT = {'atol': 0.00014, 'rtol': 0.00014}
FAST = {'atol': 0.0014, 'rtol': 0.0014}
PRECISE = {'atol': 1.4e-08, 'rtol': 1.4e-08}
class summer2.solver.SolverType

Bases: object

Options for ODE solver used by model

EULER = 'euler'
ODE_INT = 'odeint'
RUNGE_KUTTA = 'rk4'
SOLVE_IVP = 'solve_ivp'
STOCHASTIC = 'stochastic'
summer2.solver.solve_ode(solver_type: str, ode_func: Callable[[ndarray, float], ndarray], values: ndarray, times: ndarray, solver_args: dict) ndarray

Solve an ODE function given a function describing the dynamics, some initial conditions and times.

summer2.solver.solve_with_euler(ode_func: Callable[[ndarray, float], ndarray], values: ndarray, times: ndarray, solver_args: dict)

Solve ODE with a hand-rolled Euler’s method implementation.

WARNING: This method is too inaccurate to use for real applications.

summer2.solver.solve_with_ivp(ode_func: Callable[[ndarray, float], ndarray], values: ndarray, times: ndarray, solver_args: dict)

Solve ODE with SciPy’s solve_ivp solver. This method allows us to set a stopping condition.

https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html

summer2.solver.solve_with_odeint(ode_func: Callable[[ndarray, float], ndarray], values: ndarray, times: ndarray, solver_args: dict)

Solve ODE with SciPy’s odeint solver.

https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html

summer2.solver.solve_with_rk4(ode_func: Callable[[ndarray, float], ndarray], values: ndarray, times: ndarray, solver_args: dict)

Solve ODE with a hand-rolled Runge-Kutta 4 implementation.

WARNING: This method may require a very small time step to perform accurate numerical integration.