Faire évoluer des codes de simulation
Ajouter de nouvelles physiques, conditions aux limites, lois matériaux, logiques de couplage ou classes de problèmes sans fragiliser le code existant.
DÉVELOPPEMENT DE LOGICIELS SCIENTIFIQUES
Nous faisons le lien entre science, mathématiques, physique et développement logiciel pour produire des systèmes de simulation fiables en conditions réelles.
Le développement de logiciels scientifiques transforme des modèles mathématiques et physiques en logiciels que les équipes d'ingénierie peuvent exécuter, vérifier, faire évoluer et utiliser au quotidien. Il ne s'agit pas seulement de coder une équation : il faut aussi traiter la méthode numérique, les structures de données, le comportement des solveurs, les couplages multiphysiques, l'exécution parallèle et la validation des résultats.
Dans les codes multiphysiques à grande échelle, de petits choix de mise en œuvre peuvent modifier les performances, la stabilité ou même les résultats. Un bon logiciel scientifique rend la science explicite tout en restant assez facile à maintenir pour évoluer.
Ajouter de nouvelles physiques, conditions aux limites, lois matériaux, logiques de couplage ou classes de problèmes sans fragiliser le code existant.
Transformer un modèle de recherche en chaîne de calcul pour des études de conception, des décisions opérationnelles, des boucles d'optimisation ou des analyses de sensibilité.
Mettre en place des tests de régression, cas de vérification, contrôles de validation et benchmarks reproductibles autour des hypothèses scientifiques.
Analyser les mouvements mémoire, le passage à l'échelle parallèle, le coût des solveurs, les entrées-sorties et l'organisation des données pour rendre le HPC plus prévisible.
Refactoriser du Fortran, C, C++, Python ou du code multi-langage en préservant le comportement numérique et les usages déjà en place.
Créer des outils pour générer les entrées, gérer les maillages, post-traiter les résultats, conduire des études d'incertitude, exécuter des campagnes et produire des rapports.
Nous intervenons lorsque le problème ne se sépare pas proprement entre "science" d'un côté et "logiciel" de l'autre. Nous pouvons travailler du modèle jusqu'au code, ou rejoindre une base existante pour débloquer les parties qui freinent l'avancement.
Traduire équations, algorithmes et hypothèses physiques en plans de mise en œuvre robustes et en code de production testé.
Travailler sur le couplage entre domaines, solveurs, maillages, champs et échelles de temps dans de grands systèmes de simulation.
Clarifier l'architecture existante, supprimer les chemins fragiles, améliorer les systèmes de build et rendre le code scientifique plus sûr à modifier.
Mettre en place tests, cas de référence, intégration continue et procédures de validation pour détecter tôt les régressions numériques et logicielles.
Profiler, restructurer et optimiser le calcul, la communication et les entrées-sorties pour les environnements HPC et les grandes campagnes de simulation.
Développer les outils qui aident les équipes à lancer des études, comparer les résultats, automatiser les scénarios et utiliser les simulations dans leurs décisions.
Ce travail est pertinent pour les équipes dont un modèle scientifique ou d'ingénierie doit devenir un logiciel fiable : laboratoires de recherche, groupes industriels, équipes de simulation, startups techniques et institutions publiques avec systèmes de calcul complexes.
Il l'est aussi pour les bases de code matures qui comptent déjà. Dans ce cas, l'enjeu est souvent de préserver la science validée tout en améliorant l'architecture, les performances, les tests et la capacité à ajouter de nouvelles fonctionnalités.