Differences between matrix method and rtrace

Dear all,

I would like to calculate the solar irradiation (direct and diffuse) at a number of outdoor locations. I have a large number of locations and need to calculate this for a number of years of weather data therefore the gendaylit + rtrace method is not feasible.

I have been following the tutorial for the 2phase DDS version in the matrix based method document. I have found that when I compare the results for direct solar irradiance from this method against using rtrace method there is some variation. At some points in time i get a good match however on other dates i get quite a significant underprediction from the matrix based method.

I believe the following paper offers some clues:
A more accurate approach for calculating illuminance with daylight coefficients by @sarith

In the paper the authors state the following as a way of improving direct solar predictions: “The authors propose the use of precise sun locations by including a solar disc for each hour during which the sun is above the horizon and not occluded by clouds. While the facility to generate solar discs in such a manner is not currently available in a native Radiance program, the same functionality has been provided in other software that use Radiance as a rendering engine”.

My question is has anyone attempted this in Radiance? Is it possible and any advice on how i might go about it?

Apologies for the long post. Any help much appreciated.

Hi @ElisG ,

This was addressed over two decades ago by John Mardaljevic and Christoph Reinhart during their (independent) doctoral works. The work by Christoph Reinhart led to the development of Daysim, which until very recently, was the mainstay of annual daylighting simulations.

Assuming you are referring to this as the 2phase DDS script, as I have mentioned in the comments, that script is a Radiance-based interpretation of the 2008 paper. The position of the sun, which are approximated to be one among the 5165 solar disc positions are not interpolated.
In my paper from 2017, the methodology simply relies on actual sun positions instead of the 145, 577…2305 or 5165 positions. The caveat with my approach is that it’s not a true coefficient based approach as you can’t take annual sun positions from one location and use it in context of another location (which was possible with the previous methods).

The methodology from the 2017 paper has since been implemented in Honeybee and has been verified against rtrace results by quite a few users.


1 Like

Hi Sarith,

Many thanks for your quick response and very helpful explanation.

I am new to Radiance and daylight simulations so still finding my way.

I am not too familiar with Honeybee but I will take a look. Ideally i would like to run my assessment using python script in a Linux environment (i.e. avoid using the plugin for grasshopper or dynamo). Are there any examples or tutorials about how to carry out these types of assessments using just python scripting?

Many thanks again.

If you are on a Linux environment, it is probably easier to just run directly on bash. In case you are interested in using Python to pass variables to Radiance, process results etc…you can use the os module in Python to make system calls to Radiance. Here is a simple example: https://gist.github.com/sariths/20ccee365e15dc8f72bde22ac3f767a3 that translates part of this script to Python. Of course you can use something like the multiprocessing module to manage things in a more refined manner.


Thank you Sarith,
Yes that sounds similar to the method i use at the moment. My python script calls a bash script containing all my Radiance commands.
I would like to incorporate your 2017 method of using accurate sun positions in my script. I found some examples of your python scripts in the Honeybee git repository which i think will help me, particularly the one called improvedDC2.py


Many thanks again for your help