Three phase vs five phase component resulting batch file calculations


I am currently working on a project using the three phase simulation component. As we were looking through the resulting batch file we noticed this:

echo :: :: rmtxop [total results.ill] - [direct results.ill] + [sun results.ill] ^> [final results.ill]

where I3ph = VTDS. This looks very similar to the five phase component which resulted in this:

echo :: :: rmtxop [3phase results.ill] - [direct results.ill] + [sun results.ill] ^> [final results.ill]

where I5ph = VTDS - VdTDdSd + CdsSsun which makes sense.

We were wondering what is going on with the three phase commands as the three phase component in HB+ seems to be writing out extra commands to do unnecessary calculations?

Is there any chance someone could please explain the calculation process that the batch file is going through? Or is there any documentation we could be referred to? I’ve been reading as much as I can on whole three and five phase processes so I’ve got some understanding in that area, but when it comes to the HB+ calculation I am just a bit confused.

It’s not quite a troubleshooting question so with the new platform please let me know if this is an appropriate question for the forum.

Many thanks,

Your understanding is correct. It should just be “total results” in the case of 3ph. Can you post the batch files from both the three phase and five phase runs. They get written out as a part of the HB[+] run and should be in the projects directory.

cc: @mostapha

commands_3P.bat (15.5 KB)
commands_5P.bat (16.1 KB)

Here at the Batch files. Let me know if there is anything else you need to have a look at.

Thanks Sarith

@mostapha Both the scripts are running 5 Phase simulations. Actually the 3PM is running a 5 Phase and 3 Phase simulation. In the three phase script, this part is creating a 5 Phase run while this part seems to be creating independent 3 Phase simulations. I think this also has some of that “blackened-window group” business going on.

Appears to be an issue upstream with the plugin.

Hi @SandiSirikhanchai and @sarith, Sorry for the very late reply. I somehow managed not to reply to this discussion which is the one that I should have replied first! :expressionless:

The way Honeybee[+] handles 3-phase and 5-phase in slightly different from the standard 3/5-phase. It is neccassary to avoid extra calculations and also make it flexible/usable for real world problems. I should give credits to Rob Guglielmetti for this workflow. This is a modified version of what he came up with for OpenStudio Radiance integration.

What is the challenge?

Consider this room with one window facing south with two blind states, one window facing north with no dynamic blinds and two skylights with no dynamic blinds.

In a classic 3/5-Phase modeling approach you need to create a window group for south window, another one for north and finally another one for skylights. If there is surrounding context that affects the skylights then you need to create a separate window group for each skylight. There are 2 limitations in this approach:

  1. Even for a simple case like this you will end up with 3-4 window groups.
  2. If you use 3-phase you will end up with less accurate results for also skylight and north windows. You have to use BSDFs even though they are just static glass surfaces with some standard materials.

How does Honeybee[+] handles such cases?

To address this issue Honeybee[+] breaks down the window groups into two categories:

  1. Static windows: All the windows with no state as single window group / luminous aperture.
  2. Window groups: Each window groups stay as is.

If you check a Honeybee[+] folder you’ll see that there are two separate folders for glazing and wgroups which corresponds to these two categories.

Now it runs two series of analysis:

  1. It replaces all the window groups with black surfaces and runs a 2-phase simulation (aka. daylight coefficient recipe) for the static windows. This is the contribution from outdoor through all the static glasses. You can find the results for this step in scene..default.ill.

  2. The normal 3-Phase or 5-Phase for all the dynamic window groups.

The final result is the addition of static glasses and all the window-groups (in this case there is only one of them).

I hope this clarifies why there are two separate parts in 3-phase, 5-phase studies with Honeybee[+]. This method saves time and also adds flexibility. I should say that there is only one draw-back in using this method. If you don’t have any static windows in the model AND all you points are located indoor AND there is no opening other than windows then the first part of the analysis will return all 0s since it’s the scene with all the window-groups set to black opaque surfaces. I’m thinking to add an option to clarify an AnalysisGrid is indoor only so honeybee can decide if the first step is neccassary.


Thanks for this. Adapting existing 3 Phase models to re-run them using the HB+ batch scripts has been a nightmare of trying to figure out what to compare to the original results as part of our Quality Control…

Sorry! I should have replied to this topic sooner. I hope this explanation clarifies the workflow. This note might also be helpful for checking the input/output files:

I’m looking forward to know more about the outcome of the Quality Control.

Finally consider updating to the new release: Honeybee[+] 0.0.04 for Grasshopper, Ladybug 0.2.0 and Honeybee 0.1.7 for Dynamo Release

So if one is performing analysis of the results outside Grasshopper, you need to add the files “total…[window group name]…[window group state].ill” and “total…scene…default.ill” for the full result (of the given window group in specific state and static windows)?

Thank you


Another option is to use Honeybee python library to load the results which has this functionality built in.

Hi @mostapha,
would you know if there are examples of using the HB python library out there? It would indeed be good to calculate all the annual metrics and also cumulative values outside of grasshopper and just import the list of values.

Hi @OlivierDambron,

Here is how you can do it:

  1. Create an AnalysisGrid from points file.
  2. Load results from ill files. You can see an example in results method for daylight coefficient recipe.
  3. Use annual_metric method to calculate annual metrics.