Au boulot !

Car dans ingénieur de recherche il y a ingénieur je ne fais bien évidemment pas que de l'enseignement et de la recherche au contraire ! Une grosse partie de mon travail est consacrée au développement d'outils divers et variés pour les besoins du Centre des Matériaux.

Z-set : simulation en mécanique des matériaux et des structures

Une grosse partie de mon activité consiste au développement dans la suite logicielle Z-set. La suite Z-set est un ensemble de composants logiciel (développés en C++) dédiés au calcul non linéaire en mécanique des matériaux et des structures. Parmi les développements que je suis amené à réaliser :

  • Correction de bug
  • Solveur linéaire (voir mes activités de recherche)
  • Estimation d'erreur et adaptation de maillage
  • Post-traitement mécaniques

PITBox :

PITBox, pour Parametric Investigation ToolBox, est un module Python que l'on développe au sein de l'équipe SISDev dédié à tous ce qui tourne autour des paramètres d'un modèle. Cela comprend :

  • L'échantillonage d'espace de paramètre
  • Analyse de sensibilité
  • Construction de méta-modèle (krigeage, Train de Tenseurs, Sparse Grid, ... )
  • Problème d'optimisation et d'identification de paramètres

Une attention particulière est portée à la simplicité d'usage pour l'utilisateur final mais également à la performance. Cela passe entre autre par le développement d'outils dédié à l'exécution d'analyse de sensibilité/construction de méta-modèle sur des infrastucture de calcul massivement parallèle.

Connexion à distance

Alors Covid et confinements oblige il a fallu se mettre en ordre de marche pour le télétravail de manière accéléré. Or dans nos domaines le travail à distance necéssite des outils dédié car pour faire tourner des grosses simulation en mécanique des matériaux et des structures un ordinateur portable ne suffit pas. De la même manière nous pouvons être amené à utiliser des logiciels nécessitant des licences qui ne sont accessibles que depuis le réseau interne. Alors oui je sais les VPN ça existe mais pas envisageable pour différentes raisons. Mais nous avions déjà une passerelle ssh. J'ai donc développé une couche Python multi plateforme (linux, windows) permettant d'établir une tunnel ssh passant par un bastion ssh afin d'y faire transiter du VNC pour faire de la visu distante. Le lancement du serveur vnc se fait également via le client Python merci asyncssh qui me permet de faire plein de chose à distance ! D'ailleurs cela m'a également permit de mettre en place un lanceur automatique de jupyter notebook qui depuis un ordinateur portable va automatique faire une allocation sur notre cluster de calcul, lancer un serveur jupyter et établir un tunnel ssh permettant d'ouvrir le notebook dans le navigateur du portable et ainsi pouvoir depuis n'importe où pouvoir faire une démo dans un notebook comprenant des calculs lourds.

D'ailleurs pour les curieux vous pouvez aller lire cet article où j'explique comment faire un tunnel ssh simplement avec asyncssh et deux trois autres trucs.

MiCode : service de déploiement continu

Un autre développement, réalisé surtout pour me faciliter la vie je dois l'avouer, et l'utilitaire MiCode (pour Mines Continuous Delivery). Le nom est assez explicite je trouve, il s'agit en fait d'un serveur web (basé sur nodejs avec express) qui ne sert qu'à une chose recevoir des hook de gitlab. En effet pour la plupart des développements du centre nous utilisons une instance de gitlab interne. Et donc pour que les dernières versions des tous les logiciels soient accessibles rapidement aux utilisateurs sur l'infrastructure de calcul nous avons mis en place du déploiement continu. Le principe est tout bête à chaque push sur le gitlab un hook est envoyé au serveur MiCoDe pour lui dire que la branch toto du dépôt tutu a été modifiée. Et du coup MiCoDe va enclencher ses procédures de mise à jour, ce qui inclu la vérification de la base de test (histoire de ne pas installer un truc planté) !