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 15 --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 # TODO: note aux développeurs du TP : 188 # La convection impacte le calcul des temps min et max, donc du pas de temps 189 # global. On peut difficilement s'appuyer sur ce critère pour déterminer le 190 # nombre d'images. Il faudrait faire en sorte que deux images successives 191 # affichent les positions avant / après convection. 192 193 194 #================================================================= 195 # TP4 - Partie 2 : estimation de sensibilité le long des chemins # 196 #================================================================= 197 198 # TODO 199 # On dit que les calculs de sensibilités sont hyper importants, avec des 200 # thèses en entier sur ce sujet. Principe : utilisation du même chemin pour 201 # porter de nouvelles informations. Quelques explications. 202 # Voir la thèse de Nada pour plus de détails. 203 # Or ce n'est pas dans le stardis actuel (à l'heure où ce TP est écrit). 204 # On va donc hacker Stardis pour cela ! 205 206 # On ne commente pas le hack, on fait passer le message que hacker c'est 207 # facile ! 208 209 # Annonce de principe : Amaury 210 # Exercice : refaire les maths pour dériver la sensibilité à la température 211 # (pour le propagateur ensuite) puis la sensibilité à h. 212 # Recopier les lignes de code qui sont dans la thèse pour vérification. 213 # Vidéo de Nada qui fait une lecture commentée de cette partie de sa thèse 214 # (Nada redit ce qui a été dit avant, elle lit sa thèse). 215 216 217 #================================================ 218 # TP4 - Partie 3 : propagateur au sens de Green # 219 #================================================ 220 221 # TODO 222 # Donner une explication du concept dans l'énoncé du TP. 223 # On peut donc réaliser une simulation de MC et sauvegarder l'identifiant des 224 # sources atteintes en fin de chemin. Ca nous donne des porportions des chemins 225 # ayant atteint une certaine source. Une fois le calcul achevé, on peut changer 226 # la valeur de température associée à cette source pour recalculer la 227 # température du point sonde par exemple. 228 229 # Partie 3.1 : version officielle avec star-green 230 # ----------------------------------------------- 231 232 mkdir propagateur 233 cd propagateur 234 235 # Calcul du propagateur : 236 237 stardis -M ${DEMONSTRATEUR_2}/TP5/src/visu_chemins/isolation_interieure.txt \ 238 -p 0,0,1.5,10000 -n 10000 -G resultat.green 239 240 # Observer que resultat.green a été créé : 241 242 ls 243 244 # Que faire avec ce propagateur ? 245 246 man sgreen 247 248 # On a deux exemples d'appels à cet exécutable dans la partie "EXAMPLES" de 249 # la documentation. 250 251 # Le premier nous permet d'identifier la contribution de chaque source : 252 253 sgreen -g resultat.green -s resultat.html 254 firefox-bin resultat.html & 255 256 # Sous EDIX, firefox s'ouvre dans l'onglet 9. 257 # Comment lire ce fichier ? 258 # - List of variables 259 # D'abord des informations sur les sources dans la scène (température 260 # initiales, températures imposées) vs les variables qui n'en sont pas. 261 # - Formula of the Monte-Carlo estimate 262 # L'expression de la température comme une espérance faisant intervenir 263 # ces sources (on y retrouve les proportions de chemins ayant atteint 264 # chacune de ces sources repérées en gras). 265 # Ici vous observez que la température estimée est 293.924K. 266 # - Counts, etc 267 # On a ensuite une description de la scène utilisée pour générer la green. 268 269 # Deuxième exemple : on veut maintenant changer les températures de certaines 270 # sources dans le système. Ici on prend l'exemple la température du radiateur. 271 # On a vu tout à l'heure dans le man qu'il faut spécifier ces nouvelles 272 # valeurs de sources dans un fichier. Son format est décrit dans la doc 273 # suivante : 274 275 man sgreen-input 276 277 # Là encore, vous retrouvez la mécanique des grammaires, comme dans le TP1. 278 # On vous fourni un exemple où on change la température du radiateur. 279 280 echo "RADIATEUR.T=290" > maison_change_radiateur.txt 281 cat maison_change_radiateur.txt 282 sgreen -g resultat.green -a maison_change_radiateur.txt 283 284 # on voit que la température est plus faible ! (286.962K contre 293.924K) 285 # Vous noterez la rapidité du calcul par rapport à relancer un calcul 286 # Monte-Carlo complet ! 287 # Un point d'attention, c'est la taille de ce fichier. 288 289 # TODO 290 # Parler d'espace mémoire, pour montrer la question de recherche : que doit-on 291 # stocker ? 292 # Attention, il y a les informations nécessaires en théorie et la pratique 293 # dans sgreen. 294 295 # Exercice : 296 # En vous aidant du manuel, changez maintenant la température radiative de 297 # l'environnement. Vous ne devriez voir aucun changement : pourquoi ? 298 299 # La correction est "cachée" à la fin du fichier 300 301 # TODO 302 # Futur exercice : faire la même chose en variant cette fois un flux. 303 # Problème : il n'y a pas de flux imposé dans la scène pour le moment. 304 # echo "XXXXX.VP=XXXX" > maison_change_puissance_volumique.txt 305 # cat maison_change_puissance_volumique.txt 306 # sgreen -g resultat.green -a maison_change_radiateur.txt 307 308 309 310 # Partie 3.2 : version interactive 311 # -------------------------------- 312 313 # Pour la version interactive, on bascule sur une version hackée de stardis. 314 315 # Ce code implémente le propagateur au sens de green sur une image (qui 316 # n'était pas dans la version officielle de stardis à ce moment là). 317 # Il permet aussi de changer a posteriori le temps d'observation, ce qui 318 # n'entre pas dans le cadre "du propagateur au sens de Green", c'est une autre 319 # idée. Afin de stocker moins d'informations sur les chemins dans ce cas, des 320 # contraintes additionnelles sont ajoutées : aucun flux imposé, aucune 321 # puissance volumique, température initiale homogène. 322 323 # On va donc utiliser un code spécifique, 324 325 echo "Ouvrir un nouveau terminal (Alt + Entrée sous EDIX)" \ 326 "par exemple dans un nouveau bureau" 327 . ${DEMONSTRATEUR_2}/libs/code_siggraph2023/local/etc/stardis.profile 328 echo "Se déplacer dans le répertoire souhaité via la commande \"cd\"" 329 adresse="${DEMONSTRATEUR_2}/libs/code_siggraph2023/build/dep-stardis-0.2" 330 cp -r ${adress}/src/stardis/replay_house/scene scene_qt_house 331 cd scene_qt_house 332 333 # Construire le propagateur sur une image pour une seule réalisation par 334 # pixel : 335 336 stardis -V 3 -M exterieur.txt \ 337 -R spp=1:img=650x650:fov=30:pos=-20,-43,7.8:tgt=0,0,4.5:up=0,0,1 \ 338 -g 650x650x1.green,write 339 340 # Réévaluer le propagateur pour de nouvelles conditions limites : 341 342 replay_house -V 3 -M exterieur.txt -R file=file.ht -g 650x650x1.green,read 343 344 # Vous pouvez manipuler aussi le temps d'observation ici. 345 # Attention, ça sort du contexte habituel de la green. 346 347 # Sous EDIX, vous pouvez déplacer la fenêtre en pressant Alt et en cliquant 348 # sur la figure puis la faisant glisser. Pour quitter, faire Ctrl + C dans le 349 # terminal qui a lancé l'exécutable. 350 351 # On peut aussi charger un fichier avec plus de réalisations par pixel : 352 353 replay_house -V 3 -M exterieur.txt -R file=file.ht \ 354 -g ${DEMONSTRATEUR_2}/data/replay_house_650x650x100_code_v0.2.green,read 355 356 # Observations : 357 # - Le second slider permet de contrôler la température du radiateur de la 358 # pièce du bas. En l'augmentant ou le diminuant, vous voyez principalement 359 # l'impact sur la température équivalente des murs de la pièce du bas, 360 # mais aussi de la toiture. Remettez la température de radiateur au maximum 361 # après vos expérimentations. 362 # - On peut également jouer sur le temps d'observation, au stationnaire ou 363 # bien à un temps d'observation plus court. La température initiale dans la 364 # scène est homogène, à 280K, ce qui ne correspond pas à un scénario 365 # réaliste (idem pour le radiateur plus froid que la pièce d'ailleurs). 366 # Dans les premiers instants, on voit que la température de la toiture 367 # augmente rapidement grâce au rayonnement de l'environnement. On voit 368 # ensuite la température équivalente des murs augmenter progressivement. 369 370 # Il n'est pas possible de changer les propriétés des matériaux comme la 371 # conductivité, le coefficient d'échange convectif ou l'émissivité, pour cela 372 # il faudra d'autres stratégies, cf exercice 4 sur Monte-Carlo Symbolique. 373 374 # Correction exercice propagateur 375 # ------------------------------- 376 377 man sgreen-input 378 379 # Lire la grammaire comme : 380 # ⟨settings⟩ ::= [⟨affectation⟩ ...] 381 # le terme affectation sera remplacé par : 382 # (affectation⟩ ::= ⟨val⟩ = ⟨value⟩ 383 # Ici il y a une coquille dans le manuel, 384 # ⟨val⟩ ::= ⟨description-name⟩.⟨field⟩ 385 # | AMBIENT # Ambient radiative temperature 386 # ici, la barre signifiant "ou bien", on utilise la règle (val) ::= AMBIENT 387 # ⟨value⟩ ::= real 388 # 389 # Autre option : lire la section "EXAMPLES" 390 391 echo "AMBIENT=200" > maison_change_tamb.txt 392 sgreen -g resultat.green -a maison_change_tamb.txt 393 394 395 #================================= 396 # TP5 - Partie 4 : MC symbolique # 397 #================================= 398 399 # TODO 400 # Introduit-on la problématique de piégeage ici ? 401 # Couplage avec code déterministe, permet de ne pas relancer MC complet. 402 403 # On prépare un contenu (ex video d'Antoine) et un jour on met un vrai exercice.