Skip to content

Thierry-Dumont/Odes-NG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a9db254 · Dec 9, 2024
Oct 10, 2017
Apr 21, 2018
Apr 21, 2018
Apr 24, 2018
Dec 9, 2024
Apr 16, 2018
Apr 21, 2018
Oct 9, 2017
Oct 11, 2017
Jul 28, 2016
Oct 11, 2017
May 7, 2018
Apr 20, 2018

Repository files navigation

Odes-NG

C++ library of (Ordinary) Differential Equations solvers, with routines adapted to Parabolic Equations.

(Why NG? because it is a New Generation of solvers).

This library contains:

  1. optimized rewriting of classical stiff ODES solvers.

  2. specialized versions of stabilized explicit solvers, mainly for large systems resulting from parabolic PDEs.

Stabilized explicit solvers (Rock*) are multi-threaded (openmp).

It is yet experimental !

Numerical Methods:

  • Radau5-NG : rewriting of the classical Radau5 code (by Hairer and Wanner).

  • Rock4-NG : rewriting of the code of A. Abdulle, with less memory copies.

  • Rock4-L : specialization of Rock4 for linear problems.

  • Rodas-NG : rewriting of the code Rodas (by Hairer and Wanner).

  • SDIRKL : SDIRK methods, for linear problems.

  • SymplectikRK : Gaussian symplectic methods.

We hope to add at least 2 other methods in the (near?) future: a rewritten version of Rock2, and a specialization of Rock2 for linear problems.

Structure:

  • Odes-NG/common/include/: contains parts of code common to all integrators.

  • For each integrator, the directory contains:

    • include/ : the core integrator.
    • test/ : examples, and some documentation.
    • An optional sage/ sub-directory contains SageMath material used to build the codes.

Concept:

User provides a C++ class which should completely describe the problem:

  • RHS (and if necessary Jacobian of RHS).
  • Size (number of equations).
  • Some operators if necessary.
  • Constants.
  • ...

This allow to inline functions in the case of a rather simple RHS.

The original codes for Radau5, Rodas, Rock2 and Rock4 can be found at https://www.unige.ch/~hairer/software.html

Doxygen documentation:

Just do:

 doxygen Doxyfile 

Documentation (html and latex) goes in Doc/

The main page of the html documentation explains how to use these codes.

How to build and run the tests:

cd Radau5-NG   (or Rock4-L, Rock4-NG, Rodas-NG and so on)
cd test
mkdir Build
cd Build
export CXX=your_compiler (with your compiler = g++ or icc or clang++; default:g++)
cmake ..
make
./run

Note that:

Odes-NG introduces the namespace odes.

References:

To learn about Ordinary Differential Equations solvers, you should read the bible:

  • Solving Ordinary Differential Equations I, by Hairer, Nørsett,, Wanner,
  • Solving Ordinary Differential Equations II Stiff and Differential-Algebraic Problems by Hairer and Wanner,
  • Geometric Numerical Integration by Hairer, Lubich and Wanner.

About Rock methods, you can also read this paper.

About

C++ library of (Ordinary) Differential Equations solvers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published