Le 27 mars 2014, Logilab a accueilli un hackathon consacré aux codes libres de
simulation des phénomènes mécaniques. Etaient présents:
- Patrick Pizette, Sébastien Rémond (Ecole des Mines de Douai / DemGCE)
- Frédéric Dubois, Rémy Mozul (LMGC Montpellier / LMGC90)
- Mickaël Abbas, Mathieu Courtois (EDF R&D / Code_Aster)
- Alexandre Martin (LAMSID / Code_Aster)
- Luca Dall'Olio, Maximilien Siavelis (Alneos)
- Florent Cayré, Nicolas Chauvat, Denis Laxalde, Alain Leufroy (Logilab)
Patrick Pizette et Sébastien Rémond des Mines de Douai sont venus parler de leur
code de modélisation DemGCE de "sphères molles" (aussi appelé smooth DEM), des
potentialités d'intégration de leurs algorithmes dans LMGC90 avec Frédéric
Dubois du LMGC et de l'interface Simulagora développée par Logilab. DemGCE est
un code DEM en 3D développé en C par le laboratoire des Mines de Douai. Il
effectuera bientôt des calculs parallèles en mémoire partagée grâce à OpenMP.
Après une présentation générale de LMGC90, de son écosystème et de ses
applications, ils ont pu lancer leurs premiers calculs en mode dynamique des
contacts en appelant via l'interface Python leurs propres configurations
d'empilements granulaires.
Ils ont grandement apprécié l'architecture logicielle de LMGC90, et en
particulier son utilisation comme une bibliothèque de calcul via Python, la
prise en compte de particules de forme polyhédrique et les aspects
visualisations avec Paraview. Il a été discuté de la réutilisation de la partie
post/traitement visualisation via un fichier standard ou une bibliothèque dédiée
visu DEM.
Frédéric Dubois semblait intéressé par l'élargissement de la communauté et du
spectre des cas d'utilisation, ainsi que par certains algorithmes mis au point
par les Mines de Douai sur la génération géométrique d'empilements. Il serait
envisageable d'ajouter à LMGC90 les lois d'interaction de la "smooth DEM" en 3D,
car elles ne sont aujourd'hui implémentées dans LMGC90 que pour les cas 2D.
Cela permettrait de tester en mode "utilisateur" le code LMGC90 et de faire une
comparaison avec le code des Mines de Douai (efficacité parallélisation, etc.).
Florent Cayré a fait une démonstration du potentiel de Simulagora.
Denis Laxalde de Logilab a travaillé d'une part avec Rémy Mozul du LMGC sur
l'empaquetage Debian de LMGC90 (pour intégrer en amont les modifications
nécessaires), et d'autre part avec Mathieu Courtois d'EDF R&D, pour finaliser
l'empaquetage de Code_Aster et notamment discuter de la problématique du lien
avec la bibliothèque Metis: la version actuellement utilisée dans Code_Aster
(Metis 4), n'est pas publiée dans une licence compatible avec la section
principale de Debian. Pour cette raison, Code_Aster n'est pas compilé avec le
support MED dans Debian actuellement. En revanche la version 5 de Metis a une
licence compatible et se trouve déjà dans Debian. Utiliser cette version
permettrait d'avoir Code_Aster avec le support Metis dans Debian. Cependant, le
passage de la version 4 à la version 5 de Metis ne semble pas trivial.
Voir les tickets:
Alain Leufroy et Nicolas Chauvat de Logilab ont travaillé à transformer LibAster
en une liste de pull request sur la forge bitbucket de
Code_Aster. Ils ont présenté leurs modifications à Mathieu Courtois d'EDF R&D ce
qui facilitera leur intégration.
Voir les tickets:
En fin de journée, Alain Leufroy, Nicolas Chauvat et Mathieu Courtois ont
échangé leurs idées sur la simplification/suppression du superviseur de
commandes actuel de Code_Aster. Il est souhaitable que la vérification de la
syntaxe (choix des mots-clés) soit dissociée de l'étape d'exécution.
La vérification pourrait s'appuyer sur un outil comme pylint, la description
de la syntaxe des commandes de Code_Aster pour pylint pourrait également
permettre de produire un catalogue compréhensible par Eficas.
L'avantage d'utiliser pylint serait de vérifier le fichier de commandes
avant l'exécution même si celui-ci contient d'autres instructions Python.
Mickaël Abbas d'EDF R&D s'est intéressé à la modernisation de l'allocation
mémoire dans Code_Aster et a listé les difficultés techniques à surmonter ;
l'objectif visé est un accès facilité aux données numériques du Fortran depuis
l'interface Python. Une des difficultés est le partage des types dérivés Fortran
en Python. Rémy Mozul du LMGC et Denis Laxalde de Logilab ont exploré une
solution technique basée sur Cython et ISO-C-Bindings. De son côté Mickaël Abbas
a contribué à l'avancement de cette tâche directement dans Code_Aster.
Luca Dall'Olio d'Alneos et Mathieu Courtois ont testé la mise en place de
Doxygen pour documenter Code_Aster. Le fichier de configuration pour doxygen a
été modifié pour extraire les commentaires à partir de code Fortran (les
commentaires doivent se trouver au dessus de la déclaration de la fonction, par
exemple). La configuration doxygen a été restituée dans le depôt Bitbucket.
Reste à évaluer s'il y aura besoin de plusieurs configurations (pour la partie
C, Python et Fortran) ou si une seule suffira. Une configuration particulière
permet d'extraire, pour chaque fonction, les points où elle est appelée et les
autres fonctions utilisées. Un exemple a été produit pour montrer comment écrire
des équations en syntaxe Latex, la génération de la documentation nécessite plus
d'une heure (seule la partie graphique peut être parallélisée). La
documentation produite devrait être publiée sur le site de Code_Aster.
La suite envisagée est de coupler Doxygen avec Breathe et Sphinx pour
compléter la documentation extraite du code source de textes plus détaillés.
La génération de cette documentation devrait être une cible de waf, par exemple
waf doc. Un aperçu rapide du rendu de la documentation d'un module serait
possible par waf doc file1.F90 [file2.c [...]].
Voir Code Aster #18 configure doxygen to comment the source files
Maximilien Siavelis d'Alneos et Alexandre Martin du LAMSID, rejoints en fin de
journée par Frédéric Dubois du LMGC ainsi que Nicolas Chauvat et Florent Cayré
de Logilab, ont travaillé à faciliter la description des catalogues d'éléments
finis dans Code_Aster. La définition de ce qui caractérise un élément fini a
fait l'objet de débats passionnés. Les points discutés nourriront le travail
d'Alexandre Martin sur ce sujet dans Code_Aster. Alexandre Martin a déjà renvoyé
aux participants un article qu'il a écrit pour résumer les débats.
Mathieu Courtois d'EDF R&D a montré à Rémy Mozul du LMGC un mécanisme de
remontée d'exception du Fortran vers le Python, qui permettra d'améliorer la
gestion des erreurs dans LMGC90, qui a posé problème dans un projet réalisé par
Denis Laxalde de Logilab pour la SNCF.
Voir aster_exceptions.c
Tous les participants semblaient contents de ce deuxième hackathon, qui faisait
suite à la première édition de mars 2013 . La prochaine édition aura
lieu à l'automne 2014 ou au printemps 2015, ne la manquez pas !