Question-and-Answer Resource for the Building Energy Modeling Community
Get s tarted with the Help page

# What is the preferred method for combining BSDF files?

If I have two xml files describing parts of a CFS (such as blinds + window) what is the best way to combine their effect for: A. phase/matrix multiplication method B. classic radiance simulation

For A. I could see:

1. use genbsdf with the materials assigned to two surfaces.
2. using an F matrix type calculation as detailed by Greg at this years radiance workshop (link)
3. adding both components to the rmtxop command when assembling the phases.

And for B. I could:

1. use genbsdf with the materials assigned to two surfaces.
2. model two surfaces and apply the BSDFs separately in the scene

I would prefer a method that results in a single .xml I can use across methods (and has symmetry with other materials I am analyzing that only have one layer).

Thanks,

Stephen

edit retag close merge delete

Sort by » oldest newest most voted

I'm not sure there's currently a preferred method for combining BSDFs, unless you have WINDOW 6. The advantage there is that this tool is: (a) fast, and (b) considers interreflections between layers. In comparison, combining matrices using either the F-matrix method I described at the workshop or (equivalently) rmtxop to multiply them together considers only the transmitted components. This may be close enough to correct for most systems, especially if one of the layers is a glass surface with typical low reflectance (less than 8%). However, in cases where interreflection should not be neglected, either combining the BSDFs with WINDOW 6 or using genBSDF to combine them is a better approach, WINDOW 6 being a bit faster, and genBSDF accepting tensor trees as well as Klems matrix representations.

I do not recommend rendering with two BSDF surfaces back-to-back, as getting an accurate result out of that would be very challenging due to sampling issues. On the other hand, it would be fine to have one BSDF (for blinds or whatever) and an explicit glass surface in Radiance in front of or behind it, but that isn't what you asked.

If you are OK with neglecting the interreflected component and want to combine two Klems matrices into one matrix to simplify your workflow, you can re-wrap the output of rmtxop like so:

rmtxop -fa -c .27 .67 .06 interior_layer.xml -c .27 .67 .06 exterior_layer.xml | getinfo - | wrapBSDF -W -c -a kf -tf - -f "m=Maker;n=Name;t=10" -u centimeter -C "Combined from interior_layer and exterior_layer" > combined.xml


This should be easier, but at least it can be done. The two -c options are needed to specify Y-channel output from rmtxop. (You can do color, but it's more complicated still.) The "getinfo -" command is needed to strip the header out of rmtxop. The options to wrapBSDF in particular are a bit odd. The -W option says make sure the result can be read by WINDOW 6. The -c option is needed to divide the flux transfer coefficients by the projected solid angles to get back to BTDF values. The -a option says the input is a "Klems full" matrix. The "-tf -" setting says to read the forward transmission ("Transmission Front") data from the standard input. The -f parameters are required for a valid WINDOW 6 file (as mentioned in the wrapBSDF man page) and I've set the combined thickness to 10 cm just for this example. The comment line goes at the beginning of the final XML file as a record of where it came from.

I hope this works. Let me know if you try the rmtxop command above with wrapBSDF, as I haven't tried it before.

more

1

If you go the genBSDF route, where you have two parallel surfaces with BSDF materials applied, consider setting -ss 0 to prevent interpolation from smearing light into adjacent patches.

( 2015-08-27 11:06:36 -0600 )edit

thanks greg. I've used the BSDF + regular glass description with much success in the past, but won't be possible in this case as both layers have complex distributions. I'll compare the rmtxop path with window 6 and let you know what I find. In the rmtxop command, do the units only apply to the thickness value, or do they need to match the units used in the original BSDF generation?

( 2015-08-27 11:20:58 -0600 )edit

The units in wrapBSDF correspond to the height/width/thickness parameters and any MGF geometry you supply. The BSDF data itself doesn't depend on units.

( 2015-08-27 12:14:42 -0600 )edit

gregs rmtxop command above works, except for the -C option is throwing an error, could be my version of radiance, although -C is documented in my man page. here is the command that worked for me:

rmtxop -fa -c .27 .67 .06 interior_layer.xml -c .27 .67 .06 exterior_layer.xml | getinfo - | wrapBSDF -W -c -a kf -tf - -f "m=Maker;n=Name;t=10" -u centimeter > combined.xml

( 2015-08-31 20:22:45 -0600 )edit