Create a control object for controlling the adaptive stepper for systems of ordinary differential equations (ODEs). The returned object can be passed into a continuous-time dust model on initialisation.
dust_ode_control(
max_steps = NULL,
atol = NULL,
rtol = NULL,
step_size_min = NULL,
step_size_max = NULL,
debug_record_step_times = NULL
)
Maxmimum number of steps to take. If the integration attempts to take more steps that this, it will throw an error, stopping the integration.
The per-step absolute tolerance.
The per-step relative tolerance. The total accuracy will be less than this.
The minimum step size. The actual minimum
used will be the largest of the absolute value of this
step_size_min
or .Machine$double.eps
. If the
integration attempts to make a step smaller than this, it will
throw an error, stopping the integration.
The largest step size. By default there is no maximum step size (Inf) so the solver can take as large a step as it wants to. If you have short-lived fluctuations in your rhs that the solver may skip over by accident, then specify a smaller maximum step size here.
Logical, indicating if we should record
the steps taken. This information will be available as part of
the statistics()
output
A named list of class "dust_ode_control"
# We include an example of logistic growth with the package
gen <- dust::dust_example("logistic")
# Create a control object, then pass it through as the ode_control
# parameter to the constructor:
ctrl <- dust::dust_ode_control(atol = 1e-3, rtol = 1e-3)
mod <- gen$new(list(r = 0.1, K = 100), 0, 1, ode_control = ctrl)
# When the model runs, the control parameters passed in to the
# constructor are used in the solution
mod$run(10)
#> [,1]
#> [1,] 2.672373
#> [2,] 2.672373
# The full set of control parameters can be extracted:
mod$ode_control()
#> $max_steps
#> [1] 10000
#>
#> $atol
#> [1] 0.001
#>
#> $rtol
#> [1] 0.001
#>
#> $step_size_min
#> [1] 1e-08
#>
#> $step_size_max
#> [1] Inf
#>
#> $debug_record_step_times
#> [1] FALSE
#>
#> attr(,"class")
#> [1] "dust_ode_control"