Framework C++17 de génération de microstructures et IHM Python de test pour la construction de datasets

Plus d'info sur IFP Energies nouvelles

Stage Informatique Industrielle Hauts-de-Seine entre février et mai 2027 6 mois


IFP Energies nouvelles (IFPEN) est un acteur majeur de la recherche et de la formation dans les domaines de l’énergie, du transport et de l’environnement. Depuis les concepts scientifiques en recherche fondamentale jusqu’aux solutions technologiques en recherche appliquée, l’innovation est au cœur de son action, articulée autour de quatre orientations stratégiques : climat, environnement et économie circulaire ; énergies renouvelables ; mobilité durable ; hydrocarbures responsables.

Dans le cadre de la mission d’intérêt général confiée par les pouvoirs publics, IFPEN concentre ses efforts sur l’apport de solutions aux défis sociétaux et industriels de l’énergie et du climat, au service de la transition écologique. Partie intégrante d’IFPEN, IFP School, son école d’ingénieurs, prépare les générations futures à relever ces défis.

Framework C++17 de génération de microstructures et IHM Python de test pour la construction de datasets

La caractérisation et la modélisation des microstructures de matériaux (sols, roches, matériaux composites) est un enjeu central en sciences des matériaux et en mécanique. Une librairie C++ existante permet déjà de générer des microstructures 3D par schéma booléen (placement aléatoire d'objets géométriques) et par modèle d'agrégation (sphères, ellipsoïdes, plaquettes). Ces microstructures simulées servent de données d'entrée à des codes de calcul de propriétés physico-chimiques (perméabilité, conductivité thermique, propriétés élastiques, etc.).

En pratique, générer et paramétrer ces microstructures « à l'aveugle » rend leur réglage et leur validation difficiles : il faut pouvoir visualiser, contrôler et rejouer interactivement les réalisations produites. IFPEN dispose par ailleurs d'une application interne en Python (PySide6) dédiée à l'analyse d'images scientifiques de milieux poreux, qui constitue une base naturelle pour un banc de test interactif.

L'objectif du stage est de structurer et d'étendre cette librairie afin de constituer un pipeline complet et automatisé en s'appuyant sur un gestionnaire de plan d’expérience (plex) existant capable de générer des datasets de microstructures et de leurs propriétés associées à grande échelle, en explorant un espace de paramètres défini.

Le stage comporte ainsi deux volets complémentaires : d'une part la consolidation de la librairie C++ et l'extension d'un pipeline plex existant (code Python autour d'un DAG) ; d'autre part le développement d'une IHM de test en Python, greffée sur l'application existante, permettant de configurer la génération, de lancer les exécutables du framework et de visualiser les microstructures obtenues.

Missions et objectifs

1. Mise en forme et modernisation de la librairie

  • Audit et refactoring du code C++ existant vers le standard C++17
  • Définition d'interfaces claires et d'une architecture modulaire (séparation .h / .cpp, namespaces)
  • Mise en place d'un système de build portable avec CMake (Linux / Windows)
  • Intégration dans un dépôt GitLab avec CI/CD de base

2. Reprise et extension du pipeline plex

  • Prise en main du gestionnaire de plan d'expérience existant, écrit en Python et structuré autour d'un graphe orienté acyclique (DAG), à réutiliser, adapter et étendre à la génération de microstructures
  • Interfaçage avec les codes de calcul aval pour récupérer les propriétés physiques calculées
  • Gestion des sorties : format binaire des microstructures, fichiers de métadonnées (JSON ou CSV)

3. IHM Python de test et de visualisation

  • Pilotage et définition du plex depuis l’application Python/PySide6 interne : génération des fichiers de configuration, lancement du plex, suivi de l'exécution, lecture des sorties (volumes .fda, métadonnées JSON/CSV)
  • Intégration dans l'architecture existante de cette application (arbre de contexte, processus, renderers) avec exécution asynchrone pour garder l'interface réactive
  • Contrôle visuel des microstructures générées pour un jeu de paramètres de la campagne plex

4. Tests et validation

  • Écriture de cas unitaires fonctionnels pour chaque brique du pipeline avec Google Test
  • Tests de non-régression et de reproductibilité (graine aléatoire fixée)
  • Intégration des tests dans la CI GitLab
  • Vérification du fonctionnement de l'IHM de test (lancement des exécutables, génération et affichage bout en bout)

5. Documentation

  • Documentation de l'API (Doxygen ou équivalent)
  • Guide d'utilisation du plex et des options de l'espace de paramètres
  • Notice d'installation et d'utilisation de l'IHM Python de test
  • Manuel de contribution (conventions de code, procédure de merge request)

Profil recherché

Compétences requises

  • Maîtrise du C++ (C++11/14/17) : templates, gestion mémoire, POO
  • Pratique de CMake pour la configuration de projets multi-plateformes
  • Connaissance de Git et de GitLab (branches, merge requests, CI/CD)
  • Capacité à lire et comprendre du code scientifique existant
  • Bonnes bases en Python (POO, environnement scientifique) et goût pour le développement d'interfaces

Compétences appréciées

  • Expérience avec Google Test ou un framework de test équivalent
  • Notions de simulation stochastique ou de traitement d'images 3D
  • Intérêt pour les applications scientifiques et les matériaux
  • Expérience Linux (compilation, scripting bash)
  • Expérience du développement d'interfaces graphiques avec Qt / PySide6 (ou PyQt)
  • Notions de visualisation scientifique 2D/3D et d'orchestration de tâches (DAG, sous-processus)

Livrables attendus

  • Code source versionné sur GitLab, documenté et testé
  • Suite de tests Google Test avec rapport de couverture
  • Pipeline plex fonctionnel capable de produire un dataset de N microstructures
  • Module IHM Python (PySide6) de test et de visualisation des microstructures, pilotant les exécutables du framework C++
  • Documentation technique (API + guide utilisateur)
  • Rapport de stage et soutenance

Ce que nous offrons

  • Immersion dans un projet de recherche appliquée en simulation de matériaux
  • Code existant non trivial : travail réel sur une base de code scientifique
  • Encadrement technique par des ingénieurs/chercheurs expérimentés
  • Développement « full-stack » scientifique : calcul C++ haute performance et interface Python/Qt
Envoi de votre candidature
Envoi en cours... 0%

(PDF - Max : 5 Mo)
(PDF - Max : 5 Mo)

IFP Energies nouvelles Stage Alternance
contact

IFP Energies nouvelles
Jean-François LECOMTE

Indemnité Oui

13 Annonces
Conseils
Pour que la vie d’étudiant ne rime pas avec parcours du combattant, retrouvez tous nos conseils stage / alternance / emploi