1 #!\bin/sh -e 2 3 4 #==================================================== 5 # TP5 : les chemins et l'information qu'ils portent # 6 #==================================================== 7 8 # Voir le TP1 pour la prise en main du système d'exploitation EDIX. 9 # Les commandes suivantes sont identiques à celles du début du TP1. 10 11 . /home/lafrier/star-build/local/etc/stardis.profile 12 mkdir TP5 13 cd TP5 14 15 # Ce TP porte sur les chemins et les différentes informations qu'ils portent 16 17 18 #============================================================= 19 # TP5 - Partie 1 : les chemins permettent l'analyse physique # 20 #============================================================= 21 # 22 # 23 # Partie 1.1 : visualisation des chemins 24 # -------------------------------------- 25 # 26 # On reprend les images infrarouges du papier [Bati2023]. Il s'agit de deux 27 # fermes, dont l'une possède une isolation par l'intérieur, et l'autre par 28 # l'extérieur. 29 30 feh ${DEMONSTRATEUR_2}/Figures/tp5_isolation_1_970x824x3000.png 31 feh ${DEMONSTRATEUR_2}/Figures/tp5_isolation_2_970x824x3000.png 32 33 # Cliquer sur q pour fermer la fenêtre affichant l'image. 34 # Etes-vous capable de déterminer laquelle correspond à quelle isolation ? 35 36 # Pas de panique si vous n'êtes pas thermicien : 37 # visualiser les chemins va vous aider à répondre à cette question ! 38 # Les chemins permettre l'interprêtation physique. 39 40 ls ${DEMONSTRATEUR_2}/data/ferme_roffiac 41 42 # Beaucoup de stl pour décrire ces deux scènes. Seuls les paramètres dans 43 # les fichiers interieur.txt et exterieur.txt sont changés. 44 45 diff ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \ 46 ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_exterieure.txt 47 48 # On voit que les propriétés physiques des murs sont différentes dans les 49 # deux cas. 50 51 # On va maintenant ouvrir la scène sous Paraview, soit à l'aide du script 52 # suivant ou bien avec la procédure ci-après : 53 54 paraview ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/paraview_open_scene.py & 55 56 # Sous EDIX, Vous pouvez agrandir la fenêtre en faisant "Alt + H" ou "Alt + L". 57 58 # Alternative : 59 # paraview 60 # File > open > sélectionner l'ensemble des fichiers commençant par S_ du 61 # dossier ${DEMONSTRATEUR_2}/data/ferme_roffiac (ce sont les solides). 62 # Cliquer sur "Apply" 63 # Par interaction avec la souris, faire bouger la caméra pour dezoomer, par 64 # exemple. 65 # Pour chacun des éléments, on va les rendre transparents pour voir dans la 66 # maison : 67 # - S_mur_ext 68 # - S_mur_milieu 69 # - S_mur_int 70 # Cliquer sur l'élément dans l'onglet "Pipeline Browser". 71 # Dans les "Properties", changer la coloration de "STLSolidLabelling" vers 72 # "Solid Color". 73 # Dans "Display (Geometry Representation", régler l'opacité vers 0.2. 74 75 # Vous visualisez l'intérieur de la maison, composée de deux pièces avec un 76 # radiateur dans la pièce en bas. Il y a trois épaisseurs de murs dont seul 77 # les bords sont affichés par souci de visualisation. 78 # Dans les descriptions physiques du système, deux épaisseurs de mur auront 79 # les mêmes propriétés et le dernier mur sera l'isolant. 80 81 # Comme dans le TP1, vous allez maintenant générer puis visualiser des chemins 82 # qui basculent d'un mode de tranfert thermique à un autre. 83 84 # D'abord, on génère des chemins dans le système isolé par l'intérieur : 85 86 mkdir chemins_isolation_interieure 87 cd chemins_isolation_interieure 88 stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \ 89 -p 0,0,1.5 -n 60 -e -D all,chemin_ 90 91 # Voir que des fichiers vtk décrivant les chemins ont été produits : 92 93 ls 94 95 # Idem pour l'isolation par l'extérieur : 96 97 cd .. 98 mkdir chemins_isolation_exterieure 99 cd chemins_isolation_exterieure 100 stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_exterieure.txt \ 101 -p 0,0,1.5 -n 60 -e -D all,chemin_ 102 103 # Dans paraview, charger quelques chemins pour les visualiser : 104 # File > Open 105 # Sélectionner le(s) chemin(s) dans l'arborescence 106 # Cliquer sur le bouton "Apply" à gauche 107 108 # Les chemins servent à estimer la température au niveau du point sonde placé 109 # au centre de la pièce du bas. Les chemins partent donc de cette position. 110 # Ils s'arrêtent sur l'une des sources : 111 # - le radiateur à température imposée, 112 # - la face du dessous du sol dont la température est imposé, 113 # - l'environnement : avec une température radiative imposée et une 114 # température de fluide connue. 115 # Les différentes couleurs du chemins indiquent les modes de transfert 116 # thermique. 117 # Attention, dans le cas de la convection, la visualisation par une ligne 118 # droite n'est pas la plus adaptée. En effet, lorsque le chemin part en 119 # convection, on réalise un échantillonnage uniforme d'une position sur la 120 # cavité, ainsi qu'un tirage d'une durée. 121 122 # On va maintenant visualiser ces chemins grâce à des images. On reproduit ici 123 # les résultats du papier Siggraph 2023. 124 125 cd .. 126 echo "Les scripts suivants vont lancer puis fermer des fenêtres paraview." 127 echo "Sous EDIX, pour que l'image ait la bonne forme, il faut basculer" \ 128 "l'environnement de bureau en mode flottant." 129 echo ">>> C'est-à-dire : cliquer sur le symbole" \ 130 "\"[]=\" pour qu'il devienne \"><>\"." 131 132 pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 133 --data chemins_isolation_interieure/ --interior \ 134 --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 5 ) 135 mv iso_interieure.png iso_interieure_peu_chemins.png 136 feh iso_interieure_peu_chemins.png 137 138 pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 139 --data chemins_isolation_interieure/ --interior \ 140 --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 59 ) 141 mv iso_interieure.png iso_interieure_tous_chemins.png 142 feh iso_interieure_tous_chemins.png 143 144 pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 145 --data chemins_isolation_exterieure/ --exterior \ 146 --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 5 ) 147 mv iso_exterieure.png iso_exterieure_peu_chemins.png 148 feh iso_exterieure_peu_chemins.png 149 150 pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 151 --data chemins_isolation_exterieure/ --exterior \ 152 --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ --path_indices $( seq 59 ) 153 mv iso_exterieure.png iso_exterieure_tous_chemins.png 154 feh iso_exterieure_tous_chemins.png 155 156 # Donner dans l'énoncé les analyses qu'on peut faire en visualisant ces chemins. 157 # TODO: les lister ici en attendant. 158 # Vous pouvez fermer paraview. 159 160 161 #============================================================== 162 # Partie 1.2 : animation temporelle des chemins avec paraview # 163 #============================================================== 164 165 # Pour réaliser des animations temporelles, il faut que les fichiers vtk 166 # décrivant les chemins portent de l'information temporelle sur les sommets. 167 # Pour cela, il faut exécuter stardis en renseignant un temps d'observation 168 # (pas au stationnaire). 169 170 stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \ 171 -p 0,0,1.5,10000 -n 20 -e -D all,chemin_ 172 173 # On va maintenant réaliser l'animation temporelle des chemins. 174 # Cela peut prendre un peu de temps avant de vous redonner la main. 175 176 pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 177 --data . --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ \ 178 --path_indices 7 --interior --animation 179 180 # Jouer la simulation à la main : 181 182 feh images_animation/* 183 184 # Utiliser les flèches (droite et gauche) pour jouer le temps. 185 186 # Attention, comme déjà dit, il y a un souci de représentation de la convection. 187 188 # Si le chemin n'est pas très intéressant, vous pouvez supprimer le dossier 189 # contenant les images et relancer le script avec un path_indices différent 190 # rm -fr images_animation/ 191 # pvpython ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/draw_paths.py \ 192 # --data . --scene ${DEMONSTRATEUR_2}/data/ferme_roffiac/ \ 193 # --path_indices 17 --interior --animation 194 195 # TODO: note aux développeurs du TP : 196 # La convection impacte le calcul des temps min et max, donc du pas de temps 197 # global. On peut difficilement s'appuyer sur ce critère pour déterminer le 198 # nombre d'images. Il faudrait faire en sorte que deux images successives 199 # affichent les positions avant / après convection. 200 201 202 #================================================================= 203 # TP4 - Partie 2 : estimation de sensibilité le long des chemins # 204 #================================================================= 205 206 # TODO 207 # On dit que les calculs de sensibilités sont hyper importants, avec des 208 # thèses en entier sur ce sujet. Principe : utilisation du même chemin pour 209 # porter de nouvelles informations. Quelques explications. 210 # Voir la thèse de Nada pour plus de détails. 211 # Or ce n'est pas dans le stardis actuel (à l'heure où ce TP est écrit). 212 # On va donc hacker Stardis pour cela ! 213 214 # On ne commente pas le hack, on fait passer le message que hacker c'est 215 # facile ! 216 217 # Annonce de principe : Amaury 218 # Exercice : refaire les maths pour dériver la sensibilité à la température 219 # (pour le propagateur ensuite) puis la sensibilité à h. 220 # Recopier les lignes de code qui sont dans la thèse pour vérification. 221 # Vidéo de Nada qui fait une lecture commentée de cette partie de sa thèse 222 # (Nada redit ce qui a été dit avant, elle lit sa thèse). 223 224 225 #================================================ 226 # TP4 - Partie 3 : propagateur au sens de Green # 227 #================================================ 228 229 # TODO 230 # Donner une explication du concept dans l'énoncé du TP. 231 # On peut donc réaliser une simulation de MC et sauvegarder l'identifiant des 232 # sources atteintes en fin de chemin. Ca nous donne des porportions des chemins 233 # ayant atteint une certaine source. Une fois le calcul achevé, on peut changer 234 # la valeur de température associée à cette source pour recalculer la 235 # température du point sonde par exemple. 236 237 # Partie 3.1 : version officielle avec star-green 238 # ----------------------------------------------- 239 240 mkdir propagateur 241 cd propagateur 242 243 # Calcul du propagateur : 244 245 stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \ 246 -p 0,0,1.5,10000 -n 10000 -G resultat.green 247 248 # Observer que resultat.green a été créé : 249 250 ls 251 252 # Que faire avec ce propagateur ? 253 254 man sgreen 255 256 # On a deux exemples d'appels à cet exécutable dans la partie "EXAMPLES" de 257 # la documentation. 258 259 # Le premier nous permet d'identifier la contribution de chaque source : 260 261 sgreen -g resultat.green -s resultat.html 262 firefox-bin resultat.html & 263 264 # Sous EDIX, firefox s'ouvre dans l'onglet 9. 265 # Comment lire ce fichier ? 266 # - List of variables 267 # D'abord des informations sur les sources dans la scène (température 268 # initiales, températures imposées) vs les variables qui n'en sont pas. 269 # - Formula of the Monte-Carlo estimate 270 # L'expression de la température comme une espérance faisant intervenir 271 # ces sources (on y retrouve les proportions de chemins ayant atteint 272 # chacune de ces sources repérées en gras). 273 # Ici vous observez que la température estimée est 293.924K. 274 # - Counts, etc 275 # On a ensuite une description de la scène utilisée pour générer la green. 276 277 # Deuxième exemple : on veut maintenant changer les températures de certaines 278 # sources dans le système. Ici on prend l'exemple la température du radiateur. 279 # On a vu tout à l'heure dans le man qu'il faut spécifier ces nouvelles 280 # valeurs de sources dans un fichier. Son format est décrit dans la doc 281 # suivante : 282 283 man sgreen-input 284 285 # Là encore, vous retrouvez la mécanique des grammaires, comme dans le TP1. 286 # On vous fourni un exemple où on change la température du radiateur. 287 288 echo "RADIATEUR.T=290" > maison_change_radiateur.txt 289 cat maison_change_radiateur.txt 290 sgreen -g resultat.green -a maison_change_radiateur.txt 291 292 # on voit que la température est plus faible ! (286.962K contre 293.924K) 293 # Vous noterez la rapidité du calcul par rapport à relancer un calcul 294 # Monte-Carlo complet ! 295 # Un point d'attention, c'est la taille de ce fichier. 296 297 # TODO 298 # Parler d'espace mémoire, pour montrer la question de recherche : que doit-on 299 # stocker ? 300 # Attention, il y a les informations nécessaires en théorie et la pratique 301 # dans sgreen. 302 303 # Exercice : 304 # En vous aidant du manuel, changez maintenant la température radiative de 305 # l'environnement. Vous ne devriez voir aucun changement : pourquoi ? 306 307 # La correction est "cachée" à la fin du fichier 308 309 # TODO 310 # Futur exercice : faire la même chose en variant cette fois un flux. 311 # Problème : il n'y a pas de flux imposé dans la scène pour le moment. 312 # echo "XXXXX.VP=XXXX" > maison_change_puissance_volumique.txt 313 # cat maison_change_puissance_volumique.txt 314 # sgreen -g resultat.green -a maison_change_radiateur.txt 315 316 cd .. 317 318 319 # Partie 3.2 : version interactive 320 # -------------------------------- 321 322 # Pour la version interactive, on bascule sur une version hackée de stardis. 323 324 # Ce code implémente le propagateur au sens de green sur une image (qui 325 # n'était pas dans la version officielle de stardis à ce moment là). 326 # Il permet aussi de changer a posteriori le temps d'observation, ce qui 327 # n'entre pas dans le cadre "du propagateur au sens de Green", c'est une autre 328 # idée. Afin de stocker moins d'informations sur les chemins dans ce cas, des 329 # contraintes additionnelles sont ajoutées : aucun flux imposé, aucune 330 # puissance volumique, température initiale homogène. 331 332 # On va donc utiliser un code spécifique, 333 334 echo "Ouvrir un nouveau terminal (Alt + Entrée sous EDIX)" \ 335 "par exemple dans un nouveau bureau" 336 . ${DEMONSTRATEUR_2}/libs/code_siggraph2023/local/etc/stardis.profile 337 echo "Se déplacer dans le répertoire souhaité via la commande \"cd\"" 338 adresse="${DEMONSTRATEUR_2}/libs/code_siggraph2023/build/dep-stardis-0.2" 339 cp -r ${adresse}/src/stardis/replay_house/scene scene_qt_house 340 cd scene_qt_house 341 342 # Construire le propagateur sur une image pour une seule réalisation par 343 # pixel : 344 345 stardis -V 3 -M exterieur.txt \ 346 -R spp=1:img=650x650:fov=30:pos=-20,-43,7.8:tgt=0,0,4.5:up=0,0,1 \ 347 -g 650x650x1.green,write 348 349 # Réévaluer le propagateur pour de nouvelles conditions limites : 350 351 replay_house -V 3 -M exterieur.txt -R file=file.ht -g 650x650x1.green,read 352 353 # Vous pouvez manipuler aussi le temps d'observation ici. 354 # Attention, ça sort du contexte habituel de la green. 355 356 # Sous EDIX, vous pouvez déplacer la fenêtre en pressant Alt et en cliquant 357 # sur la figure puis la faisant glisser. Pour quitter, faire Ctrl + C dans le 358 # terminal qui a lancé l'exécutable. 359 360 # On peut aussi charger un fichier avec plus de réalisations par pixel : 361 362 replay_house -V 3 -M exterieur.txt -R file=file.ht \ 363 -g ${DEMONSTRATEUR_2}/data/replay_house_650x650x100_code_v0.2.green,read 364 365 # Observations : 366 # - Le second slider permet de contrôler la température du radiateur de la 367 # pièce du bas. En l'augmentant ou le diminuant, vous voyez principalement 368 # l'impact sur la température équivalente des murs de la pièce du bas, 369 # mais aussi de la toiture. Remettez la température de radiateur au maximum 370 # après vos expérimentations. 371 # - On peut également jouer sur le temps d'observation, au stationnaire ou 372 # bien à un temps d'observation plus court. La température initiale dans la 373 # scène est homogène, à 280K, ce qui ne correspond pas à un scénario 374 # réaliste (idem pour le radiateur plus froid que la pièce d'ailleurs). 375 # Dans les premiers instants, on voit que la température de la toiture 376 # augmente rapidement grâce au rayonnement de l'environnement. On voit 377 # ensuite la température équivalente des murs augmenter progressivement. 378 379 # Il n'est pas possible de changer les propriétés des matériaux comme la 380 # conductivité, le coefficient d'échange convectif ou l'émissivité, pour cela 381 # il faudra d'autres stratégies, cf exercice 4 sur Monte-Carlo Symbolique. 382 383 # Correction exercice propagateur 384 # ------------------------------- 385 386 man sgreen-input 387 388 # Lire la grammaire comme : 389 # ⟨settings⟩ ::= [⟨affectation⟩ ...] 390 # le terme affectation sera remplacé par : 391 # (affectation⟩ ::= ⟨val⟩ = ⟨value⟩ 392 # Ici il y a une coquille dans le manuel, 393 # ⟨val⟩ ::= ⟨description-name⟩.⟨field⟩ 394 # | AMBIENT # Ambient radiative temperature 395 # ici, la barre signifiant "ou bien", on utilise la règle (val) ::= AMBIENT 396 # ⟨value⟩ ::= real 397 # 398 # Autre option : lire la section "EXAMPLES" 399 400 echo "AMBIENT=200" > maison_change_tamb.txt 401 sgreen -g resultat.green -a maison_change_tamb.txt 402 403 cd .. 404 405 #================================= 406 # TP5 - Partie 4 : MC symbolique # 407 #================================= 408 409 # TODO 410 # Introduit-on la problématique de piégeage ici ? 411 # Couplage avec code déterministe, permet de ne pas relancer MC complet. 412 413 # On prépare un contenu (ex video d'Antoine) et un jour on met un vrai exercice. 414 415 cd ..