TP5 : les chemins et l'information qu'ils portent
Voir le TP1 pour la prise en main du système d'exploitation EDIX.
Les commandes suivantes sont identiques à celles du début du TP1.
. /home/lafrier/star-build/local/etc/stardis.profile
mkdir TP5
cd TP5
Ce TP porte sur les chemins et les différentes informations qu'ils portent
TP5 - Partie 1 : les chemins permettent l'analyse physique
Partie 1.1 : visualisation des chemins
On reprend les images infrarouges du papier [Bati2023]. Il s'agit de deux
fermes, dont l'une possède une isolation par l'intérieur, et l'autre par
l'extérieur.
feh ${DEMONSTRATEUR_2}/Figures/tp5_isolation_1_970x824x3000.png
feh ${DEMONSTRATEUR_2}/Figures/tp5_isolation_2_970x824x3000.png
Cliquer sur q pour fermer la fenêtre affichant l'image.
Etes-vous capable de déterminer laquelle correspond à quelle isolation ?
Pas de panique si vous n'êtes pas thermicien :
visualiser les chemins va vous aider à répondre à cette question !
Les chemins permettre l'interprêtation physique.
ls ${DEMONSTRATEUR_2}/data/ferme_roffiac
Beaucoup de stl pour décrire ces deux scènes. Seuls les paramètres dans
les fichiers interieur.txt et exterieur.txt sont changés.
diff ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \
${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_exterieure.txt
On voit que les propriétés physiques des murs sont différentes dans les
deux cas.
On va maintenant ouvrir la scène sous Paraview, soit à l'aide du script
suivant ou bien avec la procédure ci-après :
paraview ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/paraview_open_scene.py &
Sous EDIX, Vous pouvez agrandir la fenêtre en faisant "Alt + H" ou "Alt + L".
Alternative :
paraview
File > open > sélectionner l'ensemble des fichiers commençant par S_ du
dossier ${DEMONSTRATEUR_2}/data/ferme_roffiac (ce sont les solides).
Cliquer sur "Apply"
Par interaction avec la souris, faire bouger la caméra pour dezoomer, par
exemple.
Pour chacun des éléments, on va les rendre transparents pour voir dans la
maison :
- S_mur_ext
- S_mur_milieu
- S_mur_int
Cliquer sur l'élément dans l'onglet "Pipeline Browser".
Dans les "Properties", changer la coloration de "STLSolidLabelling" vers
"Solid Color".
Dans "Display (Geometry Representation", régler l'opacité vers 0.2.
Vous visualisez l'intérieur de la maison, composée de deux pièces avec un
radiateur dans la pièce en bas. Il y a trois épaisseurs de murs dont seul
les bords sont affichés par souci de visualisation.
Dans les descriptions physiques du système, deux épaisseurs de mur auront
les mêmes propriétés et le dernier mur sera l'isolant.
Comme dans le TP1, vous allez maintenant générer puis visualiser des chemins
qui basculent d'un mode de tranfert thermique à un autre.
D'abord, on génère des chemins dans le système isolé par l'intérieur :
mkdir chemins_isolation_interieure
cd chemins_isolation_interieure
stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \
-p 0,0,1.5 -n 60 -e -D all,chemin_
Voir que des fichiers vtk décrivant les chemins ont été produits :
ls
Idem pour l'isolation par l'extérieur :
cd ..
mkdir chemins_isolation_exterieure
cd chemins_isolation_exterieure
stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_exterieure.txt \
-p 0,0,1.5 -n 60 -e -D all,chemin_
Dans paraview, charger quelques chemins pour les visualiser :
File > Open
Sélectionner le(s) chemin(s) dans l'arborescence
Cliquer sur le bouton "Apply" à gauche
Les chemins servent à estimer la température au niveau du point sonde placé
au centre de la pièce du bas. Les chemins partent donc de cette position.
Ils s'arrêtent sur l'une des sources :
- le radiateur à température imposée,
- la face du dessous du sol dont la température est imposé,
- l'environnement : avec une température radiative imposée et une
température de fluide connue.
Les différentes couleurs du chemins indiquent les modes de transfert
thermique.
Attention, dans le cas de la convection, la visualisation par une ligne
droite n'est pas la plus adaptée. En effet, lorsque le chemin part en
convection, on réalise un échantillonnage uniforme d'une position sur la
cavité, ainsi qu'un tirage d'une durée.
On va maintenant visualiser ces chemins grâce à des images. On reproduit ici
les résultats du papier Siggraph 2023.
cd ..
echo "Les scripts suivants vont lancer puis fermer des fenêtres paraview."
echo "Sous EDIX, pour que l'image ait la bonne forme, il faut basculer" \
"l'environnement de bureau en mode flottant."
echo ">>> C'est-à-dire : cliquer sur le symbole" \
"\"[]=\" pour qu'il devienne \"><>\"."
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data chemins_isolation_interieure/ --interior \
--scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 5 )
mv iso_interieure.png iso_interieure_peu_chemins.png
feh iso_interieure_peu_chemins.png
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data chemins_isolation_interieure/ --interior \
--scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 59 )
mv iso_interieure.png iso_interieure_tous_chemins.png
feh iso_interieure_tous_chemins.png
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data chemins_isolation_exterieure/ --exterior \
--scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 5 )
mv iso_exterieure.png iso_exterieure_peu_chemins.png
feh iso_exterieure_peu_chemins.png
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data chemins_isolation_exterieure/ --exterior \
--scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 59 )
mv iso_exterieure.png iso_exterieure_tous_chemins.png
feh iso_exterieure_tous_chemins.png
Donner dans l'énoncé les analyses qu'on peut faire en visualisant ces chemins.
TODO: les lister ici en attendant.
Vous pouvez fermer paraview.
Partie 1.2 : animation temporelle des chemins avec paraview
Pour réaliser des animations temporelles, il faut que les fichiers vtk
décrivant les chemins portent de l'information temporelle sur les sommets.
Pour cela, il faut exécuter stardis en renseignant un temps d'observation
(pas au stationnaire).
stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \
-p 0,0,1.5,10000 -n 20 -e -D all,chemin_
On va maintenant réaliser l'animation temporelle des chemins.
Cela peut prendre un peu de temps avant de vous redonner la main.
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data . --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ \
--path_indices 7 --interior --animation
Jouer la simulation à la main :
feh images_animation/*
Utiliser les flèches (droite et gauche) pour jouer le temps.
Attention, comme déjà dit, il y a un souci de représentation de la convection.
Si le chemin n'est pas très intéressant, vous pouvez supprimer le dossier
contenant les images et relancer le script avec un path_indices différent
rm -fr images_animation/
pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \
--data . --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ \
--path_indices 17 --interior --animation
TODO: note aux développeurs du TP :
La convection impacte le calcul des temps min et max, donc du pas de temps
global. On peut difficilement s'appuyer sur ce critère pour déterminer le
nombre d'images. Il faudrait faire en sorte que deux images successives
affichent les positions avant / après convection.
TP4 - Partie 2 : estimation de sensibilité le long des chemins
TODO
On dit que les calculs de sensibilités sont hyper importants, avec des
thèses en entier sur ce sujet. Principe : utilisation du même chemin pour
porter de nouvelles informations. Quelques explications.
Voir la thèse de Nada pour plus de détails.
Or ce n'est pas dans le stardis actuel (à l'heure où ce TP est écrit).
On va donc hacker Stardis pour cela !
On ne commente pas le hack, on fait passer le message que hacker c'est
facile !
Annonce de principe : Amaury
Exercice : refaire les maths pour dériver la sensibilité à la température
(pour le propagateur ensuite) puis la sensibilité à h.
Recopier les lignes de code qui sont dans la thèse pour vérification.
Vidéo de Nada qui fait une lecture commentée de cette partie de sa thèse
(Nada redit ce qui a été dit avant, elle lit sa thèse).
TP4 - Partie 3 : propagateur au sens de Green
TODO
Donner une explication du concept dans l'énoncé du TP.
On peut donc réaliser une simulation de MC et sauvegarder l'identifiant des
sources atteintes en fin de chemin. Ca nous donne des porportions des chemins
ayant atteint une certaine source. Une fois le calcul achevé, on peut changer
la valeur de température associée à cette source pour recalculer la
température du point sonde par exemple.
Partie 3.1 : version officielle avec star-green
mkdir propagateur
cd propagateur
Calcul du propagateur :
stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \
-p 0,0,1.5,10000 -n 10000 -G resultat.green
Observer que resultat.green a été créé :
ls
Que faire avec ce propagateur ?
man sgreen
On a deux exemples d'appels à cet exécutable dans la partie "EXAMPLES" de
la documentation.
Le premier nous permet d'identifier la contribution de chaque source :
sgreen -g resultat.green -s resultat.html
firefox-bin resultat.html &
Sous EDIX, firefox s'ouvre dans l'onglet 9.
Comment lire ce fichier ?
- List of variables
D'abord des informations sur les sources dans la scène (température
initiales, températures imposées) vs les variables qui n'en sont pas. - Formula of the Monte-Carlo estimate
L'expression de la température comme une espérance faisant intervenir
ces sources (on y retrouve les proportions de chemins ayant atteint
chacune de ces sources repérées en gras).
Ici vous observez que la température estimée est 293.924K. - Counts, etc
On a ensuite une description de la scène utilisée pour générer la green.
Deuxième exemple : on veut maintenant changer les températures de certaines
sources dans le système. Ici on prend l'exemple la température du radiateur.
On a vu tout à l'heure dans le man qu'il faut spécifier ces nouvelles
valeurs de sources dans un fichier. Son format est décrit dans la doc
suivante :
man sgreen-input
Là encore, vous retrouvez la mécanique des grammaires, comme dans le TP1.
On vous fourni un exemple où on change la température du radiateur.
echo "RADIATEUR.T=290" > maison_change_radiateur.txt
cat maison_change_radiateur.txt
sgreen -g resultat.green -a maison_change_radiateur.txt
on voit que la température est plus faible ! (286.962K contre 293.924K)
Vous noterez la rapidité du calcul par rapport à relancer un calcul
Monte-Carlo complet !
Un point d'attention, c'est la taille de ce fichier.
TODO
Parler d'espace mémoire, pour montrer la question de recherche : que doit-on
stocker ?
Attention, il y a les informations nécessaires en théorie et la pratique
dans sgreen.
Exercice :
En vous aidant du manuel, changez maintenant la température radiative de
l'environnement. Vous ne devriez voir aucun changement : pourquoi ?
La correction est "cachée" à la fin du fichier
TODO
Futur exercice : faire la même chose en variant cette fois un flux.
Problème : il n'y a pas de flux imposé dans la scène pour le moment.
echo "XXXXX.VP=XXXX" > maison_change_puissance_volumique.txt
cat maison_change_puissance_volumique.txt
sgreen -g resultat.green -a maison_change_radiateur.txt
cd ..
Partie 3.2 : version interactive
Pour la version interactive, on bascule sur une version hackée de stardis.
Ce code implémente le propagateur au sens de green sur une image (qui
n'était pas dans la version officielle de stardis à ce moment là).
Il permet aussi de changer a posteriori le temps d'observation, ce qui
n'entre pas dans le cadre "du propagateur au sens de Green", c'est une autre
idée. Afin de stocker moins d'informations sur les chemins dans ce cas, des
contraintes additionnelles sont ajoutées : aucun flux imposé, aucune
puissance volumique, température initiale homogène.
On va donc utiliser un code spécifique,
echo "Ouvrir un nouveau terminal (Alt + Entrée sous EDIX)" \
"par exemple dans un nouveau bureau"
. ${DEMONSTRATEUR_2}/libs/code_siggraph2023/local/etc/stardis.profile
echo "Se déplacer dans le répertoire souhaité via la commande \"cd\""
adresse="${DEMONSTRATEUR_2}/libs/code_siggraph2023/build/dep-stardis-0.2"
cp -r ${adresse}/src/stardis/replay_house/scene scene_qt_house
cd scene_qt_house
Construire le propagateur sur une image pour une seule réalisation par
pixel :
stardis -V 3 -M exterieur.txt \
-R spp=1:img=650x650:fov=30:pos=-20,-43,7.8:tgt=0,0,4.5:up=0,0,1 \
-g 650x650x1.green,write
Réévaluer le propagateur pour de nouvelles conditions limites :
replay_house -V 3 -M exterieur.txt -R file=file.ht -g 650x650x1.green,read
Vous pouvez manipuler aussi le temps d'observation ici.
Attention, ça sort du contexte habituel de la green.
Sous EDIX, vous pouvez déplacer la fenêtre en pressant Alt et en cliquant
sur la figure puis la faisant glisser. Pour quitter, faire Ctrl + C dans le
terminal qui a lancé l'exécutable.
On peut aussi charger un fichier avec plus de réalisations par pixel :
replay_house -V 3 -M exterieur.txt -R file=file.ht \
-g ${DEMONSTRATEUR_2}/data/replay_house_650x650x100_code_v0.2.green,read
Observations :
- Le second slider permet de contrôler la température du radiateur de la
pièce du bas. En l'augmentant ou le diminuant, vous voyez principalement
l'impact sur la température équivalente des murs de la pièce du bas,
mais aussi de la toiture. Remettez la température de radiateur au maximum
après vos expérimentations. - On peut également jouer sur le temps d'observation, au stationnaire ou
bien à un temps d'observation plus court. La température initiale dans la
scène est homogène, à 280K, ce qui ne correspond pas à un scénario
réaliste (idem pour le radiateur plus froid que la pièce d'ailleurs).
Dans les premiers instants, on voit que la température de la toiture
augmente rapidement grâce au rayonnement de l'environnement. On voit
ensuite la température équivalente des murs augmenter progressivement.
Il n'est pas possible de changer les propriétés des matériaux comme la
conductivité, le coefficient d'échange convectif ou l'émissivité, pour cela
il faudra d'autres stratégies, cf exercice 4 sur Monte-Carlo Symbolique.
Correction exercice propagateur
man sgreen-input
Lire la grammaire comme :
⟨settings⟩ ::= [⟨affectation⟩ ...]
le terme affectation sera remplacé par :
(affectation⟩ ::= ⟨val⟩ = ⟨value⟩
Ici il y a une coquille dans le manuel,
⟨val⟩ ::= ⟨description-name⟩.⟨field⟩
| AMBIENT
ici, la barre signifiant "ou bien", on utilise la règle (val) ::= AMBIENT
⟨value⟩ ::= real
Autre option : lire la section "EXAMPLES"
echo "AMBIENT=200" > maison_change_tamb.txt
sgreen -g resultat.green -a maison_change_tamb.txt
cd ..
TP5 - Partie 4 : MC symbolique
TODO
Introduit-on la problématique de piégeage ici ?
Couplage avec code déterministe, permet de ne pas relancer MC complet.
On prépare un contenu (ex video d'Antoine) et un jour on met un vrai exercice.
cd ..