import solar
import datetime
from dateutil import rrule
import math

eta=0.19 #Wirkungsgrad
area=84  #Flaeche der PV-Anlage

#Zermatt
latitude=46.02 
longitude=7.75
roofangle=66 #Neigungswinkel des Daches
for month in (1,2,3,4,5,6,7,8,9,10,11,12):
    averagepower=0.
    count=0
    count2=0
    mayday = datetime.date(2011,month,1)
    later = mayday+datetime.timedelta(days=30)
    for dt in rrule.rrule(rrule.HOURLY, dtstart=mayday, until=later):
        alt=solar.GetAltitude(latitude, longitude, dt)
        azim=solar.GetAzimuth(latitude, longitude, dt)
        radiation=solar.radiation.GetRadiationDirect(dt, alt)
        azimreduction= math.cos(2*math.pi*azim/360.)
        if azimreduction < 0.5: #azimreduction < 0 -> Sonne im Nordosten/Norden/Nordwesten
            azimreduction = 0.5 #Hintergrundintensitaet
        altreduction=math.sin(2*math.pi*(alt+roofangle)/360.)
        power=radiation*eta*area*azimreduction*altreduction
        averagepower+=power
        count+=1
        if power != 0:
            count2+=1
    print month, averagepower/count2/1000.  #durchschnittl. Leistung in kWh
