Closed dweindl closed 8 months ago
Oh, for the handling of plain (non)negativity/positivity constraints we don't need to upgrade sundials. We have CVodeSetConstraints already available. Only for the more general constraint handling (#2329) we'll have to upgrade.
Okay, after a brief test, this won't help with cases where the Jacobian cannot be evaluated (produces NaN) for negative x
.
Note:
CVODES in function cvInitialSetup : Constraints can not be enforced while forward sensitivity is used with simultaneous method
In many applications, our models are subject to physical constraint, such that the model state has to be non-negative. Due to numerical issues, this is however not always ensured in practice. Currently, this is optionally handled via
Model.{setStateIsNonNegative|allStatesNonNegative}
, which boils down to takingmax(0, state)
.As of v6.2.0[1], SUNDIALS supports handling such constraints via projection functions. This would be the preferable mechanism for handling non-negativity- or more general constraints.
This will, however, first require upgrading SUNDIALS (#1565).[1] Note: relevant memory leaks fixed in v6.4.0