Source code for pysolorie.irradiance
# Copyright 2023 Alireza Aghamohammadi
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import math
from .sun_position import SunPosition
[docs]
class SolarIrradiance:
r"""
A class to model the solar irradiance.
"""
def __init__(self, sun_position: SunPosition):
r"""
To instantiate the ``SolarIrradiance`` class, provide the following parameter.
:param sun_position: An instance of the SunPosition class.
:type sun_position: pysolorie.SunPosition
"""
self.sun_position = sun_position
[docs]
def calculate_extraterrestrial_irradiance(self, day_of_year: int) -> float:
r"""
Calculate the extraterrestrial solar irradiance for a given day of the year.
The extraterrestrial solar irradiance, :math:`I`,
is the annual average of the Sun's irradiation intensity.
This refers to the amount of solar energy received per unit
area per unit time on a surface perpendicular to the Sun's rays,
outside Earth's atmosphere.
The formula used is:
.. math::
I(n) = SC
\times (1 + 0.033 \times \cos (\frac{2\pi~n}{365}))
| - :math:`SC` is the average solar radiation arriving outside
of the Earth's atmosphere,
which is approximately ``1367`` Megawatts per square meter [1]_.
This is also known as the solar constant.
| - The factor ``0.033``, which is two times the eccentricity of
the Earth's orbit around the Sun, accounts for the variation
in the Earth-Sun distance due to the Earth's elliptical orbit.
| - :math:`n` is the day of the year (i.e., ``day_of_year``)
:param day\_of\_year: The day of the year, ranging from 1 to 365.
:type day\_of\_year: int
:return: The extraterrestrial solar irradiance in Megawatts per square meter.
:rtype: float
References
----------
.. [1] Duffie (Deceased), J., Beckman, W., & Blair, N. (2020).
Solar Engineering of Thermal Processes, Photovoltaics and Wind. Wiley.
"""
# Solar constant (MW/m^2)
SOLAR_CONSTANT = 1367 * 1e-6
# Factor to account for the Earth's orbital eccentricity
earth_orbital_eccentricity = 0.033
# Calculate the extraterrestrial solar irradiance
extraterrestrial_irradiance = SOLAR_CONSTANT * (
1 + earth_orbital_eccentricity * math.cos(2 * math.pi * day_of_year / 365)
)
return extraterrestrial_irradiance