stringtranslate.com

Ecuación del amanecer

Un gráfico de contorno de las horas de luz del día en función de la latitud y el día del año, utilizando los modelos más precisos descritos en este artículo. Se puede ver que el área de día constante y noche constante llega hasta los círculos polares (aquí etiquetados como "Anta. c." y "Arct. c."), lo que es una consecuencia de la inclinación de la Tierra.
Gráfico de horas de luz solar en función de la fecha de cambio de latitud. Este gráfico se creó utilizando la ecuación simple de la salida del sol, que aproxima el sol como un único punto y no tiene en cuenta los efectos causados ​​por la atmósfera o el diámetro del sol.

La ecuación del amanecer o del atardecer se puede utilizar para derivar la hora del amanecer o del atardecer para cualquier declinación y latitud solar en términos de la hora solar local cuando realmente ocurren el amanecer y el atardecer.

Formulación

Se formula así:

dónde:

es el ángulo horario solar al amanecer (cuando se toma el valor negativo) o al atardecer (cuando se toma el valor positivo);
es la latitud del observador en la Tierra ;
es la declinación del sol .

Principios

La Tierra gira a una velocidad angular de 15°/hora. Por lo tanto, la expresión , donde está en grados, da el intervalo de tiempo en horas desde el amanecer hasta el mediodía solar local o desde el mediodía solar local hasta el atardecer .

La convención de signos suele ser que la latitud del observador es 0 en el ecuador , positiva para el hemisferio norte y negativa para el hemisferio sur , y la declinación solar es 0 en los equinoccios de primavera y otoño cuando el sol está exactamente sobre el ecuador, positiva durante el verano del hemisferio norte y negativa durante el invierno del hemisferio norte.

La expresión anterior siempre se aplica a latitudes entre el Círculo Polar Ártico y el Círculo Antártico . Al norte del Círculo Polar Ártico o al sur del Círculo Antártico, hay al menos un día del año sin salida ni puesta del sol. Formalmente, hay salida o puesta del sol cuando es verano en el hemisferio norte y cuando es invierno en el hemisferio norte. Para lugares fuera de estas latitudes, es 24 horas de día o 24 horas de noche .

Expresiones para el ángulo horario solar

En la ecuación dada al principio, la función coseno del lado izquierdo da resultados en el rango [-1, 1], pero el valor de la expresión del lado derecho está en el rango . Una expresión aplicable para en el formato de Fortran 90 es la siguiente:

omegao = acos(máx(mín(-tan(delta*rpd)*tan(phi*rpd), 1.0), -1.0))*dpr

donde omegao está en grados, delta está en grados, phi está en grados, rpd es igual a y dpr es igual a .

La expresión anterior da resultados en grados en el rango . Cuando , significa que es noche polar o luz diurna de 0 horas; cuando , significa que es día polar o luz diurna de 24 horas.

Relación hemisférica

Supongamos que es una latitud dada en el hemisferio norte, y es el ángulo horario de salida del sol correspondiente que tiene un valor negativo, y de manera similar, es la misma latitud pero en el hemisferio sur, lo que significa , y es el ángulo horario de salida del sol correspondiente, entonces es evidente que

,

lo que significa

.

La relación anterior implica que, en un mismo día, la duración del día desde el amanecer hasta el atardecer en y suman 24 horas si , y esto también se aplica a las regiones donde se producen días y noches polares. Esto sugiere además que el promedio global de la duración del día en un día determinado es de 12 horas sin tener en cuenta el efecto de la refracción atmosférica.

Ecuación generalizada

Procedimiento de reducción de la visibilidad del sextante que muestra correcciones de altitud solar para refracción y elevación.

La ecuación anterior no tiene en cuenta la influencia de la refracción atmosférica (que eleva el disco solar, es decir, hace que parezca más alto en el cielo, en aproximadamente 0,6° cuando está en el horizonte) ni el ángulo no nulo que forma el disco solar, es decir, el diámetro aparente del sol (aproximadamente 0,5°). Los tiempos de salida y puesta del limbo solar superior que se indican en los almanaques astronómicos corrigen este efecto utilizando la ecuación más general

con el ángulo de altitud (a) del centro del disco solar establecido en aproximadamente -0,83° (o -50 minutos de arco).

La ecuación general anterior también se puede utilizar para cualquier otra altitud solar. La NOAA proporciona expresiones aproximadas adicionales para las correcciones de refracción a estas otras altitudes. [1] También existen formulaciones alternativas, como una expresión no por partes de GG Bennett utilizada en el "Software de astronomía vectorial" del Observatorio Naval de los EE. UU. [2]

Cálculo completo en la Tierra

La ecuación generalizada depende de una serie de otras variables que deben calcularse antes de poder calcularse ella misma. En estas ecuaciones, las constantes solar-terrestres se sustituyen por constantes angulares expresadas en grados.

Calcular el día juliano actual

dónde:

es el número de días desde el 1 de enero de 2000 a las 12:00.
es la fecha juliana ;
2451545.0 es el año juliano equivalente de días julianos para el 01-01-2000, 12:00:00.
0,0008 es el día juliano fraccionario para los segundos intercalares y el tiempo terrestre (TT).
El 1 de enero de 1958, el TT se estableció en 32,184 segundos con un retraso respecto del TAI . En 1972, cuando se introdujo el segundo intercalar, se añadieron 10 segundos. El 1 de enero de 2017, se añadieron 27 segundos más, lo que sumó un total de 69,184 segundos. 0,0008=69,184 / 86400 sin DUT1 .
La operación redondea al siguiente número entero de día n.

Hora solar media

dónde:

es una aproximación del tiempo solar medio en números enteros expresado como un día juliano con la fracción de día.
es la longitud (oeste es negativo, este es positivo) del observador en la Tierra;

Anomalía media solar

dónde:

M es la anomalía media solar utilizada en las siguientes tres ecuaciones.

Ecuación del centro

dónde:

C es la ecuación del valor central necesario para calcular lambda (ver siguiente ecuación).
1.9148 es el coeficiente de la ecuación del centro del planeta en el que se encuentra el observador (en este caso, la Tierra)

Longitud eclíptica

dónde:

λ es la longitud eclíptica .
102.9372 es un valor para el argumento del perihelio .

Tránsito solar

dónde:

El tránsito J es la fecha juliana para el tránsito solar verdadero local (o mediodía solar ).
2451545.0 es el mediodía del año juliano de referencia equivalente.
es una versión simplificada de la ecuación del tiempo . Los coeficientes son días fraccionarios.

Declinación del Sol

dónde:

es la declinación del sol.
23,4397° es la inclinación axial máxima de la Tierra hacia el Sol [3]

Alternativamente, la declinación del Sol podría aproximarse [4] como:

dónde:

d es el número de días después del equinoccio de primavera (generalmente el 21 de marzo).

Angulo horario

Esta es la ecuación de arriba con correcciones por la refracción atmosférica y el diámetro del disco solar.

dónde:

ω o es el ángulo horario desde el meridiano del observador ;
es la latitud norte del observador (norte es positivo, sur es negativo) en la Tierra.

Para las observaciones en un horizonte marino que necesiten una corrección por elevación del observador, agregue , o a −0,833° en el término seno del numerador. Esto corrige tanto la inclinación aparente como la refracción terrestre. Por ejemplo, para un observador a 10 000 pies, agregue (−115°/60) o aproximadamente −1,92° a −0,833°. [5]

Calcular la salida y la puesta del sol

dónde:

J rise es la fecha juliana real del amanecer;
J set es la fecha juliana real de la puesta del sol.

Ejemplo de implementación en Python

#!/usr/bin/env python3importar  registro desde  datetime  importar  datetime ,  timedelta ,  timezone ,  tzinfo desde  math  importar  acos ,  asin ,  ceil ,  cos ,  degrees ,  fmod ,  radianes ,  sen ,  sqrt desde  time  importar  timelog  =  registro.getLogger ( )def  _ts2human ( ts :  int  |  float ,  debugtz :  tzinfo  |  None )  - >  str :  return  str ( datetime.fromtimestamp ( ts , debugtz ) ) def  j2ts ( j :  float  |  int )  ->  float :  return  ( j  -  2440587.5 )  *  86400def  ts2j ( ts :  float  |  int )  ->  float :  return  ts  /  86400.0  +  2440587.5def  _j2human ( j :  float  |  int ,  debugtz :  tzinfo  |  Ninguno )  ->  str :  ts  =  j2ts ( j )  return  f ' { ts } = { _ts2human ( ts , debugtz ) } ' def  _deg2human ( deg :  float  |  int )  ->  str :  x  =  int ( deg  *  3600.0 )  num  =  f '∠ { deg : .3f } °'  rad  =  f '∠ { radianes ( deg ) : .3f } rad'  humano  =  f '∠ { x // 3600 } ° { x // 60 % 60 } { x % 60 } ″' return f ' { rad } = { humano } = { num } '          def  calc (  marca_de_tiempo_actual :  float ,  f :  float ,  l_w :  float ,  elevación :  float  =  0.0 ,  * ,  debugtz :  tzinfo  |  None  =  None , )  ->  tupla [ float ,  float ,  None ]  |  tupla [ None ,  None ,  bool ]:  log . debug ( f 'Latitud f = { _deg2human ( f ) } ' )  log . debug ( f 'Longitud l_w = { _deg2human ( l_w ) } ' )  log . debug ( f 'Ahora ts = { _ts2human ( marca_de_tiempo_actual , debugtz ) } ' )  J_date  =  ts2j ( marca_de_tiempo_actual )  log . debug ( f 'Fecha juliana j_date = { J_date : .3f } días' ) # Día juliano  # TODO: ceil ?  n  =  ceil ( J_date  -  ( 2451545.0  +  0.0009 )  +  69.184  /  86400.0 )  log . debug ( f 'Día juliano n = { n : .3f } días' ) # Tiempo solar medio  J_  =  n  +  0,0009  -  l_w  /  360,0  log . debug ( f 'Tiempo solar medio J_ = { J_ : .9f } días' ) # Anomalía media solar  # M_grados = 357,5291 + 0,98560028 * J_ # Lo mismo, pero se ve feo  M_grados  =  fmod ( 357,5291  +  0,98560028  *  J_ ,  360 )  M_radianes  =  radianes ( M_grados )  log . debug ( f 'Anomalía media solar M = { _deg2human ( M_grados ) } ' ) # Ecuación del centro  C_grados  =  1.9148  *  sin ( M_radianes )  +  0.02  *  sin ( 2  *  M_radianes )  +  0.0003  *  sin ( 3  *  M_radianes )  # La diferencia para el resultado final del programa es de unos pocos milisegundos  # https://www.astrouw.edu.pl/~jskowron/pracownia/praca/sunspot_answerbook_expl/expl-4.html  # e = 0.01671  # C_grados = \  # grados(2 * e - (1 / 4) * e ** 3 + (5 / 96) * e ** 5) * sin(M_radianes) \  # + grados(5 / 4 * e ** 2 - (11 / 24) * e ** 4 + (17 / 192) * e ** 6) * sin(2 * M_radianes) \  # + grados(13 / 12 * e ** 3 - (43 / 64) * e ** 5) * sen(3 * M_radianes) \  # + grados((103 / 96) * e ** 4 - (451 / 480) * e ** 6) * sen(4 * M_radianes) \  # + grados((1097 / 960) * e ** 5) * sen(5 * M_radianes) \  # + grados((1223 / 960) * e ** 6) * sen(6 * M_radianes) log . debug ( f 'Ecuación del centro C = { _deg2human ( C_degrees ) } ' ) # Longitud eclíptica  # L_degrees = M_degrees + C_degrees + 180.0 + 102.9372 # Lo mismo, pero se ve feo  L_degrees  =  fmod ( M_degrees  +  C_degrees  +  180.0  +  102.9372 ,  360 )  log . debug ( f 'Longitud eclíptica L = { _deg2human ( L_degrees ) } ' ) Lambda_radianes  =  radianes ( L_grados ) # Tránsito solar (fecha juliana)  J_transit  =  2451545.0  +  J_  +  0.0053  *  sin ( M_radianes )  -  0.0069  *  sin ( 2  *  Lambda_radianes )  log . debug ( f 'Tiempo de tránsito solar J_trans = { _j2human ( J_transit , debugtz ) } ' )  # Declinación del Sol  sin_d  =  sin ( Lambda_radians )  *  sin ( radianes ( 23.4397 ))  # cos_d = sqrt(1-sin_d**2) # exactamente la misma precisión, pero 1,5 veces más lento  cos_d  =  cos ( asin ( sin_d )) # Ángulo horario  some_cos  =  ( sin ( radianes ( - 0,833  -  2,076  *  sqrt ( elevación )  /  60,0 ))  -  sin ( radianes ( f ))  *  sin_d )  /  ( cos ( radianes ( f ))  *  cos_d )  intentar :  w0_radianes  =  acos ( some_cos )  excepto  ValueError :  devolver  None ,  None ,  some_cos  >  0.0  w0_grados  =  grados ( w0_radianes )  # 0...180 log . debug ( f 'Ángulo horario w0 = { _deg2human ( w0_degrees ) } ' ) j_subida  =  J_tránsito  -  w0_grados  /  360  j_establecimiento  =  J_tránsito  +  w0_grados  /  360 log.debug ( f ' Amanecer j_rise = { _j2human ( j_rise , debugtz ) } ' ) log.debug ( f ' Atardecer j_set = { _j2human ( j_set , debugtz ) } ' ) log.debug ( f ' Duración del día { w0_degrees / ( 180 / 24 ) : .3f } horas ' )         devuelve  j2ts ( j_rise ),  j2ts ( j_set ),  Ningunodef  main ():  logging.basicConfig ( level = logging.DEBUG ) latitude = 33.00801longitude = 35.08794highitude = 0print ( calc ( time ( ) ) , latitude , longitude , highitude , debugtz = timezone ( timedelta ( hours = 3 ) , ' fake-zone' ) ) )               si  __nombre__  ==  '__main__' :  principal ()

Véase también

Referencias

  1. ^ NOAA (Departamento de Comercio de los Estados Unidos). «Detalles del cálculo solar». Laboratorio de Monitoreo Global ESRL - Radiación global y aerosoles .
  2. ^ "Tablas de corrección para la altitud del sextante". www.siranah.de .
  3. ^ "Hoja informativa sobre la Tierra".
  4. ^ Sayigh, AAM (1979). Fundamentos de la energía solar . Pergamon Press. ISBN 978-0-08-024744-1.
  5. ^ La fuente exacta de estos números es difícil de rastrear, pero Notas sobre la caída del horizonte proporciona una descripción que arroja una cifra menos significativa, y otra página de la serie proporciona -2,075.

Enlaces externos