Issues with Outdoor Glare and BSDF Materials in BIPV Simulations

Dear Radiance Community,

I am currently researching BIPV (Building Integrated Photovoltaics) glare issues in urban environments. My workflow is as follows: I create an urban model and a photovoltaic (PV) model using Honeybee (HB) and then run simulations with Grasshopper’s Radiance components.

However, I have encountered a few challenges during my simulations:

  1. Outdoor Glare Simulations: I noticed that Radiance’s annual glare calculations seem more suitable for indoor environments. When applying it to outdoor simulations, it appears I may need to make some custom adjustments.

  2. BSDF Material Generation Issues:

  • First, I attempted to use Grasshopper Python to read a surface modeled in Rhino and generate a Radiance file (.rad) containing two layers of materials. Unfortunately, I could not accurately define the PV material, so I had to settle for using void glass for one layer and void plastic for the other. When I opened the .rad file in a text editor, the materials did not appear as expected (please see the attached image).

  • Secondly, I tried using Grasshopper Python to call genBSDF to create a BSDF file, but the resulting file is 0KB with no content.

I would appreciate any guidance on where my process might be going wrong or if there is a more efficient approach I could take. I have attached my code and documentation for reference. I look forward to your advice.

01
02
03

Hi @wavetaytaydirect , some years ago @J_Alstan_Jakubiec had worked on a project that involved glare from external photovoltaics. You can read about it here: https://journals.sagepub.com/doi/abs/10.3141/2449-13 . I believe the ashik2 material was used to model the PV panels. An example definition can be found here : Sunpower E20 White Diamond

I think here you will just end up with a darkish grey plastic material as you are using the same polygon with both modifiers. If you do intend to go with this approach, it would make more sense if the glass polygon is in front of the plastic panel.

Are you sure your rad file is correctly set up ? You can check this by previewing the file with objview. Additionally, genBSDF requires the input rad file to be placed in a specific way w.r.t to the world coordinates (see tutorial here). Since you are getting a 0kb file, it is likely that the command terminates with error. What is the stderr message from Popen? It is probably easier to troubleshoot if you run genBSDF from commandline initially instead of using Python.

Regards,
Sarith

(PS: It is easier to figure out what is going on if you paste text (instead of screenshots) of Radiance commands, materials etc)

2 Likes

Thank you for your patience! I tried again following your advice, but encountered some new issues in the process. I wonder if you could help clarify these questions?

1.I aimed to create a .rad file with PV glass as the top layer and a photovoltaic cell as the bottom layer. Here are the material definitions I used:

Glass material

void glass pv_glass
0
0
3 0.90 0.90 0.90

Plastic material

void plastic pv_plastic
0
0
5 0.0256 0.0256 0.0256 0.0412 0.05

Glass geometry

pv_glass polygon pv_panel_glass
0
0
12
0.00 0.00 0.0032
0.00 0.10 0.0032
0.16 0.10 0.0032
0.16 0.00 0.0032

Photovoltaic cell geometry

pv_plastic polygon pv_panel_plastic
0
0
12
0.00 0.00 0.00
0.00 0.10 0.00
0.16 0.10 0.00
0.16 0.00 0.00

The PV panel was simulated and presented by using the objview tool.

2.Next, I used this command to generate the BSDF file:

genBSDF -n 4 -c 10000 -t4 +f +b -geom meter -r 1024 -dim 0 0.16 0 0.1 0 0.01 E:/BSDF/geo/PVGeometry.rad > E:/BSDF/PV_BSDF.xml

I received the error:

“Device entirely inside room!”.

3.After adjusting the dim values, I tried :

genBSDF -n 4 -c 10000 -t4 +f +b -geom meter -r 1024 -dim -0.02 0.18 -0.02 0.12 -0.01 0.02 E:/BSDF/geo/PVGeometry.rad > E:/BSDF/PV_BSDF.xml

This resulted in:

“Warning: Device extends into room.”

Removing -n failed to resolve the issue, I’m unsure if it’s related to my Windows 11 system.

I would appreciate your guidance to resolve this or suggestions for improvement!

Hi,

You should make sure the model resides in the -Z half-space, and you can use getbbox to check the bounding box. According to the RAD files you provided, the model resides in the +Z half-space.

Best,
Yongqing

1 Like

Thank you for your suggestion. Currently, I am using the following .rad format:

void plastic pv_plastic
0
0
5 0.0256 0.0256 0.0256 0.0412 0.05

pv_plastic polygon pv_panel_plastic
0
0
12
0.00 0.00 -0.03
0.00 0.10 -0.03
0.16 0.10 -0.03
0.16 0.00 -0.03

I generated the BSDF file using this command:

genBSDF -n 4 -c 2000 +backward +forward -geom meter -dim 0 0.16 0 0.1 -0.04 0 -r “-ab 2 -ad 512 -lw 1e-4” E:/BSDF/geo/PV.rad > E:/BSDF/PV_BSDF.xml

The BSDF preview is shown in the attached image.

I would like to ask the following questions:

  1. Does this indicate that my .rad file successfully generated the BSDF file?
  2. Is it possible to add thickness to the PV layer directly within the .rad file? If so, could you recommend a reference or method?
  3. If I want to add a glass layer above the PV layer, what would be the appropriate way to set this up?

Thank you very much for your assistance.

Hi “wavetaytaydirect” (?),

if you use the tabular BSDF generated by genBSDF, in particular when reyling on a coarse discretization such as the 145 Klems patches, be aware that this may lead to underestimated luminances (and overestimated solid angles). The Klems BSDF will spread all the reflected light over a minimum apex angle given by its angular resolution, that may be greater than the effect of the PV module. We illustrated the problem a year ago (Figure 4 in the linked article):

Grobe et al. (2023). Modeling reflection by structured building-integrated photovoltaics. Journal of Physics: Conference Series, 2600, 042006. Radware Bot Manager Captcha

Here, we faced the problem that a structured surface produced a distinct widening of reflected light along only one axis, that could not be accounted for by the tabular models. We addressed the problem by modelling the surface structure by modulating the surface normal (texfunc) rather than relying on the tabular BSDF. I do not know if this problem occurs with the PV modules you model.

Best, Lars.

Hi wavetaytaydirect,

  1. Yes, you’ve generated the BSDF successfully, but I can’t confirm if it is correct.
  2. You should create a box model if you want to add thickness to the PV layer. However, I’m not sure why you want to simulate the thickness.
  3. If you want to add a glass layer, simply add a polygon with glass material in the .rad file.

You can use “bsdfview” to render the BSDF, but I would recommend first running “checkBSDF” on the output, just to see if the reflectances and transmittances are reasonable.

-Greg