Skip to content

Verbosity

Verbosity is a fundamental functional element in PVGIS. It enables to retrieve detailed parts of the calculation chain right from the solar positioning and through the solar irradiance components up to the photovoltaic performance figures. The following examples demonstrate how it works and what type of output we can get.

  • Multiple verbosity levels

    Use the -v flag to keep it minimal or up to -vvvvvvvvv, to get all of the calculation details!

  • Index

    Use --index or simply -i to index the output.

  • 🤫 Quiet

    Use --quiet to silence longer time series that take some time to print in the terminal.

  • Debugging

    If things don't work out, use -vvvvvvvvvv to get debugging details!

Shortcut -v

-v is a shortcut for --verbose. And -vv is the same as asking twice for --verbose, i.e. --verbose --verbose.

pvgis-prototype power broadband 8.628 45.812 214 180 35 '2010-01-27 12:00:00' --verbose
        Power series [W]         

  Time                  Power ⌁  
 ─────────────────────────────── 
  2010-01-27 12:00:00   704.235  

  ⅀ / μ                 704.235  

╭───────────────────────────────────────────────────────────────────────────────────────╮ ╭──────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                    │ │  ⌁  Power        ⦥  Tilt             │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians │ │  ⏲  Timing       ⭸  Incidence        │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane,                       │ │  ⯐  Positioning  ⅀  N-ary Summation  │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal                      │ │  ↻  Orientation  μ  Mean             │
╰─────────────────────────────────────────────────────────────────────────── Reference ─╯ ╰───────────────────────────── Legend ─╯
pvgis-prototype power broadband 8.628 45.812 214 180 35 '2010-01-27 12:00:00' -v
        Power series [W]         

  Time                  Power ⌁  
 ─────────────────────────────── 
  2010-01-27 12:00:00   704.235  

  ⅀ / μ                 704.235  

╭───────────────────────────────────────────────────────────────────────────────────────╮ ╭──────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                    │ │  ⌁  Power        ⦥  Tilt             │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians │ │  ⏲  Timing       ⭸  Incidence        │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane,                       │ │  ⯐  Positioning  ⅀  N-ary Summation  │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal                      │ │  ↻  Orientation  μ  Mean             │
╰─────────────────────────────────────────────────────────────────────────── Reference ─╯ ╰───────────────────────────── Legend ─╯
pvgis-prototype power broadband 8.628 45.812 214 180 35 '2010-01-27 12:00:00' --verbose --verbose
                                                       Power series [W]                                                        

  Time                  Power ⌁   Power ⌁ without Loss   Sun-Horizon ⛰   Shading state 🮞   In-shade 🮞   Horizon ⛰   Visible 👁  
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2010-01-27 12:00:00   704.235   818.878                Above           Sunlit            False        0.0         True       

  ⅀ / μ                 704.235   818.878                                                                                      

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                              │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                           │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Above', 'Below', 'Low angle'] │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']     │
╰───────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭──────────────────────────────────────────────────────╮                                                           
│  ⌁  Power        ⛰  Horizon      👁  Visible          │                                                           
│  -  Loss         ↻  Orientation  🮞  Shading          │                                                           
│  ⏲  Timing       ⦥  Tilt         ⅀  N-ary Summation  │                                                           
│  ⯐  Positioning  ⭸  Incidence    μ  Mean             │                                                           
╰───────────────────────────────────────────── Legend ─╯                                                           
pvgis-prototype power broadband 8.628 45.812 214 180 35 '2010-01-27 12:00:00' -vv
                                                       Power series [W]                                                        

  Time                  Power ⌁   Power ⌁ without Loss   Sun-Horizon ⛰   Shading state 🮞   In-shade 🮞   Horizon ⛰   Visible 👁  
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2010-01-27 12:00:00   704.235   818.878                Above           Sunlit            False        0.0         True       

  ⅀ / μ                 704.235   818.878                                                                                      

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                              │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                           │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Below', 'Low angle', 'Above'] │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']     │
╰───────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭──────────────────────────────────────────────────────╮                                                           
│  ⌁  Power        ⛰  Horizon      👁  Visible          │                                                           
│  -  Loss         ↻  Orientation  🮞  Shading          │                                                           
│  ⏲  Timing       ⦥  Tilt         ⅀  N-ary Summation  │                                                           
│  ⯐  Positioning  ⭸  Incidence    μ  Mean             │                                                           
╰───────────────────────────────────────────── Legend ─╯                                                           

Multiple levels

pvgis-prototype power broadband 8.628 45.812 214 180 35
0.0
pvgis-prototype power broadband 8.628 45.812 214 180 35 -v
        Power series [W]         

  Time                  Power ⌁  
 ─────────────────────────────── 
  2025-12-01 22:15:08   0.0      

  ⅀ / μ                 0.0      

╭───────────────────────────────────────────────────────────────────────────────────────╮ ╭──────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                    │ │  ⌁  Power        ⦥  Tilt             │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians │ │  ⏲  Timing       ⭸  Incidence        │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane,                       │ │  ⯐  Positioning  ⅀  N-ary Summation  │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal                      │ │  ↻  Orientation  μ  Mean             │
╰─────────────────────────────────────────────────────────────────────────── Reference ─╯ ╰───────────────────────────── Legend ─╯
pvgis-prototype power broadband 8.628 45.812 214 180 35 -vv
                                              Power series [W]                                               

  Time                  Power ⌁   Power ⌁ without Loss   Sun-Horizon ⛰   In-shade 🮞   Horizon ⛰   Visible 👁  
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2025-12-01 22:15:11   0.0       0.0                    Below           True         0.0         False      

  ⅀ / μ                 0.0       0.0                                                                        

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                              │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                           │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Below', 'Low angle', 'Above'] │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']     │
╰───────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭──────────────────────────────────────────────────────╮                                                           
│  ⌁  Power        ⛰  Horizon      👁  Visible          │                                                           
│  -  Loss         ↻  Orientation  🮞  Shading          │                                                           
│  ⏲  Timing       ⦥  Tilt         ⅀  N-ary Summation  │                                                           
│  ⯐  Positioning  ⭸  Incidence    μ  Mean             │                                                           
╰───────────────────────────────────────────── Legend ─╯                                                           
pvgis-prototype power broadband 8.628 45.812 214 180 35 -vvv
                                                                        Power series [W]                                                                        

                                  Power ⌁                 Linke                                                                                                 
                                  without     Efficien…   Turbidi…   Refracted   Altitude               Inciden…   Sun-Hori…   In-shade               Visible   
  Time                  Power ⌁   Loss        ⋅           ⋅          alt. ⦧ ⦩    ⦩          Azimuth 󱦥   ⭸          ⛰           🮞          Horizon ⛰   👁         
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2025-12-01 22:15:14   0.0       0.0         1.0         2.0        -63.036     -1.1       5.727       0.0        Below       True       0.0         False     

  ⅀ / μ                 0.0       0.0         1.0                                                                                                               

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                                                      │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                                                   │
│ Module  Type: Mono-Facial, Technology: cSi, Mount: Free standing, Peak Power: 1.0 kWp                                                   │
│ Definitions  Azimuth origin : North, UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Above', 'Low angle', 'Below'] │
│ Algorithms  Power model ⌁: Huld 2011, Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']   │
│ Radiation model ⸾ : Hofierka 2002, Irradiance units W                                                                                   │
│ Equation : P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²                                                   │
│ Constants Solar constant : 1367.0                                                                                                       │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭───────────────────────────────────────────────────────╮                                                                                  
│  ⌁  Power         ⯐  Positioning  ⅀  N-ary Summation  │                                                                                  
│  ⸾  Irradiance    ⛰  Horizon      μ  Mean             │                                                                                  
│  -  Loss          ↻  Orientation                      │                                                                                  
│  ⍖  Extra Normal  ⦥  Tilt                             │                                                                                  
│  ⦜  Normal        ⭸  Incidence                        │                                                                                  
│  ⏲  Timing        👁  Visible                          │                                                                                  
│  ⦩  Altitude      🮞  Shading                          │                                                                                  
│  󱦥  Azimuth       ⋅  Factor                           │                                                                                  
╰────────────────────────────────────────────── Legend ─╯                                                                                  
pvgis-prototype power broadband 8.628 45.812 214 180 35 -vvvv
                                                                        Power series [W]                                                                        

                               Pow…                                                                                                                             
                               ⌁                                         Spe…   Spe…          Lin…   Ref…                       Ecc…                            
                        Pow…   wit…   Eff…   Glo…   Dir…   Sky…   Gro…   eff…   eff…   Spe…   Tur…   alt.   Alt…   Azi…   In…   Pha…   Su…   In-…   Ho…   Vis…  
  Time                  ⌁      Loss   ⋅      ⤋ ⭍    ⇣ ⭍    🗤 ⭍    ⭞ ⭍    ±      ± %   fac…   ⋅      ⦧ ⦩    ⦩      󱦥      ⭸     Off…   ⛰     🮞      ⛰     👁     
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2025-12-01 22:15:16   0.0    0.0    1.0    0.0    -0.0   0.0    0.0    0.0    0.0    1.0    2.0    -63…   -1.1   5.7…   0.0   0.0…   Be…   True   0.0   Fal…  

  ⅀ / μ                 0.0    0.0    1.0    0.0    0.0    0.0    0.0    0.0    0.0    1.0                                                                      

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                                                      │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                                                   │
│ Module  Type: Mono-Facial, Technology: cSi, Mount: Free standing, Peak Power: 1.0 kWp                                                   │
│ Definitions  Azimuth origin : North, UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Above', 'Low angle', 'Below'] │
│ Algorithms  Power model ⌁: Huld 2011, Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']   │
│ Radiation model ⸾ : Hofierka 2002, Irradiance units W                                                                                   │
│ Equation : P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²                                                   │
│ Constants Solar constant : 1367.0, Eccentricity Offset : 0.048869, Eccentricity Amplitude ⋅⬭ : 0.03344                                  │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭────────────────────────────────────────────────────────╮                                                                                 
│  ⌁  Power         ⭞  Reflected    ⭸   Incidence        │                                                                                 
│  ⸾  Irradiance    ⏲  Timing       👁   Visible          │                                                                                 
│  ⭍  Effective     ⦩  Altitude     🮞   Shading          │                                                                                 
│  -  Loss          󱦥  Azimuth      ⋅   Factor           │                                                                                 
│  ⇣  Direct        ⯐  Positioning  %  Percentage       │                                                                                 
│  ⍖  Extra Normal  ⛰  Horizon      ⅀   N-ary Summation  │                                                                                 
│  ⦜  Normal        ↻  Orientation  μ   Mean             │                                                                                 
│  🗤  Diffuse       ⦥  Tilt                              │                                                                                 
╰─────────────────────────────────────────────── Legend ─╯                                                                                 
pvgis-prototype power broadband 8.628 45.812 214 180 35 -vvvvv
                                                                        Power series [W]                                                                        

                              Po…                                       Sp…                                     R…                                              
                              ⌁                                   Sp…   ef…               D…         G…   Li…   a…                    E…                        
                        Po…   wi…   Ef…   Gl…   Di…   Sk…   Gr…   ef…   ±     Sp…   Gl…   ⇣    Sk…   ⭞    Tu…   ⦧    Al…   A…   In…   P…   Su…   I…   Ho…   V…  
  Time                  ⌁     Lo…   ⋅     ⤋ ⭍   ⇣ ⭍   🗤 ⭍   ⭞ ⭍   ±     %    fa…   ⤋ ∡   ∡    🗤 ∡   ∡    ⋅     ⦩    ⦩     󱦥    ⭸     O…   ⛰     🮞    ⛰     👁   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2025-12-01 22:15:19   0.0   0.0   1.0   0.0   -0…   0.0   0.0   0.0   0.0   1.0   0.0   -…   0.0   0…   2.0   -…   -1…   5…   0.0   0…   Be…   T…   0.0   F…  

  ⅀ / μ                 0.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0   0…   0.0   0…                                                         

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                                                      │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                                                   │
│ Module  Type: Mono-Facial, Technology: cSi, Mount: Free standing, Peak Power: 1.0 kWp                                                   │
│ Definitions  Azimuth origin : North, UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Below', 'Low angle', 'Above'] │
│ Algorithms  Power model ⌁: Huld 2011, Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']   │
│ Radiation model ⸾ : Hofierka 2002, Irradiance units W                                                                                   │
│ Equation : P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²                                                   │
│ Constants Solar constant : 1367.0, Eccentricity Offset : 0.048869, Eccentricity Amplitude ⋅⬭ : 0.03344                                  │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭────────────────────────────────────────────────────────╮                                                                                 
│  ⌁  Power         🗤  Diffuse      ⦥   Tilt             │                                                                                 
│  ⸾  Irradiance    ⭞  Reflected    ⭸   Incidence        │                                                                                 
│  ⭍  Effective     ⏲  Timing       👁   Visible          │                                                                                 
│  -  Loss          ⦩  Altitude     🮞   Shading          │                                                                                 
│  ∡  Inclined      󱦥  Azimuth      ⋅   Factor           │                                                                                 
│  ⇣  Direct        ⯐  Positioning  %  Percentage       │                                                                                 
│  ⍖  Extra Normal  ⛰  Horizon      ⅀   N-ary Summation  │                                                                                 
│  ⦜  Normal        ↻  Orientation  μ   Mean             │                                                                                 
╰─────────────────────────────────────────────── Legend ─╯                                                                                 
pvgis-prototype power broadband 8.628 45.812 214 180 35 -vvvvvv
                                                                        Power series [W]                                                                        

                             Po…                                    S…         D…                               R…                                              
                             ⌁                D…         G…   Sp…   e…         ⇣          D…         G…   Li…   a…                    E…                        
                        P…   wi…   E…   Gl…   ⇣    Sk…   ⭞    ef…   ±    Sp…   ∡    Gl…   ⇣    Sk…   ⭞    Tu…   ⦧    Al…   A…   In…   P…   Su…   I…   Ho…   V…  
  Time                  ⌁    Lo…   ⋅    ⤋ ⭍   ⭍    🗤 ⭍   ⭍    ±     %   fa…   ☉    ⤋ ∡   ∡    🗤 ∡   ∡    ⋅     ⦩    ⦩     󱦥    ⭸     O…   ⛰     🮞    ⛰     👁   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  2025-12-01 22:15:22   0…   0.0   1…   0.0   -…   0.0   0…   0.0   0…   1.0   0…   0.0   -…   0.0   0…   2.0   -…   -1…   5…   0.0   0…   Be…   T…   0.0   F…  

  ⅀ / μ                 0…   0.0   1…   0.0   0…   0.0   0…   0.0   0…   1.0   0…   0.0   0…   0.0   0…                                                         

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                                                      │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                                                   │
│ Module  Type: Mono-Facial, Technology: cSi, Mount: Free standing, Peak Power: 1.0 kWp                                                   │
│ Definitions  Azimuth origin : North, UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Low angle', 'Below', 'Above'] │
│ Algorithms  Power model ⌁: Huld 2011, Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']   │
│ Radiation model ⸾ : Hofierka 2002, Irradiance units W                                                                                   │
│ Equation : P(G₀, T₀) = G₀(P₀ₛₜ₃, m + k₁G₀) + k₂G₀)² + k₃T₀ + k₄T₀G₀ + k₅T₀G₀² + k₆T₀²                                                   │
│ Constants Solar constant : 1367.0, Eccentricity Offset : 0.048869, Eccentricity Amplitude ⋅⬭ : 0.03344                                  │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭────────────────────────────────────────────────────────╮                                                                                 
│  ⌁  Power         🗤  Diffuse      ⦥   Tilt             │                                                                                 
│  ⸾  Irradiance    ⭞  Reflected    ⭸   Incidence        │                                                                                 
│  ⭍  Effective     ⏲  Timing       👁   Visible          │                                                                                 
│  -  Loss          ⦩  Altitude     🮞   Shading          │                                                                                 
│  ∡  Inclined      󱦥  Azimuth      ⋅   Factor           │                                                                                 
│  ⇣  Direct        ⯐  Positioning  %  Percentage       │                                                                                 
│  ⍖  Extra Normal  ⛰  Horizon      ⅀   N-ary Summation  │                                                                                 
│  ⦜  Normal        ↻  Orientation  μ   Mean             │                                                                                 
╰─────────────────────────────────────────────── Legend ─╯                                                                                 

Index

Indexing can make it easier to spot a line of interest in the output table. We can ask for it via --index or simply -i

pvgis-prototype power broadband \
    8.628 45.812 214 180 35 \
    --start-time '2010-01-27' \
    --end-time '2010-01-28' \
    -vv \
    --index
                                                             Power series [W]                                                              

  Index   Time                  Power ⌁    Power ⌁ without Loss   Sun-Horizon ⛰   Shading state 🮞      In-shade 🮞   Horizon ⛰   Visible 👁  
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  1       2010-01-27 00:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  2       2010-01-27 01:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  3       2010-01-27 02:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  4       2010-01-27 03:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  5       2010-01-27 04:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  6       2010-01-27 05:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  7       2010-01-27 06:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  8       2010-01-27 07:00:00   0.0        0.0                    Low angle       Potentially-sunlit   False        0.0         True       
  9       2010-01-27 08:00:00   301.959    351.116                Above           Sunlit               False        0.0         True       
  10      2010-01-27 09:00:00   498.149    579.242                Above           Sunlit               False        0.0         True       
  11      2010-01-27 10:00:00   628.815    731.181                Above           Sunlit               False        0.0         True       
  12      2010-01-27 11:00:00   696.542    809.933                Above           Sunlit               False        0.0         True       
  13      2010-01-27 12:00:00   704.235    818.878                Above           Sunlit               False        0.0         True       
  14      2010-01-27 13:00:00   652.288    758.475                Above           Sunlit               False        0.0         True       
  15      2010-01-27 14:00:00   538.32     625.953                Above           Sunlit               False        0.0         True       
  16      2010-01-27 15:00:00   359.142    417.606                Above           Sunlit               False        0.0         True       
  17      2010-01-27 16:00:00   115.909    134.778                Above           Potentially-sunlit   False        0.0         True       
  18      2010-01-27 17:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  19      2010-01-27 18:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  20      2010-01-27 19:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  21      2010-01-27 20:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  22      2010-01-27 21:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  23      2010-01-27 22:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  24      2010-01-27 23:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      
  25      2010-01-28 00:00:00   0.0        0.0                    Below           In-shade             True         0.0         False      

          ⅀ / μ                 4495.358   5227.16                                                                                         

╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Location  Longitude ϑ, Latitude ϕ = 0.151, 0.8, Elevation: 214.0 m                                              │
│ Position  Surface Orientation ↻: 3.142, Surface Tilt ⦥: 0.611   Angular units radians                           │
│ Definitions  UTC, Incidence angle: Sun-Vector-to-Surface-Plane, Sun-to-Horizon: ['Above', 'Low angle', 'Below'] │
│ Algorithms  Timing : NOAA, Positioning : NOAA, Incidence : Iqbal, Shading : PVGIS, Shading states : ['all']     │
╰───────────────────────────────────────────────────────────────────────────────────────────────────── Reference ─╯
╭──────────────────────────────────────────────────────╮                                                           
│  ⌁  Power        ⛰  Horizon      👁  Visible          │                                                           
│  -  Loss         ↻  Orientation  🮞  Shading          │                                                           
│  ⏲  Timing       ⦥  Tilt         ⅀  N-ary Summation  │                                                           
│  ⯐  Positioning  ⭸  Incidence    μ  Mean             │                                                           
╰───────────────────────────────────────────── Legend ─╯                                                           

🤫 Quiet

Need to silence (a) long time series output ? Printing very long time series in the terminal is rather impractical, aside that it takes quite some time for the print-out. To work-around this inconvenience, there is a --quiet flag which will ommit the print out altogether.

pvgis-prototype power broadband \
    8 45 214 167 \
    --start-time '2000-01-01' \
    --end-time '2020-12-31' \
    --quiet

How is this useful ? This option may be useful for timing the duration of processes or printing a plot of the output or metadata of the command itself.

Duration of command execution

We can time the duration of a command that processes a long time series using the terminal's built-in function time :

time \
pvgis-prototype power broadband \
    8 45 214 167 \
    --start-time '2000-01-01' \
    --end-time '2020-12-31' \
    --quiet
real    0m3.627s
user    0m3.547s
sys 0m0.298s

Debugging

There is an important constant in the core API named DEBUG_AFTER_THIS_VERBOSITY_LEVEL.

Default array backend and data type

DEBUG_AFTER_THIS_VERBOSITY_LEVEL=10

Using more -vs than the constant DEBUG_AFTER_THIS_VERBOSITY_LEVEL in (almost!) every command, will print the complete set of local variables relevant to the (API) function called from the invoked command line tool.

Example support for debugging (very long output)
pvgis-prototype power broadband \
    8 45 214 167 \
    --start-time '2000-01-01' \
    --end-time '2020-12-31' \
    --quiet \
    -vvvvvvvvvvv
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/fractional_year.py:139 calculate_fractional_year_series_noaa
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'days_of_year': (
            Index([  1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
                   ...
                   365, 365, 365, 365, 365, 365, 365, 365, 365, 366],
                  dtype='int32', length=184081)
        ),
        'hours': (
            Index([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                   ...
                   15, 16, 17, 18, 19, 20, 21, 22, 23,  0],
                  dtype='int32', length=184081)
        ),
        'days_in_years': (
            Index([366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
                   ...
                   366, 366, 366, 366, 366, 366, 366, 366, 366, 366],
                  dtype='int32', length=184081)
        ),
        'array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'zeros',
            'backend': 'numpy',
        },
        'fractional_year_series': (
            array([0.       , 0.       , 0.       , ..., 6.256004 , 6.256719 ,
                   6.2574344], dtype=float32)
        ),
    } (dict) len=11
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_declination.py:110 calculate_solar_declination_series_noaa
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'fractional_year_series': FractionalYear(
            solar_positioning_algorithm='NOAA',
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([0.       , 0.       , 0.       , ..., 6.256004 , 6.256719 ,
                       6.2574344], dtype=float32)
            ),
            symbol=None,
            description='[Description of the data model]',
            label=None,
            title='[Data Model Title]',
            supertitle='Solar Irradiance',
            shortname=None,
            name=None,
            max_radians=6.283185307179586,
            max_degrees=360,
            position_algorithm=None,
        ),
        'solar_declination_series': (
            array([-0.40244898, -0.40244898, -0.40244898, ..., -0.40436164,
                   -0.40431553, -0.40426928], dtype=float32)
        ),
        'out_of_range': None,
        'out_of_range_index': None,
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/equation_of_time.py:99 calculate_equation_of_time_series_noaa
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'fractional_year_series': FractionalYear(
            solar_positioning_algorithm='NOAA',
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([0.       , 0.       , 0.       , ..., 6.256004 , 6.256719 ,
                       6.2574344], dtype=float32)
            ),
            symbol=None,
            description='[Description of the data model]',
            label=None,
            title='[Data Model Title]',
            supertitle='Solar Irradiance',
            shortname=None,
            name=None,
            max_radians=6.283185307179586,
            max_degrees=360,
            position_algorithm=None,
        ),
        'equation_of_time_series': (
            array([-2.904169 , -2.904169 , -2.904169 , ..., -2.1908991, -2.209777 ,
                   -2.2286491], dtype=float32)
        ),
    } (dict) len=8
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/time_offset.py:241 calculate_time_offset_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'local_standard_time_meridian_minutes_series': 0,
        'equation_of_time_series': EquationOfTime(
            value=(
                array([-2.904169 , -2.904169 , -2.904169 , ..., -2.1908991, -2.209777 ,
                       -2.2286491], dtype=float32)
            ),
            unit='minutes',
            min_minutes=-20,
            max_minutes=20,
        ),
        'time_offset_series_in_minutes': (
            array([29.09583 , 29.09583 , 29.09583 , ..., 29.809101, 29.790222,
                   29.77135 ], dtype=float32)
        ),
    } (dict) len=11
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_time.py:190 calculate_true_solar_time_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'time_offset_series': TimeOffset(
            value=(
                array([29.09583 , 29.09583 , 29.09583 , ..., 29.809101, 29.790222,
                       29.77135 ], dtype=float32)
            ),
            unit='minutes',
            min_minutes=-790,
            max_minutes=790,
        ),
        'true_solar_time_series': (
            Index([1745.7498779296875, 5345.7498779296875,  8945.749877929688,
                   12545.749877929688, 16145.749877929688, 19745.749877929688,
                   23345.749877929688, 26945.749877929688, 30545.749877929688,
                    34145.74987792969,
                   ...
                    55796.48376464844, 59395.348876953125,  62994.21435546875,
                    66593.07995605469,  70191.94604492188,  73790.81237792969,
                    77389.67907714844,  80988.54602050781,  84587.41333007812,
                    1786.281005859375],
                  dtype='float64', length=184081)
        ),
        'true_solar_time_series_in_minutes': (
            Index([  29.0958309173584,  89.09583282470703, 149.09584045410156,
                   209.09584045410156,  269.0958251953125,  329.0958251953125,
                    389.0958251953125,  449.0958251953125,  509.0958251953125,
                    569.0958251953125,
                   ...
                         929.94140625,  989.9224853515625,  1049.903564453125,
                   1109.8846435546875,   1169.86572265625,  1229.846923828125,
                   1289.8280029296875,   1349.80908203125,  1409.790283203125,
                   29.771350860595703],
                  dtype='float32', length=184081)
        ),
    } (dict) len=11
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_hour_angle.py:161 calculate_solar_hour_angle_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'true_solar_time_series': TrueSolarTime(
            value=(
                array([  29.09583,   89.09583,  149.09584, ..., 1349.8091 , 1409.7903 ,
                         29.77135], dtype=float32)
            ),
            unit='minutes',
            min_minutes=-1580,
            max_minutes=1580,
            timing_algorithm='NOAA',
        ),
        'solar_hour_angle_series': (
            array([-3.0146382, -2.7528389, -2.4910393, ...,  2.7480605,  3.0097778,
                   -3.0116906], dtype=float32)
        ),
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_zenith.py:204 calculate_solar_zenith_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'adjust_for_atmospheric_refraction': True,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_declination_series': SolarDeclination(
            out_of_range_index=None,
            out_of_range=None,
            solar_timing_algorithm=None,
            solar_positioning_algorithm='NOAA',
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([-0.40244898, -0.40244898, -0.40244898, ..., -0.40436164,
                       -0.40431553, -0.40426928], dtype=float32)
            ),
            symbol='∢',
            description="Solar declination is the angle between the rays of the Sun and the plane of the Earth's equator.",
            label=None,
            title='Solar Declination',
            supertitle='Solar Irradiance',
            shortname='Declination',
            name='Solar Declination',
            min_radians=-0.4094542425178697,
            max_radians=0.4094542425178697,
            min_degrees=-23.46,
            max_degrees=23.46,
            output={},
        ),
        'solar_hour_angle_series': SolarHourAngle(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            solar_timing_algorithm='NOAA',
            solar_positioning_algorithm='NOAA',
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([-3.0146382, -2.7528389, -2.4910393, ...,  2.7480605,  3.0097778,
                       -3.0116906], dtype=float32)
            ),
            symbol='\U000f1a77',
            description='Solar hour angle data for a location and period in time',
            label=None,
            title='Hour Angle',
            supertitle='Solar Irradiance',
            shortname='Hour Angle',
            name='Solar Hour Angle',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
            output={},
        ),
        'cosine_solar_zenith': (
            array([-0.9223306 , -0.8790194 , -0.79467833, ..., -0.8785876 ,
                   -0.922623  , -0.9227679 ], dtype=float32)
        ),
        'solar_zenith_series': SolarZenith(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            adjusted_for_atmospheric_refraction=True,
            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([2.7448235, 2.6445432, 2.4891968, ..., 2.6436381, 2.7455807,
                       2.745957 ], dtype=float32)
            ),
            symbol='⦭',
            description='Solar zenith angle data for a location and period in time',
            label=None,
            title='Solar Zenith',
            supertitle='Solar Irradiance',
            shortname='Zenith',
            name='Solar Zenith',
            max_radians=3.1561926535897933,
            low_angle_threshold_radians=1.5307963267948965,
            max_degrees=180.83651838089102,
            low_angle_threshold_degrees=87.70816881947671,
            output={},
        ),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_altitude.py:82 calculate_solar_altitude_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'adjust_for_atmospheric_refraction': True,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'solar_zenith_series': SolarZenith(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            adjusted_for_atmospheric_refraction=True,
            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([2.7448235, 2.6445432, 2.4891968, ..., 2.6436381, 2.7455807,
                       2.745957 ], dtype=float32)
            ),
            symbol='⦭',
            description='Solar zenith angle data for a location and period in time',
            label=None,
            title='Solar Zenith',
            supertitle='Solar Irradiance',
            shortname='Zenith',
            name='Solar Zenith',
            max_radians=3.1561926535897933,
            low_angle_threshold_radians=1.5307963267948965,
            max_degrees=180.83651838089102,
            low_angle_threshold_degrees=87.70816881947671,
            output={},
        ),
        'solar_altitude_series': (
            array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                   -1.1751605], dtype=float32)
        ),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/altitude.py:190 model_solar_altitude_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/position/shading.py:180 calculate_surface_in_shade_series_pvgis
    locals(): {
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'horizon_profile': None,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'horizon_height_series': 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.], 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 co'
                        'ntext of solar positioning.'
                    )),
                    ('Symbol', '🏔'),
                    ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'radians'),
                ])),
                ('Fingerprint', {}),
                ('References', {}),
                ('Sources', {}),
                ('Out-of-range', {}),
                ('Metadata', {}),
                ('Context', {}),
                ('Core', {}),
            ]),
        ),
        'surface_in_shade_series': array([ True,  True,  True, ...,  True,  True,  True]),
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/shading.py:132 model_surface_in_shade_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'horizon_profile': None,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
    } (dict) len=19
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/iqbal/solar_incidence.py:375 calculate_solar_incidence_series_iqbal
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'surface_orientation': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=6.056292504420323,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
        'surface_tilt': SurfaceTilt(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=3.141592653589793,
            max_degrees=180,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'adjust_for_atmospheric_refraction': True,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'complementary_incidence_angle': False,
        'zero_negative_solar_incidence_angle': True,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_zenith_series': SolarZenith(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            adjusted_for_atmospheric_refraction=True,
            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([2.7448235, 2.6445432, 2.4891968, ..., 2.6436381, 2.7455807,
                       2.745957 ], dtype=float32)
            ),
            symbol='⦭',
            description='Solar zenith angle data for a location and period in time',
            label=None,
            title='Solar Zenith',
            supertitle='Solar Irradiance',
            shortname='Zenith',
            name='Solar Zenith',
            max_radians=3.1561926535897933,
            low_angle_threshold_radians=1.5307963267948965,
            max_degrees=180.83651838089102,
            low_angle_threshold_degrees=87.70816881947671,
            output={},
        ),
        'solar_azimuth_series_north_based': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'solar_azimuth_series': 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.4483101, 3.9622295, 4.304669 , ..., 2.3110936, 2.8224986,
                       3.4562333], 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={},
        ),
        'fraction_series': (
            array([-0.45118442, -0.36939162, -0.3148907 , ...,  0.36782196,
                    0.44921458, -0.4499234 ], dtype=float32)
        ),
        '_': array([-0., -0., -0., ...,  0.,  0., -0.], dtype=float32),
        'cosine_solar_incidence_series': (
            array([-0.88744056, -0.79003143, -0.6390923 , ..., -0.8992919 ,
                   -0.9239837 , -0.88600767], dtype=float32)
        ),
        'solar_incidence_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'incidence_angle_definition': 'Sun-Vector-to-Surface-Normal',
        'incidence_angle_description': (
            "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 ang'
            'le between the sun (sun-vector) and the inclination of the surface (surface-plane) in question.'
        ),
        'sun_horizon_positions': [
            <SunHorizonPositionModel.above: 'Above'>,
            <SunHorizonPositionModel.low_angle: 'Low angle'>,
            <SunHorizonPositionModel.below: 'Below'>,
        ],
        'sun_horizon_position_series': (
            array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                  dtype=object)
        ),
        'mask_below_horizon': array([ True,  True,  True, ...,  True,  True,  True]),
        'mask_low_angle': array([False, False, False, ..., False, False, False]),
        'mask_above_horizon': array([False, False, False, ..., False, False, False]),
        'mask_no_solar_incidence_series': array([ True,  True,  True, ...,  True,  True,  True]),
    } (dict) len=31
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/incidence.py:267 model_solar_incidence_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'surface_orientation': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=2.91469985083053,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
        'surface_tilt': SurfaceTilt(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=3.141592653589793,
            max_degrees=180,
        ),
        'adjust_for_atmospheric_refraction': True,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'solar_incidence_model': <SolarIncidenceModel.iqbal: 'Iqbal'>,
        'horizon_profile': None,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'complementary_incidence_angle': False,
        'zero_negative_solar_incidence_angle': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'typical' definition of the solar incidence is the angle between the position of the sun (sun-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                      dtype=object)
            ),
            definition='Sun-Vector-to-Surface-Normal',
            definition_typical='Sun-Vector-to-Surface-Normal',
            definition_complementary='Sun-Vector-to-Surface-Plane',
            output={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'surface_orientation_south_convention': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=6.056292504420323,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
    } (dict) len=25
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/altitude.py:190 model_solar_altitude_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/shading.py:132 model_surface_in_shade_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'horizon_profile': None,
        'solar_time_model': <SolarTimeModel.skyfield: 'Skyfield'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
    } (dict) len=19
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/iqbal/solar_incidence.py:375 calculate_solar_incidence_series_iqbal
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'surface_orientation': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=6.056292504420323,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
        'surface_tilt': SurfaceTilt(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=3.141592653589793,
            max_degrees=180,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'adjust_for_atmospheric_refraction': True,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'complementary_incidence_angle': True,
        'zero_negative_solar_incidence_angle': True,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_zenith_series': SolarZenith(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            adjusted_for_atmospheric_refraction=True,
            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([2.7448235, 2.6445432, 2.4891968, ..., 2.6436381, 2.7455807,
                       2.745957 ], dtype=float32)
            ),
            symbol='⦭',
            description='Solar zenith angle data for a location and period in time',
            label=None,
            title='Solar Zenith',
            supertitle='Solar Irradiance',
            shortname='Zenith',
            name='Solar Zenith',
            max_radians=3.1561926535897933,
            low_angle_threshold_radians=1.5307963267948965,
            max_degrees=180.83651838089102,
            low_angle_threshold_degrees=87.70816881947671,
            output={},
        ),
        'solar_azimuth_series_north_based': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'solar_azimuth_series': 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.4483101, 3.9622295, 4.304669 , ..., 2.3110936, 2.8224986,
                       3.4562333], 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={},
        ),
        'fraction_series': (
            array([-0.45118442, -0.36939162, -0.3148907 , ...,  0.36782196,
                    0.44921458, -0.4499234 ], dtype=float32)
        ),
        '_': array([-0., -0., -0., ...,  0.,  0., -0.], dtype=float32),
        'cosine_solar_incidence_series': (
            array([-0.88744056, -0.79003143, -0.6390923 , ..., -0.8992919 ,
                   -0.9239837 , -0.88600767], dtype=float32)
        ),
        'solar_incidence_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'incidence_angle_definition': 'Sun-Vector-to-Surface-Plane',
        'incidence_angle_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.'
        ),
        'sun_horizon_positions': [
            <SunHorizonPositionModel.above: 'Above'>,
            <SunHorizonPositionModel.low_angle: 'Low angle'>,
            <SunHorizonPositionModel.below: 'Below'>,
        ],
        'sun_horizon_position_series': (
            array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                  dtype=object)
        ),
        'mask_below_horizon': array([ True,  True,  True, ...,  True,  True,  True]),
        'mask_low_angle': array([False, False, False, ..., False, False, False]),
        'mask_above_horizon': array([False, False, False, ..., False, False, False]),
        'mask_no_solar_incidence_series': array([ True,  True,  True, ...,  True,  True,  True]),
    } (dict) len=31
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/incidence.py:267 model_solar_incidence_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'surface_orientation': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=2.91469985083053,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
        'surface_tilt': SurfaceTilt(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=3.141592653589793,
            max_degrees=180,
        ),
        'adjust_for_atmospheric_refraction': True,
        'solar_time_model': <SolarTimeModel.skyfield: 'Skyfield'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'solar_incidence_model': <SolarIncidenceModel.iqbal: 'Iqbal'>,
        'horizon_profile': None,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'complementary_incidence_angle': True,
        'zero_negative_solar_incidence_angle': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n 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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'surface_orientation_south_convention': SurfaceOrientation(
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=6.056292504420323,
            symbol='⯐ ⎄',
            description=None,
            label='Surface Position',
            title='Surface Position',
            supertitle='Surface Position data',
            shortname='Surface Position',
            name='Surface Position',
            max_radians=6.283185307179586,
            max_degrees=360,
        ),
    } (dict) len=25
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_declination.py:110 calculate_solar_declination_series_noaa
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'fractional_year_series': FractionalYear(
            solar_positioning_algorithm='NOAA',
            min_degrees=0,
            min_radians=0,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([0.       , 0.       , 0.       , ..., 6.256004 , 6.256719 ,
                       6.2574344], dtype=float32)
            ),
            symbol=None,
            description='[Description of the data model]',
            label=None,
            title='[Data Model Title]',
            supertitle='Solar Irradiance',
            shortname=None,
            name=None,
            max_radians=6.283185307179586,
            max_degrees=360,
            position_algorithm=None,
        ),
        'solar_declination_series': (
            array([-0.40244898, -0.40244898, -0.40244898, ..., -0.40436164,
                   -0.40431553, -0.40426928], dtype=float32)
        ),
        'out_of_range': None,
        'out_of_range_index': None,
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/noaa/solar_azimuth.py:313 calculate_solar_azimuth_series_noaa
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'adjust_for_atmospheric_refraction': True,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_declination_series': SolarDeclination(
            out_of_range_index=None,
            out_of_range=None,
            solar_timing_algorithm=None,
            solar_positioning_algorithm='NOAA',
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([-0.40244898, -0.40244898, -0.40244898, ..., -0.40436164,
                       -0.40431553, -0.40426928], dtype=float32)
            ),
            symbol='∢',
            description="Solar declination is the angle between the rays of the Sun and the plane of the Earth's equator.",
            label=None,
            title='Solar Declination',
            supertitle='Solar Irradiance',
            shortname='Declination',
            name='Solar Declination',
            min_radians=-0.4094542425178697,
            max_radians=0.4094542425178697,
            min_degrees=-23.46,
            max_degrees=23.46,
            output={},
        ),
        'solar_hour_angle_series': SolarHourAngle(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            solar_timing_algorithm='NOAA',
            solar_positioning_algorithm='NOAA',
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=(
                array([-3.0146382, -2.7528389, -2.4910393, ...,  2.7480605,  3.0097778,
                       -3.0116906], dtype=float32)
            ),
            symbol='\U000f1a77',
            description='Solar hour angle data for a location and period in time',
            label=None,
            title='Hour Angle',
            supertitle='Solar Irradiance',
            shortname='Hour Angle',
            name='Solar Hour Angle',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
            output={},
        ),
        'solar_zenith_series': SolarZenith(
            out_of_range_index=array([], dtype=float64),
            out_of_range=array([], dtype=float64),
            adjusted_for_atmospheric_refraction=True,
            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([2.7448235, 2.6445432, 2.4891968, ..., 2.6436381, 2.7455807,
                       2.745957 ], dtype=float32)
            ),
            symbol='⦭',
            description='Solar zenith angle data for a location and period in time',
            label=None,
            title='Solar Zenith',
            supertitle='Solar Irradiance',
            shortname='Zenith',
            name='Solar Zenith',
            max_radians=3.1561926535897933,
            low_angle_threshold_radians=1.5307963267948965,
            max_degrees=180.83651838089102,
            low_angle_threshold_degrees=87.70816881947671,
            output={},
        ),
        'numerator_series': (
            array([-0.2605019 , -0.22986928, -0.17021653, ..., -0.22780472,
                   -0.25899184, -0.25913695], dtype=float32)
        ),
        'denominator_series': (
            array([0.27325472, 0.33717263, 0.42927888, ..., 0.33773503, 0.2727608 ,
                   0.27251536], dtype=float32)
        ),
        'cosine_solar_azimuth_series': (
            array([-0.95332986, -0.6817554 , -0.39651737, ..., -0.67450726,
                   -0.94952   , -0.9509077 ], dtype=float32)
        ),
        'solar_azimuth_series': (
            array([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                   0.31464052], dtype=float32)
        ),
    } (dict) len=17
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/azimuth.py:199 model_solar_azimuth_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'adjust_for_atmospheric_refraction': True,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
    } (dict) len=15
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/shading.py:132 model_surface_in_shade_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'horizon_profile': None,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
    } (dict) len=19
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/direct/refraction.py:93 calculate_refracted_solar_altitude_series
    locals(): {
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'atmospheric_refraction': (
            array([1.0854634e-05, 1.0512266e-05, 9.8343844e-06, ..., 1.0508885e-05,
                   1.0856996e-05, 1.0858169e-05], dtype=float32)
        ),
        'refracted_solar_altitude_series': (
            array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                   -67.331726], dtype=float32)
        ),
    } (dict) len=7
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/linke_turbidity_factor.py:71 correct_linke_turbidity_factor_series
    locals(): {
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'corrected_linke_turbidity_factors': (
            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                  dtype=float32)
        ),
    } (dict) len=6
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/direct/rayleigh_optical_thickness.py:72 calculate_rayleigh_optical_thickness_series
    locals(): {
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=(
                array([8.3381765e-17, 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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'rayleigh_thickness_series': (
            array([0.15083866, 0.15083866, 0.15083866, ..., 0.15083866, 0.15083866,
                   0.15083866], dtype=float32)
        ),
        'smaller_than_20': array([ True,  True,  True, ...,  True,  True,  True]),
        'larger_than_20': array([False, False, False, ..., False, False, False]),
    } (dict) len=8
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/normal.py:196 calculate_direct_normal_irradiance_hofierka
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=(
                array([8.3381765e-17, 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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'clip_to_physically_possible_limits': True,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output={},
        ),
        'corrected_linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=(
                array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                      dtype=float32)
            ),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'rayleigh_optical_thickness_series': RayleighThickness(
            value=(
                array([0.15083866, 0.15083866, 0.15083866, ..., 0.15083866, 0.15083866,
                       0.15083866], dtype=float32)
            ),
            unit='Unitless',
        ),
        'exponent': (
            array([-2.178873e-17, -2.178873e-17, -2.178873e-17, ..., -2.178873e-17,
                   -2.178873e-17, -2.178873e-17], dtype=float32)
        ),
        'direct_normal_irradiance_series': (
            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                   1406.2509], dtype=float32)
        ),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=18
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/horizontal.py:180 calculate_clear_sky_direct_horizontal_irradiance_hofierka
    locals(): {
        'elevation': 214.0,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'refracted_solar_altitude_series': RefractedSolarAltitude(
            solar_timing_algorithm=None,
            solar_positioning_algorithm=None,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='degrees',
            value=(
                array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            symbol='⦩',
            description='Solar altitude data for a location and period in time',
            label=None,
            title='Refracted Solar Altitude',
            supertitle='Solar Irradiance',
            shortname='Altitude',
            name='Refracted Solar Altitude',
            refracted_value=array([], dtype=float64),
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=(
                array([8.3381765e-17, 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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'direct_normal_irradiance_series': DirectNormalIrradiance(
            optical_air_mass=OpticalAirMass(
                name='Relative optical air mass',
                title='Optical Air Mass',
                description='The relative optical air mass',
                value=(
                    array([8.3381765e-17, 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.15083866, 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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=(
                    array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                          dtype=float32)
                ),
                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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], 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]),
            out_of_range=array([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 atmosp'
                'here, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
            ),
            unit='W/m²',
            value=(
                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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={},
        ),
        'mask_solar_altitude_positive': array([False, False, False, ..., False, False, False]),
        'mask_not_in_shade': array([False, False, False, ..., False, False, False]),
        'mask_sunlit_surface_series': array([False, False, False, ..., False, False, False]),
        'array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'zeros',
            'backend': 'numpy',
        },
        'direct_horizontal_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=22
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/inclined.py:333 calculate_clear_sky_direct_inclined_irradiance_hofierka
    locals(): {
        'elevation': 214.0,
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'direct_horizontal_irradiance': None,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'apply_reflectivity_factor': True,
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n 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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['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_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=(
                array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                       -1.1751605], 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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'mask_solar_altitude_positive': array([False, False, False, ..., False, False, False]),
        'mask_solar_incidence_positive': array([False, False, False, ..., False, False, False]),
        'mask_not_in_shade': array([False, False, False, ..., False, False, False]),
        'mask_sunlit_surface_series': array([False, False, False, ..., False, False, False]),
        'direct_horizontal_irradiance_series': DirectHorizontalIrradiance(
            elevation=214.0,
            references=(
                'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploit'
                "ation 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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=(
                    array([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                           -1.1751605], 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([ 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([8.3381765e-17, 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([8.3381765e-17, 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. App'
                        'lied Optics, 28: 4735-4738.'
                    ),
                ),
                rayleigh_optical_thickness=RayleighThickness(
                    value=(
                        array([0.15083866, 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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=(
                        array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                              dtype=float32)
                    ),
                    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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], 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]),
                out_of_range=array([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 at'
                    'mosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([-1.1740271, -1.0737468, -0.9184004, ..., -1.0728418, -1.1747843,
                           -1.1751605], 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]),
            out_of_range=array([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([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={},
        ),
        'direct_inclined_irradiance_series': array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
        'direct_inclined_irradiance_before_reflectivity_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'direct_inclined_irradiance_reflectivity_factor_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=29
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/extraterrestrial/normal.py:129 calculate_extraterrestrial_normal_irradiance_hofierka
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'years_in_timestamps': (
            Index([2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
                   ...
                   2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020],
                  dtype='int32', length=184081)
        ),
        'years': (
            array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
                   2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020],
                  dtype=int32)
        ),
        'indices': array([ 0,  0,  0, ..., 20, 20, 20]),
        'days_per_year': (
            array([366., 365., 365., 365., 366., 365., 365., 365., 366., 365., 365.,
                   365., 366., 365., 365., 365., 366., 365., 365., 365., 366.],
                  dtype=float32)
        ),
        'days_in_years': array([366., 366., 366., ..., 366., 366., 366.], dtype=float32),
        'day_of_year_series': array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
        'day_angle_series': (
            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                   6.283186  ], dtype=float32)
        ),
        'distance_correction_factor_series': (
            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                   1.0334   ], dtype=float32)
        ),
        'extraterrestrial_normal_irradiance': (
            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                   1406.2509], dtype=float32)
        ),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=19
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/extraterrestrial/normal.py:73 calculate_extraterrestrial_normal_irradiance_series
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output=OrderedDict([
                ('Fingerprint', {}),
                ('References', {}),
                ('Sources', {}),
                ('Out-of-range', {}),
                ('Metadata', OrderedDict([
                    ('Day angle', (
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    )),
                    ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                ])),
                ('Context', {
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ('Eccentricity Phase Offset', 0.048869),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Lower physical limit [', -4),
                        ('Upper physical limit ]', 2000),
                        ('Solar constant', 1360.8),
                    ]),
                }),
                ('Core', {}),
                ('Extraterrestrial Normal Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Extra ⍖ ⦜', (
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], dtype=float32)
                    )),
                    ('Symbol', '⍖ ⦜'),
                    ('Description', 'Extraterrestrial irradiance'),
                    ('Title', 'Extraterrestrial Normal Irradiance'),
                    ('Name', 'Extraterrestrial Normal Irradiance'),
                ])),
                ('Solar Radiation Model', {}),
            ]),
        ),
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/transmission_function.py:101 calculate_diffuse_transmission_function_series_hofierka
    locals(): {
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'linke_turbidity_factor_series_squared_array': array([4., 4., 4., ..., 4., 4., 4.], dtype=float32),
        'diffuse_transmission_series': (
            array([0.0467618, 0.0467618, 0.0467618, ..., 0.0467618, 0.0467618,
                   0.0467618], dtype=float32)
        ),
    } (dict) len=7
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/altitude.py:157 calculate_diffuse_solar_altitude_coefficients_series_hofierka
    locals(): {
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'verbose': 11,
        'log': 0,
        'linke_turbidity_factor_series_squared_array': array([4., 4., 4., ..., 4., 4., 4.], dtype=float32),
        'diffuse_transmission_series': (
            array([0.0467618, 0.0467618, 0.0467618, ..., 0.0467618, 0.0467618,
                   0.0467618], dtype=float32)
        ),
        'diffuse_transmission_series_array': (
            array([0.0467618, 0.0467618, 0.0467618, ..., 0.0467618, 0.0467618,
                   0.0467618], dtype=float32)
        ),
        'a1_prime_series': (
            array([0.15403119, 0.15403119, 0.15403119, ..., 0.15403119, 0.15403119,
                   0.15403119], dtype=float32)
        ),
        'a1_series': (
            array([0.15403119, 0.15403119, 0.15403119, ..., 0.15403119, 0.15403119,
                   0.15403119], dtype=float32)
        ),
        'a2_series': (
            array([2.0334458, 2.0334458, 2.0334458, ..., 2.0334458, 2.0334458,
                   2.0334458], dtype=float32)
        ),
        'a3_series': (
            array([-1.1900064, -1.1900064, -1.1900064, ..., -1.1900064, -1.1900064,
                   -1.1900064], dtype=float32)
        ),
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/altitude.py:256 calculate_diffuse_solar_altitude_function_series_hofierka
    locals(): {
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'verbose': 11,
        'log': 0,
        'a1_series': (
            array([0.15403119, 0.15403119, 0.15403119, ..., 0.15403119, 0.15403119,
                   0.15403119], dtype=float32)
        ),
        'a2_series': (
            array([2.0334458, 2.0334458, 2.0334458, ..., 2.0334458, 2.0334458,
                   2.0334458], dtype=float32)
        ),
        'a3_series': (
            array([-1.1900064, -1.1900064, -1.1900064, ..., -1.1900064, -1.1900064,
                   -1.1900064], dtype=float32)
        ),
    } (dict) len=7
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/horizontal.py:293 calculate_clear_sky_diffuse_horizontal_irradiance_hofierka
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output=OrderedDict([
                ('Fingerprint', {}),
                ('References', {}),
                ('Sources', {}),
                ('Out-of-range', {}),
                ('Metadata', OrderedDict([
                    ('Day angle', (
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    )),
                    ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                ])),
                ('Context', {
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ('Eccentricity Phase Offset', 0.048869),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Lower physical limit [', -4),
                        ('Upper physical limit ]', 2000),
                        ('Solar constant', 1360.8),
                    ]),
                }),
                ('Core', {}),
                ('Extraterrestrial Normal Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Extra ⍖ ⦜', (
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], dtype=float32)
                    )),
                    ('Symbol', '⍖ ⦜'),
                    ('Description', 'Extraterrestrial irradiance'),
                    ('Title', 'Extraterrestrial Normal Irradiance'),
                    ('Name', 'Extraterrestrial Normal Irradiance'),
                ])),
                ('Solar Radiation Model', {}),
            ]),
        ),
        'diffuse_horizontal_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/muneer/irradiance/diffuse/term_n.py:80 calculate_term_n_series_hofierka
    locals(): {
        'kb_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'term_n_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
    } (dict) len=6
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/muneer/irradiance/diffuse/clear_sky/inclined.py:419 calculate_clear_sky_diffuse_inclined_irradiance_muneer
    locals(): {
        'elevation': 214.0,
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'surface_tilt_horizontally_flat_panel_threshold': 0.0001,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'global_horizontal_irradiance_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'direct_horizontal_irradiance_series': DirectHorizontalIrradiance(
            elevation=214.0,
            references=(
                'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploit'
                "ation 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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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([8.3381765e-17, 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([8.3381765e-17, 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. App'
                        'lied Optics, 28: 4735-4738.'
                    ),
                ),
                rayleigh_optical_thickness=RayleighThickness(
                    value=(
                        array([0.15083866, 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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=(
                        array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                              dtype=float32)
                    ),
                    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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], 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]),
                out_of_range=array([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 at'
                    'mosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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]),
            out_of_range=array([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([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={},
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'apply_reflectivity_factor': True,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n 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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=array([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([ 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_states': [
            <ShadingState.sunlit: 'Sunlit'>,
            <ShadingState.potentially_sunlit: 'Potentially-sunlit'>,
            <ShadingState.in_shade: 'In-shade'>,
        ],
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'diffuse_horizontal_irradiance_series': 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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output=OrderedDict([
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', OrderedDict([
                        ('Day angle', (
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        )),
                        ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                    ])),
                    ('Context', {
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                            ('Eccentricity Phase Offset', 0.048869),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Lower physical limit [', -4),
                            ('Upper physical limit ]', 2000),
                            ('Solar constant', 1360.8),
                        ]),
                    }),
                    ('Core', {}),
                    ('Extraterrestrial Normal Irradiance', OrderedDict([
                        ('Unit', 'W/m²'),
                        ('Extra ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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]),
                out_of_range=array([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([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]),
            out_of_range=array([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 norma'
                'l extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turb'
                'idity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='🗤⭳',
            description=(
                'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit ar'
                'ea at a given moment, expressed in watts per square meter (W/m²). The values concern a specific locat'
                'ion 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={},
        ),
        'shading_state_series': (
            array(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                   'In-shade'], dtype=object)
        ),
        'nan_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'unset_series': (
            array(['unset', 'unset', 'unset', ..., 'unset', 'unset', 'unset'],
                  dtype='<U5')
        ),
        'diffuse_inclined_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'diffuse_sky_irradiance_series': (
            array([0.7757712, 0.7757712, 0.7757712, ..., 0.7757712, 0.7757712,
                   0.7757712], dtype=float32)
        ),
        'n_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'kb_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'azimuth_difference_series': 'NA',
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output={},
        ),
        'extraterrestrial_horizontal_irradiance_series': 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]),
            out_of_range=array([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([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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output={},
            ),
            output={},
        ),
        'select_models': <function select_models at 0x7b14d90d6520>,
        'diffuse_irradiance_reflectivity_coefficient': 1.6731199955793676,
        'diffuse_inclined_irradiance_reflectivity_factor_series': (
            array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                   0.98963577], dtype=float32)
        ),
        'diffuse_inclined_irradiance_before_reflectivity_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'diffuse_irradiance_reflectivity_factor': 0.9896357746950568,
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=40
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/altitude.py:190 model_solar_altitude_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/direct/refraction.py:93 calculate_refracted_solar_altitude_series
    locals(): {
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'atmospheric_refraction': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'refracted_solar_altitude_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
    } (dict) len=7
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/direct/rayleigh_optical_thickness.py:72 calculate_rayleigh_optical_thickness_series
    locals(): {
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=array([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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'rayleigh_thickness_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'smaller_than_20': array([False, False, False, ..., False, False, False]),
        'larger_than_20': array([False, False, False, ..., False, False, False]),
    } (dict) len=8
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/normal.py:196 calculate_direct_normal_irradiance_hofierka
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=array([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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'clip_to_physically_possible_limits': True,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output={},
        ),
        'corrected_linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=(
                array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                      dtype=float32)
            ),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'rayleigh_optical_thickness_series': RayleighThickness(
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            unit='Unitless',
        ),
        'exponent': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'direct_normal_irradiance_series': array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=18
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/direct/clear_sky/horizontal.py:180 calculate_clear_sky_direct_horizontal_irradiance_hofierka
    locals(): {
        'elevation': 214.0,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=array([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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'refracted_solar_altitude_series': RefractedSolarAltitude(
            solar_timing_algorithm=None,
            solar_positioning_algorithm=None,
            data_source=None,
            equation=None,
            algorithm=None,
            unit='degrees',
            value=array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            symbol='⦩',
            description='Solar altitude data for a location and period in time',
            label=None,
            title='Refracted Solar Altitude',
            supertitle='Solar Irradiance',
            shortname='Altitude',
            name='Refracted Solar Altitude',
            refracted_value=array([], dtype=float64),
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'optical_air_mass_series': OpticalAirMass(
            name='Relative optical air mass',
            title='Optical Air Mass',
            description='The relative optical air mass',
            value=array([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 Opt'
                'ics, 28: 4735-4738.'
            ),
        ),
        'direct_normal_irradiance_series': DirectNormalIrradiance(
            optical_air_mass=OpticalAirMass(
                name='Relative optical air mass',
                title='Optical Air Mass',
                description='The relative optical air mass',
                value=array([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., 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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=(
                    array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                          dtype=float32)
                ),
                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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], 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]),
            out_of_range=array([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 atmosp'
                'here, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
            ),
            unit='W/m²',
            value=array([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={},
        ),
        'mask_solar_altitude_positive': array([False, False, False, ..., False, False, False]),
        'mask_not_in_shade': array([False, False, False, ..., False, False, False]),
        'mask_sunlit_surface_series': array([False, False, False, ..., False, False, False]),
        'array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'zeros',
            'backend': 'numpy',
        },
        'direct_horizontal_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=22
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/direct/horizontal.py:175 calculate_clear_sky_direct_horizontal_irradiance_series
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'horizon_profile': None,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'coordinates': {
            'longitude': np.float64(0.13962634015954636),
            'latitude': np.float64(0.7853981633974483),
        },
        'time': {
            'timestamps': (
                DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                               '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                               '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                               '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                               '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                               ...
                               '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                               '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                               '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                               '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                               '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                              dtype='datetime64[ns, UTC]', length=184081, freq='h')
            ),
            'timezone': zoneinfo.ZoneInfo(key='UTC'),
        },
        'solar_positioning': {
            'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
            'adjust_for_atmospheric_refraction': True,
            'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        },
        'earth_orbit': {
            'eccentricity_phase_offset': 0.048869,
            'eccentricity_amplitude': 0.03344,
        },
        'array_parameters': {
            'dtype': 'float32',
            'array_backend': 'numpy',
        },
        'output_parameters': {
            'verbose': 11,
            'log': 0,
        },
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=array([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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'direct_horizontal_irradiance_series': DirectHorizontalIrradiance(
            elevation=214.0,
            references=(
                'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploit'
                "ation 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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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([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([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. App'
                        'lied Optics, 28: 4735-4738.'
                    ),
                ),
                rayleigh_optical_thickness=RayleighThickness(
                    value=array([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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=(
                        array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                              dtype=float32)
                    ),
                    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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], 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]),
                out_of_range=array([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 at'
                    'mosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                ),
                unit='W/m²',
                value=array([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([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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]),
            out_of_range=array([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([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([ True,  True,  True, ...,  True,  True,  True])),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', None),
                        ('Timing ⏲', None),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Atmospheric Refraction': OrderedDict([
                        ('Refracted alt. ⦧ ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Unrefracted ⌮', None),
                    ]),
                    'Irradiance Metadata': OrderedDict([
                        ('Normal', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Solar constant', 1367.0),
                        ('Upper physical limit ]', 2000),
                        ('Lower physical limit [', -4),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Phase Offset', 0.048869),
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
                ('Direct Horizontal Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Symbol', '⇣ ⭳'),
                    ('Description', 'Direct horizontal irradiance'),
                    ('Title', 'Direct Horizontal Irradiance'),
                    ('Name', 'Direct Horizontal Irradiance Data'),
                ])),
                ('Atmospheric Properties', {
                    'Optical Properties': OrderedDict([
                        ('Air Mass', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Optical Thickness', None),
                    ]),
                }),
                ('Elevation', OrderedDict([
                    ('Elevation 🏔', 214.0),
                ])),
            ]),
        ),
    } (dict) len=29
.venv/lib/python3.11/site-packages/pvgisprototype/api/position/altitude.py:190 model_solar_altitude_series
    locals(): {
        'longitude': Longitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.13962634015954636,
            symbol='Λ',
            description=(
                "The angle between a point on the Earth's surface and the meridian plane, with its value ranging from "
                '0° at the Prime Meridian in Greenwich, England, to 180° east or west.'
            ),
            label='Longitude',
            title='Longitude',
            supertitle='Longitude data',
            shortname='Longitude',
            name='Longitude',
            min_radians=-3.141592653589793,
            max_radians=3.141592653589793,
            min_degrees=-180,
            max_degrees=180,
        ),
        'latitude': Latitude(
            data_source=None,
            equation=None,
            algorithm=None,
            unit='radians',
            value=0.7853981633974483,
            symbol='Φ',
            description=(
                "The angle between a point on the Earth's surface and the equatorial plane. It indicates a location's "
                'distance north or south of the equator, ranging from 0° at the Equator to 90° North or South at the p'
                'oles.'
            ),
            label='Latitude',
            title='Latitude',
            supertitle='Latitude data',
            shortname='Latitude',
            name='Latitude',
            min_radians=-1.5707963267948966,
            max_radians=1.5707963267948966,
            min_degrees=-90,
            max_degrees=90,
        ),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'adjust_for_atmospheric_refraction': True,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'validate_output': False,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/horizontal.py:293 calculate_clear_sky_diffuse_horizontal_irradiance_hofierka
    locals(): {
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'extraterrestrial_normal_irradiance_series': 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]),
            out_of_range=array([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 cons'
                'tant 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                       1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
            day_angle=(
                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                       6.283186  ], dtype=float32)
            ),
            distance_correction_factor=(
                array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                       1.0334   ], dtype=float32)
            ),
            output=OrderedDict([
                ('Fingerprint', {}),
                ('References', {}),
                ('Sources', {}),
                ('Out-of-range', {}),
                ('Metadata', OrderedDict([
                    ('Day angle', (
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    )),
                    ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                ])),
                ('Context', {
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ('Eccentricity Phase Offset', 0.048869),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Lower physical limit [', -4),
                        ('Upper physical limit ]', 2000),
                        ('Solar constant', 1360.8),
                    ]),
                }),
                ('Core', {}),
                ('Extraterrestrial Normal Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Extra ⍖ ⦜', (
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], dtype=float32)
                    )),
                    ('Symbol', '⍖ ⦜'),
                    ('Description', 'Extraterrestrial irradiance'),
                    ('Title', 'Extraterrestrial Normal Irradiance'),
                    ('Name', 'Extraterrestrial Normal Irradiance'),
                ])),
                ('Solar Radiation Model', {}),
            ]),
        ),
        'diffuse_horizontal_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=14
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/diffuse/clear_sky/horizontal.py:107 calculate_clear_sky_diffuse_horizontal_irradiance
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'diffuse_horizontal_irradiance_series': 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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output=OrderedDict([
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', OrderedDict([
                        ('Day angle', (
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        )),
                        ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                    ])),
                    ('Context', {
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                            ('Eccentricity Phase Offset', 0.048869),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Lower physical limit [', -4),
                            ('Upper physical limit ]', 2000),
                            ('Solar constant', 1360.8),
                        ]),
                    }),
                    ('Core', {}),
                    ('Extraterrestrial Normal Irradiance', OrderedDict([
                        ('Unit', 'W/m²'),
                        ('Extra ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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]),
                out_of_range=array([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([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]),
            out_of_range=array([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 norma'
                'l extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turb'
                'idity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='🗤⭳',
            description=(
                'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit ar'
                'ea at a given moment, expressed in watts per square meter (W/m²). The values concern a specific locat'
                'ion 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([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)'),
                ])),
                ('Core', {}),
                ('Context', {
                    'Atmospheric Properties': OrderedDict([
                        ('Unrefracted ⌮', None),
                        ('Refracted alt. ⦧ ⦩', array([], dtype=float64)),
                        ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', 'NOAA'),
                        ('Timing ⏲', None),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ('Eccentricity Phase Offset', 0.048869),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Lower physical limit [', -4),
                        ('Upper physical limit ]', 2000),
                        ('Solar constant', 1367.0),
                    ]),
                    'Extraterrestrial Normal Irradiance': OrderedDict([
                        ('Extra Normal ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], dtype=float32)
                        )),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
                ('Angular Unit', OrderedDict([
                    ('Angle Unit', None),
                ])),
            ]),
        ),
    } (dict) len=18
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/diffuse/clear_sky/ground_reflected.py:442 calculate_clear_sky_ground_reflected_inclined_irradiance_series_pvgis
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'surface_tilt_threshold': 0.0001,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'albedo': 0.2,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'coordinates': {
            'longitude': np.float64(0.13962634015954636),
            'latitude': np.float64(0.7853981633974483),
        },
        'time': {
            'timestamps': (
                DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                               '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                               '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                               '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                               '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                               ...
                               '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                               '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                               '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                               '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                               '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                              dtype='datetime64[ns, UTC]', length=184081, freq='h')
            ),
            'timezone': zoneinfo.ZoneInfo(key='UTC'),
        },
        'solar_positioning': {
            'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
            'adjust_for_atmospheric_refraction': True,
            'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        },
        'earth_orbit': {
            'eccentricity_phase_offset': 0.048869,
            'eccentricity_amplitude': 0.03344,
        },
        'array_parameters': {
            'dtype': 'float32',
            'array_backend': 'numpy',
        },
        'output_parameters': {
            'verbose': 11,
            'log': 0,
        },
        'ground_view_fraction': 0.1464466094067262,
        'global_horizontal_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'direct_horizontal_irradiance_series': DirectHorizontalIrradiance(
            elevation=214.0,
            references=(
                'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exploit'
                "ation 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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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([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([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. App'
                        'lied Optics, 28: 4735-4738.'
                    ),
                ),
                rayleigh_optical_thickness=RayleighThickness(
                    value=array([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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=(
                        array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                              dtype=float32)
                    ),
                    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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], 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]),
                out_of_range=array([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 at'
                    'mosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                ),
                unit='W/m²',
                value=array([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([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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]),
            out_of_range=array([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([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([ True,  True,  True, ...,  True,  True,  True])),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', None),
                        ('Timing ⏲', None),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Atmospheric Refraction': OrderedDict([
                        ('Refracted alt. ⦧ ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Unrefracted ⌮', None),
                    ]),
                    'Irradiance Metadata': OrderedDict([
                        ('Normal', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Solar constant', 1367.0),
                        ('Upper physical limit ]', 2000),
                        ('Lower physical limit [', -4),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Phase Offset', 0.048869),
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
                ('Direct Horizontal Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Symbol', '⇣ ⭳'),
                    ('Description', 'Direct horizontal irradiance'),
                    ('Title', 'Direct Horizontal Irradiance'),
                    ('Name', 'Direct Horizontal Irradiance Data'),
                ])),
                ('Atmospheric Properties', {
                    'Optical Properties': OrderedDict([
                        ('Air Mass', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Optical Thickness', None),
                    ]),
                }),
                ('Elevation', OrderedDict([
                    ('Elevation 🏔', 214.0),
                ])),
            ]),
        ),
        'diffuse_horizontal_irradiance_series': 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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output=OrderedDict([
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', OrderedDict([
                        ('Day angle', (
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        )),
                        ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                    ])),
                    ('Context', {
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                            ('Eccentricity Phase Offset', 0.048869),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Lower physical limit [', -4),
                            ('Upper physical limit ]', 2000),
                            ('Solar constant', 1360.8),
                        ]),
                    }),
                    ('Core', {}),
                    ('Extraterrestrial Normal Irradiance', OrderedDict([
                        ('Unit', 'W/m²'),
                        ('Extra ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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]),
                out_of_range=array([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([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]),
            out_of_range=array([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 norma'
                'l extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Linke turb'
                'idity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar altitude.'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='🗤⭳',
            description=(
                'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per unit ar'
                'ea at a given moment, expressed in watts per square meter (W/m²). The values concern a specific locat'
                'ion 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([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)'),
                ])),
                ('Core', {}),
                ('Context', {
                    'Atmospheric Properties': OrderedDict([
                        ('Unrefracted ⌮', None),
                        ('Refracted alt. ⦧ ⦩', array([], dtype=float64)),
                        ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', 'NOAA'),
                        ('Timing ⏲', None),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ('Eccentricity Phase Offset', 0.048869),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Lower physical limit [', -4),
                        ('Upper physical limit ]', 2000),
                        ('Solar constant', 1367.0),
                    ]),
                    'Extraterrestrial Normal Irradiance': OrderedDict([
                        ('Extra Normal ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], dtype=float32)
                        )),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
                ('Angular Unit', OrderedDict([
                    ('Angle Unit', None),
                ])),
            ]),
        ),
        'ground_reflected_inclined_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=33
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/diffuse/ground_reflected.py:160 calculate_ground_reflected_inclined_irradiance_series
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'surface_tilt_threshold': 0.0001,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'albedo': 0.2,
        'global_horizontal_irradiance': None,
        'apply_reflectivity_factor': True,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'ground_reflected_inclined_irradiance_series': ClearSkyDiffuseGroundReflectedInclinedIrradiance(
            timestamps=None,
            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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'W/m²'),
                        ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)'),
                    ])),
                    ('Core', {}),
                    ('Context', {
                        'Atmospheric Properties': OrderedDict([
                            ('Unrefracted ⌮', None),
                            ('Refracted alt. ⦧ ⦩', array([], dtype=float64)),
                            ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                        ]),
                        'Solar Position Algorithms': OrderedDict([
                            ('Positioning ⯐', 'NOAA'),
                            ('Timing ⏲', None),
                        ]),
                        'Solar Position': OrderedDict([
                            ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                            ('Eccentricity Phase Offset', 0.048869),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Lower physical limit [', -4),
                            ('Upper physical limit ]', 2000),
                            ('Solar constant', 1367.0),
                        ]),
                        'Extraterrestrial Normal Irradiance': OrderedDict([
                            ('Extra Normal ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], dtype=float32)
                            )),
                        ]),
                    }),
                    ('Metadata', OrderedDict([
                        ('Radiation model ⸾', 'Hofierka 2002'),
                    ])),
                    ('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 exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([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. App'
                        'lied 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([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., 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=array([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([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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([ True,  True,  True, ...,  True,  True,  True])),
                        ]),
                        'Solar Position Algorithms': OrderedDict([
                            ('Positioning ⯐', None),
                            ('Timing ⏲', None),
                        ]),
                        'Solar Position': OrderedDict([
                            ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Atmospheric Refraction': OrderedDict([
                            ('Refracted alt. ⦧ ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                            ('Unrefracted ⌮', None),
                        ]),
                        'Irradiance Metadata': OrderedDict([
                            ('Normal', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Solar constant', 1367.0),
                            ('Upper physical limit ]', 2000),
                            ('Lower physical limit [', -4),
                        ]),
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Phase Offset', 0.048869),
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ]),
                    }),
                    ('Metadata', OrderedDict([
                        ('Radiation model ⸾', 'Hofierka 2002'),
                    ])),
                    ('Out-of-range', {}),
                    ('Sources', {}),
                    ('References', {}),
                    ('Fingerprint', {}),
                    ('Direct Horizontal Irradiance', OrderedDict([
                        ('Unit', 'W/m²'),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Symbol', '⇣ ⭳'),
                        ('Description', 'Direct horizontal irradiance'),
                        ('Title', 'Direct Horizontal Irradiance'),
                        ('Name', 'Direct Horizontal Irradiance Data'),
                    ])),
                    ('Atmospheric Properties', {
                        'Optical Properties': OrderedDict([
                            ('Air Mass', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                            ('Optical Thickness', None),
                        ]),
                    }),
                    ('Elevation', OrderedDict([
                        ('Elevation 🏔', 214.0),
                    ])),
                ]),
            ),
            global_horizontal_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            angle_output_units=None,
            reflected_percentage=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflectivity_factor=(
                array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                       0.9297871], dtype=float32)
            ),
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            albedo=0.2,
            ground_view_fraction=0.1464466094067262,
            solar_timing_algorithm=None,
            solar_positioning_algorithm='NOAA',
            surface_tilt_threshold=0.0001,
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            elevation=214.0,
            location=(
                0.13962634015954636,
                0.7853981633974483,
            ),
            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]),
            out_of_range=array([False, False, False, ..., False, False, False]),
            upper_physically_possible_limit=2000,
            lower_physically_possible_limit=-4,
            solar_constant=1367.0,
            data_source=None,
            equation='Global ⤋ ⭳ ∙ Ground-View % ∙ Albedo ⌰',
            algorithm=(
                'The clear-sky diffuse ground-reflected irradiance [⭞] on an inclined surface is simulated as a fracti'
                'on of the global horizontal [⭳] irradiance modulated by the ground-view fraction and the albedo [⌰] o'
                'f the terrain surrounding the surface. If the global horizontal irradiance is not retrieved from exte'
                'rnal data, it is simulated internally by estimating the direct and diffuse sky-reflected irradiance c'
                'omponents.'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='⭞',
            description='Clear-sky ground-reflected irradiance time series',
            label='⭞ ∡ Simulated Ground-Diffuse Inclined Irradiance',
            title='Ground-Diffuse Inclined Irradiance',
            supertitle='Ground-Diffuse Inclined Irradiance',
            shortname='Simulated Ground-Diffuse',
            name='Simulated Diffuse Ground-Reflected Irradiance Data',
            output=OrderedDict([
                ('Surface Position', OrderedDict([
                    ('Surface Orientation ↻', 2.91469985083053),
                    ('Surface Tilt ⦥', 0.7853981633974483),
                    ('Angle Unit', None),
                ])),
                ('Diffuse Ground-Reflected Inclined Irradiance', OrderedDict([
                    ('Name', 'Simulated Diffuse Ground-Reflected Irradiance Data'),
                    ('Title', 'Ground-Diffuse Inclined Irradiance'),
                    ('Description', 'Clear-sky ground-reflected irradiance time series'),
                    ('Symbol', '⭞'),
                    ('Simulated Ground-Diffuse ⭞', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Radiation model ⸾', 'Hofierka 2002'),
                    ('Equation', 'Global ⤋ ⭳ ∙ Ground-View % ∙ Albedo ⌰'),
                ])),
                ('Core', {}),
                ('Context', {
                    'Irradiance Metadata': OrderedDict([
                        ('Sky-Diffuse Horizontal 🗤⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Reflectivity effect': OrderedDict([
                        ('Ground-Diffuse Reflected ⭞ -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Ground-Diffuse Reflected ⭞ -⭜ %', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Reflectivity factor': OrderedDict([
                        ('Ground-Diffuse Reflectivity ⋅⭜ ⭞', (
                            array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                                   0.9297871], dtype=float32)
                        )),
                        ('Simulated Ground-Diffuse ⭞ 🌣', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Equation Metadata': OrderedDict([
                        ('View %', 0.1464466094067262),
                        ('Albedo ⌰', 0.2),
                        ('Global ⤋ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', 'NOAA'),
                        ('Timing ⏲', None),
                    ]),
                }),
                ('Metadata', {}),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
            ]),
        ),
    } (dict) len=24
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/hofierka/irradiance/shortwave/clear_sky/inclined.py:396 calculate_clear_sky_global_inclined_irradiance_hofierka
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'surface_tilt_horizontally_flat_panel_threshold': 0.0001,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'global_horizontal_irradiance': None,
        'direct_horizontal_irradiance': None,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'albedo': 0.2,
        'apply_reflectivity_factor': True,
        'solar_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n 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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['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_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=array([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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'shading_states': [
            <ShadingState.all: 'all'>,
        ],
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'zeros',
            'backend': 'numpy',
        },
        'zero_array': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'direct_inclined_irradiance_series': DirectInclinedIrradiance(
            linke_turbidity_factor=LinkeTurbidityFactor(
                name=None,
                title='Linke Turbidity',
                description=(
                    'The Linke Turbidity Factor describes the attenuation of the extraterrestrial solar radiation by s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                unit='unitless',
                minimum=0,
                maximum=8,
            ),
            direct_horizontal_irradiance=DirectHorizontalIrradiance(
                elevation=214.0,
                references=(
                    'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([8.3381765e-17, 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. App'
                        'lied 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([8.3381765e-17, 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.15083866, 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=(
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                           -67.331726], dtype=float32)
                ),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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={},
            ),
            eccentricity_amplitude=0.03344,
            eccentricity_phase_offset=0.048869,
            angle_output_units=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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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',
            elevation=214.0,
            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.], dtype=float32),
                symbol='⭸',
                description=(
                    "The 'complementary' definition of the incidence incidence is the angle between the position of th"
                    'e 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 c'
                    'omplementary 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 th"
                    'e sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
                ),
                sun_horizon_position=(
                    array(['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={},
            ),
            refracted_solar_altitude=(
                array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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={},
            ),
            solar_timing_algorithm='NOAA',
            solar_positioning_algorithm='NOAA',
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflectivity_factor=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflected_percentage=array([], dtype=float64),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            fingerprint=False,
            quality=None,
            solar_radiation_model='Hofierka 2002',
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([False, False, False, ..., False, False, False]),
            upper_physically_possible_limit=2000,
            lower_physically_possible_limit=-4,
            solar_constant=1367.0,
            data_source=[
                'Source of the direct inclined solar radiation data',
            ],
            equation='Bic = Bhc sin δexp/sin h0',
            algorithm=(
                'The direct (beam) irradiance on an inclined surface is calculated as Direct inclined irradiance = Dir'
                'ect horizontal irradiance * sin( solar incidence) where solar incidence is the angle between the sun '
                'and an inclined surface.'
            ),
            unit='W/m²',
            value=array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
            symbol='⇣ ∡',
            description='Direct inclined irradiance',
            label='⇣ ∡ Simulated Direct Inclined Irradiance',
            title='Direct Inclined Irradiance',
            supertitle='Direct Inclined Irradiance',
            shortname='Direct Inclined',
            name='Direct Inclined Irradiance Data',
            adjust_for_atmospheric_refraction=False,
            adjusted_for_atmospheric_refraction=True,
            output=OrderedDict([
                ('Direct Inclined Irradiance', OrderedDict([
                    ('Unit', 'W/m²'),
                    ('Direct Inclined ⇣ ∡', array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32)),
                    ('Symbol', '⇣ ∡'),
                    ('Description', 'Direct inclined irradiance'),
                    ('Title', 'Direct Inclined Irradiance'),
                    ('Name', 'Direct Inclined Irradiance Data'),
                ])),
                ('Surface Position', OrderedDict([
                    ('Surface Orientation ↻', 2.91469985083053),
                    ('Surface Tilt ⦥', 0.7853981633974483),
                    ('Angle Unit', None),
                ])),
                ('Core', {}),
                ('Context', {
                    'Linke Turbidity': OrderedDict([
                        ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                    ]),
                    'Reflectivity effect': OrderedDict([
                        ('Direct ⇣ -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct Reflectivity ⭳-⭜ %', array([], dtype=float64)),
                    ]),
                    'Reflectivity factor': OrderedDict([
                        ('Direct Reflectivity ⋅⭜ ⇣∡', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct ⇣ ∡ ☉', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Solar Irradiance Metadata': OrderedDict([
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Atmospheric Refraction': OrderedDict([
                        ('Unrefracted ⦧', True),
                        ('Refracted alt. ⦧ ⦩', (
                            array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                                   -67.331726], dtype=float32)
                        )),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Solar constant', 1367.0),
                        ('Upper physical limit ]', 2000),
                        ('Lower physical limit [', -4),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Incidence ⭸', array([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'),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Phase Offset', 0.048869),
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                    ]),
                    'Shading': OrderedDict([
                        ('In-shade 🮞', array([ True,  True,  True, ...,  True,  True,  True])),
                    ]),
                    'Shading Metadata': OrderedDict([
                        ('Shading 🮞', 'PVGIS'),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
            ]),
        ),
        'diffuse_inclined_irradiance_series': DiffuseSkyReflectedInclinedIrradiance(
            angle_output_units=None,
            elevation=214.0,
            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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output={},
            ),
            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]),
                out_of_range=array([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([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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output={},
                ),
                output={},
            ),
            diffuse_sky_irradiance=(
                array([0.7757712, 0.7757712, 0.7757712, ..., 0.7757712, 0.7757712,
                       0.7757712], dtype=float32)
            ),
            direct_horizontal_irradiance=DirectHorizontalIrradiance(
                elevation=214.0,
                references=(
                    'Scharmer, K., Greif, J., eds., 2000, The European solar radiation atlas. Vol. 2: Database and exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([8.3381765e-17, 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. App'
                        'lied 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([8.3381765e-17, 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.15083866, 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=(
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                           -67.331726], dtype=float32)
                ),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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={},
            ),
            global_horizontal_irradiance=array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            reflected_percentage=array([], dtype=float64),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflectivity_factor=(
                array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                       0.98963577], dtype=float32)
            ),
            reflectivity_coefficient=1.6731199955793676,
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            term_n=array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            kb_ratio=array([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
            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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                       'In-shade'], dtype=object)
            ),
            shading_states={
                <ShadingState.sunlit: 'Sunlit'>,
                <ShadingState.potentially_sunlit: 'Potentially-sunlit'>,
                <ShadingState.in_shade: 'In-shade'>,
            },
            shading_algorithm='PVGIS',
            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.], dtype=float32),
                symbol='⭸',
                description=(
                    "The 'complementary' definition of the incidence incidence is the angle between the position of th"
                    'e 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 c'
                    'omplementary 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 th"
                    'e sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
                ),
                sun_horizon_position=(
                    array(['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={},
            ),
            surface_tilt_threshold=0.0001,
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            azimuth_difference=array('NA', dtype='<U2'),
            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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], 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={},
            ),
            solar_timing_algorithm=None,
            solar_positioning_algorithm=None,
            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]),
                out_of_range=array([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([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]),
            out_of_range=array([False, False, False, ..., False, False, False]),
            upper_physically_possible_limit=2000,
            lower_physically_possible_limit=-4,
            solar_constant=1367.0,
            data_source=None,
            equation=(
                'Diffuse 🗤 ∡ = Diffuse 🗤 ⭳ * F{Diffuse sky irradiance, ground-view fraction, Kₑ, solar_incidence, sola'
                'r_altitude, ...}'
            ),
            algorithm=(
                'The diffuse inclined irradiance equals to : 1. for sunlit surfaces and non-overcast sky: a) if solar_'
                'altitude >= 5.7° then : Diffuse horizontal * {Diffuse sky irradiance(ground view fraction) * (1 - Kₑ)'
                ' + Kₑ * sin(solar_incidence) / sin(solar_altitude)}, b) if solar_altitude < 5.7° then : Diffuse horiz'
                'ontal * {Diffuse sky irradiance(ground view fraction) * (1 - Kₑ) + Kₑ * sin(ground-view fraction) * c'
                'os(ALN)/(0.1 - 0.008 * solar_altitude)}. 2) for surfaces in shade (solar_incidence < 0 and solar_alti'
                'tude >= 0) : Diffuse horizontal * Diffuse sky irradiance(ground-view fraction).'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='🗤∡',
            description=(
                'Diffuse sky-reflected inclined irradiance is a solar power component received per unit area at a give'
                'n moment, expressed in watts per square meter (W/m²). The values concern a specific location and a mo'
                'ment or period in time.'
            ),
            label='🗤 ∡ Clear-Sky-Diffuse Inclined Irradiance',
            title='Clear-Sky-Diffuse Inclined',
            supertitle='Clear-Sky-Diffuse Horizontal Irradiance Series',
            shortname='Sky-Diffuse',
            name='Diffuse Sky-Reflected Inclined Irradiance Data',
            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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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={},
            ),
            output=OrderedDict([
                ('Diffuse Sky-Reflected Inclined Irradiance', OrderedDict([
                    ('Name', 'Diffuse Sky-Reflected Inclined Irradiance Data'),
                    ('Title', 'Clear-Sky-Diffuse Inclined'),
                    ('Description', (
                        'Diffuse sky-reflected inclined irradiance is a solar power component received per unit area a'
                        't a given moment, expressed in watts per square meter (W/m²). The values concern a specific l'
                        'ocation and a moment or period in time.'
                    )),
                    ('Symbol', '🗤∡'),
                    ('Sky-Diffuse 🗤∡', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Equation', (
                        'Diffuse 🗤 ∡ = Diffuse 🗤 ⭳ * F{Diffuse sky irradiance, ground-view fraction, Kₑ, solar_inciden'
                        'ce, solar_altitude, ...}'
                    )),
                ])),
                ('Core', {}),
                ('Context', {
                    'Irradiance Metadata': OrderedDict([
                        ('Global ⤋ ⭳', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Sky-Diffuse 🗤 ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Diffuse Sky-Reflected Irradiance Metadata': OrderedDict([
                        ('Sky-Diffuse 🗤 ☉', (
                            array([0.7757712, 0.7757712, 0.7757712, ..., 0.7757712, 0.7757712,
                                   0.7757712], dtype=float32)
                        )),
                        ('Kb ∶', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Extraterrestrial Irradiance Metadata': OrderedDict([
                        ('Extra Horizontal ⍖ ⭳', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Extra Normal ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], dtype=float32)
                        )),
                    ]),
                    'Reflectivity effect': OrderedDict([
                        ('Reflected 🗤-⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Reflected 🗤-⭜ %', array([], dtype=float64)),
                    ]),
                    'Reflectivity factor': OrderedDict([
                        ('Reflectivity Factor ⋅⭜ 🗤∡', (
                            array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                                   0.98963577], dtype=float32)
                        )),
                        ('Sky-Diffuse 🗤∡ ☉', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Reflectivity Coefficient': OrderedDict([
                        ('Reflectivity Coefficient ×⭜ 🗤∡', 1.6731199955793676),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Solar constant', 1367.0),
                        ('Upper physical limit ]', 2000),
                        ('Lower physical limit [', -4),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Azimuth \U000f19a5', (
                            array([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                                   0.31464052], dtype=float32)
                        )),
                        ('Azimuth Origin \U000f19a5', 'North'),
                        ('Incidence ⭸', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Timing ⏲', None),
                        ('Positioning ⯐', None),
                        ('Incidence algorithm ⭸', 'Iqbal'),
                        ('Incidence angle ⭸', 'Sun-Vector-to-Surface-Plane'),
                    ]),
                    'Shading': OrderedDict([
                        ('Shading state 🮞', (
                            array(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                                   'In-shade'], dtype=object)
                        )),
                        ('In-shade 🮞', array([ True,  True,  True, ...,  True,  True,  True])),
                        ('Visible 👁', array([], dtype=float64)),
                    ]),
                    'Shading Metadata': OrderedDict([
                        ('Shading 🮞', 'PVGIS'),
                        ('Shading states 🮞', {
                            <ShadingState.sunlit: 'Sunlit'>,
                            <ShadingState.potentially_sunlit: 'Potentially-sunlit'>,
                            <ShadingState.in_shade: 'In-shade'>,
                        }),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Phase Offset', 0.048869),
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', OrderedDict([
                    ('Outbound ⊖', array([False, False, False, ..., False, False, False])),
                    ('Outbound ⊖ i', array([-1, -1, -1, ..., -1, -1, -1])),
                ])),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
                ('Surface Position', OrderedDict([
                    ('Angle Unit', None),
                    ('Surface Tilt ⦥', 0.7853981633974483),
                    ('Surface Orientation ↻', 2.91469985083053),
                ])),
                ('Elevation', OrderedDict([
                    ('Elevation 🏔', 214.0),
                ])),
            ]),
        ),
        'ground_reflected_inclined_irradiance_series': ClearSkyDiffuseGroundReflectedInclinedIrradiance(
            timestamps=None,
            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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'W/m²'),
                        ('Equation', 'Dₕc = G₀ ⋅ Tₙ(Tₗₖ) ⋅ F_d(h₀)'),
                    ])),
                    ('Core', {}),
                    ('Context', {
                        'Atmospheric Properties': OrderedDict([
                            ('Unrefracted ⌮', None),
                            ('Refracted alt. ⦧ ⦩', array([], dtype=float64)),
                            ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                        ]),
                        'Solar Position Algorithms': OrderedDict([
                            ('Positioning ⯐', 'NOAA'),
                            ('Timing ⏲', None),
                        ]),
                        'Solar Position': OrderedDict([
                            ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                            ('Eccentricity Phase Offset', 0.048869),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Lower physical limit [', -4),
                            ('Upper physical limit ]', 2000),
                            ('Solar constant', 1367.0),
                        ]),
                        'Extraterrestrial Normal Irradiance': OrderedDict([
                            ('Extra Normal ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], dtype=float32)
                            )),
                        ]),
                    }),
                    ('Metadata', OrderedDict([
                        ('Radiation model ⸾', 'Hofierka 2002'),
                    ])),
                    ('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 exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([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. App'
                        'lied 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([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., 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=array([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([nan, nan, nan, ..., nan, nan, nan], dtype=float32),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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([ True,  True,  True, ...,  True,  True,  True])),
                        ]),
                        'Solar Position Algorithms': OrderedDict([
                            ('Positioning ⯐', None),
                            ('Timing ⏲', None),
                        ]),
                        'Solar Position': OrderedDict([
                            ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Atmospheric Refraction': OrderedDict([
                            ('Refracted alt. ⦧ ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                            ('Unrefracted ⌮', None),
                        ]),
                        'Irradiance Metadata': OrderedDict([
                            ('Normal', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ]),
                        'Solar Parameters': OrderedDict([
                            ('Solar constant', 1367.0),
                            ('Upper physical limit ]', 2000),
                            ('Lower physical limit [', -4),
                        ]),
                        'Earth Orbit': OrderedDict([
                            ('Eccentricity Phase Offset', 0.048869),
                            ('Eccentricity Amplitude ⋅⬭', 0.03344),
                        ]),
                    }),
                    ('Metadata', OrderedDict([
                        ('Radiation model ⸾', 'Hofierka 2002'),
                    ])),
                    ('Out-of-range', {}),
                    ('Sources', {}),
                    ('References', {}),
                    ('Fingerprint', {}),
                    ('Direct Horizontal Irradiance', OrderedDict([
                        ('Unit', 'W/m²'),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Symbol', '⇣ ⭳'),
                        ('Description', 'Direct horizontal irradiance'),
                        ('Title', 'Direct Horizontal Irradiance'),
                        ('Name', 'Direct Horizontal Irradiance Data'),
                    ])),
                    ('Atmospheric Properties', {
                        'Optical Properties': OrderedDict([
                            ('Air Mass', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                            ('Optical Thickness', None),
                        ]),
                    }),
                    ('Elevation', OrderedDict([
                        ('Elevation 🏔', 214.0),
                    ])),
                ]),
            ),
            global_horizontal_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            angle_output_units=None,
            reflected_percentage=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflectivity_factor=(
                array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                       0.9297871], dtype=float32)
            ),
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            albedo=0.2,
            ground_view_fraction=0.1464466094067262,
            solar_timing_algorithm=None,
            solar_positioning_algorithm='NOAA',
            surface_tilt_threshold=0.0001,
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            elevation=214.0,
            location=(
                0.13962634015954636,
                0.7853981633974483,
            ),
            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]),
            out_of_range=array([False, False, False, ..., False, False, False]),
            upper_physically_possible_limit=2000,
            lower_physically_possible_limit=-4,
            solar_constant=1367.0,
            data_source=None,
            equation='Global ⤋ ⭳ ∙ Ground-View % ∙ Albedo ⌰',
            algorithm=(
                'The clear-sky diffuse ground-reflected irradiance [⭞] on an inclined surface is simulated as a fracti'
                'on of the global horizontal [⭳] irradiance modulated by the ground-view fraction and the albedo [⌰] o'
                'f the terrain surrounding the surface. If the global horizontal irradiance is not retrieved from exte'
                'rnal data, it is simulated internally by estimating the direct and diffuse sky-reflected irradiance c'
                'omponents.'
            ),
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='⭞',
            description='Clear-sky ground-reflected irradiance time series',
            label='⭞ ∡ Simulated Ground-Diffuse Inclined Irradiance',
            title='Ground-Diffuse Inclined Irradiance',
            supertitle='Ground-Diffuse Inclined Irradiance',
            shortname='Simulated Ground-Diffuse',
            name='Simulated Diffuse Ground-Reflected Irradiance Data',
            output=OrderedDict([
                ('Surface Position', OrderedDict([
                    ('Surface Orientation ↻', 2.91469985083053),
                    ('Surface Tilt ⦥', 0.7853981633974483),
                    ('Angle Unit', None),
                ])),
                ('Diffuse Ground-Reflected Inclined Irradiance', OrderedDict([
                    ('Name', 'Simulated Diffuse Ground-Reflected Irradiance Data'),
                    ('Title', 'Ground-Diffuse Inclined Irradiance'),
                    ('Description', 'Clear-sky ground-reflected irradiance time series'),
                    ('Symbol', '⭞'),
                    ('Simulated Ground-Diffuse ⭞', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Radiation model ⸾', 'Hofierka 2002'),
                    ('Equation', 'Global ⤋ ⭳ ∙ Ground-View % ∙ Albedo ⌰'),
                ])),
                ('Core', {}),
                ('Context', {
                    'Irradiance Metadata': OrderedDict([
                        ('Sky-Diffuse Horizontal 🗤⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Reflectivity effect': OrderedDict([
                        ('Ground-Diffuse Reflected ⭞ -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Ground-Diffuse Reflected ⭞ -⭜ %', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Reflectivity factor': OrderedDict([
                        ('Ground-Diffuse Reflectivity ⋅⭜ ⭞', (
                            array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                                   0.9297871], dtype=float32)
                        )),
                        ('Simulated Ground-Diffuse ⭞ 🌣', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Equation Metadata': OrderedDict([
                        ('View %', 0.1464466094067262),
                        ('Albedo ⌰', 0.2),
                        ('Global ⤋ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Solar Position Algorithms': OrderedDict([
                        ('Positioning ⯐', 'NOAA'),
                        ('Timing ⏲', None),
                    ]),
                }),
                ('Metadata', {}),
                ('Out-of-range', {}),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
            ]),
        ),
        'global_inclined_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'sun_horizon_positions': [
            <SunHorizonPositionModel.above: 'Above'>,
            <SunHorizonPositionModel.low_angle: 'Low angle'>,
            <SunHorizonPositionModel.below: 'Below'>,
        ],
        'sun_horizon_position_series': (
            array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                  dtype=object)
        ),
        'mask_below_horizon': array([ True,  True,  True, ...,  True,  True,  True]),
        'mask_low_angle': array([False, False, False, ..., False, False, False]),
        'mask_above_horizon': array([False, False, False, ..., False, False, False]),
        'mask_not_in_shade': array([False, False, False, ..., False, False, False]),
        'mask_above_horizon_not_in_shade': array([False, False, False, ..., False, False, False]),
        'global_inclined_reflectivity_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'global_inclined_irradiance_before_reflectivity_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
    } (dict) len=48
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/shortwave/inclined.py:333 calculate_global_inclined_irradiance
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'surface_tilt_horizontally_flat_panel_threshold': 0.0001,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'global_horizontal_irradiance': None,
        'direct_horizontal_irradiance': None,
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'albedo': 0.2,
        'apply_reflectivity_factor': True,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'solar_incidence_model': <SolarIncidenceModel.iqbal: 'Iqbal'>,
        'zero_negative_solar_incidence_angle': True,
        'horizon_profile': None,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'shading_states': [
            <ShadingState.all: 'all'>,
        ],
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'coordinates': {
            'longitude': np.float64(0.13962634015954636),
            'latitude': np.float64(0.7853981633974483),
        },
        'location_arguments': {
            'longitude': np.float64(0.13962634015954636),
            'latitude': np.float64(0.7853981633974483),
            'elevation': 214.0,
        },
        'time': {
            'timestamps': (
                DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                               '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                               '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                               '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                               '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                               ...
                               '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                               '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                               '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                               '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                               '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                              dtype='datetime64[ns, UTC]', length=184081, freq='h')
            ),
            'timezone': zoneinfo.ZoneInfo(key='UTC'),
        },
        'horizontal_irradiance': {
            'global_horizontal_irradiance': None,
            'direct_horizontal_irradiance': None,
        },
        'solar_positioning': {
            'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
            'adjust_for_atmospheric_refraction': True,
            'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        },
        'surface_position': {
            'surface_orientation': 2.91469985083053,
            'surface_tilt': 0.7853981633974483,
        },
        'earth_orbit': {
            'eccentricity_phase_offset': 0.048869,
            'eccentricity_amplitude': 0.03344,
        },
        'array_parameters': {
            'dtype': 'float32',
            'array_backend': 'numpy',
        },
        'output_parameters': {
            'verbose': 11,
            'log': 0,
        },
        'extended_array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'empty',
            'backend': 'numpy',
        },
        'solar_azimuth_series': 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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], 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={},
        ),
        'solar_incidence_series': 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.], dtype=float32),
            symbol='⭸',
            description=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n 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-vec"
                'tor) and the normal to the surface (surface-normal). An alternative definition measures the complemen'
                'tary angle between the sun (sun-vector) and the inclination of the surface (surface-plane) in questio'
                'n.'
            ),
            description_complementary=(
                "The 'complementary' definition of the incidence incidence is the angle between the position of the su"
                'n in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
            ),
            sun_horizon_position=(
                array(['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_altitude_series': SolarAltitude(
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([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([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={},
        ),
        'surface_in_shade_series': 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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                       0.31464052], dtype=float32)
            ),
            solar_altitude=array([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([ True,  True,  True, ...,  True,  True,  True]),
            symbol='🮞',
            description=None,
            label='Location Shading',
            title='Location Shading',
            supertitle='Location Shading',
            shortname='Shading',
            name='Location Shading',
            output={},
        ),
        'global_inclined_irradiance_series': GlobalInclinedIrradiance(
            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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                unit='unitless',
                minimum=0,
                maximum=8,
            ),
            horizon_height=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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                       'In-shade'], dtype=object)
            ),
            shading_states={
                <ShadingState.all: 'all'>,
            },
            shading_algorithm='PVGIS',
            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.], dtype=float32),
                symbol='⭸',
                description=(
                    "The 'complementary' definition of the incidence incidence is the angle between the position of th"
                    'e 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 c'
                    'omplementary 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 th"
                    'e sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
                ),
                sun_horizon_position=(
                    array(['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=None,
            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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], 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={},
            ),
            sun_horizon_positions={
                <SunHorizonPositionModel.above: 'Above'>,
                <SunHorizonPositionModel.below: 'Below'>,
                <SunHorizonPositionModel.low_angle: 'Low angle'>,
            },
            sun_horizon_position=(
                array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                      dtype=object)
            ),
            solar_timing_algorithm='NOAA',
            solar_positioning_algorithm='NOAA',
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            elevation=214.0,
            location=None,
            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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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 exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([8.3381765e-17, 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. App'
                        'lied 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([8.3381765e-17, 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.15083866, 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=(
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                           -67.331726], dtype=float32)
                ),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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={},
            ),
            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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output={},
            ),
            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]),
                out_of_range=array([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([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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output={},
                ),
                output={},
            ),
            ground_reflected_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            ground_reflected_inclined_reflectivity_factor=(
                array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                       0.9297871], dtype=float32)
            ),
            diffuse_inclined_reflectivity_coefficient=1.6731199955793676,
            diffuse_inclined_reflectivity_factor=(
                array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                       0.98963577], dtype=float32)
            ),
            direct_inclined_reflectivity_factor=array([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., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            ground_reflected_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_irradiance=array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
            fingerprint=False,
            quality=None,
            solar_radiation_model='Hofierka 2002',
            refracted_solar_altitude=(
                array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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]),
            out_of_range=array([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 ⇣∡ + Sky-Diffuse 🗤∡ + Ground-Diffuse ⭞∡',
            algorithm=None,
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='⤋ ∡',
            description=(
                'Global (also referred to as Shortwave) inclined irradiance is a solar power component received per un'
                'it 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='⤋ ∡ Simulated Global Inclined Irradiance',
            title='Global Inclined Irradiance',
            supertitle='Global Inclined Irradiance',
            shortname='Global',
            name='Global Inclined Irradiance Data',
            adjusted_for_atmospheric_refraction=True,
            output={},
        ),
    } (dict) len=46
.venv/lib/python3.11/site-packages/pvgisprototype/api/power/temperature.py:82 calculate_photovoltaic_module_temperature_series
    locals(): {
        'irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'photovoltaic_module': <PhotovoltaicModuleModel.CSI_FREE_STANDING: 'cSi:Free standing'>,
        'temperature_model': <ModuleTemperatureAlgorithm.faiman: 'Faiman'>,
        'temperature_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source=None,
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
        'wind_speed_series': WindSpeedSeries(
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            unit='㎧',
            symbol='🌬',
            description=None,
            data_source=None,
            average_wind_speed=1,
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'photovoltaic_module_efficiency_coefficients': [
            1.000436,
            -0.012678,
            -0.017522,
            -0.003154,
            -0.000315,
            -0.000164,
            0.0,
            26.9,
            6.2,
        ],
        'temperature_adjusted_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source='Faiman 2008',
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
    } (dict) len=11
.venv/lib/python3.11/site-packages/pvgisprototype/api/irradiance/effective.py:82 calculate_spectrally_corrected_effective_irradiance
    locals(): {
        'irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'spectral_factor_series': SpectralFactorSeries(
            value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            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 int"
                'egrating the product of the spectral response and the light intensity over relevant wavelengths, impa'
                "cting the cell's short-circuit current and overall power output."
            ),
            data_source=None,
            spectral_factor_algorithm=None,
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'effective_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'spectral_effect_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'spectral_effect_percentage_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
    } (dict) len=10
.venv/lib/python3.11/site-packages/pvgisprototype/algorithms/huld/efficiency_factor.py:186 calculate_efficiency_factor_series
    locals(): {
        'effective_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'radiation_cutoff_threshold': 0,
        'photovoltaic_module': <PhotovoltaicModuleModel.CSI_FREE_STANDING: 'cSi:Free standing'>,
        'power_model': <PhotovoltaicModulePerformanceModel.king: 'Huld 2011'>,
        'temperature_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source='Faiman 2008',
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
        'standard_test_temperature': 14,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'array_parameters': {
            'shape': (184081,),
            'dtype': 'float32',
            'init_method': 'ones',
            'backend': 'numpy',
        },
        'efficiency_factor_series': array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
        'relative_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'radiation_cutoff_loss_series': array([-1., -1., -1., ..., -1., -1., -1.], dtype=float32),
        'radiation_cutoff_loss_percentage_series': array([-100., -100., -100., ..., -100., -100., -100.], dtype=float32),
        'photovoltaic_module_efficiency_coefficients': [
            1.000436,
            -0.012678,
            -0.017522,
            -0.003154,
            -0.000315,
            -0.000164,
            0.0,
            26.9,
            6.2,
        ],
        'log_relative_irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'temperature_deviation_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
    } (dict) len=18
.venv/lib/python3.11/site-packages/pvgisprototype/api/power/efficiency.py:166 calculate_photovoltaic_efficiency_series
    locals(): {
        'irradiance_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'photovoltaic_module': <PhotovoltaicModuleModel.CSI_FREE_STANDING: 'cSi:Free standing'>,
        'photovoltaic_module_type': <PhotovoltaicModuleType.Monofacial: 'Mono-Facial'>,
        'bifaciality_factor': 0.3,
        'power_model': <PhotovoltaicModulePerformanceModel.king: 'Huld 2011'>,
        'spectral_factor_series': SpectralFactorSeries(
            value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            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 int"
                'egrating the product of the spectral response and the light intensity over relevant wavelengths, impa'
                "cting the cell's short-circuit current and overall power output."
            ),
            data_source=None,
            spectral_factor_algorithm=None,
        ),
        'radiation_cutoff_threshold': 0,
        'temperature_model': <ModuleTemperatureAlgorithm.faiman: 'Faiman'>,
        'temperature_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source=None,
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
        'standard_test_temperature': 14,
        'wind_speed_series': WindSpeedSeries(
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            unit='㎧',
            symbol='🌬',
            description=None,
            data_source=None,
            average_wind_speed=1,
        ),
        'dtype': 'float32',
        'array_backend': 'numpy',
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'temperature_adjusted_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source='Faiman 2008',
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
        'effective_irradiance_series': EffectiveIrradiance(
            data_source=None,
            fingerprint=False,
            spectral_factor_algorithm='',
            spectral_effect_percentage=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            spectral_effect=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            spectral_factor=SpectralFactorSeries(
                value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
                unit='Unitless',
                symbol=None,
                description=(
                    'The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunl'
                    'ight 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 quant"
                    'ified by integrating the product of the spectral response and the light intensity over relevant w'
                    "avelengths, impacting the cell's short-circuit current and overall power output."
                ),
                data_source=None,
                spectral_factor_algorithm=None,
            ),
            location=None,
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            title='Effective irradiance',
            unit='W/m^2',
            symbol=None,
            description=(
                'A solar irradiance component such as global, direct, diffuse, reflected or extraterrestrial and any o'
                'f normal, horizontal or inclined, is a solar power component received per unit area at a given moment'
                ', expressed in watts per square meter (W/m²). Except for the extraterrestrial and direct normal compo'
                'nents, the values concern a specicif location and a moment or period in time.'
            ),
        ),
        'efficiency_series': PhotovoltaicEfficiencyFactor(
            fingerprint=False,
            wind_speed=1,
            temperature=14,
            temperature_adjusted_series=None,
            standard_test_temperature='TEMPERATURE_DEFAULT',
            temperature_model='Faiman',
            spectral_factor_algorithm=None,
            spectral_factor=None,
            radiation_cutoff_threshold=0.0,
            photovoltaic_module_efficiency_coefficients=[
                1.000436,
                -0.012678,
                -0.017522,
                -0.003154,
                -0.000315,
                -0.000164,
                0.0,
                26.9,
                6.2,
            ],
            photovoltaic_module_type='cSi Free standing',
            power_model='Huld 2011',
            data_source=None,
            equation='P(G0, T0) = G0(PSTC, m + k1 G0) + k2 G0)^2 + k3 T0 + k4 T0 G0 + k5 T0 G0^2 + k6 T0^2',
            algorithm=None,
            unit='unitless',
            value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            symbol=None,
            description=(
                'The photovoltaic efficiency factor series for a solar irradiance component specific to the photovolta'
                'ic module technology, the photovoltaic power rating model and the (adjusted) temperature series. The '
                "implemented power rating model [0] is a variant of King's model (1998, 2004)."
            ),
            label='⌁ Photovoltaic Efficiency',
            title='Photovoltaic Efficiency',
            supertitle='Photovoltaic Power Efficiency',
            shortname='Efficiency',
            name='Photovoltaic Power Efficiency data model',
            dtype='float32',
            array_backend='NUMPY',
            log_relative_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            temperature_deviation=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            relative_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            low_irradiance=array([ True,  True,  True, ...,  True,  True,  True]),
            radiation_cutoff_loss_percentage=array([-100., -100., -100., ..., -100., -100., -100.], dtype=float32),
            output={},
        ),
    } (dict) len=19
.venv/lib/python3.11/site-packages/pvgisprototype/api/power/broadband.py:555 calculate_photovoltaic_power_output_series
    locals(): {
        'longitude': np.float64(0.13962634015954636),
        'latitude': np.float64(0.7853981633974483),
        'elevation': 214.0,
        'surface_orientation': 2.91469985083053,
        'surface_tilt': 0.7853981633974483,
        'timestamps': (
            DatetimeIndex(['2000-01-01 00:00:00+00:00', '2000-01-01 01:00:00+00:00',
                           '2000-01-01 02:00:00+00:00', '2000-01-01 03:00:00+00:00',
                           '2000-01-01 04:00:00+00:00', '2000-01-01 05:00:00+00:00',
                           '2000-01-01 06:00:00+00:00', '2000-01-01 07:00:00+00:00',
                           '2000-01-01 08:00:00+00:00', '2000-01-01 09:00:00+00:00',
                           ...
                           '2020-12-30 15:00:00+00:00', '2020-12-30 16:00:00+00:00',
                           '2020-12-30 17:00:00+00:00', '2020-12-30 18:00:00+00:00',
                           '2020-12-30 19:00:00+00:00', '2020-12-30 20:00:00+00:00',
                           '2020-12-30 21:00:00+00:00', '2020-12-30 22:00:00+00:00',
                           '2020-12-30 23:00:00+00:00', '2020-12-31 00:00:00+00:00'],
                          dtype='datetime64[ns, UTC]', length=184081, freq='h')
        ),
        'timezone': zoneinfo.ZoneInfo(key='UTC'),
        'global_horizontal_irradiance': None,
        'direct_horizontal_irradiance': None,
        'spectral_factor_series': SpectralFactorSeries(
            value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            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 int"
                'egrating the product of the spectral response and the light intensity over relevant wavelengths, impa'
                "cting the cell's short-circuit current and overall power output."
            ),
            data_source=None,
            spectral_factor_algorithm=None,
        ),
        'temperature_series': TemperatureSeries(
            value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
            unit='℃',
            symbol='🌡',
            description=None,
            data_source=None,
            average_air_temperature=14,
            standard_test_temperature=25,
        ),
        'wind_speed_series': WindSpeedSeries(
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            unit='㎧',
            symbol='🌬',
            description=None,
            data_source=None,
            average_wind_speed=1,
        ),
        'linke_turbidity_factor_series': 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 hu'
                'mid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the number of clean d'
                'ry 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 o'
                'f 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 landscap'
                'es or world regions can be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
            ),
            symbol='⋅',
            value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
            unit='unitless',
            minimum=0,
            maximum=8,
        ),
        'adjust_for_atmospheric_refraction': True,
        'albedo': 0.2,
        'apply_reflectivity_factor': True,
        'solar_position_model': <SolarPositionModel.noaa: 'NOAA'>,
        'sun_horizon_position': [
            <SunHorizonPositionModel.all: 'all'>,
        ],
        'solar_incidence_model': <SolarIncidenceModel.iqbal: 'Iqbal'>,
        'zero_negative_solar_incidence_angle': True,
        'horizon_profile': None,
        'shading_model': <ShadingModel.pvgis: 'PVGIS'>,
        'shading_states': [
            <ShadingState.all: 'all'>,
        ],
        'solar_time_model': <SolarTimeModel.milne: 'Milne1921'>,
        'solar_constant': 1360.8,
        'eccentricity_phase_offset': 0.048869,
        'eccentricity_amplitude': 0.03344,
        'photovoltaic_module_type': <PhotovoltaicModuleType.Monofacial: 'Mono-Facial'>,
        'bifaciality_factor': 0.3,
        'photovoltaic_module': <PhotovoltaicModuleModel.CSI_FREE_STANDING: 'cSi:Free standing'>,
        'peak_power': 1.0,
        'system_efficiency': 0.86,
        'power_model': <PhotovoltaicModulePerformanceModel.king: 'Huld 2011'>,
        'radiation_cutoff_threshold': 0,
        'temperature_model': <ModuleTemperatureAlgorithm.faiman: 'Faiman'>,
        'efficiency': None,
        'dtype': 'float32',
        'array_backend': 'numpy',
        'angle_output_units': 'radians',
        'validate_output': False,
        'verbose': 11,
        'log': 0,
        'fingerprint': False,
        'profile': False,
        'global_inclined_irradiance_series': GlobalInclinedIrradiance(
            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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                unit='unitless',
                minimum=0,
                maximum=8,
            ),
            horizon_height=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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                       'In-shade'], dtype=object)
            ),
            shading_states={
                <ShadingState.all: 'all'>,
            },
            shading_algorithm='PVGIS',
            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.], dtype=float32),
                symbol='⭸',
                description=(
                    "The 'complementary' definition of the incidence incidence is the angle between the position of th"
                    'e 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 c'
                    'omplementary 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 th"
                    'e sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
                ),
                sun_horizon_position=(
                    array(['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=None,
            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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], 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={},
            ),
            sun_horizon_positions={
                <SunHorizonPositionModel.above: 'Above'>,
                <SunHorizonPositionModel.below: 'Below'>,
                <SunHorizonPositionModel.low_angle: 'Low angle'>,
            },
            sun_horizon_position=(
                array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                      dtype=object)
            ),
            solar_timing_algorithm='NOAA',
            solar_positioning_algorithm='NOAA',
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            elevation=214.0,
            location=None,
            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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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 exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([8.3381765e-17, 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. App'
                        'lied 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([8.3381765e-17, 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.15083866, 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=(
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                           -67.331726], dtype=float32)
                ),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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={},
            ),
            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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output={},
            ),
            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]),
                out_of_range=array([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([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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output={},
                ),
                output={},
            ),
            ground_reflected_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            value_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            ground_reflected_inclined_reflectivity_factor=(
                array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                       0.9297871], dtype=float32)
            ),
            diffuse_inclined_reflectivity_coefficient=1.6731199955793676,
            diffuse_inclined_reflectivity_factor=(
                array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                       0.98963577], dtype=float32)
            ),
            direct_inclined_reflectivity_factor=array([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., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            ground_reflected_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_irradiance=array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
            fingerprint=False,
            quality=None,
            solar_radiation_model='Hofierka 2002',
            refracted_solar_altitude=(
                array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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]),
            out_of_range=array([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 ⇣∡ + Sky-Diffuse 🗤∡ + Ground-Diffuse ⭞∡',
            algorithm=None,
            unit='W/m²',
            value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            symbol='⤋ ∡',
            description=(
                'Global (also referred to as Shortwave) inclined irradiance is a solar power component received per un'
                'it 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='⤋ ∡ Simulated Global Inclined Irradiance',
            title='Global Inclined Irradiance',
            supertitle='Global Inclined Irradiance',
            shortname='Global',
            name='Global Inclined Irradiance Data',
            adjusted_for_atmospheric_refraction=True,
            output=OrderedDict([
                ('Elevation', OrderedDict([
                    ('Elevation 🏔', 214.0),
                ])),
                ('Surface Position', OrderedDict([
                    ('Surface Orientation ↻', 2.91469985083053),
                    ('Surface Tilt ⦥', 0.7853981633974483),
                    ('Angle Unit', None),
                ])),
                (None, OrderedDict([
                    ('Direct ⇣ ∡', array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32)),
                    ('Sky-Diffuse 🗤 ∡', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Ground-Diffuse ⭞ ∡', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                ])),
                ('Global Inclined Irradiance', OrderedDict([
                    ('Name', 'Global Inclined Irradiance Data'),
                    ('Title', 'Global Inclined Irradiance'),
                    ('Description', (
                        'Global (also referred to as Shortwave) inclined irradiance is a solar power component receive'
                        'd per unit area at a given moment, expressed in watts per square meter (W/m²). The values con'
                        'cern a specific location and a moment or period in time.'
                    )),
                    ('Symbol', '⤋ ∡'),
                    ('Global ⤋ ∡', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ('Unit', 'W/m²'),
                    ('Equation', 'Direct ⇣∡ + Sky-Diffuse 🗤∡ + Ground-Diffuse ⭞∡'),
                ])),
                ('Core', {}),
                ('Context', {
                    'Atmospheric Refraction': OrderedDict([
                        ('Refracted alt. ⦧ ⦩', (
                            array([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                                   -67.331726], dtype=float32)
                        )),
                        ('Unrefracted ⌮', True),
                    ]),
                    'Linke Turbidity': OrderedDict([
                        ('Linke Turbidity ⋅', array([2., 2., 2., ..., 2., 2., 2.], dtype=float32)),
                    ]),
                    'Reflectivity effect': OrderedDict([
                        ('Reflected -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Reflected ⤋ -⭜ %', array([], dtype=float64)),
                        ('Direct ⇣ -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Sky-Diffuse 🗤 -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Ground-Diffuse ⭞ -⭜', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Value before reflectivity': OrderedDict([
                        ('Inclined Irradiance', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct ⇣ ∡ ☉', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Sky-Diffuse 🗤 ∡ ☉', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Ground-Diffuse ⭞ ∡ ☉', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                    ]),
                    'Horizontal Irradiance': OrderedDict([
                        ('Sky-Diffuse Horizontal 🗤⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Direct Horizontal ⇣ ⭳', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Extra Horizontal ⍖ ⭳', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                    ]),
                    'Extraterrestrial Normal Irradiance': OrderedDict([
                        ('Extra Normal ⍖ ⦜', (
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], dtype=float32)
                        )),
                    ]),
                    'Solar Parameters': OrderedDict([
                        ('Solar constant', 1367.0),
                        ('Upper physical limit ]', 2000),
                        ('Lower physical limit [', -4),
                    ]),
                    'Solar Position': OrderedDict([
                        ('Altitude ⦩', array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)),
                        ('Azimuth \U000f19a5', (
                            array([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                                   0.31464052], dtype=float32)
                        )),
                        ('Azimuth Origin \U000f19a5', None),
                        ('Incidence ⭸', array([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'),
                    ]),
                    'Earth Orbit': OrderedDict([
                        ('Eccentricity Phase Offset', 0.048869),
                        ('Eccentricity Amplitude ⋅⬭', 0.03344),
                    ]),
                    'Horizon & Shading': OrderedDict([
                        ('Sun-Horizon ⛰', (
                            array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                                  dtype=object)
                        )),
                        ('Shading state 🮞', (
                            array(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                                   'In-shade'], dtype=object)
                        )),
                        ('In-shade 🮞', array([ True,  True,  True, ...,  True,  True,  True])),
                        ('Horizon ⛰', None),
                        ('Visible 👁', array([], dtype=float64)),
                    ]),
                    'Horizon & Shading Metadata': OrderedDict([
                        ('Sun-Horizon Positions ⛰', {
                            <SunHorizonPositionModel.above: 'Above'>,
                            <SunHorizonPositionModel.below: 'Below'>,
                            <SunHorizonPositionModel.low_angle: 'Low angle'>,
                        }),
                        ('Shading 🮞', 'PVGIS'),
                        ('Shading states 🮞', {
                            <ShadingState.all: 'all'>,
                        }),
                    ]),
                }),
                ('Metadata', OrderedDict([
                    ('Radiation model ⸾', 'Hofierka 2002'),
                ])),
                ('Out-of-range', OrderedDict([
                    ('Outbound ⊖', array([False, False, False, ..., False, False, False])),
                    ('Outbound ⊖ i', array([-1, -1, -1, ..., -1, -1, -1])),
                ])),
                ('Sources', {}),
                ('References', {}),
                ('Fingerprint', {}),
            ]),
        ),
        'rear_side_global_inclined_irradiance_series': None,
        'efficiency_factor_series': array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
        'efficiency_series': PhotovoltaicModuleEfficiency(
            fingerprint=False,
            temperature_adjusted_series=TemperatureSeries(
                value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
                unit='℃',
                symbol='🌡',
                description=None,
                data_source='Faiman 2008',
                average_air_temperature=14,
                standard_test_temperature=25,
            ),
            photovoltaic_module_type='cSi Free standing',
            power_model='King',
            data_source='Huld (2011), King (2009), Faiman',
            equation='P(G0, T0) = G0(PSTC, m + k1 G0) + k2 G0)^2 + k3 T0 + k4 T0 G0 + k5 T0 G0^2 + k6 T0^2.',
            algorithm=(
                "The photovoltaic module efficiency model bases upon a variant of King's model to describe the power o"
                'utput of photovoltaic modules as a function of irradiance (G) and temperature (T) including empirical'
                'ly fitted coefficients and a normalization/pooling approach to enable comparison across modules of di'
                'fferent ratings. The procedure involves : 1. Fitting the model to indoor data for various monocrystal'
                'line and polycrystalline photovoltaic modules, 2. Rescaling the coefficients to normalize the nominal'
                ' power, 3. Pooling the rescaled data from multiple modules, 4. Fitting a _combined_ model to the pool'
                'ed data, 5. Applying the combined model and individual module models to outdoor data for comparison.'
            ),
            unit='unitless',
            value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            symbol='%',
            description=(
                'Photovoltaic module efficiency based on solar irradiance and PV technology-specific efficiency coeffi'
                'cients, the spectral effect factor, temperature and wind speed. Photovoltaic Power based on a variant'
                " of King's model (1998, 2004)."
            ),
            label='⌁ Photovoltaic Efficiency',
            title='Photovoltaic Efficiency',
            supertitle='Photovoltaic Power Efficiency',
            shortname='Efficiency',
            name='Photovoltaic Power Efficiency data model',
            dtype='float32',
            array_backend='NUMPY',
            effective_irradiance=EffectiveIrradiance(
                data_source=None,
                fingerprint=False,
                spectral_factor_algorithm='',
                spectral_effect_percentage=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                spectral_effect=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                spectral_factor=SpectralFactorSeries(
                    value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
                    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 ele'
                        "ctrical current with varying efficiencies depending on the cell's spectral response. This eff"
                        'ect 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 outp"
                        'ut.'
                    ),
                    data_source=None,
                    spectral_factor_algorithm=None,
                ),
                location=None,
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                title='Effective irradiance',
                unit='W/m^2',
                symbol=None,
                description=(
                    'A solar irradiance component such as global, direct, diffuse, reflected or extraterrestrial and a'
                    'ny of normal, horizontal or inclined, is a solar power component received per unit area at a give'
                    'n moment, expressed in watts per square meter (W/m²). Except for the extraterrestrial and direct '
                    'normal components, the values concern a specicif location and a moment or period in time.'
                ),
            ),
            output={},
        ),
        'photovoltaic_power_output_without_system_loss_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'photovoltaic_power_output_series': array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
        'out_of_range': array([False, False, False, ..., False, False, False]),
        'out_of_range_index': array([-1, -1, -1, ..., -1, -1, -1]),
        'photovoltaic_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 densit'
                        'y 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 subseque'
                        'nt 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 a'
                        'lways differ from place to place in a similar degree of magnitude and these differences are a'
                        'lso correlated with the terrain elevation. It increases with an intensity of industrialisatio'
                        'n and urbanisation. The values of Linke turbidity for different landscapes or world regions c'
                        'an be found in literature [e.g. 16, 19, 30] or in http://www.soda-is.com/ [20]).'
                    ),
                    symbol='⋅',
                    value=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                    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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output=OrderedDict([
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', OrderedDict([
                            ('Day angle', (
                                array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                       6.283186  ], dtype=float32)
                            )),
                            ('Day of year', array([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32)),
                        ])),
                        ('Context', {
                            'Earth Orbit': OrderedDict([
                                ('Eccentricity Amplitude ⋅⬭', 0.03344),
                                ('Eccentricity Phase Offset', 0.048869),
                            ]),
                            'Solar Parameters': OrderedDict([
                                ('Lower physical limit [', -4),
                                ('Upper physical limit ]', 2000),
                                ('Solar constant', 1360.8),
                            ]),
                        }),
                        ('Core', {}),
                        ('Extraterrestrial Normal Irradiance', OrderedDict([
                            ('Unit', 'W/m²'),
                            ('Extra ⍖ ⦜', (
                                array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                       1406.2509], 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]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 n'
                    'ormal extraterrestrial irradiance G0, a diffuse transmission function Tn dependent only on the Li'
                    'nke turbidity factor TLK, and a diffuse solar altitude function Fd dependent only on the solar al'
                    'titude.'
                ),
                unit='W/m²',
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                symbol='🗤⭳',
                description=(
                    'Clear-sky diffuse sky-reflected horizontal irradiance is a solar power component received per uni'
                    't area at a given moment, expressed in watts per square meter (W/m²). The values concern a specif'
                    'ic 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 exp'
                    "loitation 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.], dtype=float32),
                        symbol='🏔',
                        description=(
                            'The horizon height angle from of a geographic point of observation, a solar surface in th'
                            'e 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 surfa'
                                    'ce in the context of solar positioning.'
                                )),
                                ('Symbol', '🏔'),
                                ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                                ('Unit', 'radians'),
                            ])),
                            ('Fingerprint', {}),
                            ('References', {}),
                            ('Sources', {}),
                            ('Out-of-range', {}),
                            ('Metadata', {}),
                            ('Context', {}),
                            ('Core', {}),
                        ]),
                    ),
                    visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                               0.31464052], dtype=float32)
                    ),
                    solar_altitude=array([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([ 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([8.3381765e-17, 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. App'
                        'lied 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([8.3381765e-17, 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.15083866, 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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=(
                            array([-1.7324, -1.7324, -1.7324, ..., -1.7324, -1.7324, -1.7324],
                                  dtype=float32)
                        ),
                        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 radiat'
                            'ion by solid and liquid particles under cloudless sky conditions. It indicates the optica'
                            'l density of hazy and humid atmosphere in relation to a clean and dry atmosphere. In othe'
                            'r words TLK is the number of clean dry air masses that would result in the same extinctio'
                            'n then real hazy and humid air. Due to a dynamic nature of the turbidity factor, its calc'
                            'ulation and subsequent averaging leads to a certain degree of generalisation. There are c'
                            'lear 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 magni'
                            'tude and these differences are also correlated with the terrain elevation. It increases w'
                            'ith 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                        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]),
                        out_of_range=array([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 ligh'
                            'tly 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 ir'
                            'radiance normal to the solar beam, considers an "eccentricity correction factor" ε.'
                        ),
                        unit='W/m²',
                        value=(
                            array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                                   1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                        day_angle=(
                            array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                                   6.283186  ], dtype=float32)
                        ),
                        distance_correction_factor=(
                            array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                                   1.0334   ], 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]),
                    out_of_range=array([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 cloudles'
                        's atmosphere, is calculated as follows: B0c = G0 exp {-0.8662 TLK m δR(m)}.'
                    ),
                    unit='W/m²',
                    value=(
                        array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                           -67.331726], dtype=float32)
                ),
                solar_altitude=SolarAltitude(
                    out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                    out_of_range=array([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([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]),
                out_of_range=array([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 irradianc'
                    'e = Direct normal irradiance * sin (solar altitude).'
                ),
                unit='W/m²',
                value=array([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 characte'
                'rization procedure for photovoltaic arrays, in: Proceedings of the second World Conference and Exhibi'
                'tion 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, 20'
                '04.'
            ),
            quality=None,
            solar_radiation_model='Hofierka 2002',
            solar_constant=1367.0,
            angle_output_units='radians',
            wind_speed=WindSpeedSeries(
                value=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
                unit='㎧',
                symbol='🌬',
                description=None,
                data_source=None,
                average_wind_speed=1,
            ),
            temperature=TemperatureSeries(
                value=array([14., 14., 14., ..., 14., 14., 14.], dtype=float32),
                unit='℃',
                symbol='🌡',
                description=None,
                data_source=None,
                average_air_temperature=14,
                standard_test_temperature=25,
            ),
            visible=array([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.], dtype=float32),
                    symbol='🏔',
                    description=(
                        'The horizon height angle from of a geographic point of observation, a solar surface in the co'
                        'ntext 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 i'
                                'n the context of solar positioning.'
                            )),
                            ('Symbol', '🏔'),
                            ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                            ('Unit', 'radians'),
                        ])),
                        ('Fingerprint', {}),
                        ('References', {}),
                        ('Sources', {}),
                        ('Out-of-range', {}),
                        ('Metadata', {}),
                        ('Context', {}),
                        ('Core', {}),
                    ]),
                ),
                visible=array([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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], dtype=float32)
                ),
                solar_altitude=array([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([ 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(['In-shade', 'In-shade', 'In-shade', ..., 'In-shade', 'In-shade',
                       'In-shade'], dtype=object)
            ),
            shading_states={
                <ShadingState.all: 'all'>,
            },
            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.], dtype=float32),
                symbol='⭸',
                description=(
                    "The 'complementary' definition of the incidence incidence is the angle between the position of th"
                    'e 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 c'
                    'omplementary 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 th"
                    'e sun in the sky (sun-vector) and the inclination of the surface (surface-plane) in question.'
                ),
                sun_horizon_position=(
                    array(['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([0.3067174 , 0.82063675, 1.1630759 , ..., 5.4526863 , 5.9640913 ,
                           0.31464052], 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([-67.266785, -61.521145, -52.620453, ..., -61.46929 , -67.31017 ,
                       -67.331726], dtype=float32)
            ),
            solar_altitude=SolarAltitude(
                out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
                out_of_range=array([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([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 s'
                    'olid and liquid particles under cloudless sky conditions. It indicates the optical density of haz'
                    'y and humid atmosphere in relation to a clean and dry atmosphere. In other words TLK is the numbe'
                    'r 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 t'
                    'o a certain degree of generalisation. There are clear seasonal changes of the turbidity (lowest v'
                    'alues in winter, highest in summer), the values of turbidity factor always differ from place to p'
                    'lace 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 Li'
                    'nke 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=array([2., 2., 2., ..., 2., 2., 2.], dtype=float32),
                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.], dtype=float32),
                symbol='🏔',
                description=(
                    'The horizon height angle from of a geographic point of observation, a solar surface in the contex'
                    't 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 th'
                            'e context of solar positioning.'
                        )),
                        ('Symbol', '🏔'),
                        ('Horizon 🏔', array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)),
                        ('Unit', 'radians'),
                    ])),
                    ('Fingerprint', {}),
                    ('References', {}),
                    ('Sources', {}),
                    ('Out-of-range', {}),
                    ('Metadata', {}),
                    ('Context', {}),
                    ('Core', {}),
                ]),
            ),
            sun_horizon_positions={
                <SunHorizonPositionModel.above: 'Above'>,
                <SunHorizonPositionModel.below: 'Below'>,
                <SunHorizonPositionModel.low_angle: 'Low angle'>,
            },
            sun_horizon_position=(
                array(['Below', 'Below', 'Below', ..., 'Below', 'Below', 'Below'],
                      dtype=object)
            ),
            optimal=False,
            optimiser=None,
            optimization_mode=None,
            success=None,
            surface_tilt_threshold=0.0001,
            surface_tilt=0.7853981633974483,
            surface_orientation=2.91469985083053,
            elevation=214.0,
            location=None,
            ground_reflected_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            global_inclined_before_reflectivity=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            ground_reflected_inclined_reflectivity_factor=(
                array([0.9297871, 0.9297871, 0.9297871, ..., 0.9297871, 0.9297871,
                       0.9297871], dtype=float32)
            ),
            diffuse_inclined_reflectivity_coefficient=1.6731199955793676,
            diffuse_inclined_reflectivity_factor=(
                array([0.98963577, 0.98963577, 0.98963577, ..., 0.98963577, 0.98963577,
                       0.98963577], dtype=float32)
            ),
            direct_inclined_reflectivity_factor=array([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., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_reflected=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            global_inclined_reflected=array([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]),
                out_of_range=array([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 he'
                    'nce its distance to the sun varies slightly across the year.  In order to take into account the v'
                    'arying solar distance, the calculation of the extraterrestrial irradiance normal to the solar bea'
                    'm, considers an "eccentricity correction factor" ε.'
                ),
                unit='W/m²',
                value=(
                    array([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                           1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                day_angle=(
                    array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                           6.283186  ], dtype=float32)
                ),
                distance_correction_factor=(
                    array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                           1.0334   ], dtype=float32)
                ),
                output={},
            ),
            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]),
                out_of_range=array([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([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]),
                    out_of_range=array([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 roug'
                        'hly constant at is 1367 W.m-2. However, the orbit of the earth around the sun is lightly ecce'
                        'ntric hence its distance to the sun varies slightly across the year.  In order to take into a'
                        'ccount 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([1406.2823, 1406.2823, 1406.2823, ..., 1406.206 , 1406.206 ,
                               1406.2509], 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([  1.,   1.,   1., ..., 365., 365., 366.], dtype=float32),
                    day_angle=(
                        array([0.01716717, 0.01716717, 0.01716717, ..., 6.2660184 , 6.2660184 ,
                               6.283186  ], dtype=float32)
                    ),
                    distance_correction_factor=(
                        array([1.0334232, 1.0334232, 1.0334232, ..., 1.0333672, 1.0333672,
                               1.0334   ], dtype=float32)
                    ),
                    output={},
                ),
                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([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            diffuse_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            direct_inclined_irradiance=array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
            global_inclined_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            spectral_factor_algorithm=None,
            spectral_factor=SpectralFactorSeries(
                value=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
                unit='Unitless',
                symbol=None,
                description=(
                    'The spectral effect in photovoltaic (PV) systems refers to how the wavelength composition of sunl'
                    'ight 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 quant"
                    'ified by integrating the product of the spectral response and the light intensity over relevant w'
                    "avelengths, 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.], dtype=float32),
            spectral_effect=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            effective_ground_reflected_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            effective_diffuse_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            effective_direct_irradiance=array([-0., -0., -0., ..., -0., -0., -0.], dtype=float32),
            effective_global_irradiance=array([0., 0., 0., ..., 0., 0., 0.], dtype=float32),
            system_loss=array([], dtype=float64),
            system_efficiency=0.86,
            efficiency_factor=array([1., 1., 1., ..., 1., 1., 1.], dtype=float32),
            power_model='Huld 2011',
            peak_power=1.0,
            peak_power_unit='kWp',
            technology='cSi:Free standing',
            photovoltaic_module_type='Mono-Facial',
            out_of_range_index=array([-1, -1, -1, ..., -1, -1, -1]),
            out_of_range=array([False, False, False, ..., False, False, False]),
            upper_physically_possible_limit=2000,
            lower_physically_possible_limit=-4,
            photovoltaic_power_without_system_loss=array([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([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={},
        ),
    } (dict) len=53