Geomagnetic field on a circle of latitude. More...
#include <GeographicLib/MagneticCircle.hpp>
Public Member Functions | |
MagneticCircle () | |
Compute the magnetic field | |
void | operator() (real lon, real &Bx, real &By, real &Bz) const |
void | operator() (real lon, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const |
Inspector functions | |
bool | Init () const |
Math::real | MajorRadius () const |
Math::real | Flattening () const |
Math::real | Latitude () const |
Math::real | Height () const |
Math::real | Time () const |
Friends | |
class | MagneticModel |
Geomagnetic field on a circle of latitude.
Evaluate the earth's magnetic field on a circle of constant height and latitude. This uses a CircularEngine to pre-evaluate the inner sum of the spherical harmonic sum, allowing the values of the field at several different longitudes to be evaluated rapidly.
Use MagneticModel::Circle to create a MagneticCircle object. (The constructor for this class is private.)
Example of use:
// Example of using the GeographicLib::MagneticCircle class #include <iostream> #include <exception> #include <GeographicLib/MagneticModel.hpp> #include <GeographicLib/MagneticCircle.hpp> using namespace std; using namespace GeographicLib; int main() { try { MagneticModel mag("wmm2010"); double lat = 27.99, lon0 = 86.93, h = 8820, t = 2012; // Mt Everest { // Slow method of evaluating the values at several points on a circle of // latitude. for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double Bx, By, Bz; mag(t, lat, lon, h, Bx, By, Bz); cout << lon << " " << Bx << " " << By << " " << Bz << "\n"; } } { // Fast method of evaluating the values at several points on a circle of // latitude using MagneticCircle. MagneticCircle circ = mag.Circle(t, lat, h); for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double Bx, By, Bz; circ(lon, Bx, By, Bz); cout << lon << " " << Bx << " " << By << " " << Bz << "\n"; } } } catch (const exception& e) { cerr << "Caught exception: " << e.what() << "\n"; return 1; } return 0; }
MagneticField is a command-line utility providing access to the functionality of MagneticModel and MagneticCircle.
Definition at line 37 of file MagneticCircle.hpp.
GeographicLib::MagneticCircle::MagneticCircle | ( | ) | [inline] |
A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the MagneticModel::Circle.
Definition at line 76 of file MagneticCircle.hpp.
void GeographicLib::MagneticCircle::operator() | ( | real | lon, | |
real & | Bx, | |||
real & | By, | |||
real & | Bz | |||
) | const [inline] |
Evaluate the components of the geomagnetic field at a particular longitude.
[in] | lon | longitude of the point (degrees). |
[out] | Bx | the easterly component of the magnetic field (nanotesla). |
[out] | By | the northerly component of the magnetic field (nanotesla). |
[out] | Bz | the vertical (up) component of the magnetic field (nanotesla). |
Definition at line 91 of file MagneticCircle.hpp.
void GeographicLib::MagneticCircle::operator() | ( | real | lon, | |
real & | Bx, | |||
real & | By, | |||
real & | Bz, | |||
real & | Bxt, | |||
real & | Byt, | |||
real & | Bzt | |||
) | const [inline] |
Evaluate the components of the geomagnetic field and their time derivatives at a particular longitude.
[in] | lon | longitude of the point (degrees). |
[out] | Bx | the easterly component of the magnetic field (nanotesla). |
[out] | By | the northerly component of the magnetic field (nanotesla). |
[out] | Bz | the vertical (up) component of the magnetic field (nanotesla). |
[out] | Bxt | the rate of change of Bx (nT/yr). |
[out] | Byt | the rate of change of By (nT/yr). |
[out] | Bzt | the rate of change of Bz (nT/yr). |
Definition at line 109 of file MagneticCircle.hpp.
bool GeographicLib::MagneticCircle::Init | ( | ) | const [inline] |
Definition at line 121 of file MagneticCircle.hpp.
Math::real GeographicLib::MagneticCircle::MajorRadius | ( | ) | const [inline] |
Definition at line 127 of file MagneticCircle.hpp.
References GeographicLib::Math::NaN().
Math::real GeographicLib::MagneticCircle::Flattening | ( | ) | const [inline] |
Definition at line 133 of file MagneticCircle.hpp.
References GeographicLib::Math::NaN().
Math::real GeographicLib::MagneticCircle::Latitude | ( | ) | const [inline] |
Definition at line 138 of file MagneticCircle.hpp.
References GeographicLib::Math::NaN().
Math::real GeographicLib::MagneticCircle::Height | ( | ) | const [inline] |
Definition at line 143 of file MagneticCircle.hpp.
References GeographicLib::Math::NaN().
Math::real GeographicLib::MagneticCircle::Time | ( | ) | const [inline] |
Definition at line 148 of file MagneticCircle.hpp.
References GeographicLib::Math::NaN().
friend class MagneticModel [friend] |
Definition at line 67 of file MagneticCircle.hpp.