Pollination for HB/LB

Hello everyone,

I am about to run a parametric study with around 1800 states. For each of those states several building performance parameters will be calculated (mainly daylight metrics within the buildings and outdoor comofort and shade in the outdoors).

I mean to use pollination in order to quickly sort through the results afterward. However, I have never used it before and I was wondering if there is an example definition laying around. It would be very helpful into getting me started.

Another thing I was wondering about is structuring the results. My main parameters in the study are angles of orientation for either the total massing or the individual rotation angles for the buildings. Would it be possible to structure the results in a way that you can browse through all results of individual rotation angles for one of the available massing orientation angles (see below)? Is that a matter of proper structuring my parameters before I link them to Pollination? Or is that already handled by simply linking my parameters in?


                                           Building 1 angle: 5    Building 2 angle: 0

                                           Building 1 angle: 10  Building 2 angle: 0

Orientation angle: 45 Building 1 angle: 15 Building 2 angle: 0

                                           Building 1 angle: 20  Building 2 angle: 0


Thanks a lot in advance!

Kind regards,


Please disregard the above. I finished one round of the expirement and the data are structured and displayed nicely. In any case, I would think it would be a simple matter of running the experiments segregated.

Hi Theodoros,

I myself am interested in using pollination to have a look at my results but cannot for the life of me understand how the component works to set out all the data. I am using the parametric slider “Ladybug_fly!” to generate some idf files, and the batch writer to create batches to run in parallel. However, bringing the data back in and then using pollination to summarise it all is slipping past me for whatever reason.

Are you able to provide your file for me to see how you have done it, or go over my own and show me how it should be done?

Kind Regards


Workflow_Forum.gh (643 KB)

Hi Elly,

Yes it was hard for me to get it running as well. The trick was to bring all the values (even the name of the variables in data recorders) and to use text split to update the values used at each iteration.

I’m currently running a simulation so I cannot clean up my file but you should be able to discern how it works. Special attention to the pollination part (bottom right) and also the text split component (which is crucial in making slider values into iterative parameters) right by the slider section on the left.

For anyone interested, what it does is calculate the vertical sky cover of an urban canyon by rotating it around the y axis (what I call massing orientation) and also rotating each of the buildings individually (left or right building rotation). The massing rotation interval is 15 degrees and the building interval is 5 degrees, with a maximum of 40. This gives 1944 possible configurations which are further reduced by assigning a minimum distance between the two buildings of 6m. The check of that distance is a boolean (true or false) and acts as the toggle that starts the simulation. Finally, the simulation is of vertical sky cover which is the fastest one for testing and fits my needs.

P.S.: I realize calculating VSC of this configuration for all 360 degrees doesn’t make much sense but it’s the ability of the definition to test this atm that matters and not the results.

Hope this helps!

Kind regards,


TG_UrbanCanyon.gh (581 KB)

Hi Theodoros,

Thank you, I’ll have a look through and see if I have any further questions.

Your project sounds very interesting though, reminds me of a Master’s thesis finished last year which worked with orientations, daylight penetration and the minimum amount of distance required between buildings for effect daylight penetration (Tavis Creswell-Wells’ “Urban Form and Passive Design for High Performance Buildings in the Christchurch Rebuild” if you’re curious)

Kind Regards


Hi Elly,

Thanks for the reference, I’ll check it out! Actually, that is my next step, doing Daylight assessment of interior in the buildings and outdoor comfort maps using Chris’s excellent work. I’m thinking to use DF (and also use it for light penetrration), DA/UDI, and maybe solar envelope analysis. However, I am intending to reduce the alternatives by a lot given the time required for daylight simulations. Also, I will calculate VSC on window surfaces as a criterion. Final step would be CFD of site configuarations (having multiple batches of buildings).

Kind regards,


Yes daylight simulations are a real consumer of time, it takes a shocking hour for a full annual simulation run for my small like shoebox model, though mind you it is on the highest quality setting for the recipe.

I would be interested to see how you do the CFD analysis.



Well I am going to be very cheap on the quality side :slight_smile: Probably medium to high grids as well. Quality will increase when alternatives are narrowed down.

I will use OpenFoam to do the CFD studies, this is a quite typical wind tunnel model, quite straightforward to formulate. I can share my case folder if you’re interested.

Hopefully, in the near future we will have Butterfly (https://github.com/mostaphaRoudsari/Butterfly) up and running in order to integrate CFD in the parametric design process, which would really transform CFD assessments!


Indeed, butterfly has been on our radar for a while now. We have several students here interested in exploring more options for making CFD quicker and easier to use.

Question about pollination, is there a format I am missing to name the iterations? I am finding your data recorder to work well in recording the objectives (though its annoying not being able to run things in parallel due to it), but I notice that Mostapha’s example in pollination has the iteration names on the side. Do you use a “name:” convention or something? (simulations are running at the moment so I can’t check)…

Nevermind I’m drawing a mere, think by looking at it it just seems to be needed as the first row.

Sorry it is still running here as well and can’t open the file.

I believe I’m concatenating to create their names, typical MassingOrientation_XX_LeftBuildingAngle_XX_RightBuildingAngle_XX if i’m not mistaken.

The component is close to the simulation component because it also assings the same name on the layer on which the result are baked.

Btw, if you are running my definition I should warn you it will take around 4 hours. Haven’t found a way to cancel fly component but the task manager will do (and actually you can still open the .csv in pollination after).

I am guessing that by parallel you mean two different simulations. I haven’t tried that yet. Wouldn’t just adding another set of recorders connected to the second simulation output work? Not sure though can’t check yet.


In parallel, you run the fly slider to only make a series of idfs, rather than running them (similar to the rad files). You would then use the Re-run idf component to take the idf files and generate batch files, which then you can use a python script component to run the batch files in parallel.

I’ve included the bit in my workflow if you are curious. Essentially it means that E+ is running several simulations rather than one, and because grasshopper works in real time, it wouldn’t be possible to record the data as the simulations are running in parallel to each other.

I am wondering if you have a solution to this though, I just connected two sliders to the fly component to see how the pollinator recorders might work, and one of the sliders doesn’t cycle through the same amount of times as the other, causing a mismatch of the recorded data. Not sure if I am doing them wrong, or if there is a simple fix?

PS. No i havn’t attempted to run yours, I think I can peice everything together within it

  • Elly

Workflow_Forum.gh (643 KB)

Hmm can’t check yet, my simulation is almost over though. I downloaded and will open soon. Your process sounds quite impressive, thanks for sharing!

Concerning the fly component, it should run all the possible iterations, barring any conditions you might have set (like my condition of minimum distance). Is the number the fly component reporting once you click it what you would normally expect? Perhaps there’s something else going on.


One other thing that could work is to use pollination as a post process tool.

What if you could create another automation process of not running energy simulations but instead opening them after they are finished, ony-by-one, from their respective folders, loading their results with the zone/surface components and then recording those results with pollination.

Just thinking out loud, haven’t tried to design it. Seems like a waste to use it after the fact and I’m sure someone can think of a more elegant solution but it could still save you a lot of post processing time.


Ok I just figured out an error in my definition that might be related to what you explained. Once I correctly updated my boolean check for minimal distance, the result of the simulation (average VSC) is null which breaks the pollination. The .csv file stopped at the last entry before the first false value :frowning: That was a time consuming debugging of my definition …

I’m going to introduce a new check to set the value to 0 when so that pollination won’t crush. I wonder if there is a way to avoid this because the point is that I don’t want the null results in my csv file. I guess it will be easy to delete with filtering in excel but still. I must be doing something wrong.

Edit: It was a very easy solution! Didn’t even lose any time since the recorders have the data connected! I just used a replaceNull component on the output of the recorder and substituted it with 0.

Kind regards,


Here’s my pollination file for anyone interested.

Again, not rocket science (yet!) but the results can be interesting.

The parallel configuration seems to have the worst performance while higher angles work better.

Kind regards,


SkyView_6mMinimum.csv (25.8 KB)

I’m ready to give up keeping up with all the discussions. :slight_smile: Can you brief me on this discussion in case you still need help.

Hi Mostapha,

Sorry about that yes. I’ve been on a rampage these last few days, it will slow down :slight_smile:

I think it’s ok. I mean I got the pollination workflow sorted out and I feel confident using it for the most part. It’s an amazing tool actually that I can’t wait to apply to real projects.

The only issue I found was that if I set a boolean check in my definition that stops the simulation (so that I can save some time in cases I don’t need) from running then I get a null value. That is ok though, since I can simply use the native GH component to replace null after the simulations are done and feed the recorders to the pollination component.

What I couldn’t overcome was when I tried to calculate VSC (this probably applies generally to several simulations) on 3 different meshes (I broke my one surface to 3 in order to separate the ‘pedestrian isle’ sort of speak. What happens there is that I need to bang (excuse my english) my result into the three branches and feed that into the recorders to get separate results. The issue was that the bang gives an error due to empty values from the simulation component (which is a very different case than null).

I looked around and found a component David created that gives a 0 value out of an empty component but that doesn’t really help as it gives 1 when it has values (therefore exchanging all real values with 1s).

Anyways not a big deal I guess, just letting it out there. I’m sure the actual solution is to sit my ass down and think of an algorithm that does all this culling of not-needed experiments prior to things being fed to a simulation component.

Hope I made sense lol. I can provide the definition I guess once I’m back at the office in a few days.

Have a nice weekend!

Kind regards,