¿Cómo puedo verificar mi campo de gravedad reconstruido de Ceres a partir de armónicos esféricos?

Basado en la muy útil respuesta de @DavidHammen, he progresado en la reconstrucción del campo de gravedad de Ceres a partir de los datos radiométricos de Dawn. La pregunta allí contiene más información, pero basta con decir aquí que estoy usando la versión 2 de los datos en https://sbn.psi.edu/pds/resource/dawn/dwncgravL2.html

A continuación se muestra un script de Python que he usado para leer el JGDWN_CER18C_SHA.TABarchivo y construir el campo de potencial gravitacional. Estoy usando SciPy, sph_harmque está normalizado, y me pregunto cómo estar seguro de si esta es la misma normalización asumida por la normalización del Sistema de datos planetarios de la NASA en la frase (dentro del JGDWN_CER18C_SHA.LBLarchivo):

Algunos detalles que describen este modelo son:
- Los coeficientes armónicos esféricos están completamente normalizados.

La documentación de SciPy dice (acabo de copiar el html de la inspección de la página web y también se formatea mágicamente aquí, ¡sí!):

Y norte metro ( θ , ϕ ) = 2 norte + 1 4 π ( norte metro ) ! ( norte + metro ) ! mi i metro θ PAG norte metro ( porque ( ϕ ) )

Pensé que lo compararía con un mapa publicado, y encontré la imagen a continuación que es topografía y gravedad, pero estos no se pueden comparar por varias razones, que incluyen:

  1. El mapa publicado es aceleración gravitacional , no potencial.
  2. es una gráfica de la anomalía de Bouguer que es un poco (demasiado) complicada (para mí) pero aproximadamente, si entiendo correctamente, significa que (entre otras cosas como proyección y otros términos de corrección) es la aceleración gravitacional evaluada en el elipsoidal superficie, en lugar de un radio fijo. También tiene (al menos) el término monopolo eliminado, por supuesto.

Entiendo que para obtener un mapa de magnitud de aceleración , debe comenzar con el gradiente del potencial, pero una anomalía de Bouguer en toda regla puede tener otras correcciones más allá de lo que necesito entender en este momento. De hecho, lo que busco es modelar la órbita periáptica baja de Dawn .

Pregunta: En lugar de comparar con este diagrama de anomalías de Bouguer, me gustaría comparar mi reconstrucción de potencial directamente de alguna manera. ¿Cómo puedo hacer esto? ¿Cómo puedo comprobarlo?

" Crédito adicional: " ¿Los coeficientes PDS producen un potencial reducido (energía por unidad de masa) con unidades de km^2/s^2 en lugar de m^2/s^2?


abajo: De Park et al. Un interior parcialmente diferenciado para (1) Ceres deducido de su campo de gravedad y forma Nature volumen 537, páginas 515–517 (22 de septiembre de 2016) https://doi.org/10.1038/nature18955

ingrese la descripción de la imagen aquí


a continuación: tracé U para n ≥ 5 y 4 porque los términos de orden bajo abruman la gráfica r = Rref. Por supuesto, esta es (probablemente una de varias razones) por qué las personas usan diagramas de Bouguer y evalúan en el elipsoide.

ingrese la descripción de la imagen aquí

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

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

j = np.complex(0, 1)

fname = "JGDWN_CER18C_SHA.TAB"

with open(fname, 'r') as infile:
    lines = infile.readlines()

header_data = lines[0].split(',')

Rref, GM, GMerr = [float(x) for x in header_data[0:3]]
Order_0, Order_1, normalization_state = [int(x) for x in header_data[3:6]]

if normalization_state == 1:
    print "coefficients are normalized"
elif normalization_state == 0:
    print "coefficients are NOT normalized"
else:
    print "coefficients  normalization is unclear"

h_lines = [line.split(',') for line in lines[1:]]
indices = np.array([[int(x)   for x in line[0:2]] for line in h_lines])
coeffs  = np.array([[float(x) for x in line[2:4]] for line in h_lines])

Cstars = (np.array([1, +j]) * coeffs).sum(axis=1) # make coefficient complex

ph         = np.linspace(0,  pi,    180+1)[:-1]
th         = np.linspace(0,  twopi, 360+1)[:-1]
phi, theta = np.meshgrid(ph, th, indexing='ij')

# https://docs.scipy.org/doc/scipy-1.1.0/reference/generated/scipy.special.sph_harm.html#scipy.special.sph_harm

harmonics = []

for (n, m), Cstar in zip(indices, Cstars):

    Y = sph_harm(m, n, theta, phi)

    harmonics.append((n, m, (Y * Cstar).real))  # 3-tuple of n, m, Y*C product

# evaluate gravitational potential
r = Rref

U_mono   = -GM/r

nmins = (5, 4)     # 5, 4, 3, 2

Us = []

for nmin in nmins:
    count = 0
    U = np.zeros_like(phi)
    for n, m, h in harmonics:
        if n >= nmin:
            U += h * (Rref/r)**n
            count += 1
    print nmin, count
    Us.append(U)

if True:
    plt.figure()
    for i, (nmin, U) in enumerate(zip(nmins, Us)):
        plt.subplot(len(Us), 1, i+1)
        plt.imshow(U, cmap='PuOr')
        plt.title('U_ceres(r=' + str(round(r, 1))  + 'km), nmin = ' + str(nmin), fontsize = 16)
        plt.colorbar()
    plt.show()
Relacionado, si no un duplicado: ¿Cómo se normalizan los coeficientes en el modelo EGM96? Desafortunadamente, esa pregunta sigue sin respuesta.
El paquete scipy sph_harm no es lo que desea. Utiliza la forma de armónicos esféricos preferidos en la física cuántica. Los geofísicos usan una forma que usa las funciones de seno y coseno reales en lugar de la exponencial compleja, y la normalización es diferente.
@DavidHammen Gracias por su aviso, ¡esto es realmente útil! mientras haces C s t a r = C + j S y luego evaluando r mi a yo ( Y   C s t a r ) efectivamente los mantiene separados (aunque tal vez debería haber usado un signo menos C s t a r = C j S ahora que lo pienso) la normalización es una verdadera lata de gusanos, así que no me sorprende que pueda haber más de una forma de hacerlo. Está bien, iré a cazar artículos de geofísica. Tal vez un pdf de "cómo usar" asociado con un modelo WGS84 lo tenga.
actualización: me he encontrado con lo siguiente e investigando ahora; Geodesia Física, 2ª (corregida) ed. Bernhard Hofmann-Wellenhof Helmut Moritz, SpringerWienNewYork, Sección 1.10 Armónicos esféricos completamente normalizados
Oh mi señor... esta ha sido una lectura divertida hombre. ¡Gracias por publicar el código! ¡Como desarrollador, esto es increíble!
Si está tratando de igualar la gravedad en la superficie con armónicos esféricos, buena suerte. Puede ser imposible ya que los armónicos esféricos divergen dentro de la esfera de Brillouin, es por eso que para las operaciones de aterrizaje se prefieren los modelos de poliedro o mascons. Pero tal vez he entendido mal la pregunta. De todos modos, si su aplicación final es un cuerpo en órbita, sugeriría codificar manualmente una rutina manualmente para la aceleración (hay una expresión analítica para el gradiente) y verificar si los resultados coinciden con la función SciPy (si corresponde). Lo siento, no soy usuario de python, pero eso es lo que hice en MATLAB
@Julio gracias por la rápida respuesta! Está bien, echaré un vistazo a esto de nuevo (ha pasado un tiempo). Sí, quiero calcular órbitas, pero espero que esté fuera de una esfera mínima para que los armónicos sean válidos. Veré nuevamente qué datos de gravedad están disponibles para Ceres...
@uhoh No estoy seguro de poder dar una respuesta completa, pero en mi experiencia, los coeficientes de gravedad normalizados generalmente significan armónicos reales, 4pi normalizados. Entiendo que desea codificar las cosas usted mismo, pero tal vez verifique sus cálculos con la biblioteca SHTOOLS, que está escrita para trabajos de campo potenciales en las ciencias terrestres/planetarias. Si tiene acceso a información de elipsoide y topografía, este cuaderno de ejemplo hace que sea sencillo seguir la ruta de comparación de Bouguer: nbviewer.jupyter.org/github/SHTOOLS/SHTOOLS/blob/master/…
@WJB Voy a echar un vistazo, ¡muchas gracias! ¿Funcionará una nave espacial en órbita alrededor de Ceres en Jupyter? :-)

Respuestas (1)

Formulación

Brandon A. Jones escribió un excelente resumen de las diferentes formulaciones y métodos para calcular armónicos esféricos en su tesis doctoral de 2010 disponible aquí . El capítulo 2 es especialmente interesante. También puede leer Fantino & Casotto 2008 "Métodos de síntesis armónica para modelos geopotenciales globales y sus gradientes de primer, segundo y tercer orden", que propone un cálculo ligeramente simplificado de los armónicos.

Importante: el marco en el que se calculan los armónicos es un marco fijo del cuerpo. En el caso de la Tierra, utilizará el marco ECEF (consulte el Capítulo 2 de G. Xu y Y. Xu, GPS, DOI 10.1007/978-3-662-50367-6_2, que es de acceso abierto, para a a través del cálculo de ese marco a partir de un marco ECI utilizando el marco IAU2000). En el caso de otros cuerpos, y Ceres en particular, deberá crear un marco fijo de cuerpo. Esta documentación GMAT puede ser de ayuda.

Normalización o no

Yo mismo me encontré con un problema similar hace unas semanas. En términos de normalización, y al menos en los casos de la Tierra, la Luna y otros núcleos disponibles en PDS Geosciences Node , los archivos SHADR contienen los armónicos esféricos normalizados. De manera similar, el modelo EGM2008 Tide Free también contiene armónicos normalizados. Esto simplifica enormemente el cálculo, ya que no es necesario volver a calcular los armónicos con matemáticas factoriales.

Verificación validación

El paso de verificación debería ser bastante sencillo, pero la validación no lo es. El proceso de verificación, en mi experiencia, consiste en asegurarse de que las cosas se implementen correctamente: uno verifica las matemáticas codificadas y que todo el bloque encaja. Sin embargo, el paso de validación es más complicado. Allí, desea asegurarse de que se implementó lo correcto, es decir, a pesar de que las matemáticas son correctas, se utiliza el marco correcto para calcular el efecto de los armónicos esféricos en el vehículo en órbita.

Como se discutió anteriormente, los archivos SHADR y SHBDR almacenan los coeficientes normalizados. Por lo tanto, un método de validación, que he optado por mi próxima herramienta , consiste en comparar rigurosamente los resultados del mismo escenario con otra herramienta de validación conocida. En mi caso , estoy usando el GMAT de la NASA y el GMAT usado STK y otros . Sin embargo, específicamente en el caso de GMAT, no creo que sea posible importar archivos SHADR. Por lo tanto, deberá convertirlo al archivo COF de soporte, o encontrar otra herramienta de propagación que también le permita activar y desactivar dinámicas específicas (en este caso, querrá que los armónicos se activen en un grado y orden determinados, pero solo Ceres como masa puntual).

¡ChrisR al rescate (otra vez)! Está bien, le daré una lectura completa. Sin embargo, ¿puedes darme un tl; dr primero? ¿Encontraré algunos puntos de datos de potencial gravitacional en algunos lugares que pueda usar como puntos de confirmación, o su respuesta es que necesitaré hacer espacio en mi computadora portátil, descargar, instalar bajo MacOS y luego aprender un programa completamente nuevo antes de se puede sacar algo util?
Correcto, lo siento, en realidad no llegué al núcleo de tu pregunta. Si desea verificar su implementación, creo que comparar un diagrama de Bouguer es un buen comienzo. Para la validación, necesitaría mirar valores numéricos específicos. Hay dos métodos para eso. El primero requiere que encuentre valores de una fuente confiable (como un documento), es decir, "con este estado dado, obtenemos un potencial de gravedad de X cuando usamos el grado N y el orden M del archivo Z". La segunda posibilidad es encontrar un resultado de propagación o generarlo a partir de una fuente como GMAT (funciona en Windows, Linux y Mac).
@uhoh, es posible que también desee comunicarse con los científicos planetarios en Open Planetary. Son muy útiles y responden con bastante rapidez en su sistema de chat público de Slack.
Está bien, pensé que había explicado por qué compararlo con una trama de Bouguer sería una mala idea para mí. Nunca he oído hablar de Open Planetary, ¿qué es?
Está bien, pensé que había explicado por qué compararlo con una trama de Bouguer sería una mala idea para mí. Nunca he oído hablar de Open Planetary, ¿qué es? Oh, ya veo, es una colección de fotos de personas que intentan parecer inteligentes, con visión de futuro y conocedoras. Creo que los sitios web que muestran de forma destacada una docena de fotografías vanidosas en lugar de ciencia tienden a no ser muy útiles, pero está bien, le echaré un vistazo. ¡Gracias por esa sugerencia!
@uhoh, ¿has revisado su Slack ( openplanetary.slack.com ). La gente allí suele ser receptiva. De todos modos, acabo de volver a leer por qué no pudiste hacer la comparación de tramas, y tiene sentido. Necesitarías encontrar una buena referencia para esto. Además, sí, los armónicos esféricos son con respecto a un elipsoide de referencia, por lo que necesita el coeficiente de aplanamiento de esa referencia. Finalmente, es posible que desee consultar NASA GEODYN, que es un código Fortran para geodesia precisa ampliamente utilizado incluso por los estudiantes de doctorado de hoy (dos amigos lo usan todos los días).
"los armónicos esféricos son con respecto a un elipsoide de referencia" No, no lo son. Sin embargo, un diagrama de Bouguer podría mostrar la fuerza de la aceleración gravitacional en el elipsoide. ¿Hay alguna forma de saber si las definiciones en GEODYN para coeficientes armónicos esféricos son las mismas que las utilizadas en los datos de Dawn/Ceres?
Tienes razón (y yo estaba equivocado): los armónicos no están de acuerdo con el elipsoide de referencia, al menos no para los armónicos de la Tierra. Le pregunté a un amigo que sabe mucho más de geodesia que yo y me recomendó el siguiente enlace para una buena explicación de la anomalía de Bouguer: planetary.org/blogs/emily-lakdawalla/2012/… . Tampoco creo que GEODYN proporcione sus propios armónicos, sino que creo que el usuario debe especificarlos. ¡Tome esa última afirmación con extrema precaución porque nunca he usado GEODYN!
Estaba preguntando sobre GEODYN para ver cómo usa coeficientes armónicos esféricos para construir campos de potencial y aceleración, no para hacerlos.