I know that I haven’t replied to this topic in nearly a year and therefore it may have been rectified in subsequent releases of both Revit & Dynamo. However, with the addition of “Zero Touch” nodes in Dynamo, I have been able to implement the solar positioning code that initially provided the results that spawned this thread.
The open source code file are available from the US National Renewable Energy Laboratory (NREL) with an accuracy of zenith/azimuth angle between 0.00003° and 0.00008°!!! Better than my possible efforts. The documentation supporting this is available via:
I have excluded the Daylight Savings Time (DST) aspect given the complexities of which country actually uses it, the date at which DST is applied, the time shift applied due to DST. Issues exists in Revit as outlined by M_Perez. The DST can be manually altered by changing the “Timezone” input by the requisite figure.
My results align with the NOAA website to within 3 seconds (at worst). The NOAA website rounds some figures to the nearest minute and doesn’t allow for elevation, pressure or temperature change that the NREL does. Therefore I feel comfortable the results from NREL (and thus Dynamo node) are superior to NOAA.
I have published on the Dynamo Package Manager, named “Solar Positioning (NREL)”. Please let me know if this cannot be found or is not performing as expected. This only allows for a single result set to be returned, not nested, which limits it helpfulness a lot. I’m aware of the ‘ArbitraryDimensionArrayImport’ option but do not know how to apply this to a multi input & output nodes. I also tried a single nested version (commented out in the attached files) but again, lack the knowledge to achieve this. Anyone able to answer this?
The relevant C# source files are also attached for ease (you will need to change the file extensions from “.txt” to “.cs”).
Positioning.txt (11.6 KB)
SPA.txt (48.8 KB)