Spectral sky (9 Channel)

Hello Radiance experts,

I am trying to run spectral daylight simulation (9 Channel simulation) in Radiance. I read these 2 papers:
1- Spectral rendering with RADIANCE
2- Lark Spectral Lighting

So, it is very clear that we take the SPD data and split up the source of light (sky), glass transmittance, and reflectivity of opaque materials into 3 separate simulations.

I need 3 different sky files that account for the color of the sky (and irradiance) when stepping through different wavebands.
Looking to the calculation method in “Lark” I got some problems/confusions:

1- I believe that “material for sky (glow) must sum up to 1 to assure correct value.”, but when Lark generates the skies it doesn’t taken care.
Should I modify the values to sum 1 on each file?

!gensky 6 21 10.5 +s -B 428.2 -R 33.22 -a 49.52 -o -8.55 -m -15
skyfunc glow sky_mat
4 0.642 0.873 0.823 0

!gensky 6 21 10.5 +s -B 428.2 -R 33.22 -a 49.52 -o -8.55 -m -15
skyfunc glow sky_mat
4 0.911 0.896 0.831 0

!gensky 6 21 10.5 +s -B 428.2 -R 33.22 -a 49.52 -o -8.55 -m -15
skyfunc glow sky_mat
4 0.736 0.647 0.545 0

2- I think that the -B and -R options (Irradiance values) also need to be treated differently. Meaning each sky should only contains part of energy in the corresponding wavelength (and not full spectrum from 380-780). So, I think it should be split based on the weight of SPD of sky (e.g. D65) on each part.
I have already applied the sun’s efficacy and sky radiation efficacy mentioned here.

I will appreciate any tip or comment on these issues.


Hello Fazel,

From what you wrote, I assume you want to use the Lark plugin for grasshopper to run a 9-channel simulation. In this case, you don’t need 3 different sky files, you just input the SPD of the sky and the global illuminance in the Lark components (in grasshopper), and Lark will automatically derive the 3 radiance sky models (for the 3 parallel simulations) from this input data.

Basically, Lark will average the inputted SPD over each of the 9-channels bin to derive the RGB values of the 3 radiance sky models (for the 3 simulations). Regarding the irradiance values, the diffuse one is weighted in Lark by the photopic coefficients for the 9 channels and your SPD. Also, the sun in LARK is modelled as a non-spectral equal energy white source, so there is no weighting for the direct irradiance value.

As an additional thought on LARK:
By default, Lark requires the global sky illuminance to derive the direct and diffuse irradiance values. The process consists in dividing the global illuminance by 179 to get the GHI (over the visible spectral range thus), and to use gen_reindl (a Daysim tool) to derive the direct and diffuse irradiance from the GHI. The problem in that is that gen_reindl, to my knowledge, requires the GHI over the full solar spectrum as input and not the GHI over the visible spectral range only… Besides that, any model (Reindl, Erbs…) using a global horizontal measurement only for splitting up into direct and diffuse components could show high deviations and therefore one should prefer to directly input direct and diffuse values (irradiance or illuminance) from the beginning.

Lark offers also another solution, which is to input direct and diffuse irradiance values instead of global illuminance. There might be another issue with that, since to my knowledge gensky does not have a luminous efficacy model (does it, Greg?). Therefore, the direct and diffuse irradiance values that you input should be over the visible spectral range, but typical weatherfiles (e.g. EPW) use the solar spectrum as irradiance values.

The solution I used was to modify the Lark component so that it uses gendaylit (which has a luminous efficacy model) instead of gensky, and I input direct and diffuse irradiance values over the full solar spectral range.

I hope this helps!


1 Like

Hi Clotilde,

Thanks for your reply. in fact I am writing a python code out of Rhino/Grasshopper environment to calculate Color Rendering Index. So, I wanted to understand how Lark does the sky generation step.
And I know that “the spectral sky model is still the largest uncertainty” :slight_smile:

This is how the diffuse irradiance is weighted by Lark when b1,b2,b3,g1,g2,g3,r1,r2,r3 are the channel outputs and v_ parameters are the photopic coefficients for each channel:

sum9 = b1v_b1 + b2v_b2 + b3v_b3 + g1v_g1 + g2v_g2 + g3v_g3 + r1v_r1 + r2v_r2 + r3*v_r3
diffuse = diffuse/ sum9

sum9 is usually below one (e.g. 0.836 based on D65 SPD) and by dividing the diffuse irradiance by this, you basically use a greater value. This is the part I don’t understand how it helps.
I still think, Lark has the problem with the R G B values in skyfunc glow (which are not summing up to 1)

In order to avoid gen_reindl, I used another gensky option (-r) which involves solar radiance.
years ago Greg said: “to compute the solar radiance (-r) from direct normal irradiance (DNI in wea or epw file), divide the normal irradiance by 5.98e-5, which is the number of steradians in a 0.5 degree source like the sun”
On the same page Greg recommend "multiplying values to the -r and -R options by:
208/179 the ratio between the sun’s efficacy and the standard Radiance factor
Likewise, values to the -b and -B options should be multiplied by:
110/179 the ratio for sky radiation efficacy over the standard Radiance factor".
Later, Francesco Anselmo pointed out D65 efficacy of 203 lm/W (here).
So, I am wondering if this is a shortcoming of Lark tool? and if I need to apply them regarding the type of sky (D65, D50, D70, …) and the SPD data selected by the users?

This is a very good point, I am trying both gendaylit and genutahsky.

Thank you for sharing your experience with me.

Hi Fazel,

When you apply a fixed luminous efficacy (e.g. “110/179”…) you will
ignore the the variation in the efficacy for different sky types. You
can see the variation of the efficacy in the publication from R.Perez (
Perez, R, Ineichen, P., Seals, R. Michalsky, J., Stewart, R. “Modeling
daylight availability and irradiance components from direct and global
irradiance”, Solar Energy. 1990, vol. 44, no. 5, p. 271-289) .
None of the existing efficacy models are perfect, also not the Perez
luminance efficacy model. But applying a model reduces the error ("/In
summary, the model reduces overall RMSE by a factor 1.4 over a constant
luminous efficacy model set at the mean of all points/" (p 276).

In gendaylit, the above mentioned model is “automatically” included.

Regarding genutasky: When doing some comparison for the colored output
of the Perez-model (see here:
) we could not match the energy and the sky it “too blueish” for
overcast conditions.

For gendaylit, you could also try to apply the colored output (-C),
which is based on the measurements and modelling of TU Berlin (but only
3 channels). The implementation for the mixed skies ( 1.065 < ε < 4.5 )
is still due and can be expected somewhere end of next year.


1 Like

Hi Jan,

Thank you for your points. It is very clear now.
I also came across very nice comparison between Lark, Alfa, and measured spectral data, Priji shared in here.

I am looking forward to seeing more colorful skies.