Solar Radiation
- longitude_rad(lon_deg)
Converts longitude from degrees to radians.
- Parameters:
lon_deg (float) – longitude in degrees, \(\phi\) [deg]
- Returns:
lon – longitude, \(\phi\) [rad]
- Return type:
float
- latitude_rad(lat_deg)
Converts latitude from degrees to radians.
- Parameters:
lat_deg (float) – latitude in degrees, \(\lambda\) [deg]
- Returns:
lat – latitude, \(\lambda\) [rad]
- Return type:
float
- slope_rad(slope_deg)
Converts slope from degrees to radians.
- Parameters:
slope_deg (float) – slope in degrees, \(s\) [deg]
- Returns:
slope – slope, \(\Delta\) [rad]
- Return type:
float
- aspect_rad(aspect_deg)
Converts aspect from degrees to radians.
- Parameters:
aspect_deg (float) – aspect in degrees, \(s\) [deg]
- Returns:
aspect – aspect (0 is north; pi is south), \(\alpha\) [rad]
- Return type:
float
- declination(doy)
Computes the solar declination which is the angular height of the sun above the astronomical equatorial plane in radians.
\[\begin{split}\\delta=0.409 \cdot \sin\left(\frac{2\pi \cdot J}{365}-1.39\right)\end{split}\]- Parameters:
doy (float) – julian day of the year, \(J\) [-]
- Returns:
decl – declination, \(\\delta\) [rad]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.declination(180) 0.40512512455439242
- earth_sun_distance(doy)
Computes the earth sun distance in Angstrom Unit where 1 AU is 1.496e8 km.
\[d_{r}=1+0.033 \cdot \cos\left(\frac{2\pi \cdot J}{365}\right)\]- Parameters:
doy (float) – julian day of the year, \(J\) [-]
- Returns:
ed – earth sun distance, \(d_{r}\) [AU]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.earth_sun_distance(180) 0.96703055420162642
- inverse_earth_sun_distance(doy)
Computes the inverse earth sun distance (iesd) in Angstrom Unit where 1 AU is 1.496e8 km.
\[d_{r}=1+0.033 \cdot \cos\left(\frac{2\pi \cdot J}{365}\right)\]- Parameters:
doy (float) – julian day of the year, \(J\) [-]
- Returns:
iesd – inverse earth sun distance, \(d_{r}\) [AU]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.inverse_earth_sun_distance(180) 0.96703055420162642
- actual_earth_sun_distance(iesd)
Computes the earth sun distance (esd) in Angstrom Unit where 1 AU is 1.496e8 km.
\[d_{r}=1+0.033 \cdot \cos\left(\frac{2\pi \cdot J}{365}\right)\]- Parameters:
iesd (float) – inverse earth sun distance, \(J\) [AU]
- Returns:
esd – earth sun distance, \(d_{r}\) [AU]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.actual_earth_sun_distance(180) 1.034093489244084
- seasonal_correction(doy)
Computes the seasonal correction for solar time in hours.
\[b=\frac{2\pi\left(J-81\right)}{365}\]\[s_{c}= 0.1645 \cdot sin \left( 2b \right) - 0.1255 \cdot cos \left(b \right) - 0.025 \left(b\right)\]- Parameters:
doy (float) – julian day of the year, \(J\) [-]
- Returns:
sc – seasonal correction, \(s_{c}\) [hours]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.seasonal_correction(180) -0.052343379605521212
- sunset_hour_angle(lat, decl)
Computes the sunset hour angle.
\[\begin{split}w_{s}=\arccos(-\tan(\lambda)\cdot \tan(\\delta))\end{split}\]- Parameters:
decl (float) – solar declination, \(\\delta\) [rad]
lat (float) – latitude, \(\lambda\) [rad]
- Returns:
ws – sunset hour angle, \(w_{s}\) [rad]
- Return type:
float
- hour_angle(sc, dtime, lon=0)
Computes the hour angle which is zero at noon and -pi at 0:00 am and pi at 12:00 pm
\[\omega=\left(\frac{\pi}{12}\right)\cdot \left(t+s_{c}-12\right)\]- Parameters:
sc (float) – seasonal correction, \(s_{c}\) [hours]
dtime (float) – decimal time, \(t\) [hours]
lon (float) – longitude, \(\phi\) [rad]
- Returns:
ha – hour_angle, \(\omega\) [rad]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> solrad.hour_angle(sc=solrad.seasonal_correction(75), dtime=11.4) -0.19793970172084141
- inst_solar_radiation_toa(csza, iesd)
Computes the instantaneous solar radiation at the top of the atmosphere [Wm-2].
\[S_{toa}^{i} = S_{sun} \cdot d_{r} \cdot \phi\]- Parameters:
csza (float) – cosine solar zenith angle, \(\phi\) [-]
iesd (float) – inverse earth sun distance, \(d_{r}\) [AU]
- Returns:
ra_i_toa – instantaneous solar radiation at top of atmosphere, \(S_{toa}^{i}\) [Wm-2]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> doy = 1 >>> sc = solrad.seasonal_correction(doy) >>> ha = solrad.hour_angle(sc, dtime=12) >>> decl = solrad.declination(doy) >>> csza = solrad.cosine_solar_zenith_angle(ha, decl, 0) >>> iesd = solrad.inverse_earth_sun_distance(doy) >>> solrad.inst_solar_radiation_toa(csza, iesd) 1299.9181944414036
- daily_solar_radiation_toa(sc, decl, iesd, lat, slope, aspect)
Computes the daily solar radiation at the top of the atmosphere.
\[S_{toa}=S_{sun} \cdot d_{r}\int_{i=-\pi}^{i=\pi}S_{toa}^{i}\]- Parameters:
iesd (float) – inverse earth sun distance, \(d_{r}\) [AU]
decl (float) – solar declination, \(\\delta\) [rad]
sc (float) – seasonal correction, \(s_{c}\) [hours]
lat (float) – latitude, \(\lambda\) [rad]
slope (float) – slope (0 is flat, 90 is vertical), \(\Delta\) [deg]
aspect (float) – aspect (0 is north; 180 is south), \(\alpha\) [deg]
- Returns:
ra_24_toa – daily solar radiation at the top of atmosphere, \(S_{toa}\) [Wm-2]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> from math import pi >>> doy = 1 >>> sc = solrad.seasonal_correction(doy) >>> decl = solrad.declination(doy) >>> iesd = solrad.inverse_earth_sun_distance(doy) >>> solrad.daily_solar_radiation_toa(sc, decl, iesd, lat=25*pi/180.0) 265.74072308978026
- cosine_solar_zenith_angle(ha, decl, lat, slope=0, aspect_rad=0)
computes the cosine of the solar zenith angle [-].
\[\begin{split}\phi = & \sin\left(\\delta\right) \cdot \sin\left(\lambda\right) \cdot \cos\left(\Delta\right) - \\ & \sin\left(\\delta\right) \cdot \cos\left(\lambda\right) \cdot \sin\left(\Delta\right) + \\ & \cos\left(\\delta\right) \cdot \cos\left(\lambda\right) \cdot \cos\left(\Delta\right) \cdot \cos\left(\omega\right)+\\ & \cos\left(\\delta\right) \cdot \sin\left(\lambda\right) \cdot \sin\left(\Delta\right) \cdot \sin\left(\alpha\right) \cdot \cos\left(\omega\right)+\\ & \cos\left(\\delta\right) \cdot \sin\left(\Delta\right) \cdot \sin\left(\alpha\right) \cdot \sin\left(\omega\right)\end{split}\]- Parameters:
ha (float) – hour angle, \(\omega\) [rad]
decl (float) – declination, \(\\delta\) [rad]
lat (float) – latitude, \(\lambda\) [rad]
slope (float) – slope, \(\Delta\) [rad]
aspect_rad (float) – aspect (0 is north; pi is south), \(\alpha\) [rad]
- Returns:
csza – cosine solar zenith angle, \(\phi\) [-]
- Return type:
float
Examples
>>> import ETLook.solar_radiation as solrad >>> sc = solrad.seasonal_correction(1) >>> ha = solrad.hour_angle(sc, dtime=12) >>> solrad.cosine_solar_zenith_angle(ha, decl=solrad.declination(1), lat=0) 0.92055394167363314
- transmissivity(ra_24_flat, ra_24_toa_flat)
Computes the transmissivity (inverse of daily_solar_radiation_flat).
- Parameters:
ra_24_flat (float) – daily solar radiation for a flat surface, \(S^{\downarrow}\) [Wm-2]
ra_24_toa_flat (float) – daily solar radiation at the top of atmosphere for a flat surface, \(S_{toa,f}\) [Wm-2]
- Returns:
trans_24 – daily atmospheric transmissivity, :math:` au` [-]
- Return type:
float
- daily_solar_radiation_toa_flat(decl, iesd, lat, ws)
Computes the daily solar radiation at the top of the atmosphere for a flat surface.
\[\begin{split}S_{toa,f}=\frac{S_{sun}}{\pi} \cdot d_{inv,r} \cdot (w_{s} \cdot \sin(\lambda) \cdot \sin(\\delta) + \cos(\lambda)\cdot\cos(\\delta)\cdot\sin(w_{s}))\end{split}\]- Parameters:
decl (float) – solar declination, \(\\delta\) [rad]
iesd (float) – inverse earth sun distance, \(d_{inv,r}\) [AU]
lat (float) – latitude, \(\lambda\) [rad]
ws (float) – sunset hour angle, \(w_{s}\) [rad]
- Returns:
ra_24_toa_flat – daily solar radiation at the top of atmosphere for a flat surface, \(S_{toa,f}\) [Wm-2]
- Return type:
float
- daily_solar_radiation_flat(ra_24_toa_flat, trans_24)
Computes the daily solar radiation at the earth’s surface.
\[\begin{split}S^{\\downarrow} = \tau \cdot S_{toa}\end{split}\]- Parameters:
ra_24_toa_flat (float) – daily solar radiation at the top of atmosphere for a flat surface, \(S_{toa}\) [Wm-2]
trans_24 (float) – daily atmospheric transmissivity, \(\tau\) [-]
- Returns:
ra_24_flat – daily solar radiation for a flat surface, \(S^{\\downarrow}\) [Wm-2]
- Return type:
float
- diffusion_index(trans_24, diffusion_slope=-1.33, diffusion_intercept=1.15)
Computes the diffusion index, the ratio between diffuse and direct solar radiation. The results are clipped between 0 and 1.
\[I_{diff} = a_{diff}+b_{diff} \cdot \tau\]- Parameters:
trans_24 (float) – daily atmospheric transmissivity, \(\tau\) [-]
diffusion_slope (float) – slope of diffusion index vs transmissivity relationship, \(b_{diff}\) [-]
diffusion_intercept (float) – intercept of diffusion index vs transmissivity relationship, \(a_{diff}\) [-]
- Returns:
diffusion_index – diffusion_index, \(I_{diff}\) [-]
- Return type:
float
- daily_total_solar_radiation(ra_24_toa, ra_24_toa_flat, diffusion_index, trans_24)
Computes the daily solar radiation at the earth’s surface taken diffuse and direct solar radiation into account.
\[\begin{split}S^{\\downarrow} = I_{diff} \cdot \tau \cdot S_{toa,f} +(1-I_{diff}) \cdot \tau \cdot S_{toa}\end{split}\]- Parameters:
ra_24_toa (float) – daily solar radiation at the top of atmosphere, \(S_{toa}\) [Wm-2]
ra_24_toa_flat (float) – daily solar radiation at the top of atmosphere for a flat surface, \(S_{toa,f}\) [Wm-2]
diffusion_index (float) – diffusion_index, \(I_{diff}\) [-]
trans_24 (float) – daily atmospheric transmissivity, \(\tau\) [-]
- Returns:
ra_24 – daily solar radiation, \(S^{\\downarrow}\) [Wm-2]
- Return type:
float