Skip to content

CyRK v0.7.0

Compare
Choose a tag to compare
@jrenaud90 jrenaud90 released this 28 Aug 20:04
· 377 commits to main since this release
3c63364

Changes

Major Changes

  • Added support for Cython 3.0.0
    • Added noexcept to pure cython functions to avoid a potential python error check.

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

Full Changelog: v0.6.2...v0.7.0