Softwares
This page lists all of the softwares used or developped during the project. A particular emphasis is given to free and open-source softwares following the FAIR principles: Free, Accessible, Inclusive and Reproducible. To foster scientific collaborations, all codes are developped in dedicated public GitHub repositories. For long-term preservation, every major release is also hosted on Zenodo and recherche.data.gouv.fr with a citable DOI for proper referencing.
Computational Fluid Dynamics
dNami: Simulation of system of balance laws
| repository | dNami |
| License | BSD 3-Clause |
| Programming Language | Python, Fortran, C |
| Status | In development |
| Core developers | N. Alferez |
dNami is an open-source multi-language (Python, Fortran, C) framework for solving systems of balance laws using explicit numerical schemes on structured meshes. dNami uses MPI, loop-unrolling and cache blocking techniques to speed up stencil-based operations. Spatial derivatives are constructed using a customisable finite-difference formulation.
Linear Algebra
LightKrylov: Abstract linear algebra
| repository | LightKrylov |
| License | BSD 3-Clause |
| Programming Language | Fortran |
| Status | Stable |
| Core developers | J.-Ch. Loiseau and Simon Kern |
| Paper | Journal of Open Source Software |
LightKrylov is a modern Fortran package for linear algebra based on Krylov methods. It leverages Fortran’s abstract type feature to provide generic implementations of the various Krylov methods. The only requirement from the user to benefit from the capabilities of LightKrylov is to extend the abstract_vector and abstract_linop types to define their notion of vectors and linear operators. LightKrylov then provides the following functionalities:
- Krylov factorizations:
arnoldi,lanczos,bidiagonalization. - Spectral analysis:
eigs,eighs,svds. - Linear systems:
gmres,cg. - Nonlinear system:
newton.
To date, LightKrylov can handle real and complex-valued vectors and linear operators, using both single and double precision arithmetic. This was made possible thanks to fypp, a python powered Fortran meta programming utility.
Optimization
QuadProg: Strictly convex quadratic programming
| repository | QuadProg |
| License | GPL-3.0 |
| Programming Language | Fortran |
| Status | Stable |
| Core developers | J.-Ch. Loiseau |
This is an updated version of the quadprog solver initially written by Berwin A. Turlach in FORTRAN 77. It can be used to solve strictly convex quadratic programs of the form
\[ \begin{aligned} \operatorname{minimize} & \quad \dfrac12 x^\top P x - x^\top q \\ \operatorname{subject~to} & \quad A x = b \\ & \quad Cx \geq d, \end{aligned} \]
using an active set method. It is most efficient for small to moderate sized QP described using dense matrices. Such problems arise for instance for linear model predictive control, one of the control strategies envisioned in this ANR project.
Control engineering, reduced-order modeling and system identification
LightROM: Reduced-order modelling framework for abstract LTI systems
| repository | LightROM |
| License | BSD 3-Clause |
| Programming Language | Fortran |
| Status | In development |
| Core developers | J.-Ch. Loiseau and Simon Kern |
LightROM is a lightweight Fortran library for reduced-order modeling of large-scale input-output linear time invariant dynamical systems. It is build on top of LightKrylov, another package from our group providing implementations of various Krylov-based techniques in modern Fortran.
LightControl: Modern Fortran toolbox for linear control engineering
| repository | LightControl |
| License | MIT |
| Programming Language | Fortran |
| Status | Early development |
| Core developers | J.-Ch. Loiseau |
LightControl is an attempt to emulate the MATLAB Control toolbox in Fortran. It provides high-level interfaces to numerous utilities provided by the FORTRAN77 SLICOT toolbox. It is in its very early development stage but already provides high-levels interfaces for solving Lyapunov and Riccati equations, or computing controllability and observability gramians of an LTI system.
pySINDy: Python package for sparse identification of nonlinear dynamics
| repository | pySINDy |
| License | MIT |
| Programming Language | Python |
| Status | Stable |
PySINDy is a package for system identification, primarily revolving around the method of Sparse Identification of Nonlinear Dynamical systems (SINDy) introduced in Brunton et al. (2016). It also includes other methods from related literature. System identification refers to the process of using measurement data to infer the governing dynamics. Once discovered, these equations can make predictions about future states, can inform control inputs, or can enable the theoretical study using analytical techniques. The resulting models are inherently interpretable and generalizable.