| 1 |
greg |
2.3 |
{ RCSid: $Id: glaze1.cal,v 2.2 2003/06/30 18:12:24 greg Exp $ } |
| 2 |
greg |
2.1 |
{ |
| 3 |
|
|
glaze1.cal - single-pane fritted and low-E glazings |
| 4 |
|
|
|
| 5 |
|
|
Uses BRTDfunc type to get correct behavior. |
| 6 |
|
|
Oct. 2002 Greg Ward |
| 7 |
|
|
|
| 8 |
|
|
Material parameters for fritted glazing are: |
| 9 |
|
|
|
| 10 |
|
|
arg(10) - orientation (1 == glass front) |
| 11 |
|
|
arg(11) - fractional coverage |
| 12 |
|
|
|
| 13 |
|
|
Parameters for low-E glazing are: |
| 14 |
|
|
arg(10) - orientation (1 == glass front) |
| 15 |
|
|
arg(11) - glass-side reflectance (red) |
| 16 |
|
|
arg(12) - glass-side reflectance (green) |
| 17 |
|
|
arg(13) - glass-side reflectance (blue) |
| 18 |
|
|
arg(14) - coating-side reflectance (red) |
| 19 |
|
|
arg(15) - coating-side reflectance (green) |
| 20 |
|
|
arg(16) - coating-side reflectance (blue) |
| 21 |
|
|
arg(17) - transmittance (red) |
| 22 |
|
|
arg(18) - transmittance (green) |
| 23 |
|
|
arg(19) - transmittance (blue) |
| 24 |
|
|
} |
| 25 |
|
|
{ Fresnel approximation } |
| 26 |
greg |
2.2 |
fresne = exp(-5.85*abs(Rdot)) - exp(-5.85); |
| 27 |
greg |
2.1 |
fresne_refl(r) = r + fresne*(1 - r); |
| 28 |
|
|
fresne_trans(t) = t*(1 - fresne); |
| 29 |
|
|
{ glass reflectance and transmittance } |
| 30 |
|
|
glass_refl = fresne_refl(0.076); |
| 31 |
|
|
glass_trans = fresne_trans(0.883); |
| 32 |
|
|
|
| 33 |
|
|
clear_side = arg(10) * Rdot; { ray coming from plain side? } |
| 34 |
|
|
|
| 35 |
|
|
frac_glass = 1 - arg(11); { glass coverage } |
| 36 |
|
|
|
| 37 |
|
|
{ frit specular components } |
| 38 |
|
|
sr_frit_r = if(clear_side, glass_refl, frac_glass*glass_refl); |
| 39 |
|
|
sr_frit_g = if(clear_side, glass_refl, frac_glass*glass_refl); |
| 40 |
|
|
sr_frit_b = if(clear_side, glass_refl, frac_glass*glass_refl); |
| 41 |
|
|
st_frit_r = frac_glass*glass_trans; |
| 42 |
|
|
st_frit_g = frac_glass*glass_trans; |
| 43 |
|
|
st_frit_b = frac_glass*glass_trans; |
| 44 |
|
|
|
| 45 |
|
|
{ low-E specular components } |
| 46 |
greg |
2.3 |
sr_clear_r = fresne_refl(if(clear_side, arg(11), arg(14))); |
| 47 |
|
|
sr_clear_g = fresne_refl(if(clear_side, arg(12), arg(15))); |
| 48 |
|
|
sr_clear_b = fresne_refl(if(clear_side, arg(13), arg(16))); |
| 49 |
|
|
st_clear_r = fresne_trans(arg(17)); |
| 50 |
|
|
st_clear_g = fresne_trans(arg(18)); |
| 51 |
|
|
st_clear_b = fresne_trans(arg(19)); |