all rates have been checked except for exponential, analytical solution is quite tricky. The linear function with add_rate != 0 might give a warning, this is fine; it has to do with the discretization of the rate.