Bilan d'énergie et simulation d'accidents dans un réacteur nucléaire

La perte de réfrigérant primaire dans le cœur d'un réacteur nucléaire entraîne une forte augmentation de la température au sein du compartiment. Cette montée en température des matériaux du cœur peut mener à des accidents nucléaires majeurs. Sous très hautes températures, un transfert de chaleur s'effectue alors par rayonnement. Afin simuler des scénarios catastrophes et d'en étudier les conséquences, la modélisation du transfert radiatif est requise.

 

Un logiciel de modélisation de ce transfert radiatif, actuellement au stade de maquette, est implémenté au sein du Commissariat à l'Energie Atomique et aux énergies alternatives (CEA) sur le centre de Cadarache.

 

Modélisation du transfert radiatif

Cette modélisation est placée sous l'hypothèse d'un rayonnement entre surfaces opaques et grises au travers d'un milieu transparent. Ce cadre permet d'écrire le bilan d'énergie sous la forme d'un système d'équations intégrales de Fredholm dont les variables sont la radiosité des différentes surfaces. Les radiosités moyennes peuvent être calculée à partir de facteurs purement géométriques, appelés facteurs de vue. C'est ces quantités qui doivent être calculées par le logiciel pour obtenir la solution du bilan stationnaire d'énergie.

 

Figure 1. Schéma du cœur du réacteur étudié.

(Le système de logiciels ASTEC (irsn.fr))

Objectifs du projet

L'objectif de ce projet a été de paralléliser cette maquette logiciel, implémentée en Python, afin de réduire les temps de calcul. Le module a paralléliser en priorité a été l'échantillonnage uniforme des points sur les surfaces de la géométrie 2D ou 3D. En effet, c'est l'étape qui est la plus coûteuse en temps de calcul. Le second module a paralléliser était celui réalisant l'intégration numérique pour le calcul des facteurs de vue. L'échantillonnage et l'intégration numérique sont réalisées grâce à un algorithme de type Monte-Carlo Ray-Tracing (MCRT). L'implémentation de cet algorithme de lancer de rayon a été réalisée grâce à au paquet Geometry de la bibliothèque ROOT développée par le Centre Européen pour la Recherche Nucléaire (CERN), au travers de son interface pour Python, PyROOT, et dans sa version 6.24/00.

 

Dans ce projet, deux approches ont été menées. La première a consisté à mettre en œuvre un solution en utilisant le multiprocessing natif de Python. La seconde approche a été de rechercher une véritable solution multithreading. Le cahier des charges suivi au long de ce projet a été le suivant :

  • conserver une abstraction, au sens de la conception orientée objet, vis-à-vis de la représentation de la géométrie ;
  • trouver un solution alliant, dans la mesure du possible, simplicité d'implémentation et robustesse ;
  • effectuer un refactoring du code en utilisant l'approche basée sur le multiprocessing natif de Python ;
  • déterminer une véritable solution de multithreading et si elle peut l'être, l'implémenter dans la maquette Python.