I have a question about how to set time-dependent time steps (or maximum time steps) for solving an ODE. For a quick demo, say we are dealing with this simple ODE:
using OrdinaryDiffEq f(u, p, t) = 1.01 * p * u u0 = 1 / 2 p = 1.0 # ODE parameter tspan = (0.0, 1.0) prob = ODEProblem(f, u0, tspan, p) sol = solve(prob, Tsit5(), reltol = 1e-8, abstol = 1e-8)
Tsit5() allows adaptive time steps, and it takes 17 steps to reach
t=1.0. I can instead enforce a fixed timestep like
sol = solve(prob, Tsit5(), adaptive=false, dt = 0.01, reltol = 1e-8, abstol = 1e-8)
and as expected, it takes 101 steps.
Now my question is, is it possible to define a customized time step
dt(or a maximum-allowed time step
dtmax) which is dependent on the ODE parameters
I guess this can be achieved via Step Control Callbacks · DiffEqCallbacks.jl (sciml.ai). While continuing to go over its usage, there’s no harm posting my original question here.