fSolD: Daily apparent movement of the Sun from the Earth

View source: R/fSolD.R

C_fSolDR Documentation

Daily apparent movement of the Sun from the Earth

Description

Compute the daily apparent movement of the Sun from the Earth. This movement is mainly described (for the simulation of photovoltaic systems) by the declination angle, the sunrise angle and the daily extra-atmospheric irradiation.

Usage

fSolD(lat, BTd, method = 'michalsky')

Arguments

lat

Latitude (degrees) of the point of the Earth where calculations are needed. It is positive for locations above the Equator.

BTd

Daily temporal base, a POSIXct object which may be the result of fBTd.

method

character, method for the sun geometry calculations to be chosen from 'cooper', 'spencer', 'michalsky' and 'strous'. See references for details.

Value

A data.table object with these components:

lat

Latitude (degrees)

decl

Declination angle (radians) for each day of year in dn or BTd

eo

Factor of correction due the eccentricity of orbit of the Earth around the Sun.

ws

Sunrise angle (in radians) for each day of year. Due to the convention which considers that the solar hour angle is negative before midday, this angle is negative.

Bo0d

Extra-atmospheric daily irradiation (watt-hour per squared meter) incident on a horizontal surface

EoT

Equation of Time.

Author(s)

Oscar Perpiñán Lamigueiro, Francisco Delgado López.

References

Examples

library("data.table")


BTd <- fBTd(mode = 'serie')

lat <- 37.2
(fSolD(lat, BTd[100]))
(fSolD(lat, BTd[100], method = 'strous'))
(fSolD(lat, BTd[100], method = 'spencer'))
(fSolD(lat, BTd[100], method = 'cooper'))

lat <- -37.2
(fSolD(lat, BTd[283]))

#Solar angles along the year
SolD <- fSolD(lat, BTd = fBTd())

xyplot(SolD)

#Calculation of the daylength for several latitudes
library("latticeExtra")

Lats <- c(-60, -40, -20, 0, 20, 40, 60)
NomLats <- ifelse(Lats > 0, paste(Lats,'N', sep = ''),
                  paste(abs(Lats), 'S', sep = ''))
NomLats[Lats == 0] <- '0'

BTd <- fBTd(mode = 'serie')
mat <- matrix(nrow = length(BTd), ncol = length(Lats))
colnames(mat) <- NomLats
WsZ <- data.table(Dates = BTd, mat)

for (i in seq_along(Lats)){
    SolDaux <- fSolD(lat = Lats[i], BTd = fBTd(mode = 'serie'));
    WsZ[,i+1] <- r2h(2*abs(SolDaux$ws))}

p = xyplot(`60S` + `40S` + `20S` + `0` + `20N` + `40N` + `60N` ~ Dates, data = WsZ, type = "l",
           ylab = expression(omega[s] * (h)))
plab = p+glayer(panel.text(x[1], y[1], NomLats[group.number], pos = 2))
print(plab)

solaR2 documentation built on April 3, 2025, 6:11 p.m.