Sesgo del semieje mayor medio de Brouwer-Lyddane

Estoy usando el software GMAT (Herramienta de análisis de misión general) ( sitio web , YouTube ) para propagar naves espaciales y calcular su eje semi-mayor medio (SMA) de Brouwer-Lyddane (BL) . Descubrí algo interesante que no entiendo.

Propago una nave espacial, con el elemento orbital inicial:

  • BL media: [a,e,i,RAAN,AOP,MA] = [7000 km,0,45 grados,0,0,0]
  • elementos osculadores: [a,e,i,RAAN,AOP,MA] = [7004,718 km , 0,000898, 45,019 grados, 0, 0, 0]
  • y la época: 01 Ene 2000 12:00:00.000

Donde los elementos osculadores antes mencionados y los elementos medios BL se corresponden entre sí, utilizando la transformación Brouwer-Lyddane Short.

El propagador usa un integrador Runge-Kutta de octavo orden, con un modelo de fuerza del campo gravitatorio de la Tierra JGM-2 con armónicos zonales y tesserales hasta grado 21 y orden 21. No uso arrastre, presión de radiación solar o tercer cuerpo gravedad.

La SMA media de BL producida es:ingrese la descripción de la imagen aquí

Donde el eje y es el BL SMA en [km], y el eje x es el ElapsedDays

Cuando propago la misma nave espacial con los mismos elementos orbitales iniciales, el mismo propagador, pero con una época diferente: 01 de enero de 2000 00:00:00.000, obtengo el siguiente BL SMA:ingrese la descripción de la imagen aquí

Observe que mientras la primera época produce un valor de sesgo significativo de aproximadamente 130 metros, la segunda época no.

¿Alguien tiene alguna explicación para este sesgo? ¿Por qué depende de la época? ¿Por qué es constante en el tiempo?

En cada caso, ¿está especificando los elementos medios del BL o la osculación?
Ambas cosas. Los elementos osculadores [7000 km, 0,45 grados, 0,0,0] corresponden a los elementos orbitales medios [7004,718 km, 0,000898, 45,019 grados, 0, 0, 0] a través de la transformación Brouwer-Lyddane Short. Ambos casos se inicializan con los mismos elementos orbitales.
No estoy familiarizado con el software, pero si inicia el satélite en el mismo todo excepto el tiempo (diferencia de 12 horas), entonces el satélite comenzará con diferentes potenciales gravitacionales para los dos casos. Supongo que si lo ejecutó 100 veces espaciando sus épocas iniciales de manera uniforme durante 24 horas, vería que sus "sesgos de altitud" se distribuirían por encima y por debajo, dependiendo de si comenzó en un pico o valle de gravedad. No debe esperarse que la media sea igual al valor inicial instantáneo, está comenzando al azar.
Eso es lo que también pensé que sucedió. Todavía no explica por qué este sesgo es constante (y diferente para cada época). Supuse que durante largos períodos de tiempo, el BL-SMA debería estar a veces por encima y otras veces por debajo del valor real. Pero, como puedes ver, no lo es. Dependiendo de la época que elija, el BL-SMA está constantemente sobresesgado o subsesgado.
Considere la posibilidad de que la idea de "un valor verdadero" no se aplique. Como mencioné en la otra pregunta , realmente no existe un eje semi-mayor "verdadero" para una órbita en un potencial gravitatorio aleatoriamente grumoso. La órbita no es una cónica, ni una simple cónica de precesión. Es solo un poco aleatorio en este campo giratorio y lleno de baches.
(por cierto, no me di cuenta de tu comentario al principio, no olvides dirigirte directamente a la persona, por ejemplo, "@uhoh" para asegurarte de que reciba una notificación de tu mensaje. A veces no es necesario (por ejemplo, tú recibe una notificación aquí porque es tu pregunta) pero no puede doler.)

Respuestas (1)

Ampliaré mi comentario :

No estoy familiarizado con el software, pero si inicia el satélite en el mismo todo excepto el tiempo (diferencia de 12 horas), entonces el satélite comenzará con diferentes potenciales gravitacionales para los dos casos. Supongo que si lo ejecutó 100 veces espaciando sus épocas iniciales de manera uniforme durante 24 horas, vería que sus "sesgos de altitud" se distribuirían por encima y por debajo, dependiendo de si comenzó en un pico o valle de gravedad. No debe esperarse que la media sea igual al valor inicial instantáneo, está comenzando al azar.

Para mantenerlo simple, usaré solo el j 2 componente multipolar del potencial gravitacional de la Tierra además del término monopolo GRAMO METRO mi . Escribí un breve script en python usando números y ecuaciones de Wikipedia (los enlaces se muestran dentro del script).

He construido una órbita de inclinación de 90 grados, a una altitud de unos 901 kilómetros y propagada durante 14 órbitas o alrededor de 1 día. (Elegí esta altitud para poder establecer la inclinación en 99 grados y confirmar que era sincronizada con el sol al propagar durante 91 días y observar cómo el nodo ascendente se movía del eje x al eje y, comprobando así que el gradiente de la j 2 término potencial está bien.)

Calculé un eje semi-mayor y la velocidad orbital. a 0 y v 0 para una órbita circular en el campo monopolar GRAMO METRO mi / r y los usó para las condiciones iniciales.

La primera trama muestra X ( t ) , y ( t ) , z ( t ) y r ( t ) a 0 durante 24 horas (14 órbitas) comenzando en el ecuador con phase = 0. El cálculo se repitió por phase = 30, 60, 90grados, de forma que el último partía por encima del polo, también a la misma altura de 901 kilómetros.

En la segunda parcela, muestro las cuatro parcelas de r ( t ) a 0 que comienzan a la misma altitud, pero en diferentes lugares sobre la Tierra. Inmediatamente puede ver que el "sesgo" del que habla depende de la ubicación inicial y el potencial gravitatorio particular que existe allí.

Comenzando por el ecuador con phase = 0grados, donde uno se sienta más bajo en el pozo de gravedad de la Tierra, la velocidad es un poco baja para una órbita circular, por lo que el satélite está realmente en apoapsis, cayendo a una altitud ligeramente más baja medio período más tarde.

Sin embargo, comenzando sobre el polo con phase = 90grados, más alto en el pozo de gravedad de la Tierra, la velocidad es un poco alta para la órbita circular, por lo que ahora es periapsis, y la altitud aumenta medio período después.

resumen: Al elegir un campo gravitatorio más fácil de entender, el comportamiento del "sesgo" es aquí más sistemático. En su pregunta, está utilizando un campo de gravedad muy complejo y de aspecto irregular que gira constantemente. Al comenzar en el mismo lugar en el espacio, pero en diferentes épocas, en realidad estabas rotando la tierra, moviendo diferentes potenciales gravitacionales a la ubicación inicial de tu satélite .

Ahora predigo que si apaga el campo multipolar en JGM-2 y usa un potencial esféricamente simétrico, sus cálculos mostrarán una altitud plana, sin variaciones ni sesgos.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


Pensamientos finales: Las órbitas realistas no son cónicas perfectas, por lo que ni ellas ni sus elementos keplerianos representan órbitas realistas . Son solo aproximaciones a la realidad, por lo que no son correctas aunque estén cerca.

Los elementos keplerianos se usaban cuando las personas escribían con plumas utilizando la luz de la quema de grasa animal (si no estaban ocupados siendo quemados en la hoguera). Son una bendición mixta en el siglo XXI cuando todo tiene muchos más dígitos.

def deriv(X, t):

    rr, vel = X.reshape(2, -1)

    acc0, acc2 = accs(rr)

    return np.hstack([vel, acc0 + acc2])


def accs(rr):

    x,   y,   z   = rr
    xsq, ysq, zsq = rr**2

    rsq = (rr**2).sum()
    rm3 = rsq**-1.5
    rm7 = rsq**-3.5

    acc0  = -GM_earth * rr * rm3

    # https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere
    acc2x = x * rm7 * (6*zsq - 1.5*(xsq + ysq))
    acc2y = y * rm7 * (6*zsq - 1.5*(xsq + ysq))
    acc2z = z * rm7 * (3*zsq - 4.5*(xsq + ysq))

    acc2  = J2_earth * np.hstack((acc2x, acc2y, acc2z))

    return acc0, acc2


import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

halfpi, pi, twopi = [f*np.pi for f in [0.5, 1, 2]]
degs, rads        = 180./pi, pi/180.

GM_earth = 3.986004418E+14 #  m^3/s^2  https://en.wikipedia.org/wiki/Standard_gravitational_parameter
J2_earth = 1.7555E+25      #  m^5/s^2  https://en.wikipedia.org/wiki/Geopotential_model

a0  = (901 + 6378) * 1E+03 # meters (roughly) for a n=14 sun-synchronous orbit

v0  = np.sqrt(GM_earth/a0)  # m/s  (vis-viva)
T   = twopi * a0 / v0       # sec

print T/60, ' minutes'

phases = [rads*d for d in [0, 30, 60, 90]]

X0s = []
for phase in phases:
    sp, cp = np.sin(phase), np.cos(phase)

    X0 = np.hstack(( [ a0*cp, 0, a0*sp],   # initial positions
                     [-v0*sp, 0, v0*cp] )) # initial velocitys
    X0s.append(X0)


n, days = 14, 1.  # orbits/day, days

time = np.linspace(0, n*days*T, int(n*days*100)+1)  

answers = []
for X0 in X0s:

    answer, info = ODEint(deriv, X0, time, full_output=True)

    answers.append(answer)

if 1 == 1:

    names  = 'x(t)', 'y(t)', 'z(t)', 'r(t)-a0'
    answer = answers[1]   # just choose one for the plot
    posn   = answer.T[:3]
    rdiff  = np.sqrt((posn**2).sum(axis=0)) - a0
    things = [thing for thing in posn] + [rdiff]

    plt.figure()
    for i, (thing, name) in enumerate(zip(things, names)):
        plt.subplot(4, 1, i+1)
        plt.plot(time/(24.*3600), thing)   # x-axis in days, not seconds
        plt.title(name, fontsize=16)
        plt.xlim(0, days+0.01)  # a little more than n days
    plt.show()

if 1 == 1:

    plt.figure()

    for answer in answers:

        posn   = answer.T[:3]
        rdif   = np.sqrt((posn**2).sum(axis=0)) - a0

        plt.plot(time/(24.*3600), rdif)   # x-axis in days, not seconds

    plt.xlim(0, days+0.1)  # a little more than n days
    plt.text(1.01, -6000, u' 0\u00B0', fontsize=15 )
    plt.text(1.01,  2000, u'30\u00B0', fontsize=15 )
    plt.text(1.01, 16000, u'60\u00B0', fontsize=15 )
    plt.text(1.01, 22000, u'90\u00B0', fontsize=15 )
    plt.title('r(t)-a0', fontsize=16)
    plt.show()

a continuación: una verificación rápida durante 91 días con una inclinación de 99 grados para confirmar que la órbita es más o menos sincronizada con el sol para asegurarme de que al menos no haya errores graves con la forma en que escribí las ecuaciones para el gradiente de la j 2 componente, o los valores numéricos. La secuencia de comandos anterior no permite la inclinación, pero la incluiría mezclando el v y y v z valores cuando X0se calcula.

ingrese la descripción de la imagen aquí

Gracias por la respuesta informativa. Después de leer su respuesta y también consultar con otros entusiastas del espacio, creo que ahora entiendo. Pero aún así, permítanme reformularlo con mis propias palabras: en problemas gravitacionales complejos, los elementos medios de BL, así como los elementos osculadores, son funciones y no constantes. Entonces, al seleccionar diferentes épocas o diferentes anomalías verdaderas iniciales, cambiamos la gravedad o la fase inicial con respecto al comienzo del período. Por lo tanto, el BL SMA inicial no corresponde necesariamente al verdadero valor medio. sino más bien a un cierto valor en el período.
@OrbitalFun es una muy buena pregunta y (obviamente) ¡me ha dado mucho en qué pensar! Gracias también por sus respuestas ( 1 , 2 ) a la otra pregunta... ha dado más en qué pensar y necesito profundizar allí a continuación.