Suivez

la liste

Description du projet:

Parxel vise à développer un logiciel de simulation du développement des plantes dans différents contextes environnementaux. L'outil peut être appliqué à des contextes agronomiques ou forestiers, agroforestiers, en chambre de culture, en serre ou en système agrivoltaiques. Notre approche repose sur l’utilisation de plusieurs packages en Julia qui permettent de décrire les systèmes, de prototyper, de calibrer, de coupler et d’évaluer des modèles à différentes échelles. Les packages "socles" de bas-niveau sont:

  1. MultiScaleTreeGraph.jl : Ce package est dédié à la représentation de scènes décrites à plusieurs échelles. Il permet de modéliser des systèmes allant du niveau de la feuille jusqu’à celui de la parcelle ou du paysage.
  2. PlantMeteo.jl : Ce package facilite l’acquisition, le calcul et la standardisation de données
    météorologiques, essentielles pour la simulation du développement des plantes.
  3. PlantSimEngine.jl : Il s’agit du moteur de simulation de Parxel. Il permet de coupler des modèles de façon automatique, et de lancer des simulations en parralèle selon les pas de temps, les objets, et les couplages de modèles.

Notre projet se distingue par son approche générique et multi-échelle. Nous développons des outils qui s’adaptent à différents types de systèmes (mono ou plurispécifiques au champ, en serres, en chambre de croissance…) et à différentes échelles de simulation (de la feuille à la parcelle, puis du paysage). Ces outils doivent être à la fois flexibles et simples d’utilisation, tout en garantissant des performances de calcul optimales. L'approche multiéchelle permet de simuler les processus aux échelles où ils sont mesurables, puis de les coupler à d'autres processus à plus fine ou plus large échelle, ou encore de changer d'échelle à la volée si nécessaire.
L'ambition de ce logiciel est double. D'abord il propose des méthodes standardisées de caractérisation des systèmes, comme la fabrication de jumeaux numériques à partir d'acquisitions LiDAR, ou le design in silico de systèmes innovants. Ensuite, il permet de prédire le fonctionnement du système en fonction de l'environnement (météorologie, type de sol…), de l'originie génétique des plantes (espèce, variété, clone), et de la gestion (semis, design de plantation, dose et dates d'application d'intrants, association d'espèces). Par exemple, cet outil peut être utilisé pour créer in silico des systèmes innovants (agroforesterie, association d'espèces, agrivoltaisme), pour choisir les espèces et/ou variétés les plus adaptées aux conditions locales, ou encore pour recommander des itinéraires techniques tels que des doses et des dates d'application d'intrants ou d'irrigation.

Présentation du poste:

Mission principale :

Évaluer la qualité des codes; concevoir des méthodes pour la modélisation, le calcul et la visualisation des résultats; apporter une expertise dans l'utilisation des techniques informatiques pour la modélisation et la simulation de phénomènes physiques. Plus en détail, les différents packages qui définissent les briques de base de l'outil de simulation sont développés par un chercheur en modélisation des plantes. Ils sont déjà utilisés par plusieurs utilisateurs, mais l'équipe souhaite apporter plusieurs améliorations avant de diffuser plus largement les outils. L'attente auprès de la personne recrutée est de "professionaliser le code" des packages socles, c’est-àdire de reviewer le code avec l'équipe de modélisateurs et d'ingénieurs informaticiens, d'identifier des pistes d'amélioration, de stabiliser l'API des packages, et de régler certains bugs déjà identifiés par l'équipe. L'objectif étant de pouvoir continuer à développer les packages de plus haut niveau qui utilisent ces briques de base, puis de diffuser à une plus large communauté.

Activités :

  • Aider l'équipe à fermer les "issues" sur le dépôt Github de PlantSimEngine et potentiellement d'autres packages socle (MultiScaleTreeGraph, PlantMeteo): https://github.com/VirtualPlantLab/PlantSimEngine.jl/issues
  • Analyser le code actuel pour identifier de potentiels "bottlenecks" dans les performances de calcul, ce peut être par exemple le type de structure utilisées ou la façon d'échanger les variables entre modèles. Une attention particulière sera portée sur la stabilité des types. Les packages suivants pourront par exemple être utilisés: Bumper.jl, AllocCheck.jl, JET.jl, Cthulhu.jl.
  • Redéfinir/standardiser la façon dont les pas de temps, les objets, et les modèles intéragissent. Le Package PlantSimEngine se charge de la gestion de ces interactions, qui pourront être améliorées pour permettre un meilleur passage à l'échelle

Profil recherché

Titulaire d'un master dans le domaine de l'informatique, de l'ingénieurie logicielle, ou du calcul scientifique. Connaissances en génie logiciel, amélioration des performances, design d'architecture logicielle, si possible en calcul scientifique (calculs distribués, GPU). La connaissance du language de programmation Julia serait un plus, et à défaut, la connaissance d'un language bas niveau serait alors souhaitée (e.g. C, C++, Rust). Autonomie de travail, capacité de conceptualisation, curiosité, approche proactive.