Has there been a change in the remake function recently?
The following code worked one month ago:
prob_rm = remake(prob, u0=[], p=p_modify)
sol = solve(prob_rm, QBDF(), reltol=1e-5,tstops=t_u_switch)
Now, I get an error message:
Mass matrix size is incompatible with initial condition
sizing. The mass matrix must represent the `vec`
form of the initial condition `u0`, i.e.
`size(mm,1) == size(mm,2) == length(u)`
size(prob.f.mass_matrix,1): 6
length(u0):
I probably carried over theremake syntax pre-MTK. Setting u0=[] worked at least until late December 2023 for MTK based models; I think also until early January 2024 (I used the syntax in a notebook for a paper with revised sumbission ca Jan 12 2024.)
Since this is a kwarg, I’d perhaps think the default was an empty dictionary… Will check later
Why? Is this because one cannot have two statements in sequence (unlikely), or because m is a state (while A is a parameter)? Note that prob[m] = _m did work with the deprecated syntax.
You can use the simplified forms if you want, i.e. prob.ps[m] = _m.
The reason is because the previous form could never be type stable or fast, so people were bypassing the system with homebrewed solutions that were type-stable. So we changed the core syntax to something that is allowed to be optimal, with some syntactic sugar for simplifications that lose performance.