Thoughts on bouancy driven natural ventilation

I wanted to share some thoughts and resources about modelling natural ventilation of buildings. I have been thinking a lot about natural ventilation lately because it seems like one of the most promising ways to leverage simulation results from ladybug and inform design of building envelops with benefits that can be modeled. Given 20 percent of the cost of a project typically goes to the facades, and maybe a half of that goes to the openings, there is a good enough reason to question how to materialize that 10 percent, which can result in 10-30 percent difference in total energy comsumption.

I think ideally radiation analysis, natural ventilation and daylight analysis on floors should all inform opening sizes and placements, as well as the building sections at large. However natural ventilation seems to be the most complicated one because it couples airflow and thermo dynamics. I have a definition setup so that I can batch simulations for radiation analysis and daylight analysis, but natural ventilation is the missing link. So for what I am doing now I will select a handful of design that seem to work the best based on the two available analysis and convert all the geometry into CAD files so that I can run them in an evaluation copy of autodesk simulation CFD. So for now I can do this in 2 stages.

But for the future, given the possibility of actually have that as a part of grasshopper feature, which would be lovely, I want to understand the science behind it and share some links.

( In this link the author outlines quite a few general principles and variables to consider for natural ventilated buildings.

For example, how stack effect works.

Qstack = CdA[2gh(Ti-To)/Ti]^1/2, where

Qstack = volume of ventilation rate (m³/s)
Cd = 0.65, a discharge coefficient.
A = free area of inlet opening (m²), which equals area of outlet opening.
g =9.8 (m/s²). the acceleration due to gravity
h = vertical distance between inlet and outlet midpoints (m)
Ti = average temperature of indoor air (K), note that 27°C = 300 K.
To = average temperature of outdoor air (K)

The thing about natural ventilation is that not only the sizes and positioning of openings of the facade facing predominant wind matter, but also the openings on the other side matter. The vertical distance between the inlets and outlets also need to be taken into account. The author suggests that naturally ventilated buildings should be no wider than 45 feet.

and in this pdf presentation it discusses CFD for natural ventilation and illustrates why it is not easy…

and in this pdf briefly outlines the approach taken by designbuilder…

Lastly a wide spectrum of environmental analysis works by e3lab

If I make progress on a way to tie the three analysis together (radiation, daylight and natural ventilation), I wont forget to post it on this thread.



Hi Youngjae,

I saw this post a while ago and I am sorry for responding so late. Natural ventilation is definitely something that I am going to need for my thesis work and my part time job so I have begun implementing some basic natural ventilation stuff over the last couple of weeks. Coincidentally, right as you made this post that included the orifice equation with Qstack, I was implementing a component that allows you to use this equation in E+. The component (and the corresponding equation) is mostly meant for cases where you have zones with windows that are NOT connected by an air wall (or a larger airflow network).

To use the more general natural ventilation lingo, this is for cases where you want to look at single-sided or cross ventilation within individual zones.

Over the next week, I will be implementing a component to add a chimney to a zone, which I think will serve many of your purposes that you seem to be suggesting in this post.

Eventually, we will try to implement the complete Airflow Network (AFN), which will allow you to model multi-zone airflow but this is really a huge task and is likely months away.

Let me know if you get the chance to try the new Nat Vent component on the github and I will let you know once I implement the chimney.


Hi Chris, Thank you for responding.

After this post, I did some searching and I was able to obtain an education license for simulation cfd 2015 and another cfd software called hyperworks.

I first looked at autodesk simulation cfd 2015 and was optimistic because it had an export plugin from revit, which i use anyway for material takeoffs and etc, but found that it did not take solar radiation into account. This was a downer because I have heard that solar radiation could effect indoor airflow - convection - as much as 50 percent at a time.

Then I searched again and found that Hyperworks, a software by altair technology can be coupled with a radiation software. So I went through the trouble of obtaining an educational license of Hyperworks. However, though some email exchange I have found that the coupling is a one-way. The radiation analysis software was used, I think, for understanding the solar loading for a SOM project called church of light.

The support guy said : “Unfortunately our coupling with Hyperworks is really a one way coupling. We can accept H coefficients from their software in RadTherm, but they will not read in our wall temps. That said, it still can be a useful coupling in the sense that you can run the analysis in Hyperworks, send H coefficients to RadTherm, and run the analysis to better understand radiation and conduction. Most importantly, that analysis can be done for longer transient analysis, but will require much less compute time and resources.”

Not only did I not understand what he means by the H coefficients, my wanting to get a CFD understanding coupled with solar radiation was again, unsatisfied. In the mean while I had to finish a presentation so I haven’t had the time to try to get some result on the natural ventilation. I would probably need to look into how their solutions work before I can understand if their software would “do the job”

Thank you for letting me know about your work on this. I downloaded the Honeybee_Set EP Natural Ventilation component and made sure that it is allowed, but it does not show up in grasshopper.

You pointed out that “The component (and the corresponding equation) is mostly meant for cases where you have zones with windows that are NOT connected by an air wall (or a larger airflow network).” I wondered if you are suggesting it would be a code violation for zones to be connected by an air wall for fire safety reasons. It would be a violation I guess, like not putting an fiber insulation or some kind of smoke stop between Spandrel panels and the edge of a floor plate would be a code violation for a typical office building.

There is a project by kevin daly architects where you can see a section drawing with what seems like a cfd analysis (could be an illustration)

it was my initial visualization/simulation goals were for a facade design I am working on

  1. an average air velocity across a zone at noon, for example, if a passive design strategy like this was used. for this I am guessing cfd is not entirely necessary. probably means that it could be used earlier in a design process, too. This would be more about user comfort.

  2. at a later phase, like in detailing facade components, if airflow is indeed as expected for a zone that is connected to an air wall / chimney like feature (and to see if there is a proper mixing of air)

  3. and a projection of energy savings, of course.

After seeing a video of simulation cfd I was optimistic, but like I said sim cfd does not take account of solar loading. I think I would probably go ahead start with one zone with sim cfd first, try three zones stacked on top of each other, then try hyperworks and try to factor in solar radiation.

For analyzing multiple zones on different levels, being able to add a chimney would be especially useful, I think. Having said that, I don’t have a lot of experience of using honeybee except for the daylight component so it would take some time for me to understand the components.

I hope some of the information here is useful for you. after all, both sim cfd and hyperworks are commercial softwares and somewhat different than the e plus project you are working on, I guess but still trying to address a similar problem.

so… in cased you missed it I was asking I downloaded the Honeybee_Set EP Natural Ventilation component and made sure that it is allowed and placed in the user object foler, but it does not show up in grasshopper. what could be the reason?

just realized that with both sim cfd and hyperworks, this thing called “wall temperature” keeps popping up. must be important for cfd :slight_smile:

so if I am in a detailing phase, it would be important for me to be able to do a radiation analysis and get a wall temperature separately for faces of the facade components facing the sun. are there any components in either honeybee or ladybug that gives wall temperature, at any chance?

“are there any components in either honeybee or ladybug that gives wall temperature, at any chance?”

You can use energyplus to get surface temperature for surfaces.

Hi Youngjae,

To respond quickly to your struggles with CFD, I would encourage you first (if you are going to use CFD) to use a package that is validated like Phoenics or Fluent (I believe none of the Autodesk tools are validated yet). Unfortunately, all of the validated packages tend to cost a great deal of money with the exception of the CFD engine OpenFOAM, which is open source but currently runs exclusively on Linux.

Nearly all CFD software will be “one way” as you describe it since CFD simulations often take a long time to converge (sometimes days or even weeks depending on the size of the model). As such, they are really only used for steady-state calculations in most standard practice.

Ultimately, for any non-steady-state analysis (or for an analysis for a whole year), you want to be using some type of quick formula like the orifice equation that you posted at the start of this discussion. You can use a CFD simulation to ensure that your coefficients for this formula are correct and “calibrated” with a CFD study that you know is trustworthy.

As inputs to your initial CFD simulation, you will need to put in either temperature values for surfaces or heat flux values for surfaces. You can get both of these out of Honeybee simulations that you run with an initial guess of airflow. Just request surfaceEnergyAnalysis and surfaceTempAnalysis on the Write EP Result Parameters component and, after the simulation, use the Read EP Surface Result to get get the surface results into GH. Use the Color Surfaces by EP Result component to visualize surface temperature differences.

Once you get CFD air flow values for a given temperature difference between your zone and outside air, you can use the orifice equation and solve for your discharge coefficient (Cd). You can then plug this discharge coefficient into your HB energy model and get a sense of airflow through the chimney for the whole year (see attached file for an example). The attached file includes the Nat Vent component (now re-named the Air Flow component). Try restarting GH if the component did not appear the first time. Here are some screenshots of the chimney example file:

I hope that this helps and good luck!


ChimneyExample (478 KB)

1 Like

Hi again Chris and Mostapha, I make quite a few posts in many different forums and subforums but I have to say you guys - Chris and Mostapha - are among the most helpful and prompt. amazing, thank you. I wish there is a website where people vote for the most helpful and informative forum on the web.

I am not sure how I can get a hold of fluent or phonics but thank you for explaining a good practice for using CFD i.e. to confirm the coefficients for a formula.

Its beginning to take a shape on my head how to approach the topic. I am under the impression what you are referring to as a steady state is distinct from a transient analysis, which looks at the beginning and end of a system behavior. So I understand as a steady state analysis as an analysis about a kind of a “running” mode, at least in this context. so it makes sense that there would need to be a guess about an initial air flow.

I just tried your definition and I can see the Nat Vat component and it is running without problem. However I got an error message “1. no eio file was found adjacaent to the .csv _resultFileAddress.results cannot be read back into grasshopper without this file.” from the honeybee read EP result component.

so I double clicked the unnamed.idf file, and EP-launch popped up.

and I clicked simulate button, and now in the folder there is an eio file.

now I run the Honeybee_run_simulation component again and this time the read EP component works without error, and as a result I do get an operative temperature for zone graph, though mine looks different, and based in san fransisco Intl AP.

Anyways, I do get a result, I just did not know that running EP-launch from the unnamed.idf file was a part of the workflow so if anyone is trying this chimneyExample File and getting an error about a missing eio file, just double click on the idf file created by the Run_Energy_Simulation component.

About what you said Chris, " Once you get CFD air flow values for a given temperature difference between your zone and outside air, you can use the orifice equation and solve for your discharge coefficient (Cd). You can then plug this discharge coefficient into your HB energy model and get a sense of airflow through the chimney for the whole year"

I have to try this workflow since I am preparing a CFD analysis. My only question right now is, Chris, which one of “operative temperature” and " meanRadTemperature" output from Read EP result component equivalent to temperature values for surfaces or heat flux values for surfaces ?

Thank you again! hope to share a result of coupling a CFD and Honeybee-ladybug soon, hopefully by the end of this month. might be next month because I have a different presentation at the end of this month.

Hi Youngjae,

Sorry for getting back so late. The difference between steady state and transient calculations is the basis of a lot of important building science debates these days. Notably, its responsible for a lot of the present practice’s emphasis on the benefits of insulation over thermal mass.

Along this line of thinking, I would strongly recommend that you use surface flux values as inputs to your CFD simulation if you can (instead of surface temperature). While EnergyPlus tends to view large surfaces as being at the same temperature, this is usually far from reality and it can actually lead to misleading understandings of airflow patterns since flux includes a time element of Joules/second (or Watts) instead of temperature, which is time independent.

I attached a GH file showing how to bring in surface flux data and color Zone surfaces based on these results. You should pick an hour of the simulation that you are interested in CFD modeling and use these individual surface flux values and assign them to the surfaces in your CFD model. Let me know if that is unclear.

Running EP-launch is not supposed to be a part of the workflow. The reason why the simulation did not automatically run after you set “_runEnergyPlus” to True on the run simulation component is that you currently have EnergyPlus 8.2 installed and Honeybee only works with EnergyPlus 8.1 right now. Normally, we would keep everything up-to-date with the DoE but there was a particularly massive change that happened in the shift form 8.1 to 8.2, which is that all of the original FORTRAN code of E+ was translated over to C. In the long run, this will be great since many more people know C than FORTRAN. However, for the release of 8.2, there are a lot of bugs and certain processes that are slower than usual and so our plan is to wait for the next release to upgrade. So, long story short, just install EnergyPlus 8.1.

Stay awesome,

-Chris (507 KB)

Hi @chris, can you share this example file again?
I’m trying to download things from the discourse discussions but it’s not working. The above file link it’s giving me a message: “Oops! That page doesn’t exist or is private”.
I have already posted this issue on the forum, it’s happening in different discussions aswell.

Kind regards,

@mtonellis ,

That is because the file is over 4 years old. I managed to find it on my hard drive but Honeybee was a whole different animal back then. The file will definitely need some updating work: (506.9 KB)


Yes, the link to the original version of this thread is:



Hi Youngjae, I know it has been a long time since you started this discussion but I was wondering if you ever managed to couple Honeybee and CFD at the end. Right now I intend to do the same between Butterfly and HB for both indoor and outdoor conditions. If it’s possible for you to share your workflow, that would be a huge help. Btw thanks for all the files that you shared about CFD and natural ventilation.

Hi Chris. In your answer you pointed out “you will need to put in either temperature values for surfaces or heat flux values for surfaces. You can get both of these out of Honeybee simulations that you run with an initial guess of airflow”. My question is regarding this initial guess of airflow. Is there a kind of reference for it that I can look into? I am considering combined wind and buoyancy-induced ventilation for a zone with windward and leeward openings. Also is this initial airflow the same as the interZoneAirFlowRate input in the HB component or I’m mistaken?