Sous-sections
Participants : Alexandre Elmkies,
Patrick Joly, Marc Lenoir, Daniel Martin.
Mots clés : diffraction, élément fini,
équation intégrale .
Le code MELINA
L'approximation numérique d'équations aux dérivées
partielles issues de la mécanique fait, depuis toujours,
partie des objectifs du projet. L'expérience des premières
années a permis d'appréhender la difficulté à mettre en
oeuvre les algorithmes issus de nos travaux: gaspillage de
temps pour des chercheurs plus à l'aise avec les études
théoriques, duplication des travaux et des programmes, perte
d'information lors du départ du chercheur, qualité logicielle
douteuse qui rend problématique le transfert de programmes
vers l'industrie. Les méthodes développées au sein du projet
présentant de plus des spécificités tout à fait originales,
il est apparu nécessaire de créer un outil logiciel efficace
qui puisse servir de cadre à la plupart de nos futurs
développements informatiques.
C'est ainsi qu'est né le code MELINA, destiné à la mise en
oeuvre de la méthode des éléments finis et à la résolution
des problèmes de diffraction. Il ne s'agit pas de rivaliser
avec l'ergonomie des meilleurs codes industriels, mais
d'obtenir une souplesse d'utilisation qui ne présume ni du
problème à résoudre ni de l'algorithme utilisé.
Le code MELINA et les applications qui en découlent
permettent maintenant de résoudre un nombre important de
problèmes de propagation d'ondes, en particulier dans les
domaines de l'hydrodynamique navale, de l'acoustique et
l'électromagnétisme. Une collaboration avec la société
SIMULOG a été mise sur pied pour promouvoir le développement
d'applications industrielles et la diffusion du code, en
particulier dans le domaine de l'électromagnétisme. Des
perspectives nouvelles s'ouvrent dans le cadre du projet
commun, des méthodes numériques complémentaires ou
alternatives ayant été développées par les deux partenaires;
promouvoir la synergie, rassembler le savoir-faire des deux
équipes constitue une remarquable opportunité de mettre au
point et de diffuser des codes de calcul efficaces témoignant
de la qualité et de l'originalité de nos travaux dans le
domaine numérique.
- Le code MELINA est une bibliothèque de procédures pour
la résolution de problèmes aux limites par la méthode des
éléments finis. Il comporte des modules adaptés à la
résolution de problèmes extérieurs, dont la modélisation
reste l'un des objectifs majeurs du laboratoire. Il s'agit
essentiellement d'un code de recherche qui fournit un
ensemble d'outils aisément manipulables pour écrire
rapidement des applications destinées au traitement
numérique de problèmes aux limites ou à la mise au point
d'algorithmes.
- La résolution d'un nouveau problème aux limites ou la
mise en oeuvre d'un nouvel algorithme de résolution peut,
en général, être implémentée en rédigeant un programme
principal à partir de la formulation variationnelle et de
quelques procédures spécifiques. Les aspects informatiques
les plus délicats, qui sont liés à l'occupation de la
mémoire centrale, à l'assemblage des divers termes et à
leur mode de rangement, sont pris en compte de façon
automatique par le programme et ne sont donc plus à la
charge du concepteur de l'application.
- Tous les `objets' (il s'agit par exemple des
domaines sur lesquels sont calculées les intégrales
apparaissant dans la formulation variationnelle, ou des
termes matriciels ou vectoriels représentant ces
intégrales, ou encore des constantes, etc ...) manipulés
par les procédures constituant le programme principal, sont
définis par des noms. Ces noms sont le lien entre
les structures de données du code et l'utilisateur qui n'a
donc pas à se soucier de leur représentation interne (en
particulier, la gestion des types et des adresses est
assurée de manière transparente par la librairie
d'allocation dynamique).
- Les données du code, qui permettent la description
simple des objets manipulés par le code, sont
introduites sous forme de `phrases'. Ces phrases
sont construites en utilisant un vocabulaire de mots-clés
restreint et les mnémoniques (noms propres) définis par le
développeur de l'application pour désigner les
objets qui apparaissent dans la formulation du
problème.
- Les opérations à effectuer sur ces objets sont
des macro-opérations réalisées à l'aide de procédures dites
de haut niveau, telles le calcul des termes
matriciels, leur assemblage, la prise en compte de
conditions essentielles, la résolution d'un système
linéaire, etc...
- Le code contient des procédures pour la résolution de
problèmes aux limites extérieurs (c'est-à-dire posés sur un
domaine non borné), par exemple les phénomènes de
propagation d'ondes (de gravité en hydrodynamique navale,
acoustiques ou électromagnétiques, etc...) Les méthodes de
résolution accessibles dans le code pour de tels problèmes
sont la méthode de couplage entre éléments finis et
représentation intégrale et la méthode des éléments
finis localisés.