28#include "GeomagnetismLibrary.h"
32#include <acfutils/perf.h>
34#include <acfutils/wmm.h>
59wmm_open(
const char *filename,
double year)
66 if (!MAG_robustReadMagModels(filename, &wmm->fixed_model)) {
70 n_max = MAX(wmm->fixed_model->nMax, 0);
71 n_terms = ((n_max + 1) * (n_max + 2) / 2);
72 wmm->timed_model = MAG_AllocateModelMemory(n_terms);
73 ASSERT(wmm->timed_model != NULL);
74 MAG_TimelyModifyMagneticModel(date, wmm->fixed_model, wmm->timed_model);
88wmm_reopen(wmm_t *wmm,
double year)
93 ASSERT(wmm->fixed_model != NULL);
94 ASSERT(wmm->timed_model != NULL);
96 MAG_TimelyModifyMagneticModel(date, wmm->fixed_model, wmm->timed_model);
106 MAG_FreeMagneticModelMemory(wmm->fixed_model);
107 MAG_FreeMagneticModelMemory(wmm->timed_model);
115wmm_get_start(
const wmm_t *wmm)
117 return (wmm->timed_model->epoch);
124wmm_get_end(
const wmm_t *wmm)
126 return (wmm->timed_model->CoefficientFileEndDate);
142 .lambda = p.
lon, .phi = p.
lat,
143 .HeightAboveEllipsoid = FEET2MET(p.
elev)
147 MAG_GeodeticToSpherical(wmm->ellip, coord_geo, &coord_sph);
148 MAG_Geomag(wmm->ellip, coord_sph, coord_geo, wmm->timed_model, &gme);
164wmm_mag2true(
const wmm_t *wmm,
double m,
geo_pos3_t p)
181wmm_true2mag(
const wmm_t *wmm,
double t,
geo_pos3_t p)
static bool_t is_valid_hdg(double hdg)
static double normalize_hdg(double hdg)
static void * safe_calloc(size_t nmemb, size_t size)