Computes the equation of time for a given Julian Day.

eqtime(jd)

Arguments

jd

Julian Day.

Value

Equation of time in minutes.

References

https://gml.noaa.gov/gmd/grad/solcalc/calcdetails.html

Meeus, J. 1999. Astronomical Algorithms. Willmann-Bell, Richmond, Virginia, USA.

Reda, I. and Andreas, A. 2003. Solar Position Algorithm for Solar Radiation Applications. 55 pp.; NREL Report No. TP-560-34302, Revised January 2008. https://www.nrel.gov/docs/fy08osti/34302.pdf

Author

Javier G. Corripio jgc@meteoexploration.com

Examples

if (FALSE) {
# plot the equation of time at daily intervals
jd = c(1:365)
plot(eqtime(jd), type="l")
abline(h=0,col=8)

# Analema
plot(eqtime(jd), declination(jd))

# Analema from Greenwich Observatory
latGwch = 51.4791
x = 180+eqtime(jd)*15/60
y = 90-latGwch+declination(jd)
plot(x,y,ylim=c(0,90),xlab=expression(paste('Azimuth (',degree,')')),
  ylab=expression(paste('Elevation (',degree,')')))

## Add the solstices and equinoxes (nearest day, see Meeus ch. 26 for more precision)
decl = declination(jd)
wintersolstice = which(decl==min(decl))
summersolstice = which(decl==max(decl))
## spring equinox: when declination becomes zero in the first part of the year
springeqx = uniroot(declination,jd[c(1,180)])$root
autumeqx = uniroot(declination,jd[c(180,360)])$root
nodeseqx = c(springeqx,summersolstice,autumeqx,wintersolstice)
points(x[nodeseqx],y[nodeseqx],pch=19,col=3)
abline(h=c(90-latGwch,90-latGwch+max(decl),
       90-latGwch+min(decl)),col=8)
}