TP2 : Propriétés physiques et optimisation

Prérequis : Avoir complété le TP1 star-phor.

Dans le TP1, vous avez lancé des simulations à partir d'une description simplifiée du réacteur torique. Dans la conception du TP, le choix de commencer avec cette géométrie relève principalement de la pédagogie : il permet de commencer l'étude du système physique à partir d'une géométrie relativement simple et de se familiariser progressivement avec le format de fichier d'entrée. Une des forces de la méthode de Monte Carlo, néanmoins, réside justement dans sa capacité à traiter des descriptions présentant un fort rapport d'échelles ainsi que des géométries complexes.

Dans ce travail pratique, nous allons donc raffiner la description du système physique en ajoutant de nouveaux éléments géométriques présents dans le réacteur et lancer de nouveaux calculs, afin de comparer les résultats obtenus avec ceux de la description simplifiée utilisée dans le TP1. Cette comparaison permettra notamment d'évaluer l'influence de la complexification de la géométrie sur les observables calculées et de mieux comprendre dans quelles conditions une description simplifiée peut constituer une approximation pertinente du système réel.

Partie 1.0 : Création de l'environnement de travail

Soyez sur que vous êtes dans le répertoire qui vous avez crée pour le TP star-phor. Pour savoir votre répertoire actuel, vous pouvez utiliser la commande :

pwd

Si vous voulez remonter dans les dossiers, vous pouvez utiliser la commande :

cd ..

Ou vous pouvez aller directement dans votre repertoire en utilisant la commande :

cd ~/mon_nom/tp_star-phor/

On copie le répertoire dédié au TP2 de star-phor :

cp -r "${TP_STAR_PHOR}"/TP2/ .

On source le profile crée lors du TP précédent :

source ~/mon_nom/tp_star-phor/profile

Partie 2.0 : Raffinement de la description du système

Entrez dans le repertoire du TP2 avec la commande :

cd TP2/data/

Vous pouvez explorer les fichiers utilisés pour décrire ce système avec la commande

ls .

Remarques :

  1. Vous pouvez regarder chaque fichier de propriété avec la commande :
more nom_propriete.txt
  1. Vous pouvez visualiser des images de la géométrie avec les commandes :
mupdf ../figures/geom_stl_vue_globale.png

  1. (Optionnel) Vous pouvez visualiser l'ensemble des géométries avec la commande :
paraview *.stl

Question 2.0 : Exécutez star-phor avec ce fichier de géométrie plus complet. Dans les mêmes conditions, comparez avec les résultats obtenus dans le TP1.

Remarque : Le réacteur qui nous sert ici de cas d'étude est un banc expérimental conçu pour l'acquisition de données cinétiques dans le cadre de réactions photo-induites. Or, l'une des prémisses de sa conception est justement de permettre l'utilisation d'hypothèses simplificatrices lors de l'élaboration des modèles qui le décrivent. La proximité que nous observons ici entre les résultats d'un modèle simplifié et ceux issus d'une représentation plus sophistiquée du système constitue donc un cas relativement particulier dans la modélisation du transfert radiatif, où les résultats peuvent être davantage sensibles aux conditions aux limites et à la géométrie du système.

Partie 2.1 : Variation des propriétés physiques

Ouvrez le fichier de configuration :

vim reacteur.sphin

Question 2.0 : Comment la complexification de la description du modèle se reflète-t-elle dans le fichier de configuration ?

Question 2.1 : Explorez l'effet du changement de la densité de flux de photons sur le MVREA. Testez 1 000, 2 000, 5 000 et 10 000 µmol/m^2/s.

Question 2.2 : Explorez l'effet du changement de la concentration sur le MVREA. Testez 0.1 1 2 5 10 15 mol/m^3.

Partie 2.2 : Automatisation de l'appel à star-phor

Les interfaces (c'est-à-dire les formats de fichiers d'entrée et de sortie) de star-phor ont été conçues de manière à faciliter son raccordement avec d'autres outils, dans une chaîne plus large d'outils. L'objectif de cette partie est d'illustrer cette propriété du logiciel.

Pour ce faire, nous mettons en place un fichier de configuration « template », que nous utiliserons comme base pour faire varier automatiquement les propriétés de la partie précédente.

Vous pouvez inspecter ce fichier avec la commande :

more reacteur_template.sphin

Notez que le seul changement est que nous avons remplacé les valeurs numériques de la concentration et du flux de photons par des espaces réservés CONCENTRATION et FLUX_DE_PHOTONS, qui seront remplacés par des valeurs numériques.

Vous pouvez ensuite exécuter la commande

# Parcourir les différentes valeurs de flux de photons à tester
for flux_de_photons in 1000 2000 5000 10000
do
  # Pour chaque flux de photons, tester les différentes concentrations
  for concentration in  0.1 1 2 5 10 15
  do
    # Remplacer les espaces réservés du fichier template par les valeurs
    # de concentration et de flux de photons utilisées pour cette simulation
    sed \
      -e "s/CONCENTRATION/$concentration/g" \
      -e "s/FLUX_DE_PHOTONS/$flux_de_photons/g" \
      reacteur_template.sphin | \

    # Envoyer le fichier de configuration modifié à star-phor
    # et enregistrer les résultats dans un fichier de sortie
    # dont le nom indique la concentration et le flux de photons utilisés
    star-phor -v -o "conc_${concentration}_flux_${flux_de_photons}.out"
  done
done

Ici, nous utilisons la commande sed, qui fait partie du système. Vous pouvez consulter sa page de manuel avec la commande :

man sed

Une fois l'exécution terminée, vous pouvez vérifier si les fichiers de sortie ont été créés avec la commande :

ls *.out

Ensuite, toujours en utilisant les outils du système, nous pouvons extraire les données générées dans un fichier différent pour chaque flux de photons :

# Parcourir les différentes valeurs de flux de photons à tester
for flux_de_photons in 1000 2000 5000 10000
do
  # Pour chaque flux de photons, tester différentes concentrations
  for concentration in  0.1 1 2 5 10 15
  do
      # Construire le nom du fichier de sortie à partir de la
      # concentration et du flux de photons utilisés lors de la
      # simulation
      file="conc_${concentration}_flux_${flux_de_photons}.out"

      # Extraire la valeur de l'estimateur et son incertitude à partir
      # de la première ligne du fichier de sortie
      # head -n 1 "$file" -> affiche la première ligne du fichier
      # cut -d ':' -f n -> sépare la ligne en plusieurs champs selon ':'
      #     -d ':' -> définit le caractère utilisé comme séparateur
      #     -f n   -> sélectionne le n-ième champ après la séparation
      value=$(head -n 1 "$file" | cut -d ':' -f 2)
      error=$(head -n 1 "$file" | cut -d ':' -f 3)

      # Ajouter les résultats dans le fichier correspondant au flux de
      # photons # Chaque ligne contient : concentration, valeur de
      # l'estimateur et incertitude
      echo "$concentration $value $error" >> data_flux_${flux_de_photons}.dat
  done
  # À la fin de cette boucle, toutes les concentrations testées pour
  # un même flux de photons ont été enregistrées dans le fichier .dat
  # correspondant
done

Et nous venons de générer un fichier .dat pour chaque flux de photons.

Finalement, nous pouvons tracer ces données avec la commande :

gnuplot -p ../scripts/plot_mvrea.gp

Partie 3 : Optimisation du réacteur

L'objectif de cette partie est de déterminer des conditions de fonctionnement permettant de maximiser la quantité de photons absorbés par le milieu réactionnel, tout en évitant l'apparition de zones dans lesquelles la lumière est totalement absorbée en surface. Nous voulons donc optimiser l'efficacité énergétique du réacteur tout en gardant une bonne homogénéité de la lumière.

Pour cela, nous allons essayer de trouver la concentration optimale pour ce réacteur. Deux observables serviront : nous voulons maximiser le MVREA tout en ayant un flux résiduel qui traverse le réacteur. Pour mesurer ce dernier, nous allons ajouter au fichier de configuration un capteur surfacique.

Partie 3.1 : Ajout d'un capteur en surface

Ouvrez le fichier de configuration en mode édition :

vim reacteur.sphin

Ajoutez un nouveau capteur surfacique, positionné à l'arrière du réacteur :

surface: "capteur"
  geometry: FRONT capteur.stl
  brdf: SPECULAR capteur_brdf.txt
  sensor:
    response_function: 1

Partie 3.2 : Trouver la concentration optimale

Question : Trouvez la concentration qui optimise l'efficacité énergétique de ce réacteur sans qu'il y ait de zones noires.

Question : Quels sont les autres leviers d'optimisation pour ce réacteur ?