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.