|
|
| File Information |
| Description |
sun = sun_position(time, location)
This function compute the sun position (zenith and azimuth angle at the observer location) as a function of the observer local time and position.
It is an implementation of the algorithm presented by Reda et Andreas in:
Reda, I., Andreas, A. (2003) Solar position algorithm for solar radiation application. National Renewable Energy Laboratory (NREL) Technical report NREL/TP-560-34302.
This document is avalaible at www.osti.gov/bridge and is included in the .zip file
This algorithm is based on numerical approximation of the exact equations. The authors of the original paper state that this algorithm should be precise at +/- 0.0003 degrees. I have compared it to NOAA solar table (http://www.srrb.noaa.gov/highlights/sunrise/azel.html) and to USNO solar table (http://aa.usno.navy.mil/data/docs/AltAz.html) and found very good correspondance (up to the precision of those tables), except for large zenith angle, where the refraction by the atmosphere is significant (difference of about 1 degree). Note that in this code the correction for refraction in the atmosphere as been implemented for a temperature of 10C (283 kelvins) and a pressure of 1010 mbar. See the subfunction «sun_topocentric_zenith_angle_calculation» for a possible modification to explicitely model the effect of temperature and pressure as describe in Reda & Andreas (2003).
Input parameters:
time: a structure that specify the time when the sun position is calculated.
time.year: year. Valid for [-2000, 6000]
time.month: month [1-12]
time.day: calendar day [1-31]
time.hour: local hour [0-23]
time.min: minute [0-59]
time.sec: second [0-59]
time.UTC: offset hour from UTC. Local time = Greenwich time + time.UTC
This input can also be passed using the Matlab time format ('dd-mmm-yyyy HH:MM:SS'). In that case, the time has to be specified as UTC time (time.UTC = 0)
location: a structure that specify the location of the observer
location.latitude: latitude (in degrees, north of equator is positive)
location.longitude: longitude (in degrees, positive for east of Greenwich)
location.altitude: altitude above mean sea level (in meters)
Output parameters
sun: a structure with the calculated sun position
sun.zenith = zenith angle in degrees (angle from the vertical)
sun.azimuth = azimuth angle in degrees, eastward from the north.
Only the sun zenith and azimuth angles are returned as output, but a lot
of other parameters are calculated that could also extracted as output of
this function. See the documentation in the code.
Exemple of use
location.longitude = -105.1786;
location.latitude = 39.742476;
location.altitude = 1830.14;
time.year = 2003;
time.month = 10;
time.day = 17;
time.hour = 12;
time.min = 30;
time.sec = 30;
time.UTC = -7;
sun = sun_position(time, location);
sun =
zenith: 50.1080438859849
azimuth: 194.341174010338 |
| Acknowledgements |
This submission has inspired the following:
Sun Azimuth Data
|
| MATLAB release |
MATLAB 6.5 (R13)
|
| Zip File Content |
|
| Other Files |
sun_position.m, 34302.pdf
|
|
Tags for This File
|
| Everyone's Tags |
|
| Tags I've Applied |
|
| Add New Tags |
Please login to tag files.
|
| Comments and Ratings (17) |
| 17 Mar 2004 |
Andrea Bergami
|
|
|
| 07 Oct 2004 |
lu shengwang
|
|
|
| 10 Jul 2005 |
Xin Jin
|
|
|
| 27 Aug 2005 |
Mat Saenger
|
|
|
| 28 Aug 2005 |
frederik Steensen
|
|
|
| 18 Nov 2005 |
Steve Wales
|
|
|
| 15 Feb 2006 |
DUNG TRAN THANH
|
|
|
| 29 May 2006 |
nadeem nazar
|
|
|
| 22 Jan 2007 |
George Young
|
|
|
| 08 Feb 2007 |
Son Nguyen
|
|
|
| 03 Aug 2007 |
Andora Suwisto
|
|
|
| 24 Oct 2007 |
P Johnstone
|
|
|
| 17 Oct 2008 |
Lin Xinan
|
|
|
| 24 Oct 2008 |
Jeff Gullett
|
|
|
| 11 Nov 2008 |
Lu Salinas
|
|
|
| 19 Nov 2008 |
EDGAR RAMOS
|
|
|
| 06 Jan 2009 |
Jeff Gullett
|
|
|
| Updates |
| 15 Mar 2004 |
Small bugs fix (in julian day calculation) |
| 18 Mar 2004 |
Small bugs fix (in julian day calculation) |
| 18 Mar 2004 |
Changed information in the header (help display). location.elevation should have been location.altitude. |
| 13 Apr 2004 |
Following a suggestion from Jody Klymak (jklymak@ucsd.edu), allowed the 'time' input to be passed as a Matlab time string. |
| 23 Aug 2005 |
Modifications to the julian_calculation function. Bug was tranforming a string (time) to a structure directly. This was accepted until R14SP2. Script should now be compliant with future releases of Matlab... |
|
Public Submission Policy
NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for
all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content.
Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available
via MATLAB Central.
Read the complete Disclaimer prior to use.
Contact us at files@mathworks.com