Learn R Programming

solaR (version 0.46)

A7_optimShd: 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 requirement ratio (defined as the ratio of the total ground area to the generator PV array 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 lowest ground requirement 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

optimShd(lat,
         modeTrk = 'fixed',
         modeRad = 'prom',
         dataRad,
         sample = 'hour',
         keep.night = TRUE,
         sunGeometry = 'michalsky',
         betaLim = 90, beta = abs(lat)-10, alfa = 0,
         iS = 2, alb = 0.2, HCPV = FALSE,
         module = list(),
         generator = list(),
         inverter = list(),
         effSys = list(),
         modeShd = '',
         struct = list(),
         distances = data.frame(),
         res = 2,
         prog = TRUE)

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. For this function the option modeRad = 'bdI' is not supported.

sample

character, containing one of <U+2018>"sec"<U+2019>, <U+2018>"min"<U+2019>, <U+2018>"hour"<U+2019>. This can optionally be preceded by a (positive or negative) integer and a space, or followed by <U+2018>"s"<U+2019> (used by seq.POSIXt)

keep.night

logical When it is TRUE (default) the time series includes the night.

sunGeometry

character, method for the sun geometry calculations. See calcSol, fSolD and fSolI.

betaLim, beta, alfa, iS, alb, HCPV

See calcGef for details.

module

list of numeric values with information about the PV module,

Vocn

open-circuit voltage of the module at Standard Test Conditions (default value 57.6 volts.)

Iscn

short circuit current of the module at Standard Test Conditions (default value 4.7 amperes.)

Vmn

maximum power point voltage of the module at Standard Test Conditions (default value 46.08 amperes.)

Imn

Maximum power current of the module at Standard Test Conditions (default value 4.35 amperes.)

Ncs

number of cells in series inside the module (default value 96)

Ncp

number of cells in parallel inside the module (default value 1)

CoefVT

coefficient of decrement of voltage of each cell with the temperature (default value 0.0023 volts per celsius degree)

TONC

nominal operational cell temperature, celsius degree (default value 47).

generator

list of numeric values with information about the generator,

Nms

number of modules in series (default value 12)

Nmp

number of modules in parallel (default value 11)

inverter

list of numeric values with information about the DC/AC inverter,

Ki

vector of three values, coefficients of the efficiency curve of the inverter (default c(0.01, 0.025, 0.05)), or a matrix of nine values (3x3) if there is dependence with the voltage (see references).

Pinv

nominal inverter power (W) (default value 25000 watts.)

Vmin, Vmax

minimum and maximum voltages of the MPP range of the inverter (default values 420 and 750 volts)

Gumb

minimum irradiance for the inverter to start (W/m<U+00B2>) (default value 20 W/m<U+00B2>)

effSys

list of numeric values with information about the system losses,

ModQual

average tolerance of the set of modules (%), default value is 3

ModDisp

module parameter disperssion losses (%), default value is 2

OhmDC

Joule losses due to the DC wiring (%), default value is 1.5

OhmAC

Joule losses due to the AC wiring (%), default value is 1.5

MPP

average error of the MPP algorithm of the inverter (%), default value is 1

TrafoMT

losses due to the MT transformer (%), default value is 1

Disp

losses due to stops of the system (%), default value is 0.5

modeShd

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 modeShd = 'area'. In future versions other approaches which relate the geometric shadow and the electrical connections of the PV generator will be available. If modeTrk = 'horiz' it is possible to calculate the effect of backtracking with modeShd = 'bt'. If modeShd = c('area','bt') the backtracking method will be carried out and therefore no shadows will appear. Finally, for two-axis trackers it is possible to select modeShd = 'prom' in order to calculate the effect of shadows on an average tracker (see fSombra6). The result will include three variables (Gef0, Def0 and Bef0) with the irradiance/irradiation without shadows as a reference.

struct

list. When modeTrk = 'fixed' or modeTrk = 'horiz' only a component named L, which is the height (meters) of the tracker, is needed. For two-axis trackers (modeTrk = 'two'), an additional component named W, the width of the tracker, is required. Moreover, two components named Nrow and Ncol are included under this list. These components define, respectively, the number of rows and columns of the whole setof trackers in the PV plant.

distances

list, whose three components are vectors of length 2:

Lew

(only when modeTrk = 'horiz' or modeTrk = 'two'), minimum and maximum distance (meters) between horizontal NS and two-axis trackers along the East-West direction.

Lns

(only when modeTrk = 'two'), minimum and maximum distance (meters) between two-axis trackers along the North-South direction.

D

(only when modeTrk = 'fixed'), minimum and maximum distance (meters) between fixed surfaces.

These distances, in meters, are defined between the axis of the trackers.

res

numeric; optimShd constructs a sequence from the minimum to the maximum value of distances, with res as the increment, in meters, of the sequence.

prog

logical, show a progress bar; default value is TRUE

Value

A '>Shade object.

Details

optimShd calculates the energy produced for every combination of distances as defined by distances and res. The result of this function is a Shade-class object. A method of shadeplot for this class is defined (shadeplot-methods), and it shows the graphical relation between the productivity and the distance between trackers or fixed surfaces.

References

See Also

prodGCPV, calcShd

Examples

Run this code
# NOT RUN {
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)

###Two-axis trackers
struct2x = list(W = 23.11, L = 9.8, Nrow = 2, Ncol = 3)
dist2x = list(Lew = c(30, 45),Lns = c(20, 40))

ShdM2x <- optimShd(lat = lat, dataRad = prom, modeTrk = 'two',
                   modeShd = c('area','prom'),
                   distances = dist2x, struct = struct2x,
                   res = 5)

shadeplot(ShdM2x)

pLew = xyplot(Yf~GRR,data = ShdM2x,groups = factor(Lew),type = c('l','g'),
    main = 'Productivity for each Lew value')
pLew+glayer(panel.text(x[1], y[1], group.value))

pLns = xyplot(Yf~GRR,data = ShdM2x,groups = factor(Lns),type = c('l','g'),
    main = 'Productivity for each Lns value')
pLns+glayer(panel.text(x[1], y[1], group.value))

## 1-axis tracker with Backtracking
structHoriz = list(L = 4.83);
distHoriz = list(Lew = structHoriz$L * c(2,5));


Shd12HorizBT <- optimShd(lat = lat, dataRad = prom,
        modeTrk = 'horiz',
        betaLim = 60,
        distances = distHoriz, res = 2,
        struct = structHoriz,
        modeShd = 'bt')

shadeplot(Shd12HorizBT)

xyplot(diff(Yf)~GRR[-1],data = Shd12HorizBT,type = c('l','g'))

###Fixed system
structFixed = list(L = 5);
distFixed = list(D = structFixed$L*c(1,3));
Shd12Fixed <- optimShd(lat = lat, dataRad = prom,
        modeTrk = 'fixed',
        distances = distFixed, res = 2,
        struct = structFixed,
        modeShd = 'area')
shadeplot(Shd12Fixed)
# }

Run the code above in your browser using DataLab