Learn R Programming

solaR (version 0.37)

A4_prodGCPV: Performance of a grid connected PV system.

Description

Compute every step from solar angles to effective irradiance to calculate the performance of a grid connected PV system.

Usage

prodGCPV(lat,
         modeTrk='fixed',
         modeRad='prom',
         dataRad,
         prev, prom, mapa, bd,bdI,
         sample='hour',
         keep.night=TRUE,
         sunGeometry='michalsky',
         corr, f,
         betaLim=90, beta=abs(lat)-10, alfa=0,
         iS=2, alb=0.2, horizBright=TRUE, HCPV=FALSE,
         module=list(),
         generator=list(),
         inverter=list(),
         effSys=list(),
         modeShd='',
         struct=list(),
         distances=data.frame()
         )

Arguments

lat
numeric, latitude (degrees) of the point of the Earth where calculations are needed. It is positive for locations above the Equator.
modeTrk
A character string, describing the tracking method of the generator. See calcGef for details.
modeRad, dataRad, prom, mapa, bd, bdI
Information about the source data of the global irradiation. See calcG0 for details.
prev
Deprecated, dataRad should be used instead. A Gef or G0 object (or something that can be coerced to a Gef object). It is only used when modeRad='prev'. prodGCPV will
sample, keep.night
See calcSol for details.
sunGeometry
character, method for the sun geometry calculations. See calcSol, fSolD and fSolI.
corr, f
See calcG0 for details.
betaLim, beta, alfa, iS, alb, horizBright, HCPV
See calcGef for details.
module
list of numeric values with information about the PV module, [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
generator
list of numeric values with information about the generator, [object Object],[object Object]
inverter
list of numeric values with information about the DC/AC inverter, [object Object],[object Object],[object Object],[object Object]
effSys
list of numeric values with information about the system losses, [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
modeShd, struct, distances
See calcShd for details.

Value

  • A ProdGCPV object.

encoding

UTF-8

Details

The calculation of the irradiance on the horizontal plane is carried out with the function calcG0. The transformation to the inclined surface makes use of the fTheta and fInclin functions inside the calcGef function. The shadows are computed with calcShd while the performance of the PV system is simulated with fProd.

References

  • Perpiñán, O, Energía Solar Fotovoltaica, 2012. (http://procomun.wordpress.com/documentos/libroesf/)
  • Perpiñán, O. (2012), "solaR: Solar Radiation and Photovoltaic Systems with R", Journal of Statistical Software, 50(9), 1-32,http://www.jstatsoft.org/v50/i09/

See Also

fProd, calcGef, calcShd, calcG0, compare, compareLosses, mergesolaR

Examples

Run this code
library(lattice)
library(latticeExtra)

lat=37.2;
G0dm=c(2766, 3491, 4494, 5912, 6989, 7742, 7919, 7027, 5369, 3562, 2814,
2179)
Ta=c(10, 14.1, 15.6, 17.2, 19.3, 21.2, 28.4, 29.9, 24.3, 18.2, 17.2, 15.2)
prom=list(G0dm=G0dm, Ta=Ta)

###Comparison of different tracker methods
prodFixed<-prodGCPV(lat=lat,dataRad=prom, keep.night=FALSE)
prod2x<-prodGCPV(lat=lat, dataRad=prom, modeTrk='two', keep.night=FALSE)
prodHoriz<-prodGCPV(lat=lat,dataRad=prom, modeTrk='horiz', keep.night=FALSE)

##Comparison of yearly productivities
compare(prodFixed, prod2x, prodHoriz)
compareLosses(prodFixed, prod2x, prodHoriz)

##Comparison of power time series
ComparePac<-CBIND(two=as.zooI(prod2x)$Pac,
     horiz=as.zooI(prodHoriz)$Pac,
     fixed=as.zooI(prodFixed)$Pac)
AngSol=as.zooI(as(prodFixed, 'Sol'))
ComparePac=CBIND(AngSol, ComparePac)
mon=month(index(ComparePac))

xyplot(two+horiz+fixed~AzS|mon, data=ComparePac,
     type='l', auto.key=list(space='right', lines=TRUE, points=FALSE),ylab='Pac')

###Use of modeRad='aguiar' and modeRad='prev'
prodAguiarFixed <- prodGCPV(lat=41,
                            modeRad='aguiar',
                            dataRad=G0dm,
                            keep.night=FALSE)

##We want to compare systems with different effective irradiance
##so we have to convert prodAguiarFixed to a 'G0' object.
G0Aguiar=as(prodAguiarFixed, 'G0')

prodAguiar2x<-prodGCPV(lat=41,modeTrk='two',modeRad='prev', dataRad=G0Aguiar)
prodAguiarHoriz<-prodGCPV(lat=41, modeTrk='horiz',modeRad='prev',
dataRad=G0Aguiar)

##Comparison of yearly values
compare(prodAguiarFixed, prodAguiar2x, prodAguiarHoriz)
compareLosses(prodAguiarFixed, prodAguiar2x, prodAguiarHoriz)

##Compare of daily productivities of each tracking system
compareYf <- mergesolaR(prodAguiarFixed, prodAguiar2x, prodAguiarHoriz)
xyplot(compareYf, superpose=TRUE,
ylab='kWh/kWp', main='Daily productivity', auto.key=list(space='right'))


###Shadows
#Two-axis trackers
struct2x=list(W=23.11, L=9.8, Nrow=2, Ncol=8)
dist2x=data.frame(Lew=40, Lns=30, H=0)
prod2xShd<-prodGCPV(lat=lat, dataRad=prom, modeTrk='two',
    modeShd='area', struct=struct2x, distances=dist2x)
print(prod2xShd)

#Horizontal N-S tracker
structHoriz=list(L=4.83);
distHoriz=data.frame(Lew=structHoriz$L*4);

#Without Backtracking
prodHorizShd<-prodGCPV(lat=lat, dataRad=prom, sample='10 min',
    modeTrk='horiz',
    modeShd='area', betaLim=60,
    distances=distHoriz,
    struct=structHoriz)
print(prodHorizShd)

xyplot(r2d(Beta)~r2d(w),
     data=prodHorizShd,
     type='l',
     main='Inclination angle of a horizontal axis tracker',
     xlab=expression(omega (degrees)),
     ylab=expression(beta (degrees)))

#With Backtracking
prodHorizBT<-prodGCPV(lat=lat, dataRad=prom, sample='10 min',
    modeTrk='horiz',
    modeShd='bt', betaLim=60,
    distances=distHoriz,
    struct=structHoriz)

print(prodHorizBT)

xyplot(r2d(Beta)~r2d(w),
     data=prodHorizBT,
     type='l',
     main='Inclination angle of a horizontal axis tracker<n>with backtracking',
     xlab=expression(omega (degrees)),
     ylab=expression(beta (degrees)))

compare(prodFixed, prod2x, prodHoriz, prod2xShd,
       prodHorizShd, prodHorizBT)

compareLosses(prodFixed, prod2x, prodHoriz, prod2xShd,
       prodHorizShd, prodHorizBT)

compareYf2 <- mergesolaR(prodFixed, prod2x, prodHoriz, prod2xShd,
       prodHorizShd, prodHorizBT)
xyplot(compareYf2, superpose=TRUE,
ylab='kWh/kWp', main='Daily productivity', auto.key=list(space='right'))</n>

<keyword>utilities</keyword>
<keyword>constructors</keyword>

Run the code above in your browser using DataLab