Skip to content

HarrisPriester

Defined in: harris_priester.rs:289

pub struct HarrisPriester {
pub n: u32,
pub lag_angle: f64,
// ...
}

Harris-Priester atmospheric density model.

Computes density as a function of altitude and the angle between the satellite position and the atmospheric density bulge apex. The bulge lags behind the sub-solar point due to thermal inertia.

ρ(h, ψ) = ρ_min(h) + [ρ_max(h) - ρ_min(h)] × cos^n(ψ/2)

where ψ is the angle between the satellite and the bulge apex, and n controls the sharpness of the diurnal variation.

n: u32

Cosine power exponent. Higher values produce a sharper density bulge.

Typical values: n=2 (low inclination), n=6 (polar orbit).


lag_angle: f64

Lag angle of the density bulge behind the sub-solar point [radians].

Default: π/6 ≈ 30° (~2 hours in local solar time).


fn new() -> Self

Create a Harris-Priester model with default parameters.

Uses n=2 and 30° lag angle.


fn with_exponent(self, n: u32) -> Self

Set the cosine exponent (builder pattern).


fn with_lag_angle(self, lag_radians: f64) -> Self

Set the lag angle in radians (builder pattern).


fn with_sun_direction_fn(self, f: fn(&Epoch) -> [frame::Vec3<frame::Gcrs>](../../../../arika/api/structs/vec3/)) -> Self

Override the Sun direction function (for testing).