Skip to main content

MagneticModel

Struct MagneticModel 

Source
pub struct MagneticModel { /* private fields */ }
Expand description

A spherical-harmonic model of the main field: Gauss coefficients at an epoch and their linear secular variation, to degree 12.

Implementations§

Source§

impl MagneticModel

Source

pub fn name(&self) -> &'static str

The model’s name, as its coefficient file’s header gives it.

Source

pub fn epoch_year(&self) -> f64

The epoch t₀ of the main-field coefficients, decimal year.

Source

pub fn valid_until_year(&self) -> f64

The end of the model’s validity, decimal year.

Source

pub fn field( &self, point: Geodetic, decimal_year: f64, ) -> Result<MagneticField, CoreError>

The magnetic elements at point (geodetic, on WGS 84, height above the ellipsoid) at time decimal_year (report, section 1.2, equations 7 to 20).

The geocentric components are

X′ = −Σₙ (a/r)ⁿ⁺² Σₘ (gₙᵐ cos mλ + hₙᵐ sin mλ) dP̆ₙᵐ(sin φ′)/dφ′
Y′ = (1/cos φ′) Σₙ (a/r)ⁿ⁺² Σₘ m (gₙᵐ sin mλ − hₙᵐ cos mλ) P̆ₙᵐ(sin φ′)
Z′ = −Σₙ (n + 1)(a/r)ⁿ⁺² Σₘ (gₙᵐ cos mλ + hₙᵐ sin mλ) P̆ₙᵐ(sin φ′)

turned by φ′ − φ into the geodetic frame: X = X′ cos(φ′ − φ) − Z′ sin(φ′ − φ), Y = Y′, Z = X′ sin(φ′ − φ) + Z′ cos(φ′ − φ). The rates are the same sums over ġ and ḣ.

At a pole the north and east directions follow the given longitude’s meridian, as the report’s section 1.4 sets them.

§Errors

CoreError::Domain if point fails Geodetic::validated, if decimal_year is outside the model’s validity ([2025.0, 2030.0] for WMM2025) or not finite, or if the height is outside MIN_HEIGHT_M to MAX_HEIGHT_M.

Trait Implementations§

Source§

impl Clone for MagneticModel

Source§

fn clone(&self) -> MagneticModel

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for MagneticModel

Source§

impl Debug for MagneticModel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for MagneticModel

Source§

fn eq(&self, other: &MagneticModel) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for MagneticModel

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.