-
Notifications
You must be signed in to change notification settings - Fork 1
Solver
Alexander Michalek edited this page Aug 18, 2025
·
1 revision
This solver addresses non-linear routing equations by integrating user-specified ordinary differential equations (ODEs). It leverages adaptive and fixed-step Runge-Kutta methods to balance accuracy and computational efficiency.
- RK45 (Dormand-Prince): The default solver is an adaptive Runge-Kutta-Fehlberg 4(5) method (RK45), which dynamically adjusts step sizes to meet user-defined error tolerances. This ensures accurate solutions for stiff or highly non-linear routing problems.
- RK4 Fixed Step: For performance optimization, users can select predefined levels where a classical Runge-Kutta 4th-order (RK4) fixed-step method is applied. This provides faster computation when strict adaptive control is not critical.
- Tolerances: Users can specify absolute and relative error tolerances, which guide the adaptive RK45 solver.
- Performance Levels: Users may select levels to allow RK4 fixed-step integration in less sensitive portions of the solution, trading some precision for speed.
The solver is implemented using Boost.Numeric.ODEInt, a C++ library providing flexible and efficient ODE integration with support for both adaptive and fixed-step Runge-Kutta methods.
- Network routing simulations
- Non-linear system analysis
- Performance-sensitive ODE modeling
- Boost.Numeric.ODEInt Documentation: https://www.boost.org/doc/libs/1_55_0/libs/numeric/odeint/doc/html/index.html
Getting Started
User Guide
- Background
- Compiling
- OpenMP
- Solver
- The YAML File
- Parameters
- Initial Conditions
- Boundary Conditions
- Reservoirs
- Runoff Forcings
- Output Files
Programmer Guide