CHANGELOG
All notable user-facing changes to the dae-cpp project are documented in this page.
v2.2.0
New
In version 2.2.x, the solver can reduce the time step size and redo the current time step until a certain condition is met. This is useful if the solver needs to stop when, for example, one of the variables should reach the given value, and the solver should not “overshoot”. This version also includes several important updates, such as bug fixes and corrections for compiler warnings.
- Added
solver_command::commandenum with Solution Manager functor return values. Used to send “commands” to the solver from the user-defined Solution Manager - The user can request the solver to decrease the time step size
- The user can request the solver to decrease the time step size and then redo the current time step
- Fix parentheses warning in
autodiff - Fix
-Walland-Wextrawarnings (e.g., “reorder” and “unused variable” warnings) - Switch from
uint32_ttoint32_tforint_type - Switch from
uint64_ttoint64_tforint_typeifDAECPP_LONGis defined - Fix the relative error check
- Fix situation when the solver can decrease and then immediately increase the time step
- Fix tolerances for single precision
v2.1.1
- Fixed bug when the solver could not recover from divergence and could not redo the last time step correctly
- Type
dual_typedeprecated but supported, addedstate_valueinstead as it is clearer - Added
recover_from_linsolver_failuresolver option (trueby default). Now the solver will try to recover from the linear solver failure (e.g., on the matrix decomposition step) by rolling back and decreasing the time step.
v2.1.0
Version 2.1.x allows the user to define the shape (structure) of the Jacobian matrix. I.e., instead of providing analytic Jacobian (or not providing it at all, which is slow if the system is large enough), the user can specify the positions of non-zero elements in the Jacobian. The solver will use automatic differentiation for the specified elements only. This works nearly as fast as analytic Jacobian without requiring the user to differentiate the vector function manually.
- Added
daecpp::JacobianMatrixShapeanddaecpp::VectorFunctionElementshelper classes to define the Jacobian matrix shape and the vector function - Added
daecpp::JacobianCompareclass that helps the user to compare the user-defined Jacobian (either defined explicitly or using Jacobian shape) with the one computed automatically from the system RHS - Added Jacobian shape and Jacobian compare examples
- Updated
autodifftov1.1.2 - Updated Eigen (commit from 28th March 2024, see issue #52)
- Updated
googletestfromv.1.14.xtov1.15.2 - Added integration test that uses Jacobian derived from the given shape
- Added unit tests for all new classes (
daecpp::JacobianMatrixShape,daecpp::VectorFunctionElements,daecpp::JacobianCompare) - Minor solver updates
v2.0.1
- Added Flame Propagation example (stiff equation)
- Added
daecpp::dual_typefor automatic differentiation of the vector function (used in Flame Propagation example) - Added integration test based on the “Flame Propagation” example
- Updated build instructions
v2.0.0
Redesigned version of the library. Consider this version as a public beta. Please report any bugs using GitHub issues.
v1.1
Retired
Version 1.x has been archived in the legacy branch of the repository.
- Tweaked the DAE solver
- Added more examples
v1.0
Retired
First working version of the DAE solver.