Hello,
I am trying to get a realistic estimate for the concentration of solar radiation resulting from a curved glass facade.
There are a number of points in my process where there is potential for error, so I am going to be pretty detailed, but I’ll use headings so it’s easy to navigate this entry.
Worst case scenario
I used forward ray-tracing to figure out that radiation is concentrated most intensely during Feb/March and October/November, at around 10:00 in the morning. Worst case Diffuse normal radiation is 135 w/m2 at that time, and the worst case direct radiation is 825w/m2 at that time, so I made a custom sky to reflect this. I have been able to replicate the radiation-concentration phenomenon with a point-in-time simulation using a mirror material in Honeybee Legacy (woohoo!):
The problem is that this doesn’t really represent a realistic worst-case scenario. (2500 W/m2 will give a person a sunburn in 30 seconds, so the 3600w/m2 here is quite serious if it is true.)
How can I use Radiance to get a more realistic measure for glass?
I tried with a glass material, a metal material, and a custom BRTDfunc material based on outputs from the IGDB.
Here is my process, any input you have would be super helpful.
Creating Radiance Material from the IGDB
The glass is a laminate, so I built it up in Optics 6.0 Maintenence Pack 1 and imported to and exported a Radiance file. I have not yet managed to get a single Radiance material for two laminates separated by an airgap, so this could be the problem.
The glass is in the International Glazing Database (IGDB), but the exact Polyvinyl Butyral (PVB) that binds the two panes of glass together wasn’t listed, so I substituted something that seemed reasonable.
Here are the entries in the laminate I’ve created in Optics:
(Exterior)
PLANICLEAR 6mm.SGG (NFRCID 21013)
081_XIR_7241_3Clr.usr (This is the substitute PVB mentioned above, NFRCID 30006)
PLANITHERM ONE II 6mm.SGG (NFRCID 21411)
(Interior)
This results in the following Radiance file. This was done on a computer in Copenhagen, so it spits out a Radiance File that uses commas instead of periods (super annoying):
#
# FileName= PAN_TestLaminate.usr
# Product Name=
# NFRC ID= 30005
# Manufacturer Name= User
# Glazing Type= Laminate
# Coated Side= Back
# Transmittance= 0,630
# Front Reflectance= 0,134
# Back Reflectance= 0,162
# Thickness(mm)= 12,810
# Appearance=
#
void glass TestLaminate_glass
0
0
3 0,649 0,709 0,607
void BRTDfunc TestLaminate_front
10
0,113 0,139 0,163
0,596 0,651 0,557
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0
void BRTDfunc TestLaminate_back
10
0,148 0,161 0,223
0,596 0,651 0,557
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0
To interpret this file, I refer to the Radiance documentation on a BRTDfunc material: (it’s not code, this is just an easy way to refer to the text here).
BRTDfunc
The material BRTDfunc gives the maximum flexibility over surface reflectance and transmittance, providing for spectrally-dependent specular rays and reflectance and transmittance distribution functions.
mod BRTDfunc id
10+ rrefl grefl brefl
rtrns gtrns btrns
rbrtd gbrtd bbrtd
funcfile transform
0
9+ rfdif gfdif bfdif
rbdif gbdif bbdif
rtdif gtdif btdif
A10 ..
The variables rrefl, grefl and brefl specify the color coefficients for the ideal specular (mirror) reflection of the surface. The variables rtrns, gtrns and btrns specify the color coefficients for the ideal specular transmission. The functions rbrtd, gbrtd and bbrtd take the direction to the incident light (and its solid angle) and compute the color coefficients for the directional diffuse part of reflection and transmission. As a special case, three identical values of '0' may be given in place of these function names to indicate no directional diffuse component.
Unlike most other material types, the surface normal is not altered to face the incoming ray. Thus, functions and variables must pay attention to the orientation of the surface and make adjustments appropriately. However, the special variables for the perturbed dot product and surface normal, RdotP, NxP, NyP and NzP are reoriented as if the ray hit the front surface for convenience.
A diffuse reflection component may be given for the front side with rfdif, gfdif and bfdif for the front side of the surface or rbdif, gbdif and bbdif for the back side. The diffuse transmittance (must be the same for both sides by physical law) is given by rtdif, gtdif and btdif. A pattern will modify these diffuse scattering values, and will be available through the special variables CrP, CgP and CbP.
Care must be taken when using this material type to produce a physically valid reflection model. The reflectance functions should be bidirectional, and under no circumstances should the sum of reflected diffuse, transmitted diffuse, reflected specular, transmitted specular and the integrated directional diffuse component be greater than one.
So, it looks like many of the values coming out of Optics are zero, so perhaps there is a problem with the way I am building the laminate up. @sarith any ideas?
Using the Radiance Material in Honeybee Legacy
All the following images are rendered using the following Radiance paramters:
pt = 0.05
ds = 0.05
aa = 0.15
pj = 0.9
dt = 0.15
ad = 1000
dj = 0.7
dp = 512
lw = 1e-06
xScale = 6
yScale = 6
ar = 128
as = 1000
dc = 0.75
av = 0
lr = 1
ps = 2
st = 0.15
sj = 1
dr = 3
ab = 9
I am aware that the radiance output from Optics contains three materials. My first instinct was to use the glass material directly, but this did not produce the effect of concentrating radiation that I expected, here is the resulting image:
As I understand from This post from Marija Cvetkovic and Jack de Valpine this is because the glass material only represents the correct transmittance for the exported glazing system, not the reflectance.
Then I tried to see if I could create the phenomenon of concentrating solar radiation with a metal material. This also failed even though all reflectances were set to 1:
Finally, I tried a BRTD function material, defined as follows (from Optics output):
void BRTDfunc TestLaminate_front
10
0.113 0.139 0.163
0.596 0.651 0.557
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0
This yields the following result, which also fails to reproduce the concentration phenomenon:
Here are my grasshopper and Rhino files, the grasshopper file contains all of the materials I’ve been using:
20190402_CurvedGlass.gh (512.4 KB)
CurvedGlass.3dm (66.9 KB)
…and the Radiance files for the run using the BRTDfunc material
unnamed.zip (214.5 KB)
Precedent Study
Page 3676 of this study on the Walkie Talkie in London seems to have figured this out, the method they used for estimating the quantity of radiation is described as follows:
" With RADIANCE tool Rtcontrib and
dctimestep, irradiance received at each critical
position is calculated at hourly time-step. An
interface was developed in GRASSHOPPER which
sent information of the geometry and material
properties to the server and collect simulation results
for further analysis. "
I don’t know if this is what Honeybee is already doing, or if this is a different approach. Perhaps I should be doing this with a Daylight Coefficient analysis?
Testing in Honeybee Plus
I thought it might be a problem with support for BRTDfunc in legacy components, so I rebuilt the definition in HBPlus, but no luck here.
I used [On Material definitions (Trans,BRTDfunc…)in Honeybee +)(Material definition (Trans, BRTDfunc..) in Honeybee +) (Nov '17) and Import a material from Radiance library in Honeybee [+] and BRTDfunc material (Jun '18), to write a custom material class based on the output from Optics:
from honeybee.radiance.material.brtdfunc import BRTDfunc
values = {
0: ['0.113','0.139', '0.163', '0.596', '0.651', '0.557', '0', '0', '0', '.'],
1: [],
2: ['0', '0', '0', '0', '0', '0', '0', '0', '0']
}
material = BRTDfunc('TestLaminate_front', values=values)
a=material
This is included in the following Grasshopper and Rhino files:
20190402_CurvedGlass_HBPlus.gh (502.4 KB)
CurvedGlass.3dm (69.3 KB)