CyRK v0.7.0
Changes
Major Changes
- Added support for Cython 3.0.0
- Added
noexcept
to pure cython functions to avoid a potential python error check.
- Added
New Features
- Added the ability to pass arrayed versions of rtol and atol to both the numba and cython-based solvers (cyrk_ode and CySolver).
- For both solvers, you can pass the optional argument "rtols" and/or "atols". These must be C-contiguous numpy arrays with float64 dtypes. They must have the same size as y0.
- Added tests to check functionality for all solvers.
- This resolves Issue #1.
- Added new optional argument to all solvers
max_num_steps
which allows the user to control how many steps the solver is allowed to take.- If exceeded the integration with fail (softly).
- Defaults to 95% of
sys.maxsize
(depends on system architecture).
- New
CySolver.update_constants
method allows for significant speed boosts for certain differential equations.- See test diffeqs, which have been updated to use this feature, for examples.
Other Changes
- Improved documentation for most functions and classes.
- To make more logical sense with the wording,
CySolver.size_growths
now gives one less than the solver's growths attribute. - Cleaned up status codes and created new status code description document under "Documentation/Status and Error Codes.md"
- Fixed compile warning related to NPY_NO_DEPRECATED_API.
- Converted RK variable lengths to Py_ssize_t types.
- Changed default tolerances to match scipy: rtol=1.0e-3, atol=1.0e-6.
Performance
- Various minor performance gains for cython-based solvers.
- Moved key loops in
CySolver
into self-contained method so that gil can be released. - New
CySolver.update_constants
method allows for significant speed boosts for certain differential equations.
Bug Fixes:
- Fixed potential seg fault when accessing
CySolver
's arg_array_view. - Fixed potential issue where
CySolver
's first step size may not be reset when variables that affect it are. - Fixed missed declaration in
cyrk_ode
. - Fixed bug where the state reset flag was not being passed from
CySolver.solve
wrapper method.
GitHub Tracked Changes
- v0.7.0 by @jrenaud90 in #34
Full Changelog: v0.6.2...v0.7.0