Mots clés : programmation objet,
interfaÇage de programmes .
Participants : Emmanuel Briand,
Robert Rivière, Loula Fezoui.
Nous avons terminé la première phase d'étude et de
développement d'une librairie de classes C++ destinées à
définir une représentation standard des données utilisées par
les codes de calcul développés au sein du projet, aujourd'hui
en très grande majorité Fortran. L'objectif était d'aboutir à
un ensemble de classes de "fondation", relatives à la
problématique des éléments finis/volumes finis, capables
d'être interfacées le plus simplement possible avec les
programmes Fortran existants, et de servir de support à de
nouveaux modules ou codes programmés en C++.
Dans l'état actuel du projet, COSI (Caiman Object Solver
Interface) fournit aux concepteurs de solveurs en maillage
non-structuré un environnement de programmation C++/Fortran
(API : Application Programming Interface) et une
interface graphique d'utilisation (GUI : Graphical User
Interface). L'API est constituée de classes de maillages
non-structurés 2D et 3D, et de classes de base pour les
solveurs. Le concepteur d'un nouveau solveur a pour tâche
d'implémenter certaines méthodes du solveur de base et
éventuellement d'étendre une classe de maillage à ses besoins
particuliers. Le GUI permet de piloter l'exécution du solveur
sur une machine locale ou distante, et de visualiser
l'évolution de ses variables internes.
Outre sa grande capacité à traiter des types différents de
solveurs, ce schéma permet de fournir une interface standard
vers les solveurs et de diminuer grandement le travail de
maintenance. Dans la plupart des cas, les calculs lourds sont
effectués en Fortran à partir des subroutines des solveurs
initiaux (les classes C++ n'investissent pas les structures
de données les plus fines comme dans d'autres projets
intégralement objet [BM99]. Il n'y a donc pas de dégradation
des performances et le travail d'intégration des solveurs est
relativement simple. Le prix à payer pour ces deux avantages
est que la structure objet des classes de maillage n'est pas
intégralement respectée dans la mesure où les données
internes de la structure sont accessibles directement depuis
l'extérieur.
Trois solveurs sont donnés comme exemples : un
solveur des équations d'Euler en deux dimensions, centré
noeud, et deux solveurs des équations de Maxwell en trois
dimensions (centré noeud et centré élément). L'avenir
immédiat de ce projet est d'y intégrer les solveurs en cours
de développement dans l'équipe et de tester son adaptabilité
et sa facilité d'utilisation. Une évolution à plus long terme
serait de donner la possibilité de traiter des maillages
mobiles, à topologie variable ou non.