TP1 : Prise en main de star-phor

Le réacteur torique est un banc expérimental développé au sein de l'axe GEPEB de l'Institut Pascal, à Clermont-Ferrand. Sa vocation est de permettre l'acquisition fiable de données cinétiques pour des réactions photo-induites, c'est-à-dire déclenchées par la lumière. Grâce à sa géométrie, il se rapproche d'un slab cartésien unidimensionnel, configuration particulièrement favorable à la modélisation du champ de rayonnement. De plus, il a fait l'objet d'une caractérisation hydrodynamique, laquelle a démontré qu'il peut être considéré comme parfaitement mélangé dans un domaine bien défini de conditions opératoires. La source lumineuse, un panneau de LEDs, est également caractérisée : son spectre d'émission est fourni par le fabricant et la densité énergétique a été mesurée avec un capteur de flux de photons.

réacteur_torique

L'objectif de ce TP sera de créer un fichier d'entrée star-phor décrivant ce dispositif. A priori, nous allons nous baser sur une version simplifiée de sa géométrie (celle-ci sera complexifiée dans le TP2). Nous allons calculer la vitesse volumique moyenne d'absorption des photons (MVREA) dans ce réacteur. Ici, la seule espèce absorbante est un colorant, qui est soluble dans l'éthanol qui constitue le milieu réactionnel. Nous allons également prendre en compte l'effet des réflexions et réfractions qui ont lieu dans le système en utilisant les indices optiques des vitres et de l'éthanol.

Partie 1 : Création d'un fichier d'entrée

L'objectif de cette partie est de créer un fichier d'entrée avec la syntaxe de star-phor-input.

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

Tout d'abord, il va vous falloir créer un répertoire à votre nom et vous y rendre :

mkdir mon_nom && cd mon_nom

On crée ensuite un sous-répertoire dédié au TP star-phor et on va dedans :

mkdir tp_star-phor && cd tp_star-phor

On copie le répertoire dédié au TP1 :

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

On crée un lien symbolique (un raccourci) vers le fichier star-phor.profile :

ln -sf /home/lafrier/environnement_tp_star-phor/etc/profile profile

Pour pouvoir exécuter star-phor, il faudra réaliser l'opération suivante à chaque fois qu'un nouveau terminal sera ouvert :

source ~/mon_nom/tp_star-phor/profile

Partie 1.1 : Fichiers de géométrie et de propriétés physiques

Avant de se lancer dans l'écriture du fichier d'entrée dans le format star-phor-input, nous allons d'abord explorer les fichiers de géométrie et de propriétés physiques qui serviront accessoirement à la description du système. Pour ce faire, nous allons entrer dans le répertoire du TP1 :

cd TP1

et lister les fichiers de géométrie et de propriétés spectrales qui s'y trouvent (sous-répertoire data) :

ls data

Ici, nous remarquons différents fichiers aux formats txt (propriétés physiques) :

et stl (géométries) :

Question 1.1 : Essayez d'associer les différentes propriétés physiques à chaque géométrie (ou une liste de géométries). Chaque géométrie peut être associée à différentes propriétés.

Remarques :

  1. Vous pouvez regarder chaque fichier de propriété avec la commande :
more data/nom_propriete.txt
  1. Vous pouvez visualiser le spectre d'émission normalisé :
gnuplot -p scripts/plot_spectre.gp
  1. Vous pouvez visualiser des images de la géométrie avec les commandes :
mupdf figures/geom_stl_vue_globale.png
mupdf figures/geom_stl_vue_coupe.png

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

Partie 1.2 : Création d'un fichier d'entrée

Nous allons maintenant nous concentrer sur la création d'un fichier décrivant ce réacteur avec la syntaxe proposée par le format de fichier star-phor-input. Ce format de fichier est spécifié dans sa page de manuel.

Pour consulter la page de manuel du format de fichier d'entrée, utilisez la commande :

man star-phor-input

Vous pouvez naviguer tranquillement dans cette page. Elle contient également des exemples. Cette page sera utilisée comme référence tout au long de cette partie.

Rentrons maintenant dans le répertoire data avec la commande :

cd data

Un fichier contenant une partie de la description du système a été préparé. Pour ouvrir ce fichier en mode édition, utilisez la commande :

vim reacteur.sphin

Remarque : Dans un premier temps, les mots-clés FRONT et BACK associés à chaque géométrie peuvent être perturbants. Il faut savoir que, dans star-phor, toutes les géométries sont composées de triangles, qui se combinent pour former des surfaces (y compris dans le cas de volumes). Or, comme une surface possède deux côtés, ces mots-clés servent à préciser de quel côté de la surface il s'agit. Il y a ici, bien entendu, une convention implicite pour déterminer quel côté correspond à FRONT et quel côté correspond à BACK. Dans star-phor, nous utilisons la convention de la main droite : le côté FRONT correspond au côté du triangle qui, lorsqu'il nous fait face, présente ses sommets organisés dans le sens des aiguilles d'une montre. Cette distinction nous permet par exemple avoir des propriétés de surface différentes de chaque côté d'une surface ou de définir des volumes adjacents avec un même fichier de géométrie.

Ce fichier est composé de différents volumes et surfaces, chacun composé de géométries, qui sont décorées par des propriétés physiques. Étudions chaque bloc composant ce fichier de configuration :

surface: "source"
  geometry: FRONT source.stl
  source:
    flux_density: 1000 umol/m^2/s spectre_emission_source.txt nm nm^-1
    direction: COLLIM NORMAL

On définit une surface, appelée source. Elle est composée uniquement d'un fichier de géométrie, source.stl. Cette surface a l'attribut source, qui lui donne la propriété d'émettre des photons. Cette source émet 1000 µmol de photons par mètre carré par seconde, avec un spectre d'émission défini dans spectre_emission_source.txt. Les longueurs d'onde dans ce fichier ont comme unité nm et la pdf d'émission a comme unité nm^-1. La distribution de direction d'émission est collimatée normale.

volume: "vitre_front"
  geometry: BACK vitre_front_milieu.stl
  geometry: FRONT vitre_front_bord.stl
  geometry: FRONT vitre_front_air.stl
  geometry: BACK vitre_front_noyau.stl
  refractive_index:
    n_real: n_verre.txt

Volume correspondant à l'une des vitres du réacteur. Il est composé des quatre géométries vitre_front_milieu, vitre_front_bord, vitre_front_air et vitre_front_noyau. La seule propriété physique définie pour ce volume est la partie réelle de l'indice de réfraction, définie dans le fichier n_verre.txt.

volume: "vitre_arriere"
  geometry: BACK vitre_arriere_milieu.stl
  geometry: FRONT vitre_arriere_bord.stl
  geometry: FRONT vitre_arriere_air.stl
  geometry: BACK vitre_arriere_noyau.stl
  refractive_index:
    n_real: n_verre.txt

Même chose, cette fois pour la vitre arrière du réacteur.

Remarque : On aurait pu définir les deux volumes vitre_front et vitre_arriere comme un seul, étant donné qu'ils partagent les mêmes propriétés physiques. En effet, on peut définir des modèles par l'union de régions non adjacentes dans l'espace.

surface: "optique_geometrique"
  geometry: FRONT vitre_front_bord.stl
  geometry: FRONT vitre_front_milieu.stl
  geometry: FRONT vitre_front_air.stl
  geometry: FRONT vitre_arriere_bord.stl
  geometry: FRONT vitre_arriere_milieu.stl
  geometry: FRONT vitre_arriere_air.stl
  geometry: BACK vitre_front_bord.stl
  geometry: BACK vitre_front_milieu.stl
  geometry: BACK vitre_front_air.stl
  geometry: BACK vitre_arriere_bord.stl
  geometry: BACK vitre_arriere_milieu.stl
  geometry: BACK vitre_arriere_air.stl
  brdf: SPECULAR FRESNEL_DIELECTRIC
  btdf: SNELL_DIELECTRIC FRESNEL_DIELECTRIC

Nous utilisons ce bloc pour définir les interfaces auxquelles on veut appliquer l'optique géométrique. Nous utilisons notamment les mots-clés SPECULAR FRESNEL_DIELECTRIC pour les propriétés de réflexion (distribution de direction et fraction réfléchie, respectivement) et SNELL_DIELECTRIC FRESNEL_DIELECTRIC pour les propriétés de transmission (distribution de directions et fraction transmise, respectivement).

Question 1.2 : Dans ce fichier de configuration, la définition du volume volume_reactionnel est incomplète. Compte tenu des exemples et de la documentation du format de fichier d'entrée, rajoutez dans ce volume les propriétés manquantes :


Partie 2 : Lancement du moteur de calcul et interprétation des résultats

Une fois le fichier d'entrée écrit, vous pouvez lancer le calcul. Pour ce faire, utilisez la commande :

star-phor reacteur.sphin

Cette commande appelle l'exécutable star-phor, avec comme seul argument le fichier d'entrée que vous venez d'écrire.

Remarque : Vous pouvez utiliser la commande

star-phor -h

pour afficher de l'aide, et la commande

man star-phor

pour avoir la documentation complète de cet exécutable.

Les résultats sont affichés directement dans le terminal. Ainsi, comme le format du fichier de configuration, les sorties sont également documentées. Pour voir la documentation du format de présentation des résultats de star-phor, utilisez la commande :

man star-phor-output

Nous constatons donc que la première ligne montre l'estimateur du MVREA total de la scène, avec l'erreur standard de l'estimateur.

La deuxième ligne montre l'estimateur du MVREA dans le volume volume_reactionnel, avec l'erreur standard. Or, comme il est le seul volume dans la scène, ce MVREA est le même que celui de la scène entière.

Un troisième niveau de présentation des sorties discrimine le MVREA par espèce chimique dans chaque volume. La troisième ligne montre le MVREA de l'espèce colorant dans le volume volume_reactionnel, avec son incertitude.

Le format de fichier présente également la densité de flux photonique par surface définie comme capteur. Il s'agit de la ligne LOSSES dans le format de fichier de sortie. Comme nous n'avons défini aucune surface comme capteur dans la scène, la valeur de cet estimateur vaut zéro.


Partie 2.1 : Options de l'appel à l'exécutable

Le nombre d'échantillonnages de l'espace des chemins par défaut lorsque l'on appelle la commande star-phor est de 10 000. Vous pouvez changer ce nombre en utilisant l'option -n dans la ligne de commande, suivie du nombre d'échantillonnages désiré.

Remarque : Toutes les options en ligne de commande doivent être spécifiées entre l'exécutable et le fichier d'entrée.

Question 2.1.1 : Que se passe-t-il avec la valeur des estimateurs et des erreurs types lorsque vous augmentez 10 fois ce nombre ? Et lorsque vous l'augmentez 100 fois ?

Une autre option intéressante nous permet, au lieu d'écrire les données directement dans le terminal, de spécifier un fichier de sortie pour les résultats de la simulation. L'option en question est -o, qui doit être suivie du nom du fichier de sortie.

Question 2.1.2 : Utilisez l'option -o pour enregistrer vos résultats avec 10 000, 100 000 et 1 000 000 échantillonnages.

Remarque : Par défaut, star-phor protège un fichier de sortie pour éviter qu'il soit accidentellement écrasé par un nouveau fichier. Autrement dit, le calcul sera immédiatement abandonné si le fichier spécifié existe déjà et rien ne sera écrit dans le fichier spécifié. Nous pouvons explicitement demander que ce fichier soit remplacé avec l'option -f en ligne de commande.

star-phor -f -o le_fichier_a_remplacer.out config.sphin