I tried re-running an older model in the newest version of stan, and it crashes. After investigating, it seems the stiff solver is no longer working.
Below is a minimal example that can be run (unsuccessfully, because it crashes,) in rstan. Note that if you switch from integrate_ode_bdf to integrate_ode_rk45, it runs successfully - so the issue may not relate to the integrator, but that’s what makes it happen here.
series = seq(0.1,9.2,1)
data_ode=list(T = 10,
y0 = c(1,0),
t0=0,
ts=series
)
scode_bdf <- "
functions {
real[] sho(real t,
real[] y,
real[] theta,
real[] x_r,
int[] x_i) {
real dydt[2];
dydt[1] = y[2];
dydt[2] = -y[1] - theta[1] * y[2];
return dydt;
}
}
data {
int<lower=1> T;
real y0[2];
real t0;
real ts[T];
}
transformed data {
real x_r[0];
int x_i[0];
}
parameters{
real theta[1];
}
model {
theta ~ normal(0.15,0.1);
}
generated quantities {
real y_hat[T,2] = integrate_ode_bdf(sho, y0, t0, ts, theta, x_r, x_i);
// add measurement error
for (t in 1:T) {
y_hat[t, 1] += normal_rng(0, 0.1);
y_hat[t, 2] += normal_rng(0, 0.1);
}
}
"
fit_bdf <- stan(model_code = scode_bdf, data=data_ode, iter = 10000, verbose = FALSE)