Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
vulcan::gravity::spherical_harmonics Namespace Reference

Classes

struct  GravityCoefficients
 Gravity model coefficients container. More...

Functions

const GravityCoefficientsdefault_coefficients ()
 Default Earth model with zonal harmonics only.
template<typename Scalar>
Scalar legendre_Pnm (int n, int m, const Scalar &x)
 Compute associated Legendre polynomial P_nm(x).
template<typename Scalar>
Vec3< Scalar > acceleration (const Vec3< Scalar > &r_ecef, const GravityCoefficients &coeffs=default_coefficients())
 Spherical harmonic gravitational acceleration.
template<typename Scalar>
Scalar potential (const Vec3< Scalar > &r_ecef, const GravityCoefficients &coeffs=default_coefficients())
 Spherical harmonic gravitational potential.

Function Documentation

◆ acceleration()

template<typename Scalar>
Vec3< Scalar > vulcan::gravity::spherical_harmonics::acceleration ( const Vec3< Scalar > & r_ecef,
const GravityCoefficients & coeffs = default_coefficients() )

Spherical harmonic gravitational acceleration.

General expansion using partial derivatives in spherical coordinates, then transformed to ECEF.

Template Parameters
Scalardouble or casadi::MX
Parameters
r_ecefPosition in ECEF [m]
coeffsGravity coefficients (C, S, n_max)
Returns
Acceleration in ECEF [m/s²]
Note
For symbolic mode, n_max must be fixed at trace time (structural loop).

◆ default_coefficients()

const GravityCoefficients & vulcan::gravity::spherical_harmonics::default_coefficients ( )
inline

Default Earth model with zonal harmonics only.

◆ legendre_Pnm()

template<typename Scalar>
Scalar vulcan::gravity::spherical_harmonics::legendre_Pnm ( int n,
int m,
const Scalar & x )

Compute associated Legendre polynomial P_nm(x).

Uses recurrence relations, fully symbolic-compatible. Loop bounds are structural (integers), so this works in symbolic mode.

Template Parameters
Scalardouble or casadi::MX
Parameters
nDegree
mOrder
xArgument (typically sin(latitude))
Returns
P_nm(x)

◆ potential()

template<typename Scalar>
Scalar vulcan::gravity::spherical_harmonics::potential ( const Vec3< Scalar > & r_ecef,
const GravityCoefficients & coeffs = default_coefficients() )

Spherical harmonic gravitational potential.

U = μ/r Σ Σ (R_eq/r)^n [C_nm cos(mλ) + S_nm sin(mλ)] P_nm(sin φ)

Template Parameters
Scalardouble or casadi::MX
Parameters
r_ecefPosition in ECEF [m]
coeffsGravity coefficients (C, S, n_max)
Returns
Gravitational potential [m²/s²]