CyRK v0.11.3
Changes
New:
- Added helper function to allow users to include CyRK headers during installation.
CyRK.get_include()
this returns a list which must be appended to your include list in "setup.py". - Some minor performance improvements when using dense output or t_eval.
- Added new cysolve_ivp C++ function,
baseline_cysolve_ivp_noreturn
, and cython wrapped version,cysolve_ivp_noreturn
, that require the storage class as input (then modify it) rather than provide it as output.
C++ Changes:
- Major rework of the C++ Solver backend
- The
CySolverResult
storage structure is now the owner of: the solution data, the dense outputs, and the solver itself (before the solver was stand alone). This ensures that the solver is alive for the dense outputs which, depending on settings, may need to make calls to the solver even after the integration is complete. - Removed many pointers in favor of direct access of variables. This was due to some variables moving and hanging pointers causing crashes.
- Drastically reduced the size of
CySolverDense
and moved its state data to a heap allocated array. This has led to large performance gains whendense_output=True
for integrations requiring a large number of steps.
- The
num_y
andnum_extra
are now size_t type instead of unsigned ints.integration method
is not int instead of unsigned int.
Fixes:
- Fixed issue where if t_eval was less than t_end it could cause an access violation.
- Fixed issue where dense output was sometimes being created twice when t_eval was provided.
- Addressed several compile warnings.
- Fixed issue where when t_eval is provided and dense output = true, cysolver may call a dense solution that has moved (hanging pointer).
GitHub Tracked Changes
- Reworking shared ptrs by @jrenaud90 in #71
- Switch to vectors for dense by @jrenaud90 in #72
- Dev 11.3 by @jrenaud90 in #73
Full Changelog: v0.11.2...v0.11.3