Je travaille sur un logiciel (Ruby - Sketchup) pour calculer le rayonnement (soleil, ciel et bâtiments environnants) dans le développement urbain au niveau des piétons. Le but final est de pouvoir créer une carte de contour qui montre le niveau de rayonnement total. Avec le rayonnement total, je veux dire ondes courtes (lumière) et ondes longues (chaleur). (Pour vous donner une idée: http://www.iaacblog.com/maa2011-2012-digitaltools/files/2012/01/Insolation-Analysis-All-Year.jpg)Algorithme de masque d'ombrage pour les calculs de rayonnement
Je sais qu'il ya plusieurs logiciels existants qui font cela, mais je dois écrire mon propre que ce calcul est seulement une partie d'un flux de travail plus complexe.
Le (évident) pseudo-code est le suivant:
Select and mesh surface for analysis
From each point of the mesh
Cast n (see below) rays in the upper hemisphere (precalculated)
For each ray check whether it is in shade
If in shade => Extract properties from intersected surface
If not in shade => Flag it
loop
loop
loop
L'approche ci-dessus est la force brute, mais il est le seul que je peux penser. Le temps de calcul augmente avec la quatrième puissance de la précision (Dx, Dy, Dazimth, Dtilt). Je sais que les logiciels comme Radiance utilisent une approche Montecarlo pour réduire le nombre de rayons.
Comme vous pouvez l'imaginer, la précision du calcul pour un point spécifique du maillage dépend fortement de la précision de la subdivision skydome. De même, la précision sur la surface dépend de la grossièreté de la maille.
Je pensais à une approche différente utilisant un raffinement adaptatif basé sur les résultats des calculs. Le raffinement pourrait fonctionner pour la surface analysée et le skydome. Si les résultats entre deux points adjacents diffèrent de plus d'une valeur seuil, un raffinement sera effectué. Cela se fait généralement en simulation de fluides, mais je n'ai rien trouvé à propos de la simulation de la lumière.
Aussi je me demande s'il y a des algorithmes, à partir de l'infographie par exemple, qui permettraient de minimiser le nombre de calculs. Par exemple: vérifiez la hauteur maximale de l'environnement afin d'exclure certaines parties du skydome pour certains points.
Je n'ai pas besoin d'une extrême précision car je ne fais pas de rendu. Ma priorité est la vitesse en ce moment.
Une suggestion sur l'approche?
Merci
n rayons Au moment où je subdivisent le ciel en azimut constant et d'inclinaison étapes; cela provoque des angles solides irréguliers. Il existe d'autres subdivisions (par exemple Tregenza) qui maintiennent un angle solide constant.
EDIT: Réponse aux grandes questions de Spektre
frame Time. Je cours une simulation pour chaque heure de l'année. Les données météorologiques sont extraites d'un fichier météo epw. Il contient, pour chaque heure, l'altitude et l'azimut solaire, le rayonnement direct, le rayonnement diffus, la nébulosité (pour les ondes longues diffuses atmosphériques). Mon algorithme calcule le masque d'ombre séparément puis il utilise ce masque d'ombre pour calculer le rayonnement sur la surface (et sur un piéton typique) pour chaque heure de l'année. C'est dans cette deuxième étape que j'ajoute le rayonnement réel. Dans la première étape, je viens de recueillir des informations sur la géométrie et les propriétés des différentes surfaces.
Chemins solaires. Non, je ne le fais pas.Voir point 1
Inclure le reflet des bâtiments? Pas pour le moment, mais je prévois de l'inclure comme une réflexion diffuse globale basée sur le facteur de vue du ciel. Je ne considère que la réflexion à ondes courtes du sol maintenant.
Inclure la dissipation thermique des bâtiments? Absolument oui. C'est la raison pour laquelle j'ai écrit ce code moi-même. Ici, à Dubaï, c'est essentiel car les surfaces des bâtiments deviennent très, très chaudes.
Surfaces albédo? Oui. Dans Skethcup j'ai associé un dictionnaire à chaque surface et dans ce dictionnaire j'inclue toutes les propriétés de surface: température, émissivité, etc. Actuellement les températures sont fixes (température ambiante si non assignée), mais je prévois, dans le futur , pour combiner ceci avec les résultats d'une simulation thermique dynamique de bâtiment qui calcule déjà toutes les températures de surfaces.
Résolution de carte. La résolution est choisie par l'utilisateur et le maillage généré par l'algorithme. En termes d'échelle, je l'utilise pour les plans directeurs. La balance va de 100mx100m à 2000mx2000m. J'ai tendance à utiliser une résolution minimale de 2m. La limite est la mémoire et le temps de simulation. J'ai également la possibilité d'affiner des zones spécifiques avec un maillage beaucoup plus fin: par exemple des zones où il y a des restaurants ou d'autres commodités.
Framerate. Je n'ai pas besoin de faire une animation. Les résultats sont exportés dans un fichier VTK et visualisés dans Paraview et animés là juste pour montrer pendant les présentations :-)
Chaleur et lumière. Oui. Les ondes courtes et longues sont traitées séparément. Voir le point 4. La géolocalisation est utilisée uniquement pour sélectionner le bon fichier météo. Je ne calcule pas tous les composants du rayonnement. Les fichiers météo dont j'ai besoin ont mesuré les données. Ils ne sont pas géniaux, mais assez bons pour l'instant. https://www.lucidchart.com/documents/view/5ca88b92-9a21-40a8-aa3a-0ff7a5968142/0
Eh bien, ce n'est pas très clair ce que vous demandez. Mais, vous avez un hémisphère qui projette une ombre et vous voulez savoir à tout point s'ils sont dans l'ombre? –
J'essaie de faire un peu plus que ça. Je calcule le rayonnement total sur le sol. Quelque chose comme ça [link] (http://www.iaacblog.com/maa2011-2012-digitaltools/files/2011/12/Ecotect.jpg) – Rojj
Je dirais qu'un moyen plus efficace serait de jeter les limites de le dôme au sol/objets. (En jetant je veux dire la projection.) La limite du dôme sur le sol/objet sera également continue - et tous les points à l'intérieur sont dans l'ombre .. –