1. Généralités sur la modélisation 3D pour la simulation

Pour alimenter la simulation, la première étape consiste à modéliser en 3D le bâtiment à analyser dans Rhino. Il est important de garder en tête les éléments suivants :

  • Keep it simple : la modélisation ne doit pas chercher à entrer dans des détails précis - sa résolution est de l’ordre du 1/200ème au 1/100ème. Modéliser trop de détails n’amène pas plus de précisions sur la simulation, et a tendance à créer des problèmes d’interprétation de la géométrie.
  • Eviter les arrondis, les filets, les courbes en tout genre : lors de la transformation du modèle pour la simulation, Ladybug transforme le modèle en mesh. Toutes les surfaces et polysurfaces arrondies génèreront des calculs plus long, et multiplient inutilement les erreurs lors des calculs. Préférer les courbes à 1 degré.
  • Les unités du fichier Rhino doivent être paramétrées en mètres (l’unité par défaut utilisée par Ladybug Tools). Une tolérance absolue de 0,01 unité est largement suffisante, et peut même être réduite à 0,1 unité.

Paramètres d’unités pour le fichier Rhino

Paramètres d’unités pour le fichier Rhino

Il est courant d’oublier de vérifier les unités du fichier utilisé. Dans un grand nombre de cas, vérifier ce paramètre permet de résoudre les problèmes d’interprétation de la géométrie par Honeybee.

Honeybee a la capacité de hiérarchiser des géométries, comme nous le verrons par la suite, et si sa tolérance est trop haute (par exemple : en centimètres avec une tolérance absolue haute), sa lecture de la géométrie va interpréter des surfaces coplanaires comme n’étant pas coplanaires.

2. Modéliser un bâtiment

2.1. Hiérarchie de modélisation

Honeybee est organisé pour recevoir des géométries représentant les éléments suivants :

  • Rooms : Volumes fermés (extrusions ou polysurfaces), représentant les pièces du bâtiment. Deux volumes contigus seront interprétés comme formant un même bâtiment, et leurs parois communes comme des cloisons et/ou planchers intérieurs. Les dimensions de ces volumes représentent le nu intérieur des pièces.
  • Shades : Surfaces ou volumes représentant des masques pour le calcul de la radiation solaire et de la luminosité : contexte bâti, etc. Ces éléments sont extérieurs au bâtiment analysé.
  • Openings : Surfaces représentant les parois vitrées. Ces surfaces doivent être coplanaires aux Rooms, et ne doivent pas toucher le bord de la face sur laquelle elles sont placées (cf. captures ci-dessous). Il n’est pas nécessaire de découper les parois des pièces : les surfaces vitrées s’y superposent.

Exemples de surfaces vitrées mal modélisées

A gauche : les surfaces représentant les parois vitrées touchent le bord inférieur de la face : l’interprétation par Honeybee ne pourra pas fonctionner. A droite : les surfaces représentant les parois vitrées ont été légèrement montées et ne touchent plus le bord de la face : l’interprétation par Honeybee fonctionnera.
  • Doors : Surfaces représentant les ouvrants opaques. Comme pour les Openings, ces surfaces doivent être coplanaires aux Rooms, et ne doivent pas toucher le bord de la face sur laquelle elles sont placées. Dans la plupart des analyses menées jusqu’à présent, ces éléments n’ont pas montré d’impact flagrant sur les simulations.

Le fichier de template Rhino de Ressources Architectes contient des calques pour ranger ces différents éléments :

Les calques dédiés à l’analyse avec le fichier de template Ressources Architectes

Les calques dédiés à l’analyse avec le fichier de template Ressources Architectes

2.2. Implémentation de la géométrie Rhino dans Honeybee

Cette partie vise à expliciter le processus d’implémentation de la géométrie Rhino dans Honeybee. Pour accompagner cette méthode, un modèle de bâtiment générique sera utilisé pour servir d’exemple.

Vue du modèle d’exemple utilisé dans cette partie

Vue du modèle d’exemple utilisé dans cette partie

Télécharger le modèle d’exemple

Ce modèle contient trois pièces (2 grandes pièces et une circulation), trois parois vitrées par pièce et deux parois vitrées pour la circulation. Une toiture non isolée est repréentée au-dessus des pièces, avec des légers débords sur les façades nord et sud.

L’orientation du modèle se fait selon le plan d’origine du fichier Rhino : l’axe Y représente le nord (axe dirigé vers le haut de l’écran lorsqu’on se situe en vue de dessus).

Une fois ce fichier ouvert, il suffit de taper Grasshopper pour ouvrir la fenêtre d’édition de scripts Grasshopper.

Interface de Grasshopper

Interface de Grasshopper

Cette interface contient trois principales catégories :

  • Les onglets de composants (Params, Maths, Sets, Vector, Curve, etc) ;
  • Les composants de l’onglet sélectionné ;
  • Le canevas qui correspond à l’espace de programmation où sont insérés des composants reliés par des connecteurs.

Pour plus de rapidité, il est possible de double-cliquer sur le canevas et d’y taper des mots qui correspondent au nom du composant que l’on souhaite ajouter.

2.2.1. Création de pièces à partir de solides

Le premier composant utile à la création de pièces est HB Room from Solid et est représenté de la manière suivante une fois ajouté au canevas :

Le composant 'HB Room from Solid'

Le composant 'HB Room from Solid'

Lorsqu’il est ajouté seul, il apparaît orange puisqu’il n’est pas alimenté par les informations requises pour son bon fonctionnement (une bulle jaune en haut à droite affiche l’erreur complète, et permet généralement de comprendre où se situe le bug).

La convention établie par Ladybug Tools est la suivante :

  • Un ”_” en début de mot indique une valeur indispensable pour le fonctionnement du composant.
  • Un ”_” en fin de mot indique une valeur optionnelle.
  • Un ”_” en début et en fin de mot indique une valeur indispensable pour le fonctionnement du composant, mais pour lequel une valeur par défaut est intégrée au composant.

Dans le cas présent, ce composant doit recevoir au minimum une définition de géométrie pour fonctionner. On ajoute donc un composant Geometry au canevas, qu’on va relier à la géométrie Rhino. Pour lier une géométrie dessinée dans Rhino à un composant Grasshopper, il suffit de réaliser un clic droit sur le composant Grasshopper, et de choisir une des deux options suivantes : Set one Geometry ou Set Multiple Geometries.

Dans le cas présent, nous souhaitons ajouter les trois volumes jaunes représentant les pièces de notre bâtiment, on choisit donc Set Multiple Geometries, la fenêtre Grasshopper disparaît et nous permet de sélectionner les objets à référencer. Sélectionner les trois volumes jaunes, et appuyer sur Entrée. La fenêtre Grasshopper réapparaît, et le composant Geometry n’affiche désormais plus d’erreur. On peut maintenant le relier à l’entrée _geo du composant HB Room from Solid.

Le composant Geometry relié au composant HB Room from Solid

Le composant 'Geometry' relié au composant 'HB Room from Solid' : une fois la géométrie Rhino référencée, les composants ne sont plus orange

Une fois qu’une géométrie est référencée dans un composant Grasshopper, elle s’affiche en rouge transparent dans l’espace 3D de Rhino, et en vert lorsque le composant est sélectionné dans Grasshopper. Pour désactiver cet affichage, il faut clic-droit sur le composant et désactiver Preview.

2.2.2. Gérer les parois adjacentes

Dès à présent, il est possible d’afficher le modèle interprété par Honeybee, en utilisant le composant HB Visualize by Type. Ce composant va afficher une version colorée des pièces interprétée par Honeybee, permettant de vérifier ce qu’il qualifie de mur, toiture, sol, cloison, etc.

L’ajout du composant 'HB Visualize by Type' à la suite du script précédent

L’ajout du composant 'HB Visualize by Type' à la suite du script précédent

Pour bien apprécier ce qui est affiché par ce composant, il est préférable de cacher le composant Geometry, ainsi que toute la géométrie présente dans Rhino. On obtient donc les volumes référencés, colorés en rouge pour la toiture, en jaune pour les murs, et en gris pour les sols. Pour les visualiser séparément, il est possible d’ajouter un composant Mesh sur lequel on va successivement connecter les sorties du composant HB Visualize by Type, tout en désactivant la Preview de ce dernier.

L’ajout du composant 'Mesh' à la suite du script précédent

L’ajout du composant 'Mesh' à la suite du script précédent : les composants 'Geometry' et 'HB Visualize by Type' ont une 'Preview' désactivées pour qu’on ne voit que les géométries du composant 'Mesh'.

On note ici que tous les murs sont qualifiés de walls, et qu’il n’y a pas de géométrie définie dans interior walls. Cette interprétation ne correspond pas à notre modèle, qui contient des cloisons intérieures.

Pour palier à ce problème, différents composants existent : à priori il est toujours intéressant de suivre cette méthodologie, même pour des projets simples comme celui-ci, pour s’assurer de la bonne interprétation des parois adjacentes par Honeybee.

La stratégie consiste à d’abord utiliser le composant HB Intersect Solids en amont de la création des pièces, pour vérifier la géométrie d’entrée. Ce composant nécessite l’ajout d’un Boolean Toggle pour être activé, comme affiché sur le script suivant.

Ajout du composant 'HB Intersect Solids'

Ajout du composant 'HB Intersect Solids' (et d’un 'Boolean Toggle' sur la position 'True' pour l’activer) entre le composant 'Geometry' et le composant 'HB Room from Solid'.

A ce stade, l’ajout de ce composant n’a pas résolu notre cas précis, mais il est important d’utiliser cette logique de manière générale puisqu’elle permet de résoudre en partie les potentiels problèmes d’adjacences entre faces. Le second composant à ajouter est HB Solve Adjacency, à la suite du composant HB Room from Solid.

Ajout du composant 'HB Solve Adjacency'

Ajout du composant 'HB Solve Adjacency' à la suite du composant 'HB Room from Solid'. Dans ce cas également, un 'Boolean Toggle' sur position 'True' est indispensable au fonctionnement du composant.

Une fois ce script réalisé, on voit apparaître les cloisons intérieures en jaune clair : le modèle interprète maintenant correctement cette partie du bâtiment.

Ce cas de résolution d’adjacence peut également se présenter sur des planchers intermédiaires : réaliser son script de la manière décrite ci-dessus permet en général de résoudre toutes les questions d’adjacences, mais il est important de bien vérifier que son modèle est correctement interprété avant d’entamer toute analyse.

2.2.3. Ajout des parois vitrées aux pièces

L’ajout de parois vitrées se fait une fois les pièces correctement définies. On utilise alors un autre composant Geometry, qui références les surfaces vitrées modélisées dans Rhino. Celui-ci sera connecté à un composant HB Aperture pour créer des objets Honeybee.

Le composant 'HB Aperture'

Le composant 'HB Aperture' doit recevoir en entrée des surfaces coplanaires avec les parois des pièces.

Une fois ces parois vitrées définies, on peut les ajouter aux pièces existantes à l’aide du composant HB Add Subface, de la manière suivante :

Le script de la partie précédente est ici complété par la définition des parois vitrées

Le script de la partie précédente est ici complété par la définition des parois vitrées. Le modèle affiché par 'HB Visualize by Type' intègre maintenant les parois vitrées.

Lorsque le composant HB Add Subface renvoie des erreurs, il est important de vérifier dans le modèle Rhino la coplanéité des surfaces vitrées et des parois des pièces, ainsi que les unités du fichier (à paramétrer en mètres et non en centimètres, comme mentionné dans la première partie).

2.2.4. Ajout des masques

L’ajout des masques se fait selon une logique assez similaire aux parois vitrées. On utilise le composant HB Shade pour créer des objets Honeybee.

Le composant HB Shade

Le composant 'HB Shade' peut recevoir indifféremment des surfaces et des solides.

Une fois les objets référencés dans un composant Geometry et déclarés comme HB Shade, il est possible de les coupler au script précédent en compilant tous ces éléments dans un composant HB Model.

Ajout des masques au modèle précédent, en compilant l’ensemble dans un composant HB Model

Ajout des masques au modèle précédent, en compilant l’ensemble dans un composant 'HB Model'

Pour le moment, nous avons modélisé les nus intérieurs des pièces (en jaune), et les fenêtres sont placés sur ce nu intérieur. Un composant existe pour ajouter des bordures extrudées autour des parois vitrées, et ainsi simuler l’épaisseur du mur : c’est le composant HB Extruded Border Shades.

Le composant HB Extruded Border Shades

Le composant 'HB Extruded Border Shades'

Il peut être placé après l’ajout des parois vitrées aux pièces, et avant la définition du HB Model, comme sur le script suivant :

Ajout du composant HB Extruded Border Shades dans le script précédent

Ajout du composant 'HB Extruded Border Shades' dans le script précédent

Dans cet exemple, on utilise un Panel contenant la valeur 0.3 pour définir la profondeur de l’extrusion à créer. Il est également possible d’utiliser un Slider pour modifier simplement cette valeur.

Un composant Slider

L’utilisation d’un 'Slider' permet de moduler une valeur à la souris, en appliquant des valeurs maximum, minimum et un pas.

En double-cliquant sur le slider, il est possible d'entrer une valeur au clavier.

Vue du modèle Honeybee

Vue du modèle Honeybee, affiché par le composant 'HB Visualize by Type'. On note l’ajout des bords extrudés autour des fenêtres, générés par Honeybee.

Les surfaces de Rhino possèdent une propriété d’orientation. Les extrusions générées par Honeybee sont relatives à cette propriété : si des extrusions générées par Honeybee sont mal orientées (par exemple vers l’intérieur), il suffit de sélectionner dans Rhino la surface vitrée initialement utilisée pour la définition, et d’utiliser la fonction Rhino Flip.

Une fois ces étapes réalisées, nous disposons d’un modèle Honeybee prêt à être analysé.

3. Modéliser un environnement

Dans certains cas, il est utile de modéliser des environnements extérieurs pour simuler par exemple le confort extérieur (UTCI), les îlots de chaleur/de fraîcheur, etc.

Vue du modèle d'environnement dans Rhino

Vue du modèle d'environnement dans Rhino

3.1. Contexte bâti

Les bâtiments doivent être modélisés avec des polysurfaces fermées, en évitant les arrondis et les surfaces non planaires.

Un outil d'analyse utile est la commande ShowEdges. En sélectionnant un ou plusieurs objets, la commande va dans un premier temps afficher son analyse, par exemple "Found 1335 edges total; no naked edges, no non-manifold edges.". Ensuite, en cochant Naked edges ou Non-Manifold Edges puis en cliquant sur Zoom, on peut facilement détecter les détails problématiques d'une surface incorrectement construite.

3.2. Sols

Les sols doivent être représentés par des polysurfaces fermées, avec au minimum une différenciation entre sol végétal et sol goudronné.

Encore une fois, il est important d’éviter au maximum des arrondis et des surfaces non planaires. Les routes doivent être dessinées avec des courbes à 1 degré. Pour transformer des courbes déjà dessinées en polyligne à 1 degré, la commande Rebuild est utile :

Usage de la commande Rebuild dans Rhino

Exemple d'usage de la commande 'Rebuild' dans Rhino

3.3. Arbres

La forme des arbres est tirée d’un modèle réalisé par Chris Mackey. Elle permet, avec une polysurface fermée, de représenter la masse de l’arbre et son ombre.

Vue de la modélisation des arbres pour la simulation

Vue de la modélisation des arbres pour la simulation

Télécharger le modèle d’exemple des arbres

Le fichier d'exemple disponible au téléchargement ci-dessus est organisé en blocs pour chaque taille d'arbre. Cette logique est pratique pour éviter d'alourdir le fichier pendant la modélisation. Pour la simulation, il sera néanmoins nécessaire d'exploser les blocs et de référencer les géométries d'arbres en tant que polysurfaces (et pas en tant que blocs).

3.4. Implémentation dans Honeybee

La logique d’implémentation dans Honeybee suit globalement la même logique que pour un bâtiment. Néanmoins quelques éléments diffèrent. Le script Grasshopper ci-dessous explicite la mise en place d’un modèle d’environnement extérieur dans Honeybee :

Définition Grasshopper d'un modèle d'environnement extérieur

Définition Grasshopper d'un modèle d'environnement extérieur

Les principales bizarreries de cette définition résident dans la non-existence de composants dédiés aux éléments extérieurs : c’est pourquoi les sols sont décrits comme des Rooms, et les bâtiments et arbres comme des Shades.

Télécharger le fichier d’exemple Grasshopper

Le fichier Grasshopper d'exemple contient les dépendances suivantes, il convient de les installer :

  • Ladybug Tools 1.8.0 (Guide d’installation) ;
  • Bifocals 0.5.0.0 (optionnel, pour l’affichage des noms de composants) ;
  • Moonlight 1.0.0.0 (optionnel, pour l’affichage en mode sombre).