Use of genBSDF in the matrix 5-Phase method

Hi all,
I’m referring to the paragraph (p.76, copied below) in the @Sarith’s tutorial about the matrix based methods. It mentions that the genBSDF would be used for generating the Klems and Tensor-tree files.

To properly study the benefits of employing the Five-Phase Method, especially in cases where shading systems like venetian blinds are employed one needs to use Tensor-Tree BSDFs with proxy geometries. So, for this simulation genBSDF-generated Klems and Tensor-tree BSDF files will be used.

I just wonder if, for the Three-Phase and Three-Phase-Direct (which I understand use the Klems basis), its okay to use the Window LBNL software to add the glass material for the system, or, if its better (and is it possible?), to create the XML file of the whole system using genBSDF (meaning blinds and the glass material together).

Then for the Sun-Coefficient, the tutorial uses the glass material (void glass Glazing 0 0 3 0.5 0.5 0.5), and the genBSDF Tensor-Tree system of the blinds. But it is also okay to use a Klems basis system generated with genBSDF for the Sun Coefficient simulation?

I thank you for your help,

Hi Steph,

I worked with Three-Phase method some years ago and I used WINDOW LBNL to join the BSDF of a blind with a glass system of WINDOW database. Of course, you can model all the system using only genBSDF, but if you do it using WINDOW, also you will obtain the absorption matrix for energy calculation using EnergyPlus simulations. If you only need to do daylighting simulation you can choose any method.

I am not sure if it is totally correct to use Klems basis system for the Cun-Coefficient simulation, so it is better if another guy can answer that.


1 Like

Fenestration is glass only
If your entire fenestration is just a glass surface and nothing else, you can use Window to generate XMLs for the 3Phase and 3Phase-Direct part of the simulation. For the sun coefficient simulation, you can just use the standard glass material (void glass polygon… ).

Glass and Blinds
If you have a combination of blinds+glazing, then I guess things are a bit tricky if you rely on Window alone. You can use the Klems BSDF for the sun-coefficient part of the simulation but the results won’t nearly be as precise as they would be with Tensor Tree BSDFs.

The other scenario would be that you use the BSDF from Window for Three-Phase and Three-Phase direct and use the Tensor Tree BSDF+Proxy geometry for sun coefficient. In this case, there might be a discrepancy between the modeling (geometry, material) inputs that were assumed in Window (to generate Klems BSDFs) and the modeling inputs you provided to genBSDF for creating the Tensor Tree BSDF.

The studies conducted to ascertain the improvement in results on account of Tensor BSDFs and proxy geometry, when compared to Klems-only approach, can be found here: and The tutorial predates the second study, however, the conclusions drawn in that study conform to whatever is discussed/proposed in the tutorial.


PS: My familiarity with all of the above is somewhat rusty and frozen in time, so I am hoping @Taoning_Wang1 or @Greg_Ward will correct or add comments if needed.

Thank you so much @sarith and @Daniel_Uribe for your replies. Could you please give me a hint of how to create a window-system (glass material and blinds), using genBSDF. Since I remember in the examples given in the genBSDF tutorial show the way of doing it for shading systems (blinds, the cones and the prismatic device), but its really not clear how to add the glass material (void glass Glazing 0 0 3 0.5 0.5 0.5) and create the whole window-glass system using genBSDF.
I’d appreciate your help again,

Although the methodology to do this is not discussed in the tutorial per se, you can find that info buried within the exercise files. The geometry and material input used for the blinds+glazing can be found in room/blinds/blinds.rad and the BSDF command used to generate the Tensor Tree BSDF can be found in the header info for room/blinds/blindsT4c.xml.
The geometry, which is encased by a polygon boundary, (to prevent ray-escape or something to that effect) is shown below. The blue, green, red arrows are in the figure just to indicate the origin (0,0,0).
The command from the header info is :
genBSDF -n 16 -c 10000 -r -ad 20000 -lw 0.00005 -ab 5 +forward +backward +geom meter -t4 5 Blinds.rad
Please follow the suggestions in the genBSDF tutorial with regards to parameters and testing the BSDF so generated. The example in the matrix-tutorial was purely meant to illustrate the simulation workflow.


1 Like

Thank you so much @sarith for your help, and suggestions
Best Regards

Since Sarith created his amazing tutorial, @David_Geisler-Morod1 and I introduced a “peak extraction” method that makes the solar coefficient calculation more reliable with Klems BSDFs. You access it using the new “aBSDF” primitive, which is identical to the “BSDF” primitive except that it does not take a thickness parameter and does not support proxy geometry. Instead, it looks for direct-direct contributions in the distribution and replaces them with unscattered transmission rays for direct (light source) and view calculations.

The bottom line is that blinds+window combinations from the WINDOW program should work reasonably well for all purposes. It is still better to use genBSDF and proxy geometry if you have it, as you get the partial shading from the blind slats (lamellas) that way.

Oh, and if you do use proxy geometry, be sure to avail yourself of the pkgBSDF utility, which makes the process much less painful.

1 Like

I do not know if it is helpful or adds more confusion, but I just wanted to share a recent whitepaper (mainly section 6), from IEA Task 61, that is sort of related. It proposes a system characterization for different performance metrics/simulation methods:


Thank you so much for your reply. Not sure if its correct, but does this ‘peak extraction’ refers to very high levels of illuminance in the results? I found few cases like that, and even if they are very few in the sample that I’m simulating (4-5 in a year let’s say), I wasn’t sure if they came from some mistake I made or from using the BSDF data generated from Window LBNL software.

I’m still trying to verify if my process is correct, so part of my question was connected to this.

Thank you so much for sharing this, its indeed very much connected with my issue, and is gonna be very useful indeed to clarify some questions.

The term “peak extraction” refers to the removal of bright direct-direct transmission in the BSDF. This may or may not be associated with beam radiation in your simulation.

Thank you so much, I’ll have a look at the new tool, and to the documentation that everyone kindly shared here…
Best Regards