A4_prodGCPV {solaR} | R Documentation |
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,
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 |
modeRad , dataRad |
Information about the source data of the
global irradiation. See |
sample , keep.night |
See |
sunGeometry |
|
corr , f |
See |
betaLim , beta , alfa , iS , alb , horizBright , HCPV |
See |
module |
list of numeric values with information about the PV module,
|
generator |
list of numeric values with information about the generator,
|
inverter |
list of numeric values with information about the DC/AC inverter,
|
effSys |
list of numeric values with information about the system losses,
|
modeShd , struct , distances |
See |
... |
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
.
Value
A ProdGCPV
object.
Author(s)
Oscar Perpiñán Lamigueiro
References
Perpiñán, O, Energía Solar Fotovoltaica, 2015. (https://oscarperpinan.github.io/esf/)
Perpiñán, O. (2012), "solaR: Solar Radiation and Photovoltaic Systems with R", Journal of Statistical Software, 50(9), 1-32, doi: 10.18637/jss.v050.i09
See Also
fProd
,
calcGef
,
calcShd
,
calcG0
,
compare
,
compareLosses
,
mergesolaR
Examples
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')
## Not run:
###Use of modeRad = 'aguiar' and modeRad = 'prev'
prodAguiarFixed <- prodGCPV(lat = lat,
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 = lat,
modeTrk = 'two',
modeRad = 'prev',
dataRad = G0Aguiar)
prodAguiarHoriz <- prodGCPV(lat = lat,
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'))
## End(Not run)
###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'))