I apologize for responding to you so late. This past week was very busy as I had the wonderful opportunity of being at the Paris climate conference. I should be more available here on out.
From your questions, I get the sense that you are largely concerned with evaluating cross-ventilation that is driven by wind (as opposed to stack or buoyancy-driven ventilation). The first two factors and the last factor that you cite are accounted for in EnergyPlus through the following methods:
EnergyPlus assumes a power-law increase in wind speed with height above the ground. You can get a visual of this power-law wind speed by using the “Ladybug Wind Profile” component that you see in this example file:
Honeybee will determine the height of your window above the ground by its reference to the Rhino model origin. Essentially, the Rhino origin is considered to be the ground plane and the wind speed in the model increases according to the power law from that point. As you see on the Wind Profile component, a different power law will be used depending upon the terrain that you select (with wind speeds being lower in urban areas and higher in unobstructed areas).
To account for the shape of your building, EnergyPlus checks the normal direction of your window surface in relation to the direction of the wind to determine a custom wind pressure coefficient for a given window and wind direction. This is a relatively simple means of accounting for the geometry of the building and does not include any effects like the funneling of wind through narrow parts of the building geometry or the effect of a very tall building increasing wind speeds on the ground.
The third factor that you cite is not taken into account by EnergyPlus by default. To account for this, you would have to run a CFD simulation (or perhaps a simple Lattice-Boltzmann particle collision simulation) to derive custom wind pressure coefficients for the windows to be fed into EnergyPlus. We currently do not have a Grasshopper workflow for this yet but I know that this is one of the imagined workflows of Butterfly once it gets off the ground:
In the meantime, the best that you can do to address this is to set a custom “windDischargecoefficient” on the Honeybee natural ventilation component if there is an object that is particularly close enough to block the wind. It’s a very rough and judgement-based way of accounting for it, though.
If you want more information on the equations used by EnergyPlus, you can find documentation here:
Hope this helps,