OSLO (ODE SoLver toolbOx) is a high-performance, Fortran-based toolbox for solving systems of ordinary differential equations (ODEs). It provides a unified and modular interface to multiple state-of-the-art ODE solvers, allowing users to switch between stiff and non-stiff integrators with minimal code changes.
OSLO is designed for scientific computing and HPC environments, bundling well-established solvers libraries under a single, consistent API.
-
Unified Solver Interface Switch between different ODE solvers using a common Fortran API.
-
Broad Solver Coverage
- Hairer & Wanner solvers for stiff and non-stiff problems
- FATODE with automatic differentiation
- Intel ODE (Linux only, Intel compiler)
- SUNDIALS (CVODE, IDA, etc.)
-
Parallel Execution
- Shared-memory parallelism via OpenMP
- Distributed-memory parallelism via MPI
-
Compiler Flexibility
- GNU Fortran (
gfortran) - Intel Fortran (
ifort/ifx)
- GNU Fortran (
-
Robust Linear Algebra
- LAPACK integration for dense and sparse systems
-
Modular Architecture
- Easy to extend or embed in existing Fortran codes
- CMake ≥ 3.23
- Fortran compiler: GNU or Intel
- LAPACK
- C compiler (required for SUNDIALS)
- OpenMP — shared-memory parallelism
- MPI — distributed-memory parallelism
OSLO has been tested on the following configurations:
| OS | Compiler | Status |
|---|---|---|
| macOS | GNU (gfortran) | ✅ |
| Ubuntu Linux | GNU | ✅ |
| Ubuntu Linux | Intel | ✅ |
| OpenSUSE Linux | GNU | ✅ |
| OpenSUSE Linux | Intel | ✅ |
The toolbox is expected to work on most Unix-like systems with a compatible Fortran compiler.
git clone https://github.com/MarcoGrossi92/OSLO.git
cd OSLO
./install.sh build --compiler=gnu./install.sh [GLOBAL_OPTIONS] build [OPTIONS]Global options
-v, --verbose— verbose output
Build options
--compiler=gnu|intel--use-openmp--use-mpi--use-sundials(enabled by default)
Examples
# GNU compiler + OpenMP
./install.sh build --compiler=gnu --use-openmp
# Intel compiler + MPI
./install.sh build --compiler=intel --use-mpimkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DUSE_OPENMP=ON \
-DUSE_MPI=OFF \
-DUSE_SUNDIALS=ON \
..
make
make installOSLO builds a Fortran library that can be linked into your own applications.
use OSLO
implicit none
integer, parameter :: neq = 3
real(8) :: y(neq), t, tout
real(8) :: rtol(neq), atol(neq)
integer :: err
call setup_odesolver(N=neq, solver='dvodef90', RT=rtol, AT=atol)
call run_odesolver(neq, t, tout, y, Fgeneral, err)gfortran -c your_program.f90 -Ibuild/modules
gfortran your_program.o -Lbuild/lib -lOSLO -o your_program-
Hairer & Wanner Solvers
© University of Geneva — BSD-style license
https://www.unige.ch/~hairer/software.html -
FATODE
Fast and Accurate ODE solver with AD — GNUv1.3 license
https://people.cs.vt.edu/~asandu/Software/FATODE/
-
SUNDIALS
© Lawrence Livermore National Laboratory — BSD license
https://computing.llnl.gov/projects/sundials -
Intel ODE
Intel-optimized ODE solvers (Linux only)
OSLO/
├── src/ # Core library and solvers
├── lib/ # Third-party solver sources
├── bin/ # Executables and tests
├── cmake/ # CMake modules
├── scripts/ # Helper scripts
├── install.sh # Build helper
└── CMakeLists.txt
Contributions are welcome — bug fixes, solver additions, documentation, or performance improvements.
Typical workflow:
- Fork the repo
- Create a feature branch
- Commit changes
- Open a pull request
Please use the GitHub issue tracker for:
- bug reports
- feature requests
- solver questions
👉 https://github.com/MarcoGrossi92/OSLO/issues