Skip to content

Photovoltaic power

Using the API, or indeed the CLI interface in a programmatic way, however, we can generate photovoltaic power series. To do so, we need to define the location and time of interest, import some PVGIS-native data classes and naturally the corresponding API or CLI functions.

Really long outputs !

Using the API functions directly and printing out PVGIS' native data models leads to long and complex outputs. Nonetheless, there are many methods and attributes to work with, using Python's . syntax. For example, recall the .value attribute with which you can get the output values from an object !

Following is a how-to example, using however an interactive i/python session. So, it's recommended to launch an ipython interpreter :

ipython

and follow along.

Rich output

rich is installed by default along with PVGIS. In case, however, it isn't installed, you may want to install it for a great visual experience when printing out Python objects.

pip install rich

First, import the print function from the rich library. This will prettify our output !

>>> from rich import print

Where ?

Define the geographic location and the positioning of our solar surface

>>> latitude = 1
>>> longitude = 1
>>> elevation = 214
>>> surface_orientation = 1
>>> surface_tilt = 1

When ?

Prepate a series of timestamps as a Pandas DatetimeIndex, using our helper function generate_datetime_series

>>> from pvgisprototype.api.datetime.datetimeindex import generate_datetime_series
>>> timestamps = generate_datetime_series(start_time="2010-01-27 08:00:00", end_time="2010-01-27 18:00:00", frequency="h")

and the default UTC timezone as a ZoneInfo object

>>> from zoneinfo import ZoneInfo
>>> utc_zone = ZoneInfo("UTC")

Let's confirm the generation of the timestamps and the timezone :

>>> print(f'{timestamps=}')
>>> print(f'\n{utc_zone=}')

timestamps=DatetimeIndex(['2010-01-27 08:00:00', '2010-01-27 09:00:00', '2010-01-27 10:00:00', '2010-01-27 11:00:00', '2010-01-27 12:00:00', '2010-01-27 13:00:00', '2010-01-27 14:00:00', '2010-01-27 15:00:00', '2010-01-27 16:00:00', '2010-01-27 17:00:00', '2010-01-27 18:00:00'], dtype='datetime64[ns]', freq='h')

utc_zone=zoneinfo.ZoneInfo(key='UTC')

Important parameters

First, import required modules and custom data classes

Linke turbidity

>>> from pvgisprototype import LinkeTurbidityFactor
>>> linke_turbidity_factor_series = LinkeTurbidityFactor(value=1)

Type of the photovoltaic module

>>> from pvgisprototype.algorithms.huld.photovoltaic_module import PhotovoltaicModuleModel
>>> photovoltaic_module = PhotovoltaicModuleModel.CIS_FREE_STANDING

Temperature and Wind Speed

>>> from pvgisprototype import TemperatureSeries, WindSpeedSeries
>>> temperature_series = TemperatureSeries(value=14)
>>> wind_speed_series = WindSpeedSeries(value=0)

Spectral factor series

>>> from pvgisprototype import SpectralFactorSeries
>>> spectral_factor_series=SpectralFactorSeries(value=1)

Power

Now we can use the API function calculate_photovoltaic_power_output_series :

>>> from pvgisprototype.api.power.broadband import (calculate_photovoltaic_power_output_series)
>>> power = calculate_photovoltaic_power_output_series(
>>>     longitude=longitude,
>>>     latitude=latitude,
>>>     elevation=elevation,
>>>     surface_orientation=surface_orientation,
>>>     surface_tilt=surface_tilt,
>>>     timestamps=timestamps,
>>>     timezone=utc_zone,
>>>     linke_turbidity_factor_series=linke_turbidity_factor_series,
>>>     photovoltaic_module=photovoltaic_module,
>>>     spectral_factor_series=spectral_factor_series,
>>>     temperature_series=temperature_series,
>>>     wind_speed_series=wind_speed_series,
>>> )

Inspect the power output

>>> print(f'Photovoltaic power components : {power.output}')

Photovoltaic power components : OrderedDict([('Elevation', {}), ('Core', OrderedDict([('Name', 'Photovoltaic Power data model'), ('Title', 'Power'), ('Description', 'Photovoltaic Power based on a variant of King0s model (1998, 2004)'), ('Symbol', '⌁'), ('Power ⌁', array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Unit', 'W'), ('Equation', 'P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²')])), ('Context', {}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Surface Position', {})])

or indeed, some of the most important components like the values

>>> print(f'Photovoltaic power series : {power.value}')

Photovoltaic power series : [4.5511003 4.425904 3.2437537 1.3269994 0. 0. 0. 0. 0. 0. 0. ]

Structured output

The full object is really long and complex. debug from the devtools library comes handy to print long objects in a structured way, making it easier to read.

Install it

pip install devtools
and use it as in the following example.

Note that this specific function might not render properly or at all the output in the HTML documentation you are reading !

Photovoltaic Power -- Long Output
>>> from devtools import debug
>>> debug(power)

Verbosity

With extra verbosity, which means more details

Level 1

Set verbosity=1

>>> power = calculate_photovoltaic_power_output_series(
>>>     longitude=longitude,
>>>     latitude=latitude,
>>>     elevation=elevation,
>>>     surface_orientation=surface_orientation,
>>>     surface_tilt=surface_tilt,
>>>     timestamps=timestamps,
>>>     timezone=utc_zone,
>>>     linke_turbidity_factor_series=linke_turbidity_factor_series,
>>>     photovoltaic_module=photovoltaic_module,
>>>     spectral_factor_series=spectral_factor_series,
>>>     temperature_series=temperature_series,
>>>     wind_speed_series=wind_speed_series,
>>>     verbose=1,  # or 2 or 3 and so on...
>>> )

and again inspect the power output

Photovoltaic Power -- Longer output
>>> print(f'{power=}')

power=PhotovoltaicPower(diffuse_horizontal_irradiance=DiffuseSkyReflectedHorizontalIrradiance(angle_output_units=None, linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), adjusted_for_atmospheric_refraction=None, adjust_for_atmospheric_refraction=True, solar_incidence_definition=None, solar_incidence_model=None, solar_incidence=None, azimuth_difference=array([], dtype=float64), solar_azimuth=None, solar_timing_algorithm=None, solar_positioning_algorithm='NOAA', location=None, extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), direct_horizontal_irradiance=None, global_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='PVGIS', equation='Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)', algorithm='The estimate of the clear-sky diffuse sky-reflected horizontal irradiance is the product of the normal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.', unit='W/m²', value=array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ]), symbol='🗤⭳', description='Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.', label='🗤⭳ Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance', title='Sky-Diffuse Horizontal', supertitle='Sky-Diffuse Horizontal Irradiance', shortname='Clear-Sky-Diffuse Horizontal', name='Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data', output={}), direct_horizontal_irradiance=DirectHorizontalIrradiance(elevation=214.0, references="Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploitation software. Paris (Les Presses de l'École des Mines).", solar_timing_algorithm=None, solar_positioning_algorithm=None, visible=array([], dtype=float64), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', rayleigh_optical_thickness=None, optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([3.9949794e+00, 4.0587072e+00, 4.8042397e+00, 7.1687570e+00, 1.8926144e+01, 2.8382838e+00, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), adjusted_for_atmospheric_refraction=None, direct_normal_irradiance=DirectNormalIrradiance(optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([3.9949794e+00, 4.0587072e+00, 4.8042397e+00, 7.1687570e+00, 1.8926144e+01, 2.8382838e+00, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), rayleigh_optical_thickness=RayleighThickness(value=array([0.08272015, 0.08225811, 0.07739661, 0.06640826, 0.0414848 , 0.09283191, 0.15083866, 0.15083866, 0.15083866, 0.15083866, 0.15083866], dtype=float32), unit='Unitless'), linke_turbidity_factor_adjusted=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=-0.8661999702453613, unit='unitless', minimum=0, maximum=8), linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output={}), direct_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source='[Source of the direct normal irradiance data]', equation='B0c = G0 exp {-0.8662 TLK m δR(m)}', algorithm='The direct (beam) irradiance normal to the solar beam B0c [W.m-2], attenuated by the cloudless atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.', unit='W/m²', value=array([1053.3276 , 1050.2334 , 1016.25323, 928.5195 , 710.4255 , 1116.2491 , 1402.4257 , 1402.4257 , 1402.4257 , 1402.4257 , 1402.4257 ], dtype=float32), symbol='⇣ ⦜', description='Direct Normal Irradiance data model', label='⇣ ⦜ Simulated Direct Normal Irradiance', title='Normal Irradiance', supertitle='Direct Normal Irradiance', shortname='Normal', name='Direct Normal Irradiance Data', output={}), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([ 13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, -4.976128 , -12.552813 , -20.545034 , -28.611061 , -36.32998 , -43.15196 ], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='Hofierka 2002', equation='Direct Horizontal = Direct Normal * Solar Altitude', algorithm='The direct (beam) irradiance on a horizontal surface is calculated as Direct horizontal irradiance = Direct normal irradiance * sin (solar altitude).', unit='W/m²', value=array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⇣ ⭳', description='Direct horizontal irradiance', label='⇣ ⭳ Simulated Direct Horizontal Irradiance', title='Direct Horizontal Irradiance', supertitle='Clear-Sky Direct Horizontal Irradiance', shortname='Direct Horizontal', name='Direct Horizontal Irradiance Data', output={}), fingerprint=False, references='D.L. King, J.A. Kratochvil, W.E. Boyson, W.I. Bower, Field experience with a new performance characterization procedure for photovoltaic arrays, in: Proceedings of the second World Conference and Exhibition on Photovoltaic Solar Energy Conversion, Vienna, 1998, pp. 1947–1952.. D.L. King, W.E. Boyson, J.A. Kratochvil, Photovoltaic Array Performance Model, SAND2004-3535, Sandia National Laboratories, 2004.', quality=None, solar_radiation_model='Hofierka 2002', solar_constant=1367.0, angle_output_units='radians', wind_speed=WindSpeedSeries(value=0.0, unit='㎧', symbol='🌬', description=None, data_source=None, average_wind_speed=1), temperature=TemperatureSeries(value=14.0, unit='℃', symbol='🌡', description=None, data_source=None, average_air_temperature=14, standard_test_temperature=25), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object), shading_states={}, shading_algorithm='PVGIS', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_incidence_definition='Sun-Vector-to-Surface-Plane', solar_incidence_model='Iqbal', solar_incidence=SolarIncidence(solar_azimuth_origin=None, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm='Iqbal', unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='⭸', description="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", label='Solar incidence angle', title='Solar Incidence', supertitle='Solar Incidence Angle', shortname='Incidence', name='Solar Incidence', description_typical="The 'typical' definition of the solar incidence is the angle between the position of the sun (sun-vector) and the normal to the surface (surface-normal). An alternative definition measures the complementary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in question.", description_complementary="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), definition='Sun-Vector-to-Surface-Plane', definition_typical='Sun-Vector-to-Surface-Normal', definition_complementary='Sun-Vector-to-Surface-Plane', output={}), solar_azimuth_origin='North', solar_azimuth=SolarAzimuth(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', min_degrees=0, min_radians=0, data_source=None, equation=None, algorithm=None, unit='radians', value=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), symbol='\U000f19a5', description='Solar azimuth angle data for a location and period in time', label=None, title='Solar Azimuth', supertitle='Solar Irradiance', shortname='Azimuth', name='Solar Azimuth', max_radians=6.283185307179586, max_degrees=360, definition='Solar azimuth angle', origin='North', output={}), refracted_solar_altitude=array([ 13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, -4.976128 , -12.552813 , -20.545034 , -28.611061 , -36.32998 , -43.15196 ], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), sun_horizon_positions={, , }, sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), optimal=False, optimiser=None, optimization_mode=None, success=None, surface_tilt_threshold=0.0001, surface_tilt=1.0, surface_orientation=1.0, elevation=214.0, location=None, ground_reflected_inclined_before_reflectivity=array([12.243065 , 12.014909 , 9.809613 , 5.935862 , 1.4104733, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_before_reflectivity=array([ 3.8137298, 3.8073993, 3.7315521, 3.5135088, -21.88342 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_before_reflectivity=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_before_reflectivity=array([ 16.056795, 15.822308, 13.541165, 9.449371, -20.472948, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), ground_reflected_inclined_reflectivity_factor=array([0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698], dtype=float32), diffuse_inclined_reflectivity_coefficient=1.685540141770644, diffuse_inclined_reflectivity_factor=array([0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823], dtype=float32), direct_inclined_reflectivity_factor=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), ground_reflected_inclined_reflected_percentage=array([], dtype=float64), diffuse_inclined_reflected_percentage=array([], dtype=float64), direct_inclined_reflected_percentage=array([], dtype=float64), reflected_percentage=array([], dtype=float64), ground_reflected_inclined_reflected=array([-0.48117638, -0.47220993, -0.38553715, -0.23329115, -0.05543447, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_reflected=array([-0.03820467, -0.03814125, -0.03738165, -0.03519726, 0.21922112, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_reflected=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_reflected=array([-0.51938105, -0.5103512 , -0.4229188 , -0.2684884 , 0.16378665, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), extraterrestrial_horizontal_irradiance=ExtraterrestrialHorizontalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source=None, equation='G0 horizontal = G0 normal ⋅ sin(solar altitude)', algorithm=None, unit='W/m²', value=array([336.97455 , 331.49963 , 278.05292 , 180.68074 , 49.036064, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⍖ ⭳', description='Extraterrestrial irradiance', label='⍖ ⭳ Extraterrestrial Horizontal Irradiance', title='Extraterrestrial Horizontal', supertitle='Extraterrestrial Horizontal Irradiance Series', shortname='Extra', name='Extraterrestrial Horizontal Irradiance Data', normal=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), output={}), rear_side_ground_reflected_inclined_irradiance=array([], dtype=float64), rear_side_diffuse_inclined_irradiance=array([], dtype=float64), rear_side_direct_inclined_irradiance=array([], dtype=float64), rear_side_global_inclined_irradiance=array([], dtype=float64), ground_reflected_inclined_irradiance=array([11.7618885, 11.542699 , 9.424076 , 5.702571 , 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_irradiance=array([ 3.775525 , 3.769258 , 3.6941705, 3.4783115, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_irradiance=array([ 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0.], dtype=float32), global_inclined_irradiance=array([15.537414, 15.311956, 13.118246, 9.180882, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), spectral_factor_algorithm=None, spectral_factor=SpectralFactorSeries(value=1.0, unit='unitless', symbol=None, description="The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunlight affects the efficiency of a PV cell, as different wavelengths are converted into electrical current with varying efficiencies depending on the cell's spectral response. This effect is quantified by integrating the product of the spectral response and the light intensity over relevant wavelengths, impacting the cell's short-circuit current and overall power output.", data_source=None, spectral_factor_algorithm=None), spectral_effect_percentage=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), spectral_effect=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), effective_ground_reflected_irradiance=array([4.006049 , 3.8795395, 2.709645 , 0.9584258, 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_diffuse_irradiance=array([ 1.2859278 , 1.2668601 , 1.0621616 , 0.58459663, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_direct_irradiance=array([ 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0.], dtype=float32), effective_global_irradiance=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), system_loss=array([], dtype=float64), system_efficiency=0.86, efficiency_factor=array([0.34059575, 0.33610332, 0.2875237 , 0.16806908, 1. , 1. , 1. , 1. , 1. , 1. , 1. ], dtype=float32), power_model='Huld 2011', peak_power=1.0, peak_power_unit='kWp', technology='CIS:Free standing', photovoltaic_module_type='Mono-Facial', out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, photovoltaic_power_without_system_loss=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), data_source=None, equation='P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²', algorithm=None, unit='W', value=array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⌁', description='Photovoltaic Power based on a variant of King0s model (1998, 2004)', label='⌁ Simulated Photovoltaic Power', title='Power', supertitle='Photovoltaic Power', shortname='Power', name='Photovoltaic Power data model', output=OrderedDict([('Elevation', OrderedDict([('Elevation 🏔', 214.0)])), ('Core', OrderedDict([('Name', 'Photovoltaic Power data model'), ('Title', 'Power'), ('Description', 'Photovoltaic Power based on a variant of King0s model (1998, 2004)'), ('Symbol', '⌁'), ('Power ⌁', array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Unit', 'W'), ('Equation', 'P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²')])), ('Context', {'Solar Position Algorithms': OrderedDict([('Timing ⏲', 'NOAA'), ('Positioning ⯐', 'NOAA'), ('Incidence algorithm ⭸', 'Iqbal'), ('Incidence angle ⭸', 'Sun-Vector-to-Surface-Plane')])}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Surface Position', OrderedDict([('Angle Unit', 'radians'), ('Surface Tilt ⦥', 1.0), ('Surface Orientation ↻', 1.0)]))]))

Level 2 and 3

>>> power_2 = calculate_photovoltaic_power_output_series(
>>>     longitude=longitude,
>>>     latitude=latitude,
>>>     elevation=elevation,
>>>     surface_orientation=surface_orientation,
>>>     surface_tilt=surface_tilt,
>>>     timestamps=timestamps,
>>>     timezone=utc_zone,
>>>     linke_turbidity_factor_series=linke_turbidity_factor_series,
>>>     photovoltaic_module=photovoltaic_module,
>>>     spectral_factor_series=spectral_factor_series,
>>>     temperature_series=temperature_series,
>>>     wind_speed_series=wind_speed_series,
>>>     verbose=2,  # or 2 or 3 and so on...
>>> )
>>> power_3 = calculate_photovoltaic_power_output_series(
>>>     longitude=longitude,
>>>     latitude=latitude,
>>>     elevation=elevation,
>>>     surface_orientation=surface_orientation,
>>>     surface_tilt=surface_tilt,
>>>     timestamps=timestamps,
>>>     timezone=utc_zone,
>>>     linke_turbidity_factor_series=linke_turbidity_factor_series,
>>>     photovoltaic_module=photovoltaic_module,
>>>     spectral_factor_series=spectral_factor_series,
>>>     temperature_series=temperature_series,
>>>     wind_speed_series=wind_speed_series,
>>>     verbose=2,  # or 2 or 3 and so on...
>>> )
Photovoltaic Power -- Even longer outputs
>>> print(f'{power_2=}')
>>> print(f'{power_3=}')

power_2=PhotovoltaicPower(diffuse_horizontal_irradiance=DiffuseSkyReflectedHorizontalIrradiance(angle_output_units=None, linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), adjusted_for_atmospheric_refraction=None, adjust_for_atmospheric_refraction=True, solar_incidence_definition=None, solar_incidence_model=None, solar_incidence=None, azimuth_difference=array([], dtype=float64), solar_azimuth=None, solar_timing_algorithm=None, solar_positioning_algorithm='NOAA', location=None, extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), direct_horizontal_irradiance=None, global_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='PVGIS', equation='Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)', algorithm='The estimate of the clear-sky diffuse sky-reflected horizontal irradiance is the product of the normal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.', unit='W/m²', value=array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ]), symbol='🗤⭳', description='Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.', label='🗤⭳ Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance', title='Sky-Diffuse Horizontal', supertitle='Sky-Diffuse Horizontal Irradiance', shortname='Clear-Sky-Diffuse Horizontal', name='Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data', output={}), direct_horizontal_irradiance=DirectHorizontalIrradiance(elevation=214.0, references="Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploitation software. Paris (Les Presses de l'École des Mines).", solar_timing_algorithm=None, solar_positioning_algorithm=None, visible=array([], dtype=float64), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', rayleigh_optical_thickness=None, optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([3.9949794e+00, 4.0587072e+00, 4.8042397e+00, 7.1687570e+00, 1.8926144e+01, 2.8382838e+00, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), adjusted_for_atmospheric_refraction=None, direct_normal_irradiance=DirectNormalIrradiance(optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([3.9949794e+00, 4.0587072e+00, 4.8042397e+00, 7.1687570e+00, 1.8926144e+01, 2.8382838e+00, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17, 8.3381765e-17], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), rayleigh_optical_thickness=RayleighThickness(value=array([0.08272015, 0.08225811, 0.07739661, 0.06640826, 0.0414848 , 0.09283191, 0.15083866, 0.15083866, 0.15083866, 0.15083866, 0.15083866], dtype=float32), unit='Unitless'), linke_turbidity_factor_adjusted=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=-0.8661999702453613, unit='unitless', minimum=0, maximum=8), linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output={}), direct_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source='[Source of the direct normal irradiance data]', equation='B0c = G0 exp {-0.8662 TLK m δR(m)}', algorithm='The direct (beam) irradiance normal to the solar beam B0c [W.m-2], attenuated by the cloudless atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.', unit='W/m²', value=array([1053.3276 , 1050.2334 , 1016.25323, 928.5195 , 710.4255 , 1116.2491 , 1402.4257 , 1402.4257 , 1402.4257 , 1402.4257 , 1402.4257 ], dtype=float32), symbol='⇣ ⦜', description='Direct Normal Irradiance data model', label='⇣ ⦜ Simulated Direct Normal Irradiance', title='Normal Irradiance', supertitle='Direct Normal Irradiance', shortname='Normal', name='Direct Normal Irradiance Data', output={}), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([ 13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, -4.976128 , -12.552813 , -20.545034 , -28.611061 , -36.32998 , -43.15196 ], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='Hofierka 2002', equation='Direct Horizontal = Direct Normal * Solar Altitude', algorithm='The direct (beam) irradiance on a horizontal surface is calculated as Direct horizontal irradiance = Direct normal irradiance * sin (solar altitude).', unit='W/m²', value=array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⇣ ⭳', description='Direct horizontal irradiance', label='⇣ ⭳ Simulated Direct Horizontal Irradiance', title='Direct Horizontal Irradiance', supertitle='Clear-Sky Direct Horizontal Irradiance', shortname='Direct Horizontal', name='Direct Horizontal Irradiance Data', output={}), fingerprint=False, references='D.L. King, J.A. Kratochvil, W.E. Boyson, W.I. Bower, Field experience with a new performance characterization procedure for photovoltaic arrays, in: Proceedings of the second World Conference and Exhibition on Photovoltaic Solar Energy Conversion, Vienna, 1998, pp. 1947–1952.. D.L. King, W.E. Boyson, J.A. Kratochvil, Photovoltaic Array Performance Model, SAND2004-3535, Sandia National Laboratories, 2004.', quality=None, solar_radiation_model='Hofierka 2002', solar_constant=1367.0, angle_output_units='radians', wind_speed=WindSpeedSeries(value=0.0, unit='㎧', symbol='🌬', description=None, data_source=None, average_wind_speed=1), temperature=TemperatureSeries(value=14.0, unit='℃', symbol='🌡', description=None, data_source=None, average_air_temperature=14, standard_test_temperature=25), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object), shading_states={}, shading_algorithm='PVGIS', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_incidence_definition='Sun-Vector-to-Surface-Plane', solar_incidence_model='Iqbal', solar_incidence=SolarIncidence(solar_azimuth_origin=None, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm='Iqbal', unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='⭸', description="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", label='Solar incidence angle', title='Solar Incidence', supertitle='Solar Incidence Angle', shortname='Incidence', name='Solar Incidence', description_typical="The 'typical' definition of the solar incidence is the angle between the position of the sun (sun-vector) and the normal to the surface (surface-normal). An alternative definition measures the complementary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in question.", description_complementary="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), definition='Sun-Vector-to-Surface-Plane', definition_typical='Sun-Vector-to-Surface-Normal', definition_complementary='Sun-Vector-to-Surface-Plane', output={}), solar_azimuth_origin='North', solar_azimuth=SolarAzimuth(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', min_degrees=0, min_radians=0, data_source=None, equation=None, algorithm=None, unit='radians', value=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), symbol='\U000f19a5', description='Solar azimuth angle data for a location and period in time', label=None, title='Solar Azimuth', supertitle='Solar Irradiance', shortname='Azimuth', name='Solar Azimuth', max_radians=6.283185307179586, max_degrees=360, definition='Solar azimuth angle', origin='North', output={}), refracted_solar_altitude=array([ 13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, -4.976128 , -12.552813 , -20.545034 , -28.611061 , -36.32998 , -43.15196 ], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), sun_horizon_positions={, , }, sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), optimal=False, optimiser=None, optimization_mode=None, success=None, surface_tilt_threshold=0.0001, surface_tilt=1.0, surface_orientation=1.0, elevation=214.0, location=None, ground_reflected_inclined_before_reflectivity=array([12.243065 , 12.014909 , 9.809613 , 5.935862 , 1.4104733, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_before_reflectivity=array([ 3.8137298, 3.8073993, 3.7315521, 3.5135088, -21.88342 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_before_reflectivity=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_before_reflectivity=array([ 16.056795, 15.822308, 13.541165, 9.449371, -20.472948, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), ground_reflected_inclined_reflectivity_factor=array([0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698], dtype=float32), diffuse_inclined_reflectivity_coefficient=1.685540141770644, diffuse_inclined_reflectivity_factor=array([0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823], dtype=float32), direct_inclined_reflectivity_factor=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), ground_reflected_inclined_reflected_percentage=array([], dtype=float64), diffuse_inclined_reflected_percentage=array([], dtype=float64), direct_inclined_reflected_percentage=array([], dtype=float64), reflected_percentage=array([], dtype=float64), ground_reflected_inclined_reflected=array([-0.48117638, -0.47220993, -0.38553715, -0.23329115, -0.05543447, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_reflected=array([-0.03820467, -0.03814125, -0.03738165, -0.03519726, 0.21922112, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_reflected=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_reflected=array([-0.51938105, -0.5103512 , -0.4229188 , -0.2684884 , 0.16378665, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), extraterrestrial_horizontal_irradiance=ExtraterrestrialHorizontalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source=None, equation='G0 horizontal = G0 normal ⋅ sin(solar altitude)', algorithm=None, unit='W/m²', value=array([336.97455 , 331.49963 , 278.05292 , 180.68074 , 49.036064, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⍖ ⭳', description='Extraterrestrial irradiance', label='⍖ ⭳ Extraterrestrial Horizontal Irradiance', title='Extraterrestrial Horizontal', supertitle='Extraterrestrial Horizontal Irradiance Series', shortname='Extra', name='Extraterrestrial Horizontal Irradiance Data', normal=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), output={}), rear_side_ground_reflected_inclined_irradiance=array([], dtype=float64), rear_side_diffuse_inclined_irradiance=array([], dtype=float64), rear_side_direct_inclined_irradiance=array([], dtype=float64), rear_side_global_inclined_irradiance=array([], dtype=float64), ground_reflected_inclined_irradiance=array([11.7618885, 11.542699 , 9.424076 , 5.702571 , 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_irradiance=array([ 3.775525 , 3.769258 , 3.6941705, 3.4783115, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_irradiance=array([ 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0.], dtype=float32), global_inclined_irradiance=array([15.537414, 15.311956, 13.118246, 9.180882, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), spectral_factor_algorithm=None, spectral_factor=SpectralFactorSeries(value=1.0, unit='unitless', symbol=None, description="The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunlight affects the efficiency of a PV cell, as different wavelengths are converted into electrical current with varying efficiencies depending on the cell's spectral response. This effect is quantified by integrating the product of the spectral response and the light intensity over relevant wavelengths, impacting the cell's short-circuit current and overall power output.", data_source=None, spectral_factor_algorithm=None), spectral_effect_percentage=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), spectral_effect=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), effective_ground_reflected_irradiance=array([4.006049 , 3.8795395, 2.709645 , 0.9584258, 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_diffuse_irradiance=array([ 1.2859278 , 1.2668601 , 1.0621616 , 0.58459663, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_direct_irradiance=array([ 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0.], dtype=float32), effective_global_irradiance=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), system_loss=array([], dtype=float64), system_efficiency=0.86, efficiency_factor=array([0.34059575, 0.33610332, 0.2875237 , 0.16806908, 1. , 1. , 1. , 1. , 1. , 1. , 1. ], dtype=float32), power_model='Huld 2011', peak_power=1.0, peak_power_unit='kWp', technology='CIS:Free standing', photovoltaic_module_type='Mono-Facial', out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, photovoltaic_power_without_system_loss=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), data_source=None, equation='P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²', algorithm=None, unit='W', value=array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⌁', description='Photovoltaic Power based on a variant of King0s model (1998, 2004)', label='⌁ Simulated Photovoltaic Power', title='Power', supertitle='Photovoltaic Power', shortname='Power', name='Photovoltaic Power data model', output=OrderedDict([('Elevation', OrderedDict([('Elevation 🏔', 214.0)])), ('Core', OrderedDict([('Name', 'Photovoltaic Power data model'), ('Title', 'Power'), ('Description', 'Photovoltaic Power based on a variant of King0s model (1998, 2004)'), ('Symbol', '⌁'), ('Power ⌁', array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Unit', 'W'), ('Equation', 'P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²')])), ('Context', {'Photovoltaic Power without loss': OrderedDict([('Power ⌁ without Loss', array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32))]), 'Solar Position Algorithms': OrderedDict([('Timing ⏲', 'NOAA'), ('Positioning ⯐', 'NOAA'), ('Incidence algorithm ⭸', 'Iqbal'), ('Incidence angle ⭸', 'Sun-Vector-to-Surface-Plane')]), 'Horizon & Shading': OrderedDict([('Sun-Horizon ⛰', array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object)), ('Shading state 🮞', array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object)), ('In-shade 🮞', array([False, False, False, False, False, True, True, True, True, True, True])), ('Horizon ⛰', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Visible 👁', array([ True, True, True, True, True, False, False, False, False, False, False]))]), 'Horizon & Shading Metadata': OrderedDict([('Sun-Horizon Positions ⛰', {, , }), ('Shading 🮞', 'PVGIS'), ('Shading states 🮞', {})])}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Surface Position', OrderedDict([('Angle Unit', 'radians'), ('Surface Tilt ⦥', 1.0), ('Surface Orientation ↻', 1.0)]))])) power_3=PhotovoltaicPower(diffuse_horizontal_irradiance=DiffuseSkyReflectedHorizontalIrradiance(angle_output_units=None, linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), adjusted_for_atmospheric_refraction=None, adjust_for_atmospheric_refraction=True, solar_incidence_definition=None, solar_incidence_model=None, solar_incidence=None, azimuth_difference=array([], dtype=float64), solar_azimuth=None, solar_timing_algorithm=None, solar_positioning_algorithm='NOAA', location=None, extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), direct_horizontal_irradiance=None, global_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='PVGIS', equation='Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)', algorithm='The estimate of the clear-sky diffuse sky-reflected horizontal irradiance is the product of the normal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.', unit='W/m²', value=array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ]), symbol='🗤⭳', description='Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.', label='🗤⭳ Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance', title='Sky-Diffuse Horizontal', supertitle='Sky-Diffuse Horizontal Irradiance', shortname='Clear-Sky-Diffuse Horizontal', name='Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data', output=OrderedDict([('Diffuse Sky-Reflected Horizontal Irradiance', OrderedDict([('Name', 'Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data'), ('Title', 'Sky-Diffuse Horizontal'), ('Description', 'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.'), ('Symbol', '🗤⭳'), ('Clear-Sky-Diffuse Horizontal 🗤⭳', array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ])), ('Unit', 'W/m²'), ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)')])), ('Core', {}), ('Context', {'Solar Position Algorithms': OrderedDict([('Positioning ⯐', 'NOAA'), ('Timing ⏲', None)])}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Angular Unit', OrderedDict([('Angle Unit', None)]))])), direct_horizontal_irradiance=DirectHorizontalIrradiance(elevation=214.0, references="Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploitation software. Paris (Les Presses de l'École des Mines).", solar_timing_algorithm=None, solar_positioning_algorithm=None, visible=array([], dtype=float64), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', rayleigh_optical_thickness=None, optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([ 3.9949794, 4.058707 , 4.8042397, 7.168757 , 18.926144 , nan, nan, nan, nan, nan, nan], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), adjusted_for_atmospheric_refraction=None, direct_normal_irradiance=DirectNormalIrradiance(optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([ 3.9949794, 4.058707 , 4.8042397, 7.168757 , 18.926144 , nan, nan, nan, nan, nan, nan], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), rayleigh_optical_thickness=RayleighThickness(value=array([0.08272015, 0.08225811, 0.07739661, 0.06640826, 0.0414848 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), unit='Unitless'), linke_turbidity_factor_adjusted=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=-0.8661999702453613, unit='unitless', minimum=0, maximum=8), linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output={}), direct_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source='[Source of the direct normal irradiance data]', equation='B0c = G0 exp {-0.8662 TLK m δR(m)}', algorithm='The direct (beam) irradiance normal to the solar beam B0c [W.m-2], attenuated by the cloudless atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.', unit='W/m²', value=array([1053.3276 , 1050.2334 , 1016.25323, 928.5195 , 710.4255 , nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⇣ ⦜', description='Direct Normal Irradiance data model', label='⇣ ⦜ Simulated Direct Normal Irradiance', title='Normal Irradiance', supertitle='Direct Normal Irradiance', shortname='Normal', name='Direct Normal Irradiance Data', output={}), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, nan, nan, nan, nan, nan, nan], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='Hofierka 2002', equation='Direct Horizontal = Direct Normal * Solar Altitude', algorithm='The direct (beam) irradiance on a horizontal surface is calculated as Direct horizontal irradiance = Direct normal irradiance * sin (solar altitude).', unit='W/m²', value=array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⇣ ⭳', description='Direct horizontal irradiance', label='⇣ ⭳ Simulated Direct Horizontal Irradiance', title='Direct Horizontal Irradiance', supertitle='Clear-Sky Direct Horizontal Irradiance', shortname='Direct Horizontal', name='Direct Horizontal Irradiance Data', output=OrderedDict([('Core', {}), ('Context', {'Shading Metadata': OrderedDict([('Shading 🮞', 'PVGIS')]), 'Shading': OrderedDict([('In-shade 🮞', array([False, False, False, False, False, True, True, True, True, True, True]))]), 'Solar Position Algorithms': OrderedDict([('Positioning ⯐', None), ('Timing ⏲', None)])}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Direct Horizontal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Direct Horizontal ⇣ ⭳', array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Symbol', '⇣ ⭳'), ('Description', 'Direct horizontal irradiance'), ('Title', 'Direct Horizontal Irradiance'), ('Name', 'Direct Horizontal Irradiance Data')])), ('Atmospheric Properties', {}), ('Elevation', OrderedDict([('Elevation 🏔', 214.0)]))])), fingerprint=False, references='D.L. King, J.A. Kratochvil, W.E. Boyson, W.I. Bower, Field experience with a new performance characterization procedure for photovoltaic arrays, in: Proceedings of the second World Conference and Exhibition on Photovoltaic Solar Energy Conversion, Vienna, 1998, pp. 1947–1952.. D.L. King, W.E. Boyson, J.A. Kratochvil, Photovoltaic Array Performance Model, SAND2004-3535, Sandia National Laboratories, 2004.', quality=None, solar_radiation_model='Hofierka 2002', solar_constant=1367.0, angle_output_units='radians', wind_speed=WindSpeedSeries(value=0.0, unit='㎧', symbol='🌬', description=None, data_source=None, average_wind_speed=1), temperature=TemperatureSeries(value=14.0, unit='℃', symbol='🌡', description=None, data_source=None, average_air_temperature=14, standard_test_temperature=25), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object), shading_states={}, shading_algorithm='PVGIS', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_incidence_definition='Sun-Vector-to-Surface-Plane', solar_incidence_model='Iqbal', solar_incidence=SolarIncidence(solar_azimuth_origin=None, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm='Iqbal', unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='⭸', description="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", label='Solar incidence angle', title='Solar Incidence', supertitle='Solar Incidence Angle', shortname='Incidence', name='Solar Incidence', description_typical="The 'typical' definition of the solar incidence is the angle between the position of the sun (sun-vector) and the normal to the surface (surface-normal). An alternative definition measures the complementary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in question.", description_complementary="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), definition='Sun-Vector-to-Surface-Plane', definition_typical='Sun-Vector-to-Surface-Normal', definition_complementary='Sun-Vector-to-Surface-Plane', output={}), solar_azimuth_origin='North', solar_azimuth=SolarAzimuth(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', min_degrees=0, min_radians=0, data_source=None, equation=None, algorithm=None, unit='radians', value=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), symbol='\U000f19a5', description='Solar azimuth angle data for a location and period in time', label=None, title='Solar Azimuth', supertitle='Solar Irradiance', shortname='Azimuth', name='Solar Azimuth', max_radians=6.283185307179586, max_degrees=360, definition='Solar azimuth angle', origin='North', output={}), refracted_solar_altitude=array([13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, nan, nan, nan, nan, nan, nan], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), sun_horizon_positions={, , }, sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', None, None, None, None, None, None], dtype=object), optimal=False, optimiser=None, optimization_mode=None, success=None, surface_tilt_threshold=0.0001, surface_tilt=1.0, surface_orientation=1.0, elevation=214.0, location=None, ground_reflected_inclined_before_reflectivity=array([12.243065 , 12.014909 , 9.809613 , 5.935862 , 1.4104733, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_before_reflectivity=array([ 3.8137298, 3.8073993, 3.7315521, 3.5135088, -21.88342 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_before_reflectivity=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_before_reflectivity=array([ 16.056795, 15.822308, 13.541165, 9.449371, -20.472948, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), ground_reflected_inclined_reflectivity_factor=array([0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698], dtype=float32), diffuse_inclined_reflectivity_coefficient=1.685540141770644, diffuse_inclined_reflectivity_factor=array([0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823], dtype=float32), direct_inclined_reflectivity_factor=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), ground_reflected_inclined_reflected_percentage=array([], dtype=float64), diffuse_inclined_reflected_percentage=array([], dtype=float64), direct_inclined_reflected_percentage=array([], dtype=float64), reflected_percentage=array([], dtype=float64), ground_reflected_inclined_reflected=array([-0.48117638, -0.47220993, -0.38553715, -0.23329115, -0.05543447, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_reflected=array([-0.03820467, -0.03814125, -0.03738165, -0.03519726, 0.21922112, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_reflected=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_reflected=array([-0.51938105, -0.5103512 , -0.4229188 , -0.2684884 , 0.16378665, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), extraterrestrial_horizontal_irradiance=ExtraterrestrialHorizontalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source=None, equation='G0 horizontal = G0 normal ⋅ sin(solar altitude)', algorithm=None, unit='W/m²', value=array([336.97455 , 331.49963 , 278.05292 , 180.68074 , 49.036064, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⍖ ⭳', description='Extraterrestrial irradiance', label='⍖ ⭳ Extraterrestrial Horizontal Irradiance', title='Extraterrestrial Horizontal', supertitle='Extraterrestrial Horizontal Irradiance Series', shortname='Extra', name='Extraterrestrial Horizontal Irradiance Data', normal=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), output={}), rear_side_ground_reflected_inclined_irradiance=array([], dtype=float64), rear_side_diffuse_inclined_irradiance=array([], dtype=float64), rear_side_direct_inclined_irradiance=array([], dtype=float64), rear_side_global_inclined_irradiance=array([], dtype=float64), ground_reflected_inclined_irradiance=array([11.7618885, 11.542699 , 9.424076 , 5.702571 , 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_irradiance=array([ 3.775525 , 3.769258 , 3.6941705, 3.4783115, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_irradiance=array([ 0., 0., 0., 0., 0., nan, nan, nan, nan, nan, nan], dtype=float32), global_inclined_irradiance=array([15.537414, 15.311956, 13.118246, 9.180882, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), spectral_factor_algorithm=None, spectral_factor=SpectralFactorSeries(value=1.0, unit='unitless', symbol=None, description="The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunlight affects the efficiency of a PV cell, as different wavelengths are converted into electrical current with varying efficiencies depending on the cell's spectral response. This effect is quantified by integrating the product of the spectral response and the light intensity over relevant wavelengths, impacting the cell's short-circuit current and overall power output.", data_source=None, spectral_factor_algorithm=None), spectral_effect_percentage=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), spectral_effect=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), effective_ground_reflected_irradiance=array([4.006049 , 3.8795395, 2.709645 , 0.9584258, 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_diffuse_irradiance=array([ 1.2859278 , 1.2668601 , 1.0621616 , 0.58459663, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_direct_irradiance=array([ 0., 0., 0., 0., 0., nan, nan, nan, nan, nan, nan], dtype=float32), effective_global_irradiance=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), system_loss=array([], dtype=float64), system_efficiency=0.86, efficiency_factor=array([0.34059575, 0.33610332, 0.2875237 , 0.16806908, 1. , 1. , 1. , 1. , 1. , 1. , 1. ], dtype=float32), power_model='Huld 2011', peak_power=1.0, peak_power_unit='kWp', technology='CIS:Free standing', photovoltaic_module_type='Mono-Facial', out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, photovoltaic_power_without_system_loss=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), data_source=None, equation='P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²', algorithm=None, unit='W', value=array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⌁', description='Photovoltaic Power based on a variant of King0s model (1998, 2004)', label='⌁ Simulated Photovoltaic Power', title='Power', supertitle='Photovoltaic Power', shortname='Power', name='Photovoltaic Power data model', output=OrderedDict([('Elevation', OrderedDict([('Elevation 🏔', 214.0)])), ('Core', OrderedDict([('Name', 'Photovoltaic Power data model'), ('Title', 'Power'), ('Description', 'Photovoltaic Power based on a variant of King0s model (1998, 2004)'), ('Symbol', '⌁'), ('Power ⌁', array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Unit', 'W'), ('Equation', 'P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²')])), ('Context', {'Photovoltaic Power without loss': OrderedDict([('Power ⌁ without Loss', array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32))]), 'Solar Position Algorithms': OrderedDict([('Timing ⏲', 'NOAA'), ('Positioning ⯐', 'NOAA'), ('Incidence algorithm ⭸', 'Iqbal'), ('Incidence angle ⭸', 'Sun-Vector-to-Surface-Plane')]), 'Horizon & Shading': OrderedDict([('Sun-Horizon ⛰', array(['Above', 'Above', 'Above', 'Above', 'Low angle', None, None, None, None, None, None], dtype=object)), ('Shading state 🮞', array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object)), ('In-shade 🮞', array([False, False, False, False, False, True, True, True, True, True, True])), ('Horizon ⛰', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Visible 👁', array([ True, True, True, True, True, False, False, False, False, False, False]))]), 'Horizon & Shading Metadata': OrderedDict([('Sun-Horizon Positions ⛰', {, , }), ('Shading 🮞', 'PVGIS'), ('Shading states 🮞', {})])}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Surface Position', OrderedDict([('Angle Unit', 'radians'), ('Surface Tilt ⦥', 1.0), ('Surface Orientation ↻', 1.0)]))]))

Verbosity

You might want to check also the page about the verbosity :

Verbosity

All in one

The easier way to replicate the above examples is an all-in-one code-block :

>>> from pvgisprototype.api.datetime.datetimeindex import generate_datetime_series
>>> from zoneinfo import ZoneInfo
>>> from pvgisprototype import LinkeTurbidityFactor
>>> from pvgisprototype import TemperatureSeries, WindSpeedSeries
>>> from pvgisprototype import SpectralFactorSeries
>>> from pvgisprototype.algorithms.huld.photovoltaic_module import PhotovoltaicModuleModel
>>> from pvgisprototype.api.power.broadband import calculate_photovoltaic_power_output_series
>>> latitude = 1
>>> longitude = 1
>>> elevation = 214
>>> surface_orientation = 1
>>> surface_tilt = 1
>>> timestamps = generate_datetime_series(start_time="2010-01-27 08:00:00", end_time="2010-01-27 18:00:00", frequency="h")
>>> utc_zone = ZoneInfo("UTC")
>>> linke_turbidity_factor_series = LinkeTurbidityFactor(value=1)
>>> photovoltaic_module = PhotovoltaicModuleModel.CIS_FREE_STANDING
>>> temperature_series = TemperatureSeries(value=14)
>>> wind_speed_series = WindSpeedSeries(value=0)
>>> spectral_factor_series=SpectralFactorSeries(value=1)
>>> power = calculate_photovoltaic_power_output_series(
>>>     longitude=longitude,
>>>     latitude=latitude,
>>>     elevation=elevation,
>>>     surface_orientation=surface_orientation,
>>>     surface_tilt=surface_tilt,
>>>     timestamps=timestamps,
>>>     timezone=utc_zone,
>>>     linke_turbidity_factor_series=linke_turbidity_factor_series,
>>>     photovoltaic_module=photovoltaic_module,
>>>     spectral_factor_series=spectral_factor_series,
>>>     temperature_series=temperature_series,
>>>     wind_speed_series=wind_speed_series,
>>> )
Photovoltaic Power -- Very long output !
>>> print(f'{power=}')

power=PhotovoltaicPower(diffuse_horizontal_irradiance=DiffuseSkyReflectedHorizontalIrradiance(angle_output_units=None, linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), adjusted_for_atmospheric_refraction=None, adjust_for_atmospheric_refraction=True, solar_incidence_definition=None, solar_incidence_model=None, solar_incidence=None, azimuth_difference=array([], dtype=float64), solar_azimuth=None, solar_timing_algorithm=None, solar_positioning_algorithm='NOAA', location=None, extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), direct_horizontal_irradiance=None, global_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='PVGIS', equation='Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)', algorithm='The estimate of the clear-sky diffuse sky-reflected horizontal irradiance is the product of the normal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.', unit='W/m²', value=array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ]), symbol='🗤⭳', description='Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.', label='🗤⭳ Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance', title='Sky-Diffuse Horizontal', supertitle='Sky-Diffuse Horizontal Irradiance', shortname='Clear-Sky-Diffuse Horizontal', name='Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data', output=OrderedDict([('Diffuse Sky-Reflected Horizontal Irradiance', OrderedDict([('Name', 'Clear-Sky Diffuse Sky-Reflected Horizontal Irradiance Data'), ('Title', 'Sky-Diffuse Horizontal'), ('Description', 'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit area at a given moment, expressed in watts per square meter (W/m²). The values concern a specific location and a moment or period in time.'), ('Symbol', '🗤⭳'), ('Clear-Sky-Diffuse Horizontal 🗤⭳', array([13.23528183, 13.11557816, 11.90453171, 9.50004449, 5.84247296, 0. , 0. , 0. , 0. , 0. , 0. ])), ('Unit', 'W/m²'), ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)')])), ('Core', {}), ('Context', {}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Angular Unit', {})])), direct_horizontal_irradiance=DirectHorizontalIrradiance(elevation=214.0, references="Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploitation software. Paris (Les Presses de l'École des Mines).", solar_timing_algorithm=None, solar_positioning_algorithm=None, visible=array([], dtype=float64), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', rayleigh_optical_thickness=None, optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([ 3.9949794, 4.058707 , 4.8042397, 7.168757 , 18.926144 , nan, nan, nan, nan, nan, nan], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), adjusted_for_atmospheric_refraction=None, direct_normal_irradiance=DirectNormalIrradiance(optical_air_mass=OpticalAirMass(name='Relative optical air mass', title='Optical Air Mass', description='The relative optical air mass', value=array([ 3.9949794, 4.058707 , 4.8042397, 7.168757 , 18.926144 , nan, nan, nan, nan, nan, nan], dtype=float32), unit='Unitless', algorithm=None, equation='m = (p/p0)/(sin h0 ref + 0.50572 (h0 ref + 6.07995)-1.6364)', references='Kasten, F., Young, A.T., 1989, Revised optical air mass tables and approximation formula. Applied Optics, 28: 4735-4738.'), rayleigh_optical_thickness=RayleighThickness(value=array([0.08272015, 0.08225811, 0.07739661, 0.06640826, 0.0414848 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), unit='Unitless'), linke_turbidity_factor_adjusted=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=-0.8661999702453613, unit='unitless', minimum=0, maximum=8), linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output={}), direct_horizontal_irradiance=array([], dtype=float64), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source='[Source of the direct normal irradiance data]', equation='B0c = G0 exp {-0.8662 TLK m δR(m)}', algorithm='The direct (beam) irradiance normal to the solar beam B0c [W.m-2], attenuated by the cloudless atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.', unit='W/m²', value=array([1053.3276 , 1050.2334 , 1016.25323, 928.5195 , 710.4255 , nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⇣ ⦜', description='Direct Normal Irradiance data model', label='⇣ ⦜ Simulated Direct Normal Irradiance', title='Normal Irradiance', supertitle='Direct Normal Irradiance', shortname='Normal', name='Direct Normal Irradiance Data', output={}), fingerprint=False, quality=None, solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, nan, nan, nan, nan, nan, nan], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source='Hofierka 2002', equation='Direct Horizontal = Direct Normal * Solar Altitude', algorithm='The direct (beam) irradiance on a horizontal surface is calculated as Direct horizontal irradiance = Direct normal irradiance * sin (solar altitude).', unit='W/m²', value=array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⇣ ⭳', description='Direct horizontal irradiance', label='⇣ ⭳ Simulated Direct Horizontal Irradiance', title='Direct Horizontal Irradiance', supertitle='Clear-Sky Direct Horizontal Irradiance', shortname='Direct Horizontal', name='Direct Horizontal Irradiance Data', output=OrderedDict([('Core', {}), ('Context', {}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Direct Horizontal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Direct Horizontal ⇣ ⭳', array([253.09335 , 248.24986 , 201.48816 , 119.6253 , 24.840155, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Symbol', '⇣ ⭳'), ('Description', 'Direct horizontal irradiance'), ('Title', 'Direct Horizontal Irradiance'), ('Name', 'Direct Horizontal Irradiance Data')])), ('Atmospheric Properties', {}), ('Elevation', {})])), fingerprint=False, references='D.L. King, J.A. Kratochvil, W.E. Boyson, W.I. Bower, Field experience with a new performance characterization procedure for photovoltaic arrays, in: Proceedings of the second World Conference and Exhibition on Photovoltaic Solar Energy Conversion, Vienna, 1998, pp. 1947–1952.. D.L. King, W.E. Boyson, J.A. Kratochvil, Photovoltaic Array Performance Model, SAND2004-3535, Sandia National Laboratories, 2004.', quality=None, solar_radiation_model='Hofierka 2002', solar_constant=1367.0, angle_output_units='radians', wind_speed=WindSpeedSeries(value=0.0, unit='㎧', symbol='🌬', description=None, data_source=None, average_wind_speed=1), temperature=TemperatureSeries(value=14.0, unit='℃', symbol='🌡', description=None, data_source=None, average_air_temperature=14, standard_test_temperature=25), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=LocationShading(horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), visible=array([ True, True, True, True, True, False, False, False, False, False, False]), surface_in_shade=None, shading_state=array([], dtype=float64), shading_states='all', shading_algorithm='PVGIS', solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_azimuth=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), solar_altitude=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='Unitless', value=array([False, False, False, False, False, True, True, True, True, True, True]), symbol='🮞', description=None, label='Location Shading', title='Location Shading', supertitle='Location Shading', shortname='Shading', name='Location Shading', output={}), shading_state=array(['Sunlit', 'Sunlit', 'Sunlit', 'Sunlit', 'Potentially-sunlit', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade', 'In-shade'], dtype=object), shading_states={}, shading_algorithm='PVGIS', eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, solar_incidence_definition='Sun-Vector-to-Surface-Plane', solar_incidence_model='Iqbal', solar_incidence=SolarIncidence(solar_azimuth_origin=None, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm='Iqbal', unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='⭸', description="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", label='Solar incidence angle', title='Solar Incidence', supertitle='Solar Incidence Angle', shortname='Incidence', name='Solar Incidence', description_typical="The 'typical' definition of the solar incidence is the angle between the position of the sun (sun-vector) and the normal to the surface (surface-normal). An alternative definition measures the complementary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in question.", description_complementary="The 'complementary' definition of the incidence incidence is the angle between the position of the sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.", sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', 'Below', 'Below', 'Below', 'Below', 'Below', 'Below'], dtype=object), definition='Sun-Vector-to-Surface-Plane', definition_typical='Sun-Vector-to-Surface-Normal', definition_complementary='Sun-Vector-to-Surface-Plane', output={}), solar_azimuth_origin='North', solar_azimuth=SolarAzimuth(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', min_degrees=0, min_radians=0, data_source=None, equation=None, algorithm=None, unit='radians', value=array([3.0674548, 3.285377 , 3.5437274, 3.784806 , 4.0082417, 4.235689 , 4.449775 , 4.664314 , 4.889352 , 5.1368117, 5.420652 ], dtype=float32), symbol='\U000f19a5', description='Solar azimuth angle data for a location and period in time', label=None, title='Solar Azimuth', supertitle='Solar Irradiance', shortname='Azimuth', name='Solar Azimuth', max_radians=6.283185307179586, max_degrees=360, definition='Solar azimuth angle', origin='North', output={}), refracted_solar_altitude=array([13.903087 , 13.672772 , 11.4355955, 7.4022927, 2.0039055, nan, nan, nan, nan, nan, nan], dtype=float32), solar_altitude=SolarAltitude(out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', data_source=None, equation=None, algorithm=None, unit='radians', value=array([0.24265409, 0.23863435, 0.19958818, 0.12919354, 0.03497231, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⦩', description='Solar altitude data for a location and period in time', label=None, title='Solar Altitude', supertitle='Solar Irradiance', shortname='Altitude', name='Solar Altitude', refracted_value=array([], dtype=float64), min_radians=-1.5707963267948966, max_radians=1.5707963267948966, low_angle_threshold_radians=0.04, min_degrees=-90, max_degrees=90, low_angle_threshold_degrees=2.291831180523293, output={}), adjusted_for_atmospheric_refraction=True, solar_timing_algorithm='NOAA', solar_positioning_algorithm='NOAA', linke_turbidity_factor=LinkeTurbidityFactor(name=None, title='Linke Turbidity', description='The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by solid and liquid particles under cloudless sky conditions. It indicates the optical density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean dry air masses that would result in the same extinction then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calculation and subsequent averaging leads to a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest values in winter, highest in summer), the values of turbidity factor always differ from place to place in a similar degree of magnitude and these differences are also correlated with the terrain elevation. It increases with an intensity of industrialisation and urbanisation. The values of Linke turbidity for different landscapes or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).', symbol='⋅', value=1.0, unit='unitless', minimum=0, maximum=8), horizon_height=HorizonHeight(out_of_range_index=array([], dtype=float64), out_of_range=array([], dtype=float64), data_source=None, equation=None, algorithm=None, unit='radians', value=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), symbol='🏔', description='The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.', label='Horizon Height', title='Horizon Height', supertitle='Horizon Height data', shortname='Horizon', name='Horizon Height', min_radians=-1.5707963267948966, max_radians=1.5707963267948966, min_degrees=-90, max_degrees=90, output=OrderedDict([('Horizon Height', OrderedDict([('Name', 'Horizon Height'), ('Title', 'Horizon Height'), ('Description', 'The horizon height angle from of a geographic point of observation, a solar surface in the context of solar positioning.'), ('Symbol', '🏔'), ('Horizon 🏔', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)), ('Unit', 'radians')])), ('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {})])), sun_horizon_positions={, , }, sun_horizon_position=array(['Above', 'Above', 'Above', 'Above', 'Low angle', None, None, None, None, None, None], dtype=object), optimal=False, optimiser=None, optimization_mode=None, success=None, surface_tilt_threshold=0.0001, surface_tilt=1.0, surface_orientation=1.0, elevation=214.0, location=None, ground_reflected_inclined_before_reflectivity=array([12.243065 , 12.014909 , 9.809613 , 5.935862 , 1.4104733, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_before_reflectivity=array([ 3.8137298, 3.8073993, 3.7315521, 3.5135088, -21.88342 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_before_reflectivity=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_before_reflectivity=array([ 16.056795, 15.822308, 13.541165, 9.449371, -20.472948, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), ground_reflected_inclined_reflectivity_factor=array([0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698, 0.960698], dtype=float32), diffuse_inclined_reflectivity_coefficient=1.685540141770644, diffuse_inclined_reflectivity_factor=array([0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823, 0.9899823], dtype=float32), direct_inclined_reflectivity_factor=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), ground_reflected_inclined_reflected_percentage=array([], dtype=float64), diffuse_inclined_reflected_percentage=array([], dtype=float64), direct_inclined_reflected_percentage=array([], dtype=float64), reflected_percentage=array([], dtype=float64), ground_reflected_inclined_reflected=array([-0.48117638, -0.47220993, -0.38553715, -0.23329115, -0.05543447, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_reflected=array([-0.03820467, -0.03814125, -0.03738165, -0.03519726, 0.21922112, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_reflected=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), global_inclined_reflected=array([-0.51938105, -0.5103512 , -0.4229188 , -0.2684884 , 0.16378665, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), extraterrestrial_normal_irradiance=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), extraterrestrial_horizontal_irradiance=ExtraterrestrialHorizontalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1367.0, data_source=None, equation='G0 horizontal = G0 normal ⋅ sin(solar altitude)', algorithm=None, unit='W/m²', value=array([336.97455 , 331.49963 , 278.05292 , 180.68074 , 49.036064, nan, nan, nan, nan, nan, nan], dtype=float32), symbol='⍖ ⭳', description='Extraterrestrial irradiance', label='⍖ ⭳ Extraterrestrial Horizontal Irradiance', title='Extraterrestrial Horizontal', supertitle='Extraterrestrial Horizontal Irradiance Series', shortname='Extra', name='Extraterrestrial Horizontal Irradiance Data', normal=ExtraterrestrialNormalIrradiance(fingerprint=False, quality='Not validated!', solar_radiation_model='Hofierka 2002', refracted_solar_altitude=array([], dtype=float64), solar_altitude=None, eccentricity_amplitude=0.03344, eccentricity_phase_offset=0.048869, out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, solar_constant=1360.8, data_source=None, equation='Extraterrestrial Normal Irradiance = Solar Constant * Eccentricity Correction Factor', algorithm='The beam irradiance (solar energy) outside the atmosphere and at mean solar distance, is roughly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly eccentric hence its distance to the sun varies slightly across the year. In order to take into account the varying solar distance, the calculation of the extraterrestrial irradiance normal to the solar beam, considers an "eccentricity correction factor" ε.', unit='W/m²', value=array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32), symbol='⍖ ⦜', description='Extraterrestrial irradiance', label='⍖ ⦜ Extraterrestrial Normal Irradiance', title='Extraterrestrial Normal Irradiance', supertitle='Simulated Extraterrestrial Normal Irradiance Series', shortname='Extra', name='Extraterrestrial Normal Irradiance', day_of_year=array([27., 27., 27., 27., 27., 27., 27., 27., 27., 27., 27.], dtype=float32), day_angle=array([0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358, 0.46478358], dtype=float32), distance_correction_factor=array([1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891, 1.0305891], dtype=float32), output=OrderedDict([('Fingerprint', {}), ('References', {}), ('Sources', {}), ('Out-of-range', {}), ('Metadata', {}), ('Context', {}), ('Core', {}), ('Extraterrestrial Normal Irradiance', OrderedDict([('Unit', 'W/m²'), ('Extra ⍖ ⦜', array([1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257, 1402.4257], dtype=float32)), ('Symbol', '⍖ ⦜'), ('Description', 'Extraterrestrial irradiance'), ('Title', 'Extraterrestrial Normal Irradiance'), ('Name', 'Extraterrestrial Normal Irradiance')])), ('Solar Radiation Model', {})])), output={}), rear_side_ground_reflected_inclined_irradiance=array([], dtype=float64), rear_side_diffuse_inclined_irradiance=array([], dtype=float64), rear_side_direct_inclined_irradiance=array([], dtype=float64), rear_side_global_inclined_irradiance=array([], dtype=float64), ground_reflected_inclined_irradiance=array([11.7618885, 11.542699 , 9.424076 , 5.702571 , 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), diffuse_inclined_irradiance=array([ 3.775525 , 3.769258 , 3.6941705, 3.4783115, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), direct_inclined_irradiance=array([ 0., 0., 0., 0., 0., nan, nan, nan, nan, nan, nan], dtype=float32), global_inclined_irradiance=array([15.537414, 15.311956, 13.118246, 9.180882, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), spectral_factor_algorithm=None, spectral_factor=SpectralFactorSeries(value=1.0, unit='unitless', symbol=None, description="The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunlight affects the efficiency of a PV cell, as different wavelengths are converted into electrical current with varying efficiencies depending on the cell's spectral response. This effect is quantified by integrating the product of the spectral response and the light intensity over relevant wavelengths, impacting the cell's short-circuit current and overall power output.", data_source=None, spectral_factor_algorithm=None), spectral_effect_percentage=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), spectral_effect=array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32), effective_ground_reflected_irradiance=array([4.006049 , 3.8795395, 2.709645 , 0.9584258, 1.3550389, 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_diffuse_irradiance=array([ 1.2859278 , 1.2668601 , 1.0621616 , 0.58459663, -21.6642 , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), effective_direct_irradiance=array([ 0., 0., 0., 0., 0., nan, nan, nan, nan, nan, nan], dtype=float32), effective_global_irradiance=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), system_loss=array([], dtype=float64), system_efficiency=0.86, efficiency_factor=array([0.34059575, 0.33610332, 0.2875237 , 0.16806908, 1. , 1. , 1. , 1. , 1. , 1. , 1. ], dtype=float32), power_model='Huld 2011', peak_power=1.0, peak_power_unit='kWp', technology='CIS:Free standing', photovoltaic_module_type='Mono-Facial', out_of_range_index=array([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]), out_of_range=array([False, False, False, False, False, False, False, False, False, False, False]), upper_physically_possible_limit=2000, lower_physically_possible_limit=-4, photovoltaic_power_without_system_loss=array([5.291977 , 5.1463995, 3.7718065, 1.5430225, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), data_source=None, equation='P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²', algorithm=None, unit='W', value=array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32), symbol='⌁', description='Photovoltaic Power based on a variant of King0s model (1998, 2004)', label='⌁ Simulated Photovoltaic Power', title='Power', supertitle='Photovoltaic Power', shortname='Power', name='Photovoltaic Power data model', output=OrderedDict([('Elevation', {}), ('Core', OrderedDict([('Name', 'Photovoltaic Power data model'), ('Title', 'Power'), ('Description', 'Photovoltaic Power based on a variant of King0s model (1998, 2004)'), ('Symbol', '⌁'), ('Power ⌁', array([4.5511003, 4.425904 , 3.2437537, 1.3269994, 0. , 0. , 0. , 0. , 0. , 0. , 0. ], dtype=float32)), ('Unit', 'W'), ('Equation', 'P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²')])), ('Context', {}), ('Metadata', {}), ('Out-of-range', {}), ('Sources', {}), ('References', {}), ('Fingerprint', {}), ('Surface Position', {})]))