import math
import sys
sys.path.append('/home/www/claudev.cz/orb3')

from solar_simulation_astronomical import BifacialSolarSimulation
from datetime import datetime

sim = BifacialSolarSimulation()

# Test pro leden (léto) - Vertikální N-S panel
print('=== LEDEN 15 (LÉTO) - Vertikální N-S panel ===')
date = datetime(2024, 1, 15)

print('Čas    Azimut  Elev   Front_cos Back_cos  Přímé_světlo_na  Bifacial%  Výkon')
print('----------------------------------------------------------------------')

for hour in range(5, 20):
    solar_elev, solar_az = sim.get_solar_position(date, hour, 0)
    if solar_elev > 0:
        # Test angle of incidence pro obě strany
        front_cos = sim.calculate_angle_of_incidence(solar_elev, solar_az, 90, 0)    # North
        back_cos = sim.calculate_angle_of_incidence(solar_elev, solar_az, 90, 180)   # South
        
        # Kompletní výpočet
        front_irr, back_irr = sim.calculate_panel_irradiance(date, hour, 0, 90, 0, 'ns_vertical')
        total_irr = front_irr + back_irr
        bifacial_contrib = (back_irr / total_irr * 100) if total_irr > 0 else 0
        power = (total_irr / 1000) * 700
        
        # Určit, která strana dostává přímé světlo
        if front_cos > 0 and back_cos <= 0:
            direct_side = "FRONT"
        elif back_cos > 0 and front_cos <= 0:
            direct_side = "BACK"
        elif front_cos > 0 and back_cos > 0:
            direct_side = "BOTH"
        else:
            direct_side = "NONE"
        
        print(f'{hour:02d}:00  {solar_az:5.0f}°  {solar_elev:4.1f}°  {front_cos:6.3f}  {back_cos:6.3f}   {direct_side:5s}      {bifacial_contrib:5.1f}%  {power:5.0f}W')

print()
print('OČEKÁVANÉ CHOVÁNÍ:')
print('- Ráno (azimut ~120°): slunce ZEZADU -> BACK gets direct -> vysoká bifacialita')
print('- Poledne (azimut ~0°): slunce ZEPŘEDU -> FRONT gets direct -> nízká bifacialita') 
print('- Večer (azimut ~240°): slunce ZEZADU -> BACK gets direct -> vysoká bifacialita')