algorithmic modeling for Rhino

Hey guys,

I'm trying to asses the local thermal discomfort related to radiant asymmetry. To do that I need to calculate the radiant asymmetry, which is done by multiplying surface temperatures with their view factor and summing it all together. 

From what I can read this is basically the same way you calculate MRT right? So my question is can I replace t_pr in the equations of EN 7730-2006 with MRT?

If not is there a way to use HB's view factor component to calculate radiant asymmetry?

EDIT: I now see that you have to use radiant temperature asymmetry (delta_t_pr) and not t_pr for the EN calculation. Do anyone have an idea how to calculate that from the HB components?



Views: 2902

Replies are closed for this discussion.

Replies to This Discussion


To respond to your edited question, there is presently a dearth of research on how to forecast discomfort from radiant asymmetry.  The only study that seems to have a consensus around it is Fanger's original one that held the PMV of people in a cube-like test chamber at 0 and just modulated the temperature of 1 of the 6 surfaces until the subjects felt discomfort.

The results give a super simple model that requires to you assume that the surface with a different temperature has the same view factor as you would have in a cube. I question how generalizable it is to many real-world cases.  Still, if you want to test for radiant asymmetry, I suggest that you use the "local discomfort" button on the CBE tool.

Since the calculation is so simple, I don't see much purpose in putting in a special component in Ladybug/Honeybee (since you could calculate it with 1 or 2 native GH components).

I hope this helps and let me know if you have any suggestions.


Hey Chris,

I'm not sure that I follow. To me the view factor calculation seems a bit complicated. To my understanding you would have to split your view factors with a parallel plane, going through your test point, to the surface of interest. And then you take the temperature difference between each side of your plane to get Δt_pr.

And you can then throw Δt_pr into the comfort equations from EN-7730.


Hi Christian,

Thank you so much for this explanation and for the image describing the method that you are trying to use.  I have realized that I may have been misinterpreting the section on radiant asymmetry that has been published in ASHRAE 55 and/or EN-7730 for almost a year now.  I originally thought that this section was just a reiteration of the results from Fanger's study and I had not realized that it had been fleshed-out into a generalizable method for all radiant asymmetry.

Making a component that allows you to perform the method that you have posted here should be relatively quick and straightforward.  We already have the functions in the Ladybug code to calculate view factors into a plane and we have validated them as you see in this conversation:

This method is also similar that which is used inside the "Indoor View Factor Calculator" component.  However, this component is not projecting the view factors into the plane of a surface (it is just computing views from a point for MRT calculation) and the component has been streamlined so much for the microclimate maps that it's difficult to pull out the view factor information for something as specific as this. In other words, all that we really have to do to make your method realizable with Ladybug is expose these capabilities in a new component that gives you more access and control over the view factor calculation.  As such, I have added this to the github and I can pull together a component in a few days:

However, before I flesh out this component, I have a question about the "comfort equations from EN-7730" into which you will throw Δt_pr.  I know that ASHRAE has published the following figure for calculating the percentage of people dissatisfied (PPD) from different types of radiant asymmetry:

I am assume that these are the same "comfort equations from EN-7730" that you are referring to and please correct me if I am wrong.  If these are the equations that you are referring to, here is my question:

In the method that you describe, the radiant asymmetry is only defined as the difference in temperature from one side of a plane to another and so there does not seem to be any distinction between what would count as a "cool wall" radiant asymmetry as opposed to a "warm wall" asymmetry.  The asymmetry could be either cool or warm depending on which side of the plane you are saying is the cause of radiant asymmetry.  Clearly there is a big difference between these two in the figure and I am wondering how the method you have posted here deals with this situation.  Also, if you could confirm that source of the image that you have posted, this will also help me implement this capability in Ladybug faster and more relaibly.

Thanks again for posting here.  All of this has been really insightful and I'm looking forward to the new capabilities that we can add because of it!


Hey Chris,

Thank you for taking the time to do this. 

As I can see from the comfort equations in EN 7730, it looks very much like the graph you posted above.

As for your last question; I am no expert on this, but to my understanding, the Δt_pr used is the same -  the equations used to calculate are not. Take a look at this (from EN 7730 as well):

If I can make some wishes too; it would be cool, if you included the last local comfort metrics from EN7730 in LB/HB as well. Besides the local asymmetry there are: an equation for warm/cold floors, stratification and draught. I know, that you will need preform a CFD simulation to properly calculate stratification and draught, but the comfort equations are really simple and seeing that you have(might have) a CFD tool under way it could be useful. Anyways I think it would possible to import external generated CFD data to grasshopper.  

The pictures in my previous post are from a paper called: "A simplified calculation method for checking the indoor thermal climate" by B.W. Olesen, it can be found in ASHRAE 1983, vol. 25, issue 5. I don't know if there have been any updates to it since '83. 

Looking forward for the new components, and if there is anything I can help with please let me know.


Hi Christian,

Thank you for posting the equations and the figures. This confirms that the ASHRAE and EN radiant asymmetry standards are using the same equations. Adding a component that calculates the local discomfort will be easy to implement and worthwhile to have once I get a detailed view factor component up and running. I will make one once I get the view factor component implemented.

I feel that I could have been clearer about my question as I realize that it might not have been obvious before. To try to phase it simply, I just want to know how Olesen defines a cold wall situation versus a warm wall situation.

With the ceiling case, it is clear how I am supposed to use it. For example, If I am designing a radiant heated ceiling, I should use the "warm ceiling" function to estimate discomfort from radiant asymmetry and, if I am designing a radiant heated floor, I could use the "cool ceiling" function to estimate potential discomfort from radiant asymetry.

However, if I am designing a vertical heated radiant panel in a room that also has cooler windows, what function am I supposed to use? Let's even say for argument's sake that neither the window or the radiant panel are cool/warm enough with respect to the room average to dominate the situation but there is clearly a potential for radiant asymetry to cause discomfort between the two surfaces. Should I always use the cold wall situation to air on the side of caution? Or should use an interpolated function between the cold wall and warm wall? Or is there an implicit direction of the human body in the functions (for example, I use the "warm wall" if the person is facing the radiant panel and the "cool wall" if the person is facing the window.)?

Any insight that anyone could provide to this would be much appreciated. I just checked both ASHRAE 55/and ASHRAE Fundamentals and neither of them provide any guidance on this.

Thanks again,

I understand your issue with the equations, unfortunately I don't have an answer. If you want, I can try and ask Olesen? He will be teaching a class I'm taking on Tuesday.


I have finished putting together two new Ladybug components that will streamline the use of the method that you have posted here.  The components are:

Ladybug_Surface View Analysis - A component that calculates view factors from a point or plane to a set of surfaces.  The component uses a ray-tracing method that increases with accuracy as you increase the viewResolution (I recommend using a value of 2 to ensure that your view factor error is below 1%).  Because of the ray-tracing method, the component should be able to handle any surface geometry that you put into it. Importantly, if you input a point, the view factors will be calculated without a bias in direction but inputting a plane will calculate the view seen by a surface in the plane, which includes the directional bias induced by the direction the surface faces. This image gives you a sense of how the component works showing you the surface temperatures from EnergyPlus mapped onto the sphere of view:

Ladybug_Radiant Asymmetry Discomfort - A component that calculates the percentage of people dissatisfied (PPD) from radiant asymmetry.  It uses the formulas that Christian has posted on this discussion, which are also the formulas published in ASHRAE 55:

And in the CBE comfort tool:

With this component, you can convert the temperature difference across a plane:

... to a percent of people dissatisfied (PPD) from radiant asymmetry:

... and then to a temporal plot of radiant discomfort risk:

If you sync with the github, you can find these components under the WIP section.

Here you can find an example file that shows you how to estimate radiant asymmetry discomfort using these components and the results of an EnergyPlus simulation:

Let me know if you have any feedback, Christian.  If you get the chance to ask Olesen the question about the wall asymmetry, please let us know.

Thanks again for all of the info that you have posted here.


I talked to Olesen.

He said, that you determine if the wall/ceiling is cold/hot by comparing it's temperature with the air of the room. If it has a higher temperature than the air's, you should use the equation for hot wall/ceiling and vice versa. He also said that there is no equation for radiant asymmetry for the floor. The local discomfort caused by it, is purely based on contact, like if you touch the floor. That is why there are an equation for if you sit/lie on the floor. I hope that it answers your questions Chris.

I haven't had the time to examine the components yet. When I have, I will return with some feedback. 

These are so cool Chris. Can't wait to play around and learn smth new concerning thermal comfort.


I have now had some time to look at the new components. I think they work well for your example, but they can't really be applied to my case. I was interested in making a spacial visualization of the local discomfort in a room, just like you can do the your PMV comfort tool. I don't think it makes much sense to split up the geometry for each testpoint(or row of points). This is my example room. There is 104 points. Splitting the zone in 10 slices (number of rows) seems silly. And what if I wanted to investigate a different surface or change the point grid? Then I would have to remake the geometry and make new slices.  

My initial thought was to do the geometry splitting in the view factor (VF) calculation, that way you just have to run the view factor component again if you want to investigate another surface. In my head the component took the inputs: Testpoints, HBzone and Testsurface. The component would then for each point return two lists. One containing the VFs to the surfaces between the testpoint and testsurface (including the VF to the testsurface of course). The other one contain the VF to the remaining surfaces of the room.

I hope it makes sense.



Thanks for posting the information from your talk with Olesen.  They say that good answers to questions leave you desiring more knowledge and this seems to be one of them.  In particular, knowing how to deal with the case of a person between a radiant vertical heating panel and a cool window really merits some more research.  Still, it is great to know Olesen's thoughts and how his cases were defined.  It is also great to know that conduction discomfort is supposed to govern cases of radiant floors and not any radiant asymmetry discomfort.  Thanks again for sharing.

Producing a spatial map of radiant asymmetry PPD can also be accomplished with the two new components.  Particularly, if you are ok with the assumption that all opaque surfaces are at the same temperature and all window surfaces are also at the same temperature, you can produce one of these maps fairly quickly.  Here is an example file showing you how to set up such a map off of EnergyPlus results:

As you can see in the file, I take the average temperature of all interior surfaces and the average window temperature to produce the maps and I would say that this is usually a decent assumption for any shoebox model with windows on only one side and a reasonable amount of insulation on the exterior opaque surfaces.  If you need to account for different surface temperatures other than the opaque vs glazed, you should probably break up the zone into a few surfaces like the first file that shared.

Hope this helps,


Hi Chris,

I download the file which was posted by you,

But I can not understand a part of this logic, as following:

Could you please give some instruction to me, or tell me which does the standard include this logic.








  • Add Photos
  • View All


  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service