5. Sous-routines et bibliothèques numériques

La meilleure chose qui pouvait arriver au calcul scientifique avec des logiciels libres sous GNU/Linux est la bibliothèque scientifique GNU GSL. Cependant, son code source est exclusivement en C ; ainsi ceux qui travaillent en FORTRAN trouveront qu'il s'agit d'une raison pour ne pas l'utiliser. En saisissant cette opportunité, GSL est une autre raison (en plus du compilateur C GCC couplé avec les avantages de la programmation en C) pour commencer à apprendre l'utilisation du C. En plus de cela, les deux meilleurs entrepôts de code source et de bibliothèques pour les méthodes numériques sont Netlib et GAMS. Il y a de nouveaux outils développés en dehors de l'approche habituelle : "écrivez un programme FORTRAN et obtenez les sous-routines numériques sur Internet". Les mérites et inconvénients de cette méthode sont discutables, mais il existe d'autres options comme la numérique orientée objet (Object Oriented Numerics), GSL et GiNaC qui sont des avancées intéressantes.

5.1. Entrepôts de logiciels

  • Netlib : une quantité impressionnante de codes sources libres pour des méthodes numériques. Netlib est L'endroit où vous trouverez un nombre incalculable de codes sources à vocation numérique. Il possède aussi un forum de discussion actif où vous pouvez soumettre vos questions et obtenir de l'aide. Netlib a aussi une bibliothèque d'outils parallèles et des possibilités de recherche thématique.

  • GAMS : le Guide des Applications MathématiqueS (Guide to Available Mathematical Software) : GAMS a un outil de recherche très utile qui vous permet de faire des recherches sur des mots-clés (par exemple : ``diffusion'' pour chercher un solveur d'équation de diffusion). Cependant, la navigation par logiciel révèle que les logiciels fournis sont souvent des liens vers NetLib.

  • Numérique orientée objet (Object Oriented Numerics) : un site consacré au calcul orienté objet. Il fournit une liste de discussion (en anglais), une liste complète de liens vers des bibliothèques disponibles gratuitement (OO bien sûr) et vers des outils disponibles gratuitement pour le calcul scientifique orienté objet.

  • Bibliothèque scientifique de GNU : La bibliothèque scientifique de GNU (GSL) est une collection de routines numériques écrites à partir de rien en C. Elle fournit une interface de programmation d'applications (API) pour les programmeurs C et permet également d'écrire des interfaces pour des langages de très haut niveau. Elle couvre une grande gamme de sujets de calcul numérique, est dotée d'un bon manuel, est très facilement portable et est distribuée sous la licence publique générale GNU.

  • GiNaC : GiNaC est conçu pour permettre la création de logiciels nécessitant de faire des manipulations symboliques en interne. Un ensemble de capacités algébriques lui permet d'étendre le C++ ; son acronyme récursif (et en anglais) est « GiNaC is not a Computer Algebra system ». Il est distribué sous les termes et conditions de la licence publique générale GNU (GPL).

5.2. Autres bibliothèques numériques spécialisées

  • FFTW : FFTW est un ensemble de routines rapides pour calculer la transformée discrète de Fourier dans une ou plusieurs dimensions. Elle inclut les transformées complexe, réelle et parallèle et peut travailler efficacement avec des tableaux de n'importe quelle taille. Cet ensemble contient à la fois les bibliothèques FFTW monoprocesseur et parallèle en simple et double précisions.

  • LAPACK : LAPACK (Linear Algebra PACKage) est une bibliothèque standard d'algèbre linéaire numérique. LAPACK fournit des routines pour résoudre des systèmes d'équations linéaires, déterminer la solution aux moindres-carrés de systèmes linéaires d'équations. Elle peut également résoudre des problèmes aux valeurs propres et des problèmes aux valeurs singulières. LAPACK est écrit en Fortran77. Elle est bien documentée et largement utilisée (et donc largement testée).

  • SuperLU : SuperLU est une bibliothèque destinée à réaliser des décompositions LU pour la résolution directe de grands systèmes non-symétriques et de grands systèmes creux d'équations linéaires, ceci sur des ordinateurs hautement performants. Il est écrit en C et peut être appelé dans des logiciels en C ou en Fortran.

  • ARPACK : ARPACK est un ensemble de sous-routines en Fortran77 conçu pour résoudre de grands problèmes aux valeurs propres. Un manuel de l'utilisateur est disponible. Le lien ci-dessus donne aussi des informations à propos d'une version parallèle d'ARPACK : PARPACK et d'une version orientée objet : ARPACK++.

  • Logiciels de mécanique des fluides : ce lien contient une liste très complète de logiciels du domaine public, de partagiciels et de gratuiciels traitant de la mécanique des fluides et comprenant une description de chaque code.