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