GravityModels API
This document describes the API required for a gravity model. The user can add new models by overloading the functions listed here.
Structure
All models require a structure with supertype AbstractGravityModel{T<:Number}
, where T
is the type of the coefficients in the model.
API Functions
function coefficients(model::AbstractGravityModel{T}, degree::Int, order::Int, time::DataTime = DateTime("2000-01-01")) where T<:Number -> T, T
This function must return the coefficients Clm
and Slm
of the gravity model
for the specified degree
, order
, and time
. If the latter argument is omitted, the J2000.0 epoch is used. Hence:
coefficients(model, 10, 8, DateTime("2023-06-19"))
must return a Tuple{T, T}
with the Clm
and Slm
, respectively, for the degree 10, order 8, and computed at day 2023-06-19.
Note If the model has constant coefficients, the function must still accept the positional argument
time
, but it will be neglected. The package already defines the function without thetime
for the sake of usage simplification.
function coefficient_norm(model::AbstractGravityModel) where T<:Number -> Symbol
This function must return the normalization we must use in the spherical harmonics when computing the Legendre associated functions. The accepted values are:
:full
: Use full normalization.:schmidt
: Use Schmidt quasi-normalization.:unnormalized
: Do not perform normalization.
function gravity_constant(model::AbstractGravityModel{T}) where T<:Number -> T
This function must return the gravity constant [m³ / s²] for the gravity model.
function load(::Type{T}, args...; kwargs...) where T<:AbstractGravityModel -> T
This function must return gravity model structure, which is loaded using the arguments args...
and keywords kwargs...
.
function maximum_degree(model::AbstractGravityModel) -> Int
This function must return the maximum degree of the gravity model
.
function radius(model::AbstractGravityModel{T}) where T<:Number -> T
This function must return the radius [m] for the gravity model.