Aller au contenu

Stage ingénieur - Lois de comportement différentiables : interface JAXMat & code_aster

Stage, 6 mois. Intégration de lois de comportement différentiables JAXMat dans code_aster, du CPU au GPU, jusqu'à un modèle hyperélastique neuronal

Contexte

Simvia, filiale du groupe EDF, est un acteur clé dans la promotion et l'accompagnement des solutions de simulation numérique open-source, au premier rang desquelles code_aster.

La simulation du comportement non linéaire des matériaux nécessite de calculer les contraintes, l'évolution des variables internes et un opérateur tangent permettant de résoudre l'équilibre de la structure. Le développement de ces lois peut devenir complexe, notamment lorsqu'elles intègrent de nouveaux modèles physiques ou des réseaux de neurones.

JAXMat (https://erc-automatix.github.io/) est une bibliothèque Python de modélisation des comportements matériaux fondée sur JAX. Elle permet d'utiliser la différentiation automatique pour calculer les dérivées nécessaires à l'intégration des lois et propose une exécution vectorisée sur CPU ou GPU.

L'objectif du stage est de concevoir, développer et évaluer une interface entre JAXMat et code_aster, afin d'utiliser ces comportements dans des calculs éléments finis non linéaires.

Informations pratiques

  • Type de contrat : stage de fin d'études (convention de stage obligatoire)
  • Durée : 4 à 6 mois
  • Début : premier trimestre 2027 (date de démarrage à convenir)
  • Lieu : EDF Lab, plateau de Saclay (Palaiseau)
  • Gratification : selon la réglementation en vigueur

Environnement de travail

Vous rejoindrez une équipe à taille humaine, soudée et passionnée, installée au sein de l'EDF Lab sur le plateau de Saclay, un écosystème de recherche et d'innovation parmi les plus stimulants d'Europe.

Nous attachons une importance réelle au bien-être de nos collaborateurs : ambiance bienveillante, communication ouverte, entraide au quotidien et droit à l'erreur assumé.

Description du poste

Le travail suivra une progression en sept étapes :

1. Prise en main des outil

Se familiariser avec code_aster, son architecture d'intégration des comportements, ainsi qu'avec JAX et JAXMat. Reproduire des exemples sur un point matériel et des cas éléments finis simples.

2. Développement d'une interface CPU point par point  

Mettre en place les échanges entre code_aster et JAXMat : déformations, contraintes, variables internes et opérateur tangent. Les premiers développements porteront sur l'élasticité et l'élastoplasticité en petites déformations.

3. Validation face à une loi native de code_aster  

Comparer les réponses mécaniques, les tangentes et la convergence du calcul non linéaire. Vérifier la gestion des états et des échecs d'intégration, puis analyser le coût de la passerelle.

4. Extension au traitement par lots  

Adapter l'interface pour intégrer simultanément plusieurs points de Gauss et exploiter les capacités de vectorisation de JAXMat.

5. Évaluation des performances sur CPU  

Comparer l'interface par lots à une loi native équivalente de code_aster, en étudiant l'influence de la taille du problème et de la taille des lots.

6. Évaluation des performances sur GPU  

Comparer les exécutions JAXMat sur CPU et GPU à la référence native code_aster sur CPU. Les mesures porteront sur l'intégration constitutive et sur le calcul complet, en tenant compte des transferts de données.

7. Démonstration d'un comportement hyperélastique neuronal  

Reprendre l'exemple de JAXMat fondé sur un réseau de neurones représentant un potentiel hyperélastique et sur les données expérimentales de Treloar. Après validation de l'interface en grandes déformations sur une loi analytique, utiliser le modèle neuronal dans un calcul de structure avec code_aster.


Livrables attendus

  • Une interface documentée
  • Des tests de validation reproductibles
  • Une analyse des performances
  • Un démonstrateur mettant en évidence les possibilités offertes par les comportements différentiables


Le périmètre des éléments finis et des lois supportés sera défini progressivement avec l'encadrement.

Profil recherché

Étudiant(e) en dernière année d'école d'ingénieurs ou en Master 2, spécialisé(e) en mécanique numérique, calcul scientifique ou informatique scientifique.

Compétences techniques recherchées :

  • Bases en mécanique des milieux continus et en éléments finis
  • Pratique solide de Python
  • Intérêt pour le développement logiciel et les méthodes numériques
  • Capacité à analyser et à vérifier des résultats de simulation

Seront appréciées :

  • Connaissances en C++ ou Fortran
  • Mécanique non linéaire
  • Différentiation automatique
  • Calcul parallèle

La maîtrise préalable de JAX ou de code_aster n'est pas indispensable.

Savoir-être :

  • Proactif(ve) : vous prenez plaisir à dépasser vos objectifs initiaux
  • Curieux(se) : vous aimez comprendre comment les choses fonctionnent
  • Autonome : vous savez gérer vos priorités et avancer sans être constamment guidé(e)

Ce que nous offrons

  • Un environnement technique moderne et varié, loin de la routine
  • Un renforcement concret des compétences sur les technologies utilisées en production
  • L'accompagnement d'une équipe expérimentée, disponible et passionnée
  • Un projet de stage aboutissant à un livrable concret, déployé en production et utilisé par la communauté
Toutes les offres d'emploi

Le poste

  • Ingénierie
  • Palaiseau
  • Temps plein
  • 1200 - 1500€ mensuel
  • Stage

Candidature par email, avec le titre du poste en objet.