algorithmic modeling for Rhino

Hi all,

I am trying to run an outdoor comfort simulation using LB/HB. I would like to assess the effect on thermal comfort of different pavement materials in a public square. I know that the material would affect the Mean Radiant Temperature but I do not know how to calculate the MRT in this case.
My questions are:

- How to estimate the hourly radiant temperature of each part of the square and the surrounding buildings? Can this be done using the Energy+ and Honeybee?

- What temperature should I consider for the sky?

Thanks in advance,


Views: 2187

Replies are closed for this discussion.

Replies to This Discussion


Honeybee can estimate the effects of the pavement but it can only be done with the comfort maps and Honeybee EnergyPlus simulation right now (unless you already know what surface temperature that your pavement produces).  This shows you a simple example of the comfort maps in the outdoors:

You want to edit the soilType on the ground zone component or make a custom HBZone with your paving material as a roof.

Here is a more advanced file with buildings:


Thank you so much Chris! It's just what I needed.

Hi again,

I am working with the example scripts sent above to produce a microclimate map and I have some questions:

1- Is the effect of direct sun considered to calculate the surface temperature of the terrain and the surrounding buildings?

2- It seems like the surface temperature of the terrain is only one for the whole top surface, that is, it does not differentiate between areas that are shaded and areas that are exposed to sun. Is this so? I guess that is is quite different being next to a ground that has been exposed to hours of sunlight or next to one that has been shaded, right?

Thanks in advance,



Sorry for the late response. To answer your questions:

1. Yes, the two examples that I posted here consider the effect of sun/shade on the outdoor surface temperaturess through the EnergyPlus/ OpenStudio simulation. EnergyPlus computes the percentage of each surface that sees the sun at the different hours of the day and factors this into a dynamic energy balance calculation. Any context or zone geometry will block the sun to surfaces in the EnergyPlus calculation. However, you should note that surface temperatures will only be computed for zone geometries.

2. If you break up the roof of the ground zone into multiple surfaces, you will get separate temperature results for each surface. This allows you to account for the thermal diversity of different areas in sun/shade. The more surfaces that you break up the roof into, the more accurate your simulation and the longer your calculation time.  You will see that both examples that I have posted involve breaking up the roof of the ground zone into multiple surfaces.

Finally, I see that you asked about sky temperature in your original question and you should know that this will automatically be computed in the comfort maps using the shortwave and longwave radiation in the EPW file.


Thank you Chris, 

Yet another question. I would like to add other two factors to the microclimate simulation: local wind speed and evapotranspiration from plants. Is it possible?

1- Local wind speed: I heard that you are working on the integration of Butterfly with HB/LB to include the effect of local wind speed to evaluate microclimate. Have you already produced any examples on this? If so, it would be very useful. 

The way I am working with this right now is exporting the wind simulation results from another software (Autodesk CFD) and importing them into Grasshopper. I run simulation for 8 wind directions (every 45 degrees) and extrapolating the local wind speed for each point hourly considering the hourly weather data (wind speed and wind direction). 

2- Evapotranspiration effect from trees and other plants. Is it possible at all to evaluate this with HB? I have not found any reference to evapotranspiration in the forum. 

Thanks in advance!


Hi Alejandro and Chris,

Any updates on this? On my side I am facing a similar problem.

I have been analyzing Outdoor comfort on a rather big area surrounded by retail and commercial buildings (I have around 12000 test points). I am working with Butterfly to calculate the wind speed and EnergyPlus for the Outdoor Temperatures of the surfaces.

I am working with the workflow developed by Chris here:

and adding the CFD results.

After computing a single CFD simulation, I am now trying to input the list of values with the wind speed results(12000 wind speed values for the same 12000 test points) to the _windspeed input of the UTCI Comfort Recipe component. However, the component expects an annual list of data per point (12.000 branches, each of them with 8760 values). As you can imagine, such a vast list of data crashes Rhino and Grasshopper.

Is there any workaround this, to make the component accept only 1 value per point? My idea is to use the result from the CFD simulation for whatever the analysis period is required later in the Microclimate analysis component.

Thanks in advance,


Hi Chris,

I was just wondering, does this method account for the effect of direct sunlight on the person? I guess it does but I did not read anything in the description of the component that confirms it.

Thanks in advance


Hi Everyone,

Sorry for such a late response but I can answer much more meaningfully now that Butterfly has metamorphosed and is flying!

I definitely realize that 8760 wind speed values for 1000+ test points is a large quantity of data that usually causes Grasshopper to crash.  This is why, if you read the input description of the windSpeed_ it says the following:

A value in m/s to set the wind speed of the comfort calculation. Use this input to account for objects like ceiling fans that might increase the interior wind speed or input custom wind speed values from a CFD simulation.
This input can also be a list of 8760 additional wind speed values that represent the hours of the year.
Alternatively, this input can be a data tree of values with branches that are each 8760 values long and correspond to the branches of the input viewFactorMesh_.
This can also be a data tree of values with one branch for each point in the input viewFactorMesh_.
Finally, this input can be the file path to a .csv file that is organized with 8760 values in each column and a number of columns that correspond to the number of test points. This last option is recommended if trying to synchronize CFD results with the microclimate maps.

This last bolded option is what I would recommend for such a large quantity of data and this is what I have used in my own outdoor comfort maps that have incorporated CFD results.  Over the next few months, I'll roll out some components to make it easier to generate this type of CSV from butterfly's results but, for the time being, you will have to clean your CFD results yourself.

I'll also say that, if you are only interested in the results at a single hour, you can always take the radiant temperature and air temperature maps from the mircolimate analysis and plug them into the Outdoor Comfort Calculator component along with your CFD values for wind speed.  This will give you comfort values at each point for the hour in question.

As for evapotraspiration, you can account for this by running the starting EPW file through the Urban Weather Generator (UWG) using the Dragonfly Beta.  The UWG allows you to warp EPWs to account for urban heat island effect along with the presence/absence of trees/plants. This example file shows you how to do it:

Some of the other LB developers and I have a paper that is in the final stages of review that outlines the complete methodology for accounting for all aspects of outdoor comfort using the Ladybug Tools suite.  I'll put the link to it here once it's past review.

Finally, yes, direct sun shining on people is incorporated into the maps using the solarCal method and an additional term to account for longwave radiant loss to the sky.


Hi Chris,

Thank you for your clarifications and your time on this.

The .csv option also seemed a good idea for me, but the file is quite heavy (1GB roughly), which Grasshopper was not capable of handling either. At least not with reasonable computing times.

I had not thought of the following option you suggest, which is a clever solution for the problem. This is definitely what I was looking for!

I'll also say that, if you are only interested in the results at a single hour, you can always take the radiant temperature and air temperature maps from the mircolimate analysis and plug them into the Outdoor Comfort Calculator component along with your CFD values for wind speed.  This will give you comfort values at each point for the hour in question.

Congratulations for Butterfly!



Glad that the Outdoor Comfort Calculator solves your issue.  I should also add that, for the csv's that I've used in my own studies, I usually try to keep the file size down by rounding off each windspeed t ~3 decimal places (you don't need more than this for comfort studies).  I will say that, for my studies with a couple thousand points, it usually takes 30 seconds for Grasshopper to load up the CSV into the comfort recipe component.  So, for 12,000 points, it might take around 3 minutes (assuming that your data is formatted with 3 decimal places).


Hi Chris,

Again, you are spot on, big thanks for your tips!

It is true that so many decimals create an unnecessarily big .csv, something that hadn´t cross my mind. With those computing times, it is definitely something more feasible, nothing to do with my previous trials.

Looking forward to the good news announced earlier today!


I just wanted to say that the paper that I mentioned earlier in this post is now past peer review and you can check it out here:

It outlines a full method for detailed outdoor microclimate analysis with Ladybug Tools and it will hopefully help everyone discern what variables should be included in such an analysis.







  • Add Photos
  • View All

© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service