Releases: dae-cpp/dae-cpp
v2.2.0
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 exactly (with the given tolerance), and the solver integrator should not “overshoot”. This version also includes several important updates, such as bug fixes and corrections for compiler warnings.
Refer to the Documentation pages for more information and examples.
Important changes:
- Added
solver_command::command
enum 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
-Wall
and-Wextra
warnings (e.g., "reorder" and "unused variable" warnings) - Switch from
uint32_t
toint32_t
forint_type
- Switch from
uint64_t
toint64_t
forint_type
ifDAECPP_LONG
is defined - Fix 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
This patch increases the reliability of the solver.
- Fixed bug when the solver could not recover from divergence and could not redo the last time step correctly
- Type
dual_type
deprecated but still supported, addedstate_value
instead as it is clearer - Added
recover_from_linsolver_failure
solver option (true
by 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.
Documentation: dae-cpp.github.io
Fully redesigned dae-cpp (compared to v1.x)
The main features of the DAE solver:
- Header only, no pre-compilation required.
- Uses automatic (algorithmic, exact) differentiation to compute the Jacobian matrix, if it is not provided by the user.
- The user can provide analytically derived Jacobian or the Jacobian matrix shape (positions of non-zero elements) to significantly speed up computation for big systems.
- Fourth-order implicit BDF time integrator that preserves accuracy even when the time step rapidly changes.
- A very flexible and customizable variable time stepping algorithm based on the solution stability and variability.
- Mass matrix can be non-static (can depend on time) and it can be singular.
- The library is extremely easy to use. A simple DAE can be set up using just a few lines of code (see Quick Start).
Refer to the Documentation pages for more information and examples.
All notable changes are summarized in the CHANGELOG.
dae-cpp v1.1
A simple but powerful C++ solver for Differential Algebraic Equation (DAE) systems
Please, see full description here.
What's new
- Added Robertson Problem (a system of stiff Differential Algebraic Equations with a conservation law) as an example.
- The solver was tweaked for stiff problems and validated against MATLAB ode15s stiff DAE solver.
- Added MS Visual Studio 15 default project file to compile the solver and all the examples under Windows.
The first working version of the solver
See full description here.