Introducción

Este documento explica las fórmulas utilizadas en la implementación en R para calcular el ángulo solar, la duración del día, la sombra proyectada y otros parámetros astronómicos relacionados.

Fórmulas y Cálculos

Cálculo del ángulo solar

El ángulo solar se obtiene a partir de la siguiente ecuación:

\[ h = \arcsin\left(\sin \varphi \cdot \sin \delta + \cos \varphi \cdot \cos \delta \cdot \cos H\right) \]

Tomado de Meeus (1991, p. 93).

donde:

  • \(h\) es la altura solar en grados.
  • \(\varphi\) es la latitud en grados.
  • \(\delta\) es la declinación solar.
  • \(H\) es el ángulo horario en grados.

La declinación solar \(\delta\) se calcula con la ecuación:

\[ \delta = 23.44^\circ \cdot \sin\left(\frac{360}{365}(N - 81) \cdot \frac{\pi}{180}\right) \]

Tomado de Cooper (1969).

La constante \(23.44^\circ\) representa la inclinación del eje de rotación de la Tierra con respecto al plano de su órbita alrededor del Sol (llamado la eclíptica) (Meeus, 1991). Esta inclinación es responsable de la variación estacional de la luz solar que recibe la Tierra.

El ángulo horario \(H\) se calcula como:

\[ H = 15(t - 12) \]

donde \(t\) es la hora local en horas solares.

Tomado de Duffie y Beckman (2013, p. 30).


Cálculo del Meridiano Central

El meridiano central de un huso horario se obtiene dividiendo la longitud por 15 y redondeando:

\[ M = 15 \times \text{round}\left(\frac{\lambda}{15}\right) \]

donde \(M\) es el meridiano central y \(\lambda\) es la longitud geográfica.

Tomado de Duffie y Beckman (2013, p. 30).


Duración del Día

La duración del día depende de la latitud y la declinación solar. Se calcula mediante el ángulo horario al amanecer y atardecer:

\[ \cos H = -\tan \varphi \cdot \tan \delta \]

Tomado de Duffie y Beckman (2013, p. 17).

Si \(|\cos H| > 1\), ocurre el fenómeno de sol de medianoche o noche polar.

La duración del día es:

\[ \text{Duración} = \frac{2H}{15} \]

en horas solares.

Tomado de Duffie y Beckman (2013, p. 89).


Cálculo de la Sombra

La longitud de la sombra proyectada por un objeto se obtiene usando:

\[ S = \frac{h_a}{\tan h} \]

donde \(S\) es la longitud de la sombra y \(h_a\) la altura del árbol.

Tomado de Duffie y Beckman (2013, pp. 32).

Implementación en R

# Funciones para el cálculo de sombra
calcular_angulo_solar <- function(latitud, fecha, hora) {
  N <- as.numeric(strftime(as.Date(fecha), format = '%j'))
  delta <- 23.44 * sin((360 / 365) * (N - 81) * pi / 180)
  H <- 15 * (hora - 12)
  h <- asin(sin(latitud * pi / 180) * sin(delta * pi / 180) +
              cos(latitud * pi / 180) * cos(delta * pi / 180) * cos(H * pi / 180)) * 180 / pi
  return(h)
}

calcular_duracion_dia <- function(latitud, fecha) {
  N <- as.numeric(strftime(as.Date(fecha), format = '%j'))
  delta <- 23.44 * sin((360 / 365) * (N - 81) * pi / 180)
  cos_H <- -tan(latitud * pi / 180) * tan(delta * pi / 180)
  if (cos_H < -1) {
    H <- 180
  } else if (cos_H > 1) {
    H <- 0
  } else {
    H <- acos(cos_H) * 180 / pi
  }
  amanecer <- 12 - (H / 15)
  atardecer <- 12 + (H / 15)
  duracion_dia <- atardecer - amanecer
  return(duracion_dia)
}

calcular_hora_sombra <- function(latitud, fecha, altura_objeto, longitud_sombra) {
  N <- as.numeric(strftime(as.Date(fecha), format = '%j'))
  delta <- 23.44 * sin((360 / 365) * (N - 81) * pi / 180)
  theta <- atan(altura_objeto / longitud_sombra) * 180 / pi
  sin_theta <- sin(theta * pi / 180)
  sin_phi <- sin(latitud * pi / 180)
  sin_delta <- sin(delta * pi / 180)
  cos_phi <- cos(latitud * pi / 180)
  cos_delta <- cos(delta * pi / 180)
  H <- acos((sin_theta - sin_phi * sin_delta) / (cos_phi * cos_delta)) * 180 / pi
  amanecer <- 12 - (H / 15)
  atardecer <- 12 + (H / 15)
  duracion_luz <- atardecer - amanecer
  return(duracion_luz)
}

calcular_sombra_promedio <- function(longitud_sombra, latitud, altura_objeto, fecha_siembra,fecha_final) {
  fechas <- seq(fecha_siembra, as.Date(fecha_final), by='day')
  sombras <- sapply(fechas, function(fecha) {
    duracion_dia <- calcular_duracion_dia(latitud, fecha)
    duracion_luz <- calcular_hora_sombra(latitud, fecha, altura_objeto, longitud_sombra)
    if (is.null(duracion_luz) || duracion_dia <= 0) {
      return(NA)
    }
    return((1 - duracion_luz / duracion_dia)/2)
  })
  return(mean(sombras, na.rm = TRUE))
}

Referencia Bibliográfica

Cooper, P. I. (1969). The absorption of solar radiation in solar stills. Solar Energy, 12(3), 333-345. Duffie, J. A., & Beckman, W. A. (2013). Solar engineering of thermal processes (1st ed.). Wiley. https://doi.org/10.1002/9781118671603 Meeus, J. (1991). Astronomical algorithms—Jean meeus(1991) (2nd ed.). http://archive.org/details/astronomicalalgorithmsjeanmeeus1991