Aujourd’hui, on me demande d’envoyer des infos sur les logiciels qu’on voudrait mettre en avant dans la section “logiciels” sur le site web du département et j’ai enfin pris le temps d’écrire quelque chose au sujet de fossils, le logiciel que je développe en collaboration avec les paléontologues de la faculté des sciences. C’est l’occasion d’en parler aussi un peu ici dans ce blog. Voici le début de l’histoire de fossils…

Le début du projet fossils date de février 2018 où un doctorant en paléontologie s’est vu redirigé vers moi pour des analyses éléments finis qui impliquait de mailler des géométries complexes provenant de scans de surface de fossiles. Apparemment, ce sujet devenait très à la mode chez les paléontologues. De mon côté, j’avais déjà travaillé plusieurs fois sur des modèles biomécaniques dans le passé et mes collègues, qui avaient été contactés en premier, s’en souvenait.

Mes débuts en biomécanique

J’avais encadré 2 thèses sur la génération de maillages à partir d’images médicales (Lara Vigneron et Vinciane d’Otreppe).

La première thèse consistait à mailler le cerveau humain pour permettre à un neurochirurgien de calculer les déformations de celui-ci lors d’une opération de résection de tumeur. En effet, lorsqu’on opère un patient qui a un cancer du cerveau, on lui ouvre le crane et le cerveau “bouge” (il sort de la boite crânienne ou il s’affaisse - on parle de “brain shift”), si bien que le chirurgien ne peut plus se fier aux images IRM prise la veille pour découper la tumeur. Il risque donc de couper trop ou trop peu…

L’idée était donc de déformer les images haute-résolution prises la veille dans une grosse IRM (sur lesquelles la tumeur est bien visible) grâce à une simulation en cours d’opération. Cette simulation est pilotée par des images “basse résolution” prise par une IRM interventionnelle (une petite machine qu’on peut utiliser en salle d’opération).

On n’est évidemment pas arrivé à mettre au point tout ce système mais ce travail avait conduit à la mise au point d’une procédure de maillage “multi-domaine” (capable de séparer la tumeur et le reste) dans une seconde thèse.

geniso

Ci-dessus des vertèbres maillées grâce à geniso.

Le logiciel de maillage s’appelle geniso et il nous permet depuis lors de modéliser toutes sortes de structures biologiques dans différentes situations. Ca va du coude de chien qui se le casse lors d’une chute, à un thorax humain qui reçoit une “balle non léthale”, en passant par la réparation d’un os de chat sur lequel quelqu’un a tiré à la carabine à plomb!

Mes débuts en paléontologie

Fort de cette expérience, j’ai pu proposer mon aide aux paléontologues en 2018 mais je n’avais juste pas le temps de construire moi-même de nouveaux outils.

C’est en 2020 que tout à changé… grâce au COVID: le laboratoire Ecology and Diversity Dynamics Lab accueillait un stagiaire français pendant une longue période de 6 mois pour travailler sur la mise au point d’un modèle biomécanique de mâchoires de reptiles marins (voir couverture de ce post). Confiné chez moi loin des demandes de mes collègues et étudiants, j’avais tout d’un coup beaucoup de temps où je pouvais travailler sans être dérangé. J’ai donc décidé de passer du temps sur la mise au point du modèle dans Metafor, notre logiciel de calcul élément fini. Tout ça avec l’aide du stagiaire qui pouvait me diriger et tester les premières versions.

Très vite, j’ai obtenu des résultats intéressants. Les calculs en eux-mêmes n’étaient pas très compliqué (simple analyse statique linéaire). Il s’agissait surtout de connecter correctement les outils entre eux et définir des interfaces utilisable par des non-ingénieurs.

Boneload

Une particularité de ce genre de modèle est la répartition des efforts liés aux muscles sur la surface du maillage. J’avais pour m’aider un article et un vieux code MATLAB nommé boneload qui était très lent et un peu bugué et qui m’avait été fourni par le stagiaire. C’était ce qui se faisait de mieux à l’époque. Autrement dit, les différentes équipes de paléontologues faisant de l’analyse par éléments finis de fossiles utilisaient tous ce vieux set de routines écrites par un programmeur du dimanche pour distribuer les forces sur leur maillage.

Je me suis donc lancé dans la réécriture d’une version optimisée de ces routines. La difficulté principale provenait du fait qu’il fallait calculer des coupes dans des gros maillages 3D et mesurer des distances le long de celles-ci (pour évaluer la longueur des fibres musculaires). Grâce à la bibliothèque VTK, j’ai pu m’en sortir assez facilement. Le résultat était d’une part robuste (ça ne plante jamais) et rapide (quelques secondes à quelques minutes, au lieu de plusieurs heures!).

Le stagiaire était ravi et nous avons décidé d’écrire un papier “méthode” sur le travail. Le problème était que la méthode n’était pas originale puisqu’il s’agissait juste d’une version codée correctement d’équations déjà publiées. De plus Metafor rendait le travail “fermé” pusique Metafor n’est pas disponible gratuitement sans notre accord explicite et la génération d’une licence d’utilisation.

Un mini-Metafor open-source

Pour contrer les arguments des reviewers, j’ai donc décidé de remplacer Metafor par un code élément fini basique qui serait distribué gratuitement en open-source. Ca devenait donc une vraie contribution, mais logicielle cette fois. J’avais justement recodé un petit code élément fini pour aider mes étudiants dans le cadre de leur projet intégré. Le code, tout d’abord écrit en python une année, avait été recodé en C++ l’année suivante. Il utilise de manière intensive l’API de Gmsh, le mailleur open-source développé par mon collègue avec qui je donne le cours de projet.

Il ne restait donc qu’à adapter le modèle biomécanique à ce petit code. C’est ce que j’ai fait avec beaucoup d’enthousiasme. Ca me permettait également de faire des comparaisons entre les résultats non linéaires de Metafor et les résultats du petit code.

Au moment de resoumettre l’article, nous avons baptisé le code “fossils” (au lieu de CxxFEM, son nom original)

Fossils est donc un projet open-source dont je suis très fier. Grâce au fait qu’il soit facilement téléchargeable et utilisable, plusieurs équipes de paléontologues ont décidé de l’utiliser pour leurs recherches et je reçois de temps en temps des mails qui me demandent de l’aide.

Des papiers ont été publiés autour de Fossils (voici un exemple). Un thésard en Allemagne a même développé un plugin Blender pour faciliter l’utilisation du code (lire l’article ici).

La suite: un TFE sur fossils

Cette année, j’ai la chance d’avoir une étudiante qui fait son travail de fin d’études pour améliorer la qualité des résultats de simulation. L’idée est de permettre des simulations où différents matériaux peuvent être assignés à différentes parties de maillage.

crane

On aimerait mailler et simuler une morsure de tigre à dents de sabre, tel que celui-là.

Par exemple, on peut imaginer définir un matériau “dent” et un matériau “crâne” lors d’une simulation de morsure. La difficulté est délimiter correctement les zones de chaque matériau dans le maillage. Une idée est de déterrer le vieux mailleur geniso dont je parlais plus haut. J’ai donc profité de ce travail, qui est en cours actuellement jusqu’en septembre 2026, pour extraire gensio du code source de Metafor et de lui offrir une licence open-source à lui aussi ([dépôt geniso sur GitLab). Ca ne pourra être que bénéfique pour sa visibilité.