1 #!/bin/sh -e
  2 
  3 
  4 #====================================================================
  5 # TP3 : créer sa propre géométrie avec la bibliothèque CAO star-cad #
  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 TP3
 13 cd TP3
 14 
 15 # La variable d'environnement suivante simplifie l'accès aux exemples de
 16 # CAO :
 17 
 18 export SCAD_EX=/home/lafrier/demonstrateur_2/libs/star-cad-examples
 19 
 20 # Dans les TPs précédents, on a vu que les géométries sont décrites par
 21 # des stl. En ouvrir un pour voir ce que cela signifie.
 22 # Ici le cube du premier TP.
 23 
 24 cat /home/lafrier/Stardis-Starter-Pack-0.2.0/cube/solid.stl
 25 
 26 # On voit plusieurs facet ... endfacet, qui correspondent à des triangles
 27 # définis par 3 sommets et une normale sortante du triangle. Ces coordonnées
 28 # nous indiquent aussi la position de cet objet dans la scène et sa taille.
 29 # Il y a 12 triangles, qui correspondent bien à deux triangles pour chacune
 30 # des six faces du cube.
 31 
 32 # Pour une géométrie complexe, on n'aura pas envie d'écrire des maillages à
 33 # la main. On présente ici une façon d'obtenir des stl pour stardis, à
 34 # l'aide du logiciel starcad.
 35 
 36 
 37 #===========================================================================
 38 # TP3 - Partie 1 : voir comment un simple cube est construit avec star-cad #
 39 #===========================================================================
 40 
 41 ls "${SCAD_EX}"
 42 mkdir star-cad-cube
 43 cd star-cad-cube
 44 
 45 # On l'exécute :
 46 
 47 "${SCAD_EX}"/cube
 48 
 49 # Observer tous les fichiers stl qui viennent d'être créés :
 50 
 51 ls
 52 
 53 # Visualiser avec Paraview :
 54 
 55 paraview
 56 
 57 # Open tous les fichiers stl du dossier star-cad-cube.
 58 # C'est la même scène que le starter pack sur laquelle on a travaillé dans
 59 # le TP1 :
 60 # - un cube (solide),
 61 # - des conditions limites : parois gauche et droite, autres parois (latérales)
 62 
 63 # Exécuter stardis :
 64 
 65 cp -r "${SCAD_EX}"/models/cube.txt model.txt
 66 stardis -V 3 -M model.txt -p 0.5,0.5,0.5,INF -n 10000
 67 
 68 # Ouvrir le fichier star-cad :
 69 
 70 vim "${SCAD_EX}"/src/cube.c
 71 
 72 # On décrit ici tout le fichier. Pour vous, l'objectif est de cibler où le
 73 # modifier pour vos besoins.
 74 
 75 # On décrit tout de même l'ensemble des étapes :
 76 #  - include : inclusion de la librairie starcad, qui définit toutes les
 77 #    fonctions commençant par `scad_` utilisées dans la suite
 78 # Dans la fonction main :
 79 #  - initialisation du contexte :
 80 #    - les variables qui nous serons propres
 81 #    - starcad initialise ses propres variables : scad_initialize
 82 
 83 #  - La partie qui vous intéresse : la création du cube.
 84 #    Ici on a besoin de déterminer les bords du cube, on doit le faire via deux
 85 #    étapes pour obtenir une liste de faces. Ensuite on catégorise ces faces,
 86 #    on leur donne une sémantique (ici paroi gauche / droite / latérales).
 87 #    On fusionne les faces latérales pour avoir un seul objet à exporter
 88 #    ensuite.
 89 
 90 #  - option pour changer la taille des triangles dans le mesh
 91 #  - meshing : on passe de la géométrie décrite par des opérations
 92 #    mathématiques, par une représentation sous forme de maillage.
 93 
 94 #  - Export des différentes géométries dans des fichiers stl
 95 #  - suppression du contexte :
 96 #    - nettoyage des structures allouées
 97 #    - scad_finalize : contexte star-cad
 98 
 99 
100 #==================================
101 # TP3 - Partie 2 : maison cubique #
102 #==================================
103 
104 cd ..
105 mkdir star-cad-house
106 cd star-cad-house
107 
108 # On exécute le script pour créer la géométrie :
109 
110 "${SCAD_EX}"/cubic_house
111 
112 # Observer tous les fichiers stl qui viennent d'être créés :
113 
114 ls
115 
116 # Visualiser avec Paraview :
117 
118 paraview
119 
120 # Exécuter stardis :
121 
122 cp -r "${SCAD_EX}"/models/cubic_house.txt model.txt
123 stardis -M model.txt -p 0,0,1.5 -n 10000 -V 3
124 
125 # Ouvrir le fichier pour observer sa structure :
126 
127 vim "${SCAD_EX}"/src/cubic_house.c
128 
129 # On observe les mêmes étapes que dans le cas précédent.
130 # Ici on voit de nouvelles fonctions pour définir les géométries qui sont plus
131 # complexes. On fait appel à des opérateurs de CAD.
132 # TODO : donner un pointeur vers un livre de CAO (voir avec Antoine).
133 
134 # Exercice :
135 # Modifiez `src/cube.c` pour ajouter une boule au centre du cube,
136 # cette boule sera un solide à température imposée.
137 # Ici l'objectif est de créer avec starcad plusieurs fichiers stl :
138 #  - un cube troué par une boule (solide)
139 #  - une boule (solide à température imposée),
140 #  - les parois gauche, droite et autres du cube (sur lesquelles seront
141 #    appliquées des conditions limites).
142 
143 # Pour cela :
144 #  1/ Dupliquez `src/cube.c` (voir procédure ci-dessous) ;
145 #  2/ Après la création du cube, ajoutez une boule en consultant l'API de
146 #     starcad (fichier `/home/lafrier/star-build/local/include/star/scad.h`).
147 #     Vous devrez pour cela définir de nouvelles variables.
148 #     Attention, réglez les paramètres de la boule de sorte à ce qu'elle soit
149 #     inclue strictement dans le cube.
150 #  3/ Réalisez une opération de découpe (`cut`) entre le cube et la boule
151 #     pour obtenir un "cube troué". Vous pouvez vous aider de l'exemple
152 #     `cubic_house.c` qui fait aussi appel à cette fonction.
153 #     Lors de cette opération, la frontière commune (surface externe de la
154 #     boule et surface interne du cube troué) est dupliquée : elle existe de
155 #     façon distincte dans les deux représentations.
156 #  4/ Réalisez une partition de la scène afin d'identifier que cette
157 #     frontière est commune, c'est la seule manière d'assurer que le maillage
158 #     de cette frontière ensuite soit identique pour les deux objets (cube
159 #     troué et boule). Pour cela, vous devez créer une liste en entrée de la
160 #     fonction, qui contient les deux objets (cube troué et boule). Vous
161 #     pouvez choisir flags = 0.
162 #     Attention, la partition créé de nouveaux objets en sortie, il faut
163 #     utiliser ceux-ci uniquement (ne plus utiliser les objets d'entrée de
164 #     cette fonction).
165 #  5/ Exporter le maillage de la boule et du cube troué.
166 #  6/ Niveau avancé en C : pour aller plus loin, réalisez une libération
167 #     explicite de la mémoire, si vous ne le faites pas, la fonction
168 #     `scad_finalize` le fait déjà pour vous.
169 
170 # La correction est donnée dans le fichier
171 # `${DEMONSTRATEUR_2}/TP3/src/2_starcad/mon_cube.c`.
172 # Le fichier `cube_modification_diff.txt` contient les lignes ajoutées au
173 # fichier originel `cube.c`.
174 
175 cd ..
176 mkdir star-cad-exo-cube
177 cd star-cad-exo-cube
178 
179 # Créez votre propre fichier :
180 
181 cp "${SCAD_EX}"/src/cube.c ./mon_cube.c
182 
183 # Compilation :
184 
185 gcc mon_cube.c -o mon_cube -lscad -lrsys
186 
187 # Voir l'exécutable mon_cube :
188 
189 ls
190 
191 # Exécution :
192 
193 mkdir scene
194 cd scene
195 ../mon_cube
196 ls
197 
198 # Vous devez observer que les fichiers stl ont été générés.
199 # Vous pouvez maintenant modifier `mon_cube.c` en implémentant les étapes
200 # 2 à 6, puis recompilez et exécutez.
201 
202 # Une fois l'exercice réalisé, visualisez le maillage du cube troué :
203 
204 paraview
205 
206 # Vous devriez avoir un résultat semblable à l'image ci-dessous en chargeant
207 # 1 seul stl correspondant au cube troué :
208 
209 feh "${DEMONSTRATEUR_2}"/Figures/tp3_boule_dans_cube.png
210 
211 # Afin de lancer un calcul stardis sur cette scène, copiez le fichier :
212 
213 cp "${SCAD_EX}"/models/cube.txt model.txt
214 
215 # Ajoutez la ligne suivante après la description du cube et placer le point
216 # sonde dans le volume du cube troué (hors de la boule) :
217 
218 vim model.txt
219 # SOLID    BOULE   0.1   25    2   0.01    280    280    0   FRONT  boule.stl
220 stardis -M model.txt -p 0.99,0.99,0.99 -V 3
221 
222 # Dans cet exercice, nous faisons le choix de mettre une boule solide afin
223 # que le système soit le plus simple possible à décrire. Comme dans le TP1,
224 # une boule fluide nécessite de décrire la connexion solide / fluide.
225 
226 # Explication du concept de partition :
227 # La partition est un opérateur qui permet d'identifier différentes composantes
228 # et de garantir des frontières communes entre elles quand elles existent.
229 # On donne ici un exemple sur la scène suivante, composée d'un carré et d'un
230 # cercle en intersection :
231 #       __________
232 #      |         _|_
233 #      |       /  |  \
234 #      |      |   |   |
235 #      |       \ _|_ /
236 #      |__________|
237 #
238 # Les deux géométries d'entrée sont :
239 #       __________            _ _
240 #      |          |         /     \
241 #      |          |        |       |
242 #      |          |         \ _ _ /
243 #      |          |
244 #      |__________|
245 #
246 # En interne, trois composantes seront identifiées, ainsi qu'une arête commune :
247 #       __________
248 #      |1        _|_
249 #      |       /  |  \
250 #      |      |2  |  3|
251 #      |       \ _|_ /
252 #      |__________|
253 #
254 # En sortie, renvoie le même nombre de géométries, où chacune aggrège des
255 # composantes pour former la même surface que la géométrie d'entrée.
256 #       __________          _ _
257 #      |         _|       /  |  \
258 #      |       /  |      |   |   |
259 #      |      |   |       \ _|_ /
260 #      |       \ _|
261 #      |__________|
262 #
263 
264 # Pour aller plus loin :
265 # ----------------------
266 # Vous pouvez consulter la ferme de ROFFIAC :
267 
268 cd ../..
269 mkdir star-cad-farm
270 cd star-cad-farm
271 
272 # On exécute le script pour créer la géométrie :
273 
274 "${SCAD_EX}"/roffiac_farm
275 
276 # Observer tous les fichiers stl qui viennent d'être créés :
277 
278 ls
279 
280 # Visualiser avec Paraview :
281 
282 paraview
283 
284 # Exécuter stardis :
285 
286 cp -r "${SCAD_EX}"/models/roffiac_farm.txt model.txt
287 stardis -M model.txt -p 0,0,1.5 -n 10000 -V 3
288 
289 # Ouvrir le fichier pour observer sa structure :
290 
291 vim "${SCAD_EX}"/src/roffiac_farm.c
292 
293 # On observe les mêmes étapes que dans le cas précédent.
294 
295 
296 #============================================
297 # TP3 - Partie 3 : import d'un fichier step #
298 #============================================
299 
300 cd ..
301 
302 # Présenter le cas d'application d'Antoine, juste être en capacité de
303 # comprendre les instructions de CAO. Il a un canal dans lequel il y a un fluide
304 # et des MOS FET sources de puissance volumique. Il a déjà des fichiers ".stp"
305 # issus de logiciels de CAO standards. Il souhaite importer et "découper" le
306 # fluide en différentes bandes sur lesquelles des températures moyennes seront
307 # calculées. Côté géométrie, il défini donc un rectangle qui permet de faire
308 # cette découpe, il supprime cet outil avant de faire l'étape de maillage.
309 # Les étapes sont les suivantes :
310 #  - initialisation du contexte
311 #  - import du step de la géométrie composé de plusieurs volumes
312 #    (6 MOS FET + canal)
313 #  - partitionnement
314 #  - import du step contenant le fluide
315 #  - création de l'outil de découpe (parallélépipède)
316 #  - création des n tronçons de géométrie
317 #  - suppression des éléments inutilés (à ne pas mailler) : l'outil de découpe
318 #    et le fluide
319 #  - création de la liste des objets à partitionner
320 #  - partitionnement
321 #  - identification des différents éléments (sapphire et MOS)
322 #  - maillage
323 #  - export des différents éléments
324 #  - extraction des surfaces sur lesquelles des conditions limites sont
325 #    appliquées (parties externes du canal) ; une sémantique leur est attribuée
326 #    en fonction de la position du centre de masse
327 #  - calcul de l'aire des MOS
328 #  - fusion de faces qui auront la même condition limite
329 #  - export de ces géométries sur lesquelles seront appliquées des conditions
330 #    limites
331 #  - écriture automatique du fichier de description de la scène pour stardis
332 #  - libération de la mémoire allouée
333 
334 mkdir star-cad-electronique
335 cd star-cad-electronique
336 
337 # Les fichiers suivants sont copiés dans le répertoire courant,
338 # car le code scad_sliced-geometry en a besoin et qu'il n'y a pas de mécanisme
339 # en place pour spécifier ce chemin de façon absolue.
340 
341 cp "${DEMONSTRATEUR_2}"/libs/scad_sliced-geometry/starcad_learning.stp .
342 cp "${DEMONSTRATEUR_2}"/libs/scad_sliced-geometry/starcad_learning_fluid.stp .
343 "${DEMONSTRATEUR_2}"/libs/scad_sliced-geometry/fragments_n.exe
344 ls
345 
346 # Lire le code en observant les différentes étapes décrites ci-dessus
347 
348 vim "${DEMONSTRATEUR_2}"/libs/scad_sliced-geometry/fragments_n.c
349 
350 # Le fichier d'entrée de stardis "stardis_entry.txt" prévoit que les fichiers
351 # stl soient placés dans des répertoires. (scad_sliced-geometry - tag 0.0.1)
352 # On l'édite pour supprimer ces dossiers.
353 
354 sed -e 's/MOS\///g; s/canal_frags_n\///g' -i stardis_entry.txt
355 
356 # Lancer stardis pour vérifier que la géométrie est bien conforme
357 # On voit que le calcul va bien au bout, ici une température moyenne de la
358 # surface indexée 0 du canal intérieur. Le calcul est long car les chemins
359 # sont piégés. Dans la thèse d'Antoine, une autre méthode de Monte-Carlo est
360 # développée (dite avec rebonds) mais n'est pas présentée ici.
361 
362 stardis -M stardis_entry.txt -s canal_int_0.stl -n 1000 -V 3
363 
364 
365 #==================================
366 # TP3 - Partie 4 : city generator #
367 #==================================
368 
369 # Description de city generator :
370 # C'est un outil de génération procédurale permettant la construction de la
371 # géométrie d'une ville à partir d'un cadastre (empreinte au sol et hauteur
372 # des batiments). Les modes constructifs contrôlent des propriétés des
373 # batiments comme la présence d'isolations et de fenêtres par exemple.
374 # Les catalogues décrivent eux les propriétés des batiments comme
375 # l'épaisseur de chaque isolant, la proportion de fenêtres, l'épaisseur de
376 # la dalle, etc.
377 
378 # Dans cet exercice, nous voyons comment paramétrer sa propre ville.
379 
380 
381 # Partie 4.1 : un exemple concret, l'île du Ramier pour le projet ANR MC2
382 #                                           (porté par C. Caliot du LMAP)
383 # -----------------------------------------------------------------------
384 
385 cd ..
386 
387 # Voir la scène de l'île du Ramier :
388 
389 paraview "${DEMONSTRATEUR_2}"/TP3/src/script_paraview_ile_ramier.py
390 
391 # Vous devez observer quelque chose de similaire à l'image suivante :
392 
393 feh "${DEMONSTRATEUR_2}"/Figures/tp3_ile_du_ramier_geometrie.png
394 
395 # Vous pouvez jouer avec la caméra pour tester différents points de vue.
396 # C'est cette description de la scène qui est utilisée ensuite pour le calcul
397 # stardis. Si le script ne fonctionne pas, lancer `paraview` puis visualiser
398 # B_BUILDING.stl du dossier '${DEMONSTRATEUR_2}/data/ile_du_ramier'
399 
400 # Lancer le calcul d'une image infrarouge :
401 
402 stardis -V 3 -M "${DEMONSTRATEUR_2}"/data/ile_du_ramier/idr.txt \
403 -R file=idr2.ht:fov=30:pos=1730,70,50:tgt=900,800,-250:img=500x500:spp=2
404 
405 # Produire une image infrarouge à partir du fichier idr2.ht :
406 
407 htpp -v -f -m default -o idr2.ppm idr2.ht
408 
409 # Visualiser l'image infrarouge :
410 
411 feh idr2.ppm
412 
413 # La même image est disponible dans l'énoncé avec beaucoup plus de
414 # réalisations par pixel :
415 
416 feh "${DEMONSTRATEUR_2}"/Figures/ile_du_ramier_2048_spp.png
417 
418 # Dans cet exercice, la géométrie vous a été donnée, elle a été obtenue
419 # grâce à city_generator. Dans la suite, afin de réduire le temps de
420 # calcul de la géométrie, on prend une scène plus modeste (4 batiments
421 # mitoyens).
422 
423 # Partie 4.2 : découverte de city_generator et du mode constructif 0
424 # ------------------------------------------------------------------
425 
426 mkdir city_generator_mode_0
427 cd city_generator_mode_0
428 
429 # Obtention de la description géométrique de la scène :
430 #
431 # Dans un shell à part (lancé par la commande sh), on commence par enrichir
432 # les chemins avec les répertoires dans lesquels sont installées les librairies
433 # et l'exécutable city_generator_2 (comme dans le TP1).
434 # On le fait dans un shell à part pour éviter que cela n'interfère avec
435 # l'environnement du démonstrateur 2.
436 sh
437 . /home/lafrier/environnement_city_generator_2/etc/profile
438 city_generator2 \
439 -m "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/4_buildings_mode_0/nc3.yaml \
440 -c \
441 "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/4_buildings_mode_0/catalog0.yaml \
442 -V 3
443 exit
444 # On vient de quitter ce "sous-environnement".
445 
446 # Observer les stl créés :
447 
448 ls
449 
450 # Produire le fichier model.txt de façon automatique, via le script suivant.
451 # Pour éviter de décrire chaque batiment, on fusionne les murs ensemble, les
452 # cavités ensemble et on donne à ces groupes les mêmes propriétés.
453 # Le script propose des paramètres par défaut à ces propriétés physiques.
454 
455 sh "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/make_stardis_model.sh \
456   > model.txt 2> /dev/null
457 
458 # Editer le fichier model.txt, pour changer TRAD à 240 par exemple.
459 # L'objectif est de voir que c'est le même type de fichiers que d'habitude :
460 # vous auriez pu l'écrire à la main ... Sinon jetez un coup d'oeil au TP1 :-)
461 
462 paraview
463 
464 # Chargez les fichiers STL préfixés par `S_`. Vous observez quelque chose
465 # comme :
466 
467 feh "${DEMONSTRATEUR_2}"/Figures/tp3_city_generator_mode_0_geometrie.png
468 
469 # On génère maintenant une image infrarouge de cette scène :
470 
471 stardis -V 3 -M model.txt \
472   -R file=idr2.ht:fov=30:pos=22,-17,20:tgt=4,5,6.5:img=500x500:spp=16
473 htpp -v -f -m gnuplot:range=260,285 idr2.ht | gnuplot - > idr2.png
474 feh idr2.png
475 
476 # Observer l'impact du manque d'isolant sur l'image infrarouge des batiments.
477 
478 # Si vous n'avez pas pu générer l'image :
479 
480 feh "${DEMONSTRATEUR_2}"/Figures/tp3_city_generator_mode_0_rendu_128_spp.png
481 
482 # Analyse de l'image :
483 # Les recoins occultent le ciel, ce qui explique la couleur.
484 # Deuxième effet, le mur est plus chaud ici parce que les deux pièces sont
485 # chaudes. C'est un effet connu pour les batiments mitoyens.
486 
487 cd ..
488 
489 
490 # Partie 4.3 : mode constructif 1 avec fenêtre et isolants
491 # --------------------------------------------------------
492 
493 mkdir city_generator_mode_1
494 cd city_generator_mode_1
495 
496 # Afin de lancer en mode 1 qui présente une isolation :
497 
498 sh
499 . /home/lafrier/environnement_city_generator_2/etc/profile
500 city_generator2 -m \
501 "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/4_buildings_mode_1/nc3.yaml \
502 -c \
503 "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/4_buildings_mode_1/catalog1.yaml \
504 -V 3
505 exit
506 
507 # Observer les stl créés :
508 
509 ls
510 
511 # Produire le fichier model.txt de façon automatique :
512 
513 sh "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/make_stardis_model.sh \
514   > model.txt 2> /dev/null
515 
516 # Aller éditer le fichier model.txt pour changer TRAD à 240 par exemple.
517 
518 paraview
519 
520 # Chargez les fichiers STL préfixés par `S_`. Vous observez quelque chose
521 # comme :
522 
523 feh "${DEMONSTRATEUR_2}"/Figures/tp3_city_generator_mode_1_geometrie.png
524 
525 # Chargez l'ensemble des stl commençant par `S_`. Observer la présence de
526 # fenêtres dans ce mode constructif, d'une dalle de fondation et d'isolants.
527 # On vous demandera dans l'exercice suivant de modifier ces propriétés.
528 
529 stardis -V 3 -M model.txt \
530   -R file=idr2.ht:fov=30:pos=22,-17,20:tgt=4,5,6.5:img=500x500:spp=16
531 htpp -v -f -m gnuplot:range=260,285 idr2.ht | gnuplot - > idr2.png
532 feh idr2.png
533 
534 # Si vous n'avez pas pu générer l'image :
535 
536 feh "${DEMONSTRATEUR_2}"/Figures/tp3_city_generator_mode_1_rendu_128_spp.png
537 
538 # Observer l'impact des isolants sur l'image infrarouge, noter que le batiment
539 # le plus présente une forte perte par sa toiture.
540 
541 cd ..
542 
543 
544 # Partie 4.4 : Exercice, ajouter une isolation à la toiture du batiment
545 #                                                          le plus haut
546 # ---------------------------------------------------------------------
547 
548 cp -r "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/4_buildings_mode_1 \
549   city_generator_exercice
550 cd city_generator_exercice
551 
552 # Démarche :
553 # Identifier le batiment dans la scène :
554 
555 cat nc3.yaml
556 
557 # Le batiment le plus haut (height = 13) correspond à l'identifiant "bat_1".
558 # Il utilise les propriétés nommées "b1" dans le catalogue.
559 # Il faut donc modifier les propriétés de "b1" dans le catalogue :
560 
561 vim catalog1.yaml
562 
563 # catalog1.yaml
564 #  - name: b1
565 #    roof_insulation_thickness: 0.5
566 
567 # Ces modifications sont dans données dans le dossier de correction.
568 
569 # Générer la géométrie :
570 
571 sh
572 . /home/lafrier/environnement_city_generator_2/etc/profile
573 city_generator2 -m nc3.yaml -c catalog1.yaml -V 3
574 exit
575 
576 # Générer la description du système pour stardis :
577 
578 sh "${DEMONSTRATEUR_2}"/TP3/src/4_city_generator/make_stardis_model.sh \
579   > model.txt 2> /dev/null
580 
581 # Lancer stardis :
582 
583 stardis -V 3 -M model.txt -R file=idr2.ht:fov=30:pos=22,-17,20:tgt=4,5,6.5:img=500x500:spp=16
584 
585 # Convertir le résultat en image :
586 
587 htpp -v -f -m gnuplot:range=260,285 idr2.ht | gnuplot - > idr2.png
588 feh idr2.png
589 
590 # Si vous n'avez pas pu générer l'image :
591 
592 feh "${DEMONSTRATEUR_2}"/Figures/tp3_city_generator_exercice_rendu_128_spp.png
593 
594 # Comparer cette image avec la précédente.
595 
596 feh ../city_generator_mode_1/idr2.png
597 
598 # Vous devez observer que l'isolant a bien été ajouté et qu'il y a donc moins
599 # de perte par cette toiture.