Learn R Programming

solaR (version 0.14)

optimSombra: Shadows calculation for a set of distances between elements of a PV grid connected plant.

Description

The optimum distance between trackers or static structures of a PV grid connected plant depends on two main factors: the ground cover ratio (defined as the ratio of the PV array area to the total ground area), and the productivity of the system including shadow losses. Therefore, the optimum separation may be the one which achieves the highest productivity with the highest ground cover ratio. However, this definition is not complete since the terrain characteristics and the costs of wiring or civil works could alter the decision. This function is a help for choosing this distance: it computes the productivity for a set of combinations of distances between the elements of the plant.

Usage

optimSombra(lat, G0dm, Ta = 25, modoSeg = "doble", modoRad = "prom", 
    previo, MAPA, BaseDatos, FormatoFecha = "%d/%m/%Y", Nm = 1, 
    BetaLim = 90, beta = abs(lat) - 10, alfa = 0, 
    iS = 2, alb = 0.2, 
    modulo = list(Vocn = 57.6, Iscn = 4.7, Vmn = 46.08, Imn = 4.35, 
        Ncs = 96, Ncp = 1, CoefVT = 0.0023, TONC = 47), 
    generador = list(Nms = 12, Nmp = 11), 
    inversor = list(Ki = c(0.01, 0.025, 0.05), Pinv = 25000, 
        Vmin = 420, Vmax = 750, Gumb = 20), 
    EffSys = list(ModQual = 3, ModDisp = 2, OhmDC = 1.5, OhmAC = 1.5, 
        MPP = 1, TrafoMT = 1, Disp = 0.5), 
    modoSombra = c("area", "prom"), 
    estruct = list(W = 23.11, L = 9.8, Nfilas = 2, Ncol = 8), 
    distancias = list(Leo = c(30, 50), Lns = c(20, 50), D = NULL), 
    res = 2, prog=TRUE)

Arguments

lat
see calcG0
G0dm
see calcG0
Ta
see calcG0
modoSeg
see fTheta
modoRad
see calcG0. If modoRad='prev' a previous result of this function prodSFCR is included in previo in order to obtain new results with the same irradiance on the horizont
previo
data.frame, needed when modoRad='prev'. It is the result of a previous use of this function
MAPA
see calcG0
BaseDatos
see calcG0
FormatoFecha
see calcG0
Nm
see calcG0
BetaLim
numeric, maximum value of the inclination angle (degrees) for a tracking surface. Its default value is 90 (no limitation))
beta
numeric, inclination angle of the surface (degrees). It is only needed when modoSeg='est'.
alfa
numeric, azimuth angle of the surface (degrees). It is positive to the West. It is only needed when modoSeg='est'. Its default value is alfa=0
iS
integer, degree of dirtiness. Its value must be included in the set (1,2,3,4). iS=1 corresponds to a clean surface while iS=4 is the selection for a dirty surface. Its default value is 2
alb
numeric, albedo reflection coefficient. Its default value is 0.2
modulo
see fProd
generador
see fProd
inversor
see fProd
EffSys
see fProd
modoSombra
character, defines the type of shadow calculation. In this version of the package the effect of the shadow is calculated as a proportional reduction of the circumsolar diffuse and direct irradiances. This type of approach is selected with modoSombra
estruct
list. When modoSeg='est' or modoSeg='horiz' only a component named L, which is the height (meters) of the tracker, is needed. For two-axis trackers (modoSeg='doble'), an additional component
distancias
list, whose three components are vector of length 2: [object Object],[object Object],[object Object]
res
numeric, difference (meters) between the different steps of the calculation
prog
logical, show a progress bar; default value is TRUE

Value

  • list containing these elements:
  • paramlist which contains the main parameters of the calculation.
  • refdata.frame result of fProd without shadows effect. Therefore this is the performance of a system which is not affected by shadows, and will be used as the reference for the analysis
  • Sdata.frame including the combinations of distances (defined by Leo, Lns, D and res, and obtained with expand.grid), the ROT value for each combination (where ROT, "Ratio de Ocupacion del Terreno", is the inverse value of the ground cover ratio), the shadows factor value (FS) and the yearly productivity (Yf)
  • FS.loesslocal fitting with loess of the FS value where the predictors are Leo, Lns or D
  • Yf.loesslocal fitting with loess of the Yf value where the predictors are Leo, Lns or D

Details

The result of this function is of class 'sombra'. A new method of plot for this class is defined (plot.sombra). Therefore plot(result) will show the graphical relation between the productivity and the distance between trackers or static surfaces.

References

  • Perpiñán, O.: Grandes Centrales Fotovoltaicas: producción, seguimiento y ciclo de vida. PhD Thesis, UNED, 2008.http://e-spacio.uned.es/fez/view.php?pid=bibliuned:20080.
Perpiñán, O, Energía Solar Fotovoltaica, 2010. (http://procomun.wordpress.com/documentos/libroesf/)

See Also

prodSFCR, fSombra, fSombra6, fSombra2X, fSombraEst, fSombraHoriz

Examples

Run this code
lat=37.2;#Sevilla
    G0dm=c(2766, 3491, 4494, 5912, 6989, 7742, 7919, 7027, 5369, 3562, 2814, 2179)
    
    ###Two-axis trackers
    distancias=list(Leo=c(30,50),Lns=c(20,50))

    #Monthly averages
    SombraM2x<-optimSombra(lat=lat,G0dm=G0dm, modoSeg='doble', 
        modoSombra=c('area','prom'), distancias=distancias, res=5)

    plot(SombraM2x)

    pLeo=xyplot(Yf~ROT,data=SombraM2x$S,groups=factor(Leo),type=c('l','g'))
    direct.label(pLeo,method=last.points)

    pLns=xyplot(Yf~ROT,data=SombraM2x$S,groups=factor(Lns),type=c('l','g'))
    direct.label(pLns,method=last.points)


    ###Horizontal axis tracker
    estruct=list(L=4.83);
    distancias=list(Leo=estruct$L*c(2,5));

    #Without backtracking
    Sombra12Horiz<-optimSombra(lat=lat,G0dm=G0dm, modoSeg='horiz',
        BetaLim=60,
        distancias=distancias, res=2,
        estruct=estruct,
        modoSombra='area')

    plot(Sombra12Horiz)

    xyplot(diff(Yf)~ROT[-1],data=Sombra12Horiz$S,type=c('l','g'))

    #with Backtracking
    Sombra12HorizBT<-optimSombra(lat=lat,G0dm=G0dm, modoSeg='horiz',
        BetaLim=60,
        distancias=distancias, res=1,
        estruct=estruct,
        modoSombra='bt')

    plot(Sombra12HorizBT)
    xyplot(diff(Yf)~ROT[-1],data=Sombra12HorizBT$S,type=c('l','g'))


    ###Fixed system
    estruct=list(L=5);
    distancias=list(D=estruct$L*c(1,3));
    Sombra12Est<-optimSombra(lat=lat,G0dm=G0dm, modoSeg='est',
        modoSombra='area', 
        distancias=distancias, res=1,
        estruct=estruct)

    plot(Sombra12Est)

Run the code above in your browser using DataLab