Learn R Programming

solaR (version 0.46)

A3_calcGef: Irradiation and irradiance on the generator plane.

Description

This function obtains the global, diffuse and direct irradiation and irradiance on the generator plane from the values of daily or intradaily global irradiation on the horizontal plane. It makes use of the functions calcG0, fTheta, fInclin. Besides, it can calculate the shadows effect with the calcShd function.

Usage

calcGef(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,
        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

character, to be chosen from 'fixed', 'two' or 'horiz'. When modeTrk = 'fixed' the surface is fixed (inclination and azimuth angles are constant). The performance of a two-axis tracker is calculated with modeTrk = 'two', and modeTrk = 'horiz' is the option for an horizontal N-S tracker. Its default value is modeTrk = 'fixed'

modeRad, dataRad

Information about the source data of the global irradiation. See calcG0 for details.

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.

beta

numeric, inclination angle of the surface (degrees). It is only needed when modeTrk = 'fixed'.

betaLim

numeric, maximum value of the inclination angle for a tracking surface. Its default value is 90 (no limitation))

alfa

numeric, azimuth angle of the surface (degrees). It is measured from the south (alfa = 0), and it is negative to the east and positive to the west. It is only needed when modeTrk = 'fixed'. 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

modeShd, struct, distances

See calcShd for details.

horizBright

logical, if TRUE, the horizon brightness correction proposed by Reind et al. is used.

HCPV

logical, if TRUE the diffuse and albedo components of the effective irradiance are set to zero. HCPV is the acronym of High Concentration PV system.

...

Additional arguments for calcSol and calcG0

Value

A Gef object.

References

  • Hay, J. E. and McKay, D. C.: Estimating Solar Irradiance on Inclined Surfaces: A Review and Assessment of Methodologies. Int. J. Solar Energy, (3):pp. 203, 1985.

  • Martin, N. and Ruiz, J.M.: Calculation of the PV modules angular losses under field conditions by means of an analytical model. Solar Energy Materials & Solar Cells, 70:25<U+2013>38, 2001.

  • D. T. Reindl and W. A. Beckman and J. A. Duffie: Evaluation of hourly tilted surface radiation models, Solar Energy, 45:9-17, 1990.

  • Perpi<U+00F1><U+00E1>n, O, Energ<U+00ED>a Solar Fotovoltaica, 2015. (https://oscarperpinan.github.io/esf/)

  • Perpi<U+00F1><U+00E1>n, O. (2012), "solaR: Solar Radiation and Photovoltaic Systems with R", Journal of Statistical Software, 50(9), 1-32, 10.18637/jss.v050.i09

See Also

calcG0, fTheta, fInclin, calcShd.

Examples

Run this code
# NOT RUN {
lat <- 37.2

###12 Average days.

G0dm = c(2.766, 3.491, 4.494, 5.912, 6.989, 7.742, 7.919, 7.027, 5.369,
         3.562, 2.814, 2.179)*1000;
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)

##Fixed surface, default values of inclination and azimuth.

gef <- calcGef(lat = lat, modeRad = 'prom', dataRad = list(G0dm = G0dm, Ta = Ta))
print(gef)
xyplot(gef)

##Two-axis surface, no limitation angle.

gef2 <- calcGef(lat = lat, modeRad = 'prom',
                dataRad = list(G0dm = G0dm, Ta = Ta),
                modeTrk = 'two')
print(gef2)
xyplot(gef2)

struct = list(W = 23.11, L = 9.8, Nrow = 2, Ncol = 8)
distances = data.frame(Lew = 40, Lns = 30, H = 0)

gefShd <- calcGef(lat = lat, modeRad = 'prom',
                  dataRad = list(G0dm = G0dm, Ta = Ta),
                  modeTrk = 'two',
                  modeShd = c('area', 'prom'), 
                  struct = struct, distances = distances)
print(gefShd)

# }
# NOT RUN {
##Fixed surface using Aguiar method
gefAguiar <- calcGef(lat = lat, modeRad = 'aguiar', dataRad = G0dm)

##Two-axis tracker, using the previous result.
##'gefAguiar' is internally coerced to a 'G0' object.

gefAguiar2 <- calcGef(lat = lat, modeRad = 'prev', dataRad = gefAguiar, modeTrk = 'two')
print(gefAguiar2)
xyplot(gefAguiar2)

###Shadows between two-axis trackers, again using the gefAguiar result.

struct = list(W = 23.11, L = 9.8, Nrow = 2, Ncol = 8)
distances = data.frame(Lew = 40, Lns = 30, H = 0)

gefShdAguiar <- calcGef(lat = lat, modeRad = 'prev', 
                        dataRad = gefAguiar, modeTrk = 'two', 
                        modeShd = c('area', 'prom'), 
                        struct = struct, distances = distances)
print(gefShdAguiar)
# }

Run the code above in your browser using DataLab