In [24]:
import sys
import os
sys.path.append(os.path.abspath('../')) #append the parent directory to the system path
sys.path.append(os.path.abspath('../pvlib')) #append the parent directory to the system path
import pvlib
import pandas as pd
In [26]:
fname='723650TY.csv' #Use absolute path if the file is not in the local directory
TMY, meta=pvlib.tmy.readtmy3(filename=fname)
In [6]:
meta['longitude']=-79.2
meta['latitude']=43.42
meta['TZ']=-5
meta['SurfTilt']=30
meta['SurfAz']=0
meta['Albedo']=0.2
In [7]:
print meta['State']
print meta['longitude']
In [8]:
month=3
day=26
hour=0
periods=24
freq='H'
rng=pd.date_range(datetime.datetime(year=min(TMY.index.year),month=month,day=day,hour=hour),periods=periods,freq=freq)
rng
Out[8]:
In [9]:
import pvl_ephemeris
reload(pvl_ephemeris)
#Using Ephemeris Calculations
TMY['SunAz'],TMY['SunEl'],TMY['ApparentSunEl'],TMY['SolarTime'], TMY['SunZen']=pvl_ephemeris.pvl_ephemeris(Time=TMY.index,Location=meta)
#Using NRELS SPA Calculations
import pvl_spa
reload (pvl_spa)
TMY['SunAz_spa'],TMY['SunEl_spa'],TMY['SunZen_spa']=pvl_spa.pvl_spa(Time=TMY.index,Location=meta)
In [10]:
clf()
plot(TMY.index,TMY.SunAz)
plot(TMY.index,TMY.SunAz_spa)
plot(TMY.index,TMY.SunEl,label='eph')
plot(TMY.index,TMY.SunEl_spa,label='spa')
legend()
Out[10]:
In [11]:
TMY['HExtra']=pvlib.pvl_extraradiation(doy=TMY.index.dayofyear)
TMY['AM']=pvlib.pvl_relativeairmass(z=TMY.SunZen)
In [12]:
DFOut=pvlib.pvl_disc(Time=TMY.index,GHI=TMY.GHI, SunZen=TMY.SunZen)
TMY['DNI_gen_DISC']=DFOut['DNI_gen_DISC']
TMY['Kt_gen_DISC']=DFOut['Kt_gen_DISC']
TMY['AM']=DFOut['AM']
TMY['Ztemp']=DFOut['Ztemp']
In [13]:
TMY['In_Plane_SkyDiffuse']=pvlib.pvl_perez(SurfTilt=meta['SurfTilt'],
SurfAz=meta['SurfAz'],
DHI=TMY.DHI,
DNI=TMY.DNI,
HExtra=TMY.HExtra,
SunZen=TMY.SunZen,
SunAz=TMY.SunAz,
AM=TMY.AM)
In [14]:
TMY['GR']=pvlib.pvl_grounddiffuse(GHI=TMY.GHI,Albedo=meta['Albedo'],SurfTilt=meta['SurfTilt'])
In [15]:
TMY['AOI']=pvlib.pvl_getaoi(SunAz=TMY.SunAz,SunZen=TMY.SunZen,SurfTilt=meta['SurfTilt'],SurfAz=meta['SurfAz'])
In [16]:
TMY['E'],TMY['Eb'],TMY['EDiff']=pvlib.pvl_globalinplane(AOI=TMY.AOI,
DNI=TMY.DNI,
In_Plane_SkyDiffuse=TMY.In_Plane_SkyDiffuse,
GR=TMY.GR,
SurfTilt=meta['SurfTilt'],
SurfAz=meta['SurfAz'])
In [17]:
TMY['Tcell'],TMY['Tmodule']=pvlib.pvl_sapmcelltemp(E=TMY.E,
Wspd=TMY.Wspd,
Tamb=TMY.DryBulb)
In [18]:
moddb=pvlib.pvl_retreiveSAM(name='SandiaMod')
module=moddb.Canadian_Solar_CS5P_220M___2009_
module
Out[18]:
In [19]:
Invdb=pvlib.pvl_retreiveSAM(name='SandiaInverter')
inverter=Invdb.Advanced_Energy__Solaron_333_3159000_105_480V__CEC_2008_
inverter
Out[19]:
In [20]:
DFOut=pvlib.pvl_sapm(Eb=TMY['Eb'],
Ediff=TMY['EDiff'],
Tcell=TMY['Tcell'],
AM=TMY['AM'],
AOI=TMY['AOI'],
Module=module)
TMY['Imp']=DFOut['Imp']
TMY['Voc']=DFOut['Voc']
TMY['Vmp']=DFOut['Vmp']
TMY['Pmp']=DFOut['Pmp']
TMY['Ix']=DFOut['Ix']
TMY['Ixx']=DFOut['Ixx']
In [21]:
moddb=pvlib.pvl_retreiveSAM(name='CECMod')
module=moddb.Canadian_Solar_CS5P_220P
IL,I0,Rs,Rsh,nNsVth=pvlib.pvl_calcparams_desoto(S=TMY.GHI,
Tcell=TMY.DryBulb,
alpha_isc=.003,
ModuleParameters=module,
EgRef=1.121,
dEgdT= -0.0002677)
DFout= pvlib.pvl_singlediode(Module=module,
IL=IL,
I0=I0,
Rs=Rs,
Rsh=Rsh,
nNsVth=nNsVth)
TMY['sd_Imp']=DFOut['Imp']
TMY['sd_Voc']=DFOut['Voc']
TMY['sd_Vmp']=DFOut['Vmp']
TMY['sd_Pmp']=DFOut['Pmp']
TMY['sd_Ix']=DFOut['Ix']
TMY['sd_Ixx']=DFOut['Ixx']
In [22]:
TMY['ACPower']=pvlib.pvl_snlinverter(Vmp=TMY.Vmp,Pmp=TMY.Pmp,Inverter=inverter)
In [ ]:
In [ ]: