Wind boundary profile - questions and wishlist


I am playing around with the wind boundary profile and I wanted to discuss some of my questions and ideas.

First, I was wondering if it is possible to get a value output in the component for the wind direction and wind speed at the different heights. This would allow a link of the component’s results to other simulations (e.g. cfd).

Second, I realize epw files store wind speed and direction on the prevailing wind. Would it be possible to create a wind boundary profile for a specific direction? Perhaps adding 0’s to every hour that the direction is not the prevailing average direction in the epw file output. Does that make sense?

Third, is the component calculating the wind profile using the power law? It would be amazing if it could also provide a log wind profile. Not sure if that is easy to implement.

Additionally, if the log wind profile could be implemented, perhaps an input of context geometry would allow for some cool investigations in urban contexts. It could calculate the average height value of the geometries, providing a quick calculation of zero displacement zones.

Finally, control over input variables would be great, for example selecting custom ground roughness values.

Sorry for the barrage. Hope most of this makes sense. Comments and thoughts are welcome.

Thanks in advance.

Kind regards,



Probably Chris will answer much better than i do this discussion, but i’ll try in short:

Q1. I think this is what the component does or maybe i don’t get the qustion.

Q2. You can use the conditionalStatment input for this one (connect the windDirection to the annualHourlyData input and set the proper condition, i.e. b>225 and b< 315, for the west section).

Q3. It is. See also that you can set the terrain condition. See also the reference in the hint of the component.

Q4. Probably usefull for CFD simulations, but for the purposes of this component is not bringing any additional result.


Hi Abraham,

Thank you very much for the response.

On the first point you are right, it is exactly what the component does. However, I was wondering if we could get a string output of the calculations with dominant orientation and wind speed per height. Unless there is one and I missed it in which case I’m sorry.

On the second point, thanks I did not know that! Will try it asap.

For the final point, and to sum up basically, you are right. I am asking for CFD simulations I am currently running. I think with a simple output the component is already useful as an input to CFD as it will provide an output the wind profile in different directions. So I must admit a personal interest in this.

Thanks again for your help!

Kind regards,


Thanks for posting, Theodore , and thanks, Abraham, for posting a good response,

Q1. I am on Abraham’s side here. The component gives you wind speeds and wind vectors at the heights of each of the arrows. Not sure if you are asking for something else here.

Q2. Abraham got this one too. You will have to connect the hourly wind directions to annualHourlyData to use the conditional statement like this. You can also create a wind profile for a single hour with the HOY input (if that is what you meant by zero for every hour except for one).

Q3. I originally had a log law implemented with the component but decided to abandon it because it does not appear to be a standard in architectural environments (EnergyPlus, CONTAM, COOLVENT and a lot of other building airlfow modelers all use a power law). The only place that I have seen a Log law used is in climatology and meteorology. Perhaps I can bring the log law back as an option if there’s enough of a reason for it. Is there a particular reason why you want to use the log law?

Q4. I think that I just understood what you meant by log law. I remember seeing a recent presentation of urban climatology that was suggesting that, in dense urban environments, you should describe the wind speed change with a kind of 2-profile method (one relationship for the urban canyons where the wind is very low and another for the space above the average height of surrounding buildings, which tends to follow more of a power law). If this is what you meant by Log Law, I could probably implement something like this but I have not found enough literature on the subject to be able to do so (I only saw it in a presentation). Theodore, if you post a paper that could help me understand how this log law is calculated, I can implement it. Calculating the average height of buildings from Rhino geometry is easy so, if we get the first part implemented, this second part about building heights should be easy.

Q5 (I think). I am not so sure what you mean by roughness here. Do you mean a roughness length (the height above the ground above which the wind speed is above zero)?



I just read your recent response. I just revised the component to output the numerical values of the wind directions in degrees. You can get the component by syncing with the github.


Hi Chris,

Thanks for the update! It is a very useful output indeed!

I will come back to you for the other questions, doing some research on CFD right now due to some simulations I am running. Will let you know when I have more. I did mean roughness length indeed. It is one of the inputs required. I will go over the literature soon and provide you with the equations used in some examples.

Kind regards,


Hi Chris,

Sorry for coming back to you so late on this.

I went through some literature on the web and in books to understand it myself. It seems that most people would agree that the log wind profile represents wind flow more accurately in lower heights. The general formula for the log wind profile is:

U(z) = (u*/k)[ln((z-d)/zo)] + psi(z, zo, L) (1)

where U(z) is the mean horizontal wind speed at heigh z, u* is the friction velocity (velocity scale representative of velocities close to a solid boundary), k is the von karman constant (empirically set at 0.41 for rough and smooth surfaces), d is the displacement height, zo is the specific surface roughness, and psi is a stability term.

Most cases assume neutral stability in the atmosphere to eliminate the psi term (i.e. z/L = 0) If not there are much more complex calculations required between temperature and wind speeds, essentially requiring numerical simulations to calculate the profile. With eliminating the psi term, it is easy to calculate the wind speed at any height z, provided we know the wind speed at reference heigh z1, like so:

U(z)/U(z1) = ln((z-d)-zo)/ln((z1-d)-zo1) -> U(z) = … (2)

where z is the height we are interested in, zo is the roughness height in our case area, z1 is the reference height and zo1 is the reference roughness of the measurements. These are the measurements in the EPW file. The added information so far compared to the power law is that we also need the roughness level of the EPW data (usually near airports where roughness is very low, like 0.0002).

Another simpler way is to calculate the friction velocity first by:

u*=kU(z)/ln(z/zo), (3)

assuming d=0 and z is the reference height of the measurements. Then we can use this to calculate the wind profile.

While d=0 is an assumption I can understand, I do not really agree with accounting for a similar roughness level between the area of measurements and the case area. This is highliy problem and context specific. Especially in urban environments in my opinion it is almost always wrong.

The displacement height (d) is usually calculated as 2/3 of the average height in the area of interest (sometimes “average” has a qualitative connotation as “characteristic”). Accounting for displacement height does introduce a problem though, the wind profile below d meters is undetermined, since ln(x) is undefined for x<0. In order to solve there is a two-step approach which forms these two equations:

U(z) = (u*/k) x ln(z/zo1) for z < a*d


U(z) = (u*/k) x ln((z-d)/zo), for z > a*d

Literature mentions that the choice of zo1 and a (i.e. the boundary of the 2 profiles) is quite arbitrary and not very influential in the results. Usually, zo1 is much lower than zo since lower roughness is expected on a higher height, especially in urban zones.

The way I understand it, I think even implementing the simple formula (1) and then using (2) to calculate the profile is enough. For the inclusion of the displacement zone I imagine additional inputs would be required from the users and it would be their responsibility to conduct some sort of sensitivity analysis on the results. Equation (3) would be ok if no data on roughness level of the EPW measurement is available.

Anyways, that’s my 0.02c. Bear with me and the mistakes herein, this isn’t my specialty by a long shot and I’m just delving into all of this.

Some references:

Wikipedia ofc. ( a nice page with a lot of additional references. The two-method was mentioned here). (a nice online tool that calculates log-wind profiles) and gives the most commonly reproduced values (in the literature) for zo.

Wilcox, Turbulence Modeling for CFD (this is more related to CFD but it gives some background on the physics of the log-law)

Argain et al. 2008, Estimation of the Friction Velocity in Stably Stratified Boundary Layer Flows Over Hills (an example of the complicated calculations when not assuming a neutral stability in the atmosphere)

American Society of Civil Engineers (1999), Wind Tunnel Studies of Building and Structures (as always very good reference, provides the standard categories for zo values)


Sorry for taking so long to respond and thank you for posting such a detailed account of how the logarithmic profile is generated. I will try to implement this once I get the chance:

Before doing this, I will just need two other things. These are:

  1. The roughness lengths of the different terrain types (water, country, suburban, urban)

  2. A description of the merits and drawbacks of using the logarithmic profile instead of the power profile so that I can put this in the description of the input.