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.