It seems a simple syntax error. The syntax for NDSolve[]
for an ODE system is
NDSolve[system, Vars, time, opts...]
Here system
is to include all the differential equations, boundary/initial conditions, and WhenEvent[]
events of the system. And Vars
specifies the dependent variables and their output forms, and time
specifies the independent variable and domain limits, which is {t, t0, tf}
in your code. Your NDSolve
call, if the comment signs (*
, *)
are removed, has the form
NDSolve[system, WhenEvent[...], Vars, time, opts...]
The WhenEvent
code is not part of the system but a separate argument, the second argument. For NDSolve[]
, the second argument is taken to be a dependent variable output specification. The WhenEvent[...]
code is not a good dependent variable specification at all, and the error message is a bit confused by it. The message contains "the arguments of the dependent variable in...", which is about the best hint to what is going wrong: There is something wrong with the second argument that specifies the dependent variable output. (NDSolve[]
stops here; otherwise I would expect errors arising from Vars
being the independent variable and domain spec.) The WhenEvent[...]
should be made part of the system, which you call ODEandICTable
in your notebook.