Refracción en la atmósfera

Observación de un objeto cercano

Cuando observamos un objeto cercano a la superficie de la Tierra, comparado con su radio, consideramos la Tierra como plana.

Supongamos que la atmósfera está formada por capas con índices de refracción n0 (en la superficie), n1, n2...nn-1, nn, y n (por encima de la atmósfera). Sea θ el ángulo que forma el rayo incidente con el eje vertical Z al entrar en la atmósfera, este se propaga por las distintas capas, siguiendo la ley de la refracción

nsinθ=nnsinθn
nnsinθn=nn-1sinθn-1
nn-1sinθn-1=nn-2sinθn-2
.........
n1sinθ1= n0sinϕ0

ϕ0 es el ángulo de observación en la superficie de la Tierra (posición aparente del objeto observado).

La secuencia de igualdades lleva a, nsinθ=n0sinϕ0

Dado que el índice de refracción disminuye con la altura, los ángulos θ, θn, θn-1, ... θ1 y ϕ0 forman una serie decreciente. Por lo que ϕ0 es más pequeño que θ, el objeto observado se ve más cerca del eje Z que si no hubiera atmósfera.

Se denomina ángulo de refracción a la diferencia, ΔR=θ-ϕ0

nsin( ϕ 0 +ΔR )= n 0 sin ϕ 0 nsin ϕ 0 cosΔR+ncos ϕ 0 sinΔR= n 0 sin ϕ 0 nsin ϕ 0 +ncos ϕ 0 ·ΔR= n 0 sin ϕ 0 ΔR=( n 0 n 1 )tan ϕ 0

Como ΔR es un ángulo pequeño cosΔR≈1, y sinΔRΔR

El ángulo de refracción ΔR es proporcional a la tangente del ángulo de observación ϕ0

El índice de refracción de la parte superior de la atmósfera es n=1, el índice de refracción n0 en la superficie de la Tierra dependerán de la densidad y la temperatura del aire. En condiciones estándar, n0-1=0.00029.

Modelos simples de atmósfera

Cuando la distancia del objeto que observamos es muy grande, la Tierra y la atmósfera que la rodea no se pueden considerar planas.

En este apartado, vamos a familiarizarnos con la aplicación de la ley de la refracción a un problema con geometría esférica en vez de la plana a la que estamos acostumbrados. Supondremos que la atmósfera es una capa homogénea que rodea a la Tierra y a continuación, supondremos que está fomada for dos capas. En el siguiente apartado, analizaremos el problema de la variación continua del índice de refracción con la altura.

La atmósfera es una capa uniforme

La geometría esférica, complica la aplicación de la ley de la refracción, en comparación del caso plano estudiado en el apartado anterior. Empecemos por el caso más sencillo considerando que la atmósfera es una capa uniforme de altura h cuyo índice de refracción n

Sea θ, el ángulo de incidencia medido desde la dirección radial. La prolongación del rayo corta el eje Z en el punto A, formando un ángulo ϕ'

El rayo de luz se refracta formando un ángulo α con la dirección radial. Llega a la superficie de la Tierra, en B, formando un ángulo ϕ0 con el eje Z, que es su posición aparente

El ángulo de refración es ΔR=ϕ'-ϕ0

Calcularemos el ángulo de refración es ΔR a partir de la ley de la refracción y de la geometría del problema

Ley de la refracción, 1·sinθ=n·sinα

Triángulo PBC, ϕ0=α+φ

r 0 sinα = r sin(180 ϕ 0 )

Triángulo PAC, ϕ'=θ+φ

De modo que ΔR=ϕ'-ϕ0=θ-α, que como cabía esperar, es la desviación que experimenta el rayo del luz al refractarse

ΔR=θα=arcsin( n r 0 sin ϕ 0 r )arcsin( r 0 sin ϕ 0 r )

Trazado de rayos

Establecemos el radio r de la capa en unidades del radio r0 de la Tierra, el índice n de refracción de la capa.

Establecemos la posición del punto P sobre la capa mediante el ángulo φ que hace la dirección radial con el eje Z y el ángulo del rayo incidente θ respecto de dicha dirección radial. El rayo incidente es el segmento de la recta que pasa por el punto P y forma un ángulo ϕ=φ+θ con el eje Z.

Dado el ángulo de incidencia θ, se calcula el ángulo α de la refracción. El rayo refractado es el segmento de la recta que pasa por el punto P y forma un ángulo ϕ0=φ+α con el eje Z

Se calcula la intersección del rayo refractado con la superficie de la Tierra (no siempre hay intersección).

x 2 + y 2 = r 2 y=mx+b } x p = mb+ ( mb ) 2 ( m 2 +1 )( b 2 r 2 ) m 2 +1

El ángulo de refracción ΔR=ϕ-ϕ0=θ-α como puede comprobarse al correr el código

R=1; %radio de la Tierra
r=1.5; %radio de la capa
n=1.7; %índice de refracción

phi=pi/6; %punto  P, ángulo respecto al eje vertical
th=pi/3; %dirección del rayo de luz,respecto de la dirección radial

%la Tierra y la capa atmosférica
hold on
t=linspace(0,pi,100);
fill(r*cos(t), r*sin(t),'y')
fill(R*cos(t), R*sin(t),[0.7,0.7,0.7]) %color gris claro


x1=r*sin(phi); %punto P en la capa, rayo incidente
y1=r*cos(phi);
plot(x1,y1,'ko','linewidth',1,'markersize',3,'markeredgecolor',
'k','markerfacecolor','k')
cPen_1=phi+th; %ángulo con el eje Z
m=tan(pi/2-cPen_1); % pendiente de la recta
b=y1-m*x1;
fplot(@(x) m*x+b,[x1,x1+2*sin(phi)],'color','r') %rayo incidente
fplot(@(x) m*x+b,[x1-0.5*sin(phi),x1],'color','r','linestyle','--')
fplot(@(x) y1*x/x1,[0,x1+0.5*cos(atan(y1/x1))],'color','k','linestyle','--')

%rayo refractado
alfa=asin(sin(th)/n);
cPen_0=phi+alfa; %ángulo con el eje Z
m=tan(pi/2-cPen_0); %pendiente de la recta
b=y1-m*x1;

%calcula P1 (intersección recta circunferencia de radio R)
x2=(-2*m*b+sqrt((2*m*b)^2-4*(m^2+1)*(b^2-R^2)))/(2*(m^2+1));
x21=(-2*m*b-sqrt((2*m*b)^2-4*(m^2+1)*(b^2-R^2)))/(2*(m^2+1));
y2=m*x2+b;
plot(x2,y2,'ko','linewidth',1,'markersize',3,'markeredgecolor',
'k','markerfacecolor','k')
fplot(@(x) m*x+y1-m*x1,[x2,x1],'color','r')
fplot(@(x) y2*x/x2,[0,x2+0.5*cos(atan(y2/x2))],'color','k','linestyle','--')

hold off
axis equal
axis off
disp('Angulo de refracción')
disp(cPen_1-cPen_0);
disp(th-alfa);

Angulo de refracción
    0.5127
    0.5127

Una atmósfera formada por dos capas

Supongamos que la atmósfera de la Tierra está fomada por dos capas de radios r1, la exterior, y r2, la interior. Sus índices de refracción son n1 y n2, respectivamente.

Establecemos la posición del punto P1 sobre la capa externa mediante el ángulo φ1 que hace la dirección radial con el eje Z y el ángulo del rayo incidente θ1 respecto de dicha dirección radial. El rayo incidente es el segmento de la recta que pasa por el punto P1 y forma un ángulo ϕ1=φ11 con el eje Z.

Dado el ángulo de incidencia θ1, se calcula el ángulo α1 de la refracción. El rayo refractado es el segmento de la recta que pasa por el punto P1 y forma un ángulo ϕ2=φ1+α1 con el eje Z

Se calcula la intersección P2 del rayo refractado con segunda capa (no siempre hay intersección).

Se calcula el ángulo de incidencia θ2 que forma el rayo refractado con la dirección radial que pasa por P2, de acuerdo con los ángulos del triángulo P1CP2 a la derecha de la figura θ2=α1+(φ1-φ2)

Se calcula el ángulo α2 de la refracción. El rayo refractado es el segmento de la recta que pasa por el punto P2 y forma un ángulo ϕ3=φ2+α2 con el eje Z

Se calcula la intersección del rayo refractado con la superficie de la Tierra (no siempre hay intersección).

El ángulo de refracción ΔR=ϕ1-ϕ3=(θ1-α1)+(θ2-α2) como puede comprobarse al correr el código

Finalmente, comprobamos que los productos r1·n1·sinα1=r2·n2·sinα2. Una propiedad importante de la trayectoria que sigue el rayo de luz al atravesar la atmósfera, que demostraremos más adelante.

R=1;
r2=1.5; %capa interior
r1=2; %capa exterior
n1=1.3; %índices de refracción
n2=3;

phi_1=pi/6; %punto P1, ángulo con el eje Z
th_1=pi/3; %dirección del rayo de luz, respecto de la dirección radial

%la tierra y las capas 
hold on
t=linspace(0,pi,100);
fill(r1*cos(t), r1*sin(t),'c')
fill(r2*cos(t), r2*sin(t),'y')
fill(R*cos(t), R*sin(t),[0.7,0.7,0.7])

x1=r1*sin(phi_1); %punto P1 en la capa externa
y1=r1*cos(phi_1);
plot(x1,y1,'ko','linewidth',1,'markersize',3,'markeredgecolor',
'k','markerfacecolor','k')
cPen_1=phi_1+th_1; %ángulo con el eje Z
m=tan(pi/2-cPen_1);
b=y1-m*x1;
fplot(@(x) m*x+b,[x1,x1+2*sin(phi_1)],'color','r') %rayo incidente
fplot(@(x) m*x+b,[x1-0.5*sin(phi_1),x1],'color','r','linestyle','--')
fplot(@(x) y1*x/x1,[0,x1+0.5*cos(atan(y1/x1))],'color','k','linestyle','--')

%rayo refractado
alfa_1=asin(sin(th_1)/n1);
cPen_2=phi_1+alfa_1; %ángulo con el eje Z
m=tan(pi/2-cPen_2);
b=y1-m*x1;

%calcula P2 (intersección recta, circunferencia de radio r2)
x2=(-m*b+sqrt((m*b)^2-(m^2+1)*(b^2-r2^2)))/(m^2+1);
x21=(-m*b-sqrt((m*b)^2-(m^2+1)*(b^2-r2^2)))/(m^2+1);
y2=m*x2+b;
phi_2=atan(x2/y2);
plot(x2,y2,'ko','linewidth',1,'markersize',3,'markeredgecolor',
'k','markerfacecolor','k')
fplot(@(x) m*x+y1-m*x1,[x2,x1],'color','r')
fplot(@(x) m*x+y1-m*x1,[x2-1*cos(atan(y2/x2)),x1],'color','r', 'linestyle','--')
fplot(@(x) y2*x/x2,[0,x2+0.5*cos(atan(y2/x2))],'color','k','linestyle','--')

%rayo refractado en P2
th_2=phi_1-phi_2+alfa_1;
alfa_2=asin(n1*sin(th_2)/n2);
cPen_3=phi_2+alfa_2; %ángulo con el eje Z
m=tan(pi/2-cPen_3);
b=y2-m*x2;

%calcula P3 (intersección recta con la circunferencia de radio R, la Tierra)
x3=(-2*m*b+sqrt((2*m*b)^2-4*(m^2+1)*(b^2-R^2)))/(2*(m^2+1));
y3=m*x3+b;
plot(x3,y3,'ko','linewidth',1,'markersize',3,'markeredgecolor',
'k','markerfacecolor','k')
fplot(@(x) m*x+y2-m*x2,[x3,x2],'color','r')
fplot(@(x) m*x+y2-m*x2,[x3-1*cos(atan(y3/x3)),x2],'color','r', 'linestyle','--')
fplot(@(x) y3*x/x3,[x3-0.5*cos(atan(y3/x3)),0],'color','k','linestyle','--')

hold off
axis equal
axis off
disp('Angulo de refracción')
disp(cPen_1-cPen_3)
disp(th_1-alfa_1+th_2-alfa_2)

Angulo de refracción
    1.0165
    1.0165
>> r1*n1*sin(alfa_1)
ans =    1.7321
>> r2*n2*sin(alfa_2)
ans =    1.7321

Observación de un objeto lejano

Supongamos que la atmósfera que rodea a la Tierra está formada por capas de índice de refracción n decreciente con la altura. La luz procedente del objeto distante, se propaga por las distintas capas curvándose y llega a la superficie de la Tierra formando la recta tangente a su trayectoria, un ángulo ϕ0 con el eje vertical Z, ésta es la posición aparente del objeto celeste.

Consideremos dos capas adyacentes de índices de refracción n y n', el rayo que incide en el punto P que forma un ángulo θ' con la dirección radial, se refracta formando un ángulo más pequeño α con dicha dirección radial. La ley de la refracción se escribe, n'sinθ'=nsinα

Queremos calcular el ángulo θ del rayo incidente que se refracta en Q. Consideremos el triángulo CPQ, con los radios CP=r' y CQ=r

r sinα = r' sin(180θ) r'sinα=rsinθ

Eliminamos el ángulo α entre esta ecuación y la de la ley de la refracción, obteniendo una importante relación, n'·r'·sinθ'=n·r·sinθ


El producto de tres términos: el radio r, el índice de refracción n y el seno del ángulo del rayo inicidente θ, es constante a lo largo de la trayectoria que sigue la luz en un medio estratificado formado por capas esféricas.


En la superficie de la Tierra se cumplirá que, n·r·sinθ=n0·r0·sinϕ0. Siendo ϕ0 el ángulo de observación

El ángulo de refracción

Cuando el rayo se refracta en P el ángulo que forma su prolongación con el eje Z cambia de ϕ' a ϕ, tal como vemos en la figura. El ángulo correspondiente a una única refracción será ΔR=ϕ'-ϕ

Como vemos en los dos triángulos de la figura, se cumple que ϕ'=φ'+θ' y ϕ=φ+θ. El ángulo de refracción será, ΔR=ϕ'-ϕ=(θ'-θ)+(φ'-φ)=Δθ+Δφ.

Sea Δφ=φ'-φ el ángulo QCF comprendido entre los radios r y r', el arco QF es igual a r·Δφ y el arco EP es igual a r'·Δφ. Llamamos r'=r+Δr, Δr es QE

tanθ= EP QE = rΔφ Δr

Llamando n'=n+Δn (ya que el índice de refracción decrece al incrementarse r) y θ'=θ+Δθ. Como hemos demostrado

r'·n'·sinθ'=n·r·sinθ (r+Δr)(nΔn)sin(θ+Δθ)=n·r·sinθ

Teniendo en cuenta que Δθ es un ángulo pequeño, sin(Δθ)≈Δθ, cos(Δθ)≈1. Como Δr y Δn son también cantidades pequeñas, despreciamos los productos Δn·Δr, Δr·Δθ y Δn·Δθ

( rn+nΔrrΔn )( sinθ+Δθcosθ )=n·r·sinθ rnsinθ+rncosθ·Δθ+nΔrsinθrΔnsinθ=n·r·sinθ rncosθ·Δθ+nΔrsinθrΔnsinθ=0 Δr r Δn n + Δθ tanθ =0

Teniendo en cuenta que tanθ=r·Δφ/Δr o bien, Δr/r=Δφ/tanθ

Δφ tanθ Δn n + Δθ tanθ =0 Δφ+Δθ tanθ = Δn n ΔR= Δn n tanθ

Hemos demostrado, n·r·sinθ=n0·r0·sinϕ0

ΔR= Δn n sinθ 1 sin 2 θ ΔR= Δn n r 0 n 0 sin ϕ 0 r 2 n 2 r 0 2 n 0 2 sin 2 ϕ 0

Esta ecuación determina el ángulo de refracción ΔR experimentado por un rayo de luz cuando pasa de una capa de índice de refracción n-Δn a la siguiente de índice n. El ángulo de refracción R debido a todas las capas de la atmósfera está dado por

R= r 0 n 0 sin ϕ 0 1 n 0 dn n r 2 n 2 r 0 2 n 0 2 sin 2 ϕ 0

Los límites de integración son, n0 en la superficie de la Tierra y 1 cuando los gases enrarecidos de la atmósfera no producen efectos ópticos. Para calcular la integral precisamos la relación del índice de refracción n con la distancia r al centro de la Tierra.

En la práctica, se realizan aproximaciones, para obtener una fórmula manejable del ángulo de refracción R en términos del ángulo de observación ϕ0. La primera aproximación sería la de considerar la altura de la atmósfera pequeña frente al radio r0 de la Tierra, r=r0(1+s). Donde s es una cantidad pequeña y se desprecian los términos en s2, s3...

Indice de refracción de la atmósofera

Ya hemos estudiado un modelo de atmósfera consistente en una sola capa homogénea de índice de refracción constante, denomominada modelo de Cassini

Newton supuso una atmósfera isotérmica en la que la densidad del aire ρ(r) disminuye exponencialmente con la altura r-r0. El índice de refracción n(r) del aire sería

ρ(r)=ρ( r 0 )exp( r r 0 H ) n(r)=1+k ρ(r) ρ( r 0 ) =1+kexp( r r 0 H )

donde k es una constante que determina su valor a nivel del mar r=r0. Teniendo en cuenta que dn=(dn/dr)dr y llamando x=(r-r0)/H, la integral se convierte en,

R=ksin ϕ 0 0 1 1+k e x e x ( ( 1+k e x )( 1+Hx/ r 0 ) (1+k) ) 2 sin 2 ϕ 0 dx

Dibujamos la función integrando, para establecer un límite superior adecuado. Tomamos los valors de k, H y r0 del segundo artículo citado en las referencias

k=0.000263462;
H=8.59735; %km
r0=6366; % radio dela Tierra, km
phi=(90-3)*pi/180; %ángulo
f=@(x) exp(-x)./((1+k*exp(-x)).*sqrt(((1+k*exp(-x)).*(1+H*x/r0)/(1+k)).^2-
sin(phi)^2));
fplot(f,[0,H])
grid on
xlabel('x')
ylabel('f(x)')
title('Integrando')

Consideramos que a partir de x=H la función f(x)≈0, se hace casi cero. Tomaremos H=8.6 km como límite superior

Creamos una tabla de ángulos 90°-ϕ0 (entre 0.5 y 10°) en la primera columna, y de ángulos de refracción R en minutos (segunda columna) y segundos (tercera columna), similar a la de Newton. Véase la tabla I del segundo artículo citado en las referencias

k=0.000263462;
H=8.59735; %km
r0=6366; %km

th=0.5:0.5:10;
disp('ángulo  minutos  segundos')
for phi=(90-th)*pi/180
    f=@(x) exp(-x)./((1+k*exp(-x)).*sqrt(((1+k*exp(-x)).*(1+H*x/r0)/(1+k)).^2
-sin(phi)^2));
    R=k*sin(phi)*integral(f,0,H);
    minutos=floor(R*180*60/pi);
    segundos=round((R*180*60/pi-minutos)*60);
    fprintf('%2.1f       %i        %i\n',(pi/2-phi)*180/pi, minutos, segundos) 
end
ángulo  minutos  segundos
0.5       27        35
1.0       23        7
1.5       19        44
2.0       17        8
2.5       15        5
3.0       13        25
3.5       12        4
4.0       10        56
4.5       9        59
5.0       9        11
5.5       8        29
6.0       7        53
6.5       7        21
7.0       6        53
7.5       6        28
8.0       6        6
8.5       5        46
9.0       5        28
9.5       5        12
10.0      4        57

Principio de Fermat

La luz emitida por un objeto S alejado de la Tierra se propaga a lo largo de la recta que forma un ángulo δr con la horizontal, penetra en la atmósfera en B donde se refracta y llega a la posición del observador A(0,R) sobre su superficie y forma un ángulo δ con la horizontal.

El dibujo es una exageración de la situación real, en la que el radio de la Tierra supuesta esférica es de 6378 km (radio ecuatorial) y la atmósfera tiene una altura aproximada de 50 km.

El problema que se plantea es la propagación del un rayo de luz por un medio no homogéneo cuyo índice de refracción varía con la altura z del punto P de coordenadas (x,y) sobre la superficie de la Tierra

z= x 2 + y 2 R

El principio de Fermat del tiempo mínimo afirma que

I= A B n(z) d x 2 +d y 2 = A B n(z) 1+ ( dy dx ) 2 dx = A B n(z) 1+ y ˙ 2 dx

Donde A es el punto de observación (0, R) y B es el punto de intersección de rayo de luz con superficie esférica (circunferencia en el dibujo) de radio R+50 km que señala el límite exterior de la atmósfera. Supondremos que fuera de la atmósfera el rayo de luz se propaga de forma rectilínea, su índice de refracción es constante e igual a la unidad, n=1.

Para que el tiempo sea mínimo, tenemos que calcular el extremo de la funcional

f(x,y, y ˙ )=n(z) 1+ y ˙ 2 f y d dx ( f y ˙ )=0

para obtener la ecuación diferencial de la trayectoria

f y = dn dz z dy 1+ y ˙ 2 = dn dz y x 2 + y 2 1+ y ˙ 2 f y ˙ =n(z) y ˙ 1+ y ˙ 2 d dx ( f y ˙ )= dn(z) dx y ˙ 1+ y ˙ 2 +n(z) y ¨ ( 1+ y ˙ 2 ) 3/2 = dn dz dz dx y ˙ 1+ y ˙ 2 +n(z) y ¨ ( 1+ y ˙ 2 ) 3/2 = dn dz x+y y ˙ x 2 + y 2 y ˙ 1+ y ˙ 2 +n(z) y ¨ ( 1+ y ˙ 2 ) 3/2

Despejamos d2y/dx2

dn dz y x 2 + y 2 1+ y ˙ 2 dn dz x+y y ˙ x 2 + y 2 y ˙ 1+ y ˙ 2 n(z) y ¨ ( 1+ y ˙ 2 ) 3/2 =0 { d 2 y d x 2 = dn dz n(z) ( 1+ ( dy dx ) 2 ) x 2 + y 2 { y( 1+ ( dy dx ) 2 ) dy dx ( x+y dy dx ) } z= x 2 + y 2 R

Esta es la ecuación diferencial de la trayectoria

Indice de refracción de la atmósfera

En la página titulada Modelos simples de atmósfera se estudia los modelos de atmósfera isotermos y aquellos en los que la temperatura disminuye linealmente con la altura.

En la página web de la NASA (National Aeronautics and Space Administration) titulada Earth Atmosphere model se describe un modelo de atmósfera que consta de tres capas. La altura z se da en metros, la temperatura T en gardos centígrados y la presión p en kPa

Buscamos una expresión sencilla del índice de refración n del aire en términos de la presión p y la temperatura T

n=1+7.93643· 10 4 p T

donde p se mide en kPa y T en K.

Representamos el índice de refracción n en función de la altura z en km

z=0:100:50000; %altura hasta 50 km
zona1=z<
zona2=z>=11000 & z<25000;
zona3=z>=25000;

T=zona1.*(15.04-0.00649*z)+zona2.*(-56.46)+zona3.*(-131.21+0.00299*z);
p=zona1.*(101.29*((T.*zona1+273.1)/288.08).^5.256)+zona2.*
(22.65*exp(1.73-.000157*z.*zona2))+zona3.*(2.488*((T.*zona3+273.1)/216.6).^-11.388);
n=1+7.9364e-04*p./(T+273.1);
plot(z/1000,n)
grid on
xlabel('z (km)')
ylabel('n')
title('Indice de refracción')

El índice de refracción n cambia muy poco con la altura z

Trayectoria y ángulos de desviación

Integramos la ecuación diferencial con las siguientes condiciones iniciales, en la posición del observador, x=0, y=R, la luz parte con un ángulo δ respecto de la horizontal, dy/dx=tanδ y sale de la atmósfera formando un ángulo δr, moviénde después en una trayectoria rectilínea. Vamos a representar la trayectoria de un rayo de luz en la atmósfera y a calcular la diferencia δ-δr en función de δ

Definimos una función que interrumpe el proceso de integración cuando el rayo de luz sale de la atmósfera.

function [value,isterminal,direction]=stop_atmosfera(t,x)
    z=sqrt(x(1)^2+t^2)-6370;  %y es x(1), x es t, z es la distancia radial
    value=z-50;
    isterminal=1; %1 detiene la integración cuando la velocidad se hace cero   
    direction=0; % 1 crece, -1 decrece, 0 no importa
end

Definimos la función a integrar de acuerdo con el modelo de atmósfera y la relación entre el índice de refracción n con la presión p y la temperatura T. Conocida la expresión de n(z), también tenemos que calcular la derivada, dn/dz

function dr = refraccion_atm(t,x)
  z=sqrt(x(1)^2+t^2)*1000-6370*1000;  %y es x(1), x es t, z es la distancia radial
  if z<11000
        T=15.04-0.00649*z+273.1;
        p=101.29*(T/288.08)^5.256;
        dp=-0.006497*101.29*5.256*T^4.256/288.08^5.256; %derivada dp/dz
        dT=-0.00649; %derivada dT/dz
  elseif z>11000 && z<25000   
       T=-56.46+273.1;
       p=22.65*exp(1.73-0.000157*z);
       dT=0; %derivada dT/dz
       dp=-25.65*0.000157*exp(1.73-0.000157*z); %derivada dp/dz
  else
       T=-131.21+0.00299*z+273.1;
       p=2.488*(T/216.6)^-11.388;
       dT=0.00299; %derivada dT/dz
       dp=-0.00299*2.488*11.388*T^-12.388/216.6^-11.388; %derivada dp/dz
    end
    n=1+7.9364e-04*p/T; %n(z)
    dn=(dp*T-p*dT)/T^2; % derivada dn/dz
    dr=zeros(2,1);
    dr(1)=x(2);
    dr(2)=dn*(1+x(2)^2)*(x(1)*(1+x(2)^2)-x(2)*(x(1)*x(2)+t))/(n*sqrt(x(1)^2+t^2));
end

Representamos la trayectoria del rayo de luz en la atmósfera, hasta 50 km de altura

th=10; %ángulo, grados
opts=odeset('events',@stop_atmosfera);
[t,x]=ode45(@refraccion_atm,[0,1000],[6378, tan(th*pi/180)], opts);
plot(t,x(:,1))
grid on
xlabel('x (km)')
ylabel('y (km)');
title('Trayectoria')

Vemos que la trayectoria es casi rectilínea, que la diferencia entre el ángulo inicial δ y el ángulo final δr es muy pequeña, 0.0531 grados ó 3.2 min de arco. El procedimiento numérico debe ser muy estable para que las diferencias sean tan pequeñas a tan grandes distancias. Por lo que no podemos estar seguros de que los resultados sean correctos

>>  th-atan(x(end,2))*180/pi
ans =    0.0531
>> ans*60
ans =    3.1861

Representamos la diferencia δ-δr en función de δ

ang=linspace(0,20,100);
ang_r=zeros(1,length(ang));
i=1;
opts=odeset('events',@stop_atmosfera);
for th=ang
    [t,x]=ode45(@refraccion_atm, [0,1000],[6378,tan(th*pi/180)], opts);
    ang_r(i)=(th-atan(x(end,2))*180/pi)*60; %en minutos
    i=i+1;
end
plot(ang,ang_r)
grid on
xlabel('\delta (grad)')
ylabel('\delta-\delta_r (min)');
title('Refracción atmosférica')

Esta diferencia de ángulos explica la forma ovalada del Sol o de la Luna cuando están cercanos al horizonte. Su diámetro vertical disminuye por efecto de la refracción atmosférica.

Obtenemos una representación gráfica, similar a la figura 6, del tercer artículo mencionado a las referencias, ese artículo utiliza un modelo distinto de atmósfera (dos capas). Las líneas quebradas para ángulos δ pequeños indican que el procedimiento numérico podría fallar para ciertos ángulos. Así pues, hemos probado el procedimiento ode45 de MATLAB en una situación límite.

Referencias

W. M. Smart, R. M. Green. Textbook on Spherical Astronomy, 6th edition. Cambridge University Press (1977), chapter III, Refraction. 58-65

Michael Nauenberg. Newton's theory of the atmospheric refraction of light. Am. J. Phys. 85 (12) December 2017, 921-925

Z. Néda, S. Volkán. Flatness of the setting Sun. https://arxiv.org/abs/physics/0204060v1. Submitted on 19 Apr 2002