Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
GeographicLib::MagneticCircle Class Reference

Geomagnetic field on a circle of latitude. More...

#include <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
 

Private Types

typedef Math::real real
 

Private Member Functions

void Field (real lon, bool diffp, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const
 
 MagneticCircle (real a, real f, real lat, real h, real t, real cphi, real sphi, real t1, real dt0, bool interpolate, const CircularEngine &circ0, const CircularEngine &circ1)
 
 MagneticCircle (real a, real f, real lat, real h, real t, real cphi, real sphi, real t1, real dt0, bool interpolate, const CircularEngine &circ0, const CircularEngine &circ1, const CircularEngine &circ2)
 

Private Attributes

real _a
 
CircularEngine _circ0
 
CircularEngine _circ1
 
CircularEngine _circ2
 
bool _constterm
 
real _cphi
 
real _dt0
 
real _f
 
real _h
 
bool _interpolate
 
real _lat
 
real _sphi
 
real _t
 
real _t1
 

Friends

class MagneticModel
 

Detailed Description

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>
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;
}
}

MagneticField is a command-line utility providing access to the functionality of MagneticModel and MagneticCircle.

Definition at line 37 of file MagneticCircle.hpp.

Member Typedef Documentation

Definition at line 39 of file MagneticCircle.hpp.

Constructor & Destructor Documentation

GeographicLib::MagneticCircle::MagneticCircle ( real  a,
real  f,
real  lat,
real  h,
real  t,
real  cphi,
real  sphi,
real  t1,
real  dt0,
bool  interpolate,
const CircularEngine circ0,
const CircularEngine circ1 
)
inlineprivate

Definition at line 45 of file MagneticCircle.hpp.

GeographicLib::MagneticCircle::MagneticCircle ( real  a,
real  f,
real  lat,
real  h,
real  t,
real  cphi,
real  sphi,
real  t1,
real  dt0,
bool  interpolate,
const CircularEngine circ0,
const CircularEngine circ1,
const CircularEngine circ2 
)
inlineprivate

Definition at line 64 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 98 of file MagneticCircle.hpp.

Member Function Documentation

void GeographicLib::MagneticCircle::Field ( real  lon,
bool  diffp,
real Bx,
real By,
real Bz,
real Bxt,
real Byt,
real Bzt 
) const
private

Definition at line 19 of file src/MagneticCircle.cpp.

Math::real GeographicLib::MagneticCircle::Flattening ( ) const
inline
Returns
f the flattening of the ellipsoid. This is the value inherited from the MagneticModel object used in the constructor.

Definition at line 157 of file MagneticCircle.hpp.

Math::real GeographicLib::MagneticCircle::Height ( ) const
inline
Returns
the height of the circle (meters).

Definition at line 167 of file MagneticCircle.hpp.

bool GeographicLib::MagneticCircle::Init ( ) const
inline
Returns
true if the object has been initialized.

Definition at line 145 of file MagneticCircle.hpp.

Math::real GeographicLib::MagneticCircle::Latitude ( ) const
inline
Returns
the latitude of the circle (degrees).

Definition at line 162 of file MagneticCircle.hpp.

Math::real GeographicLib::MagneticCircle::MajorRadius ( ) const
inline
Returns
a the equatorial radius of the ellipsoid (meters). This is the value inherited from the MagneticModel object used in the constructor.

Definition at line 151 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.

Parameters
[in]lonlongitude of the point (degrees).
[out]Bxthe easterly component of the magnetic field (nanotesla).
[out]Bythe northerly component of the magnetic field (nanotesla).
[out]Bzthe vertical (up) component of the magnetic field (nanotesla).

Definition at line 114 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.

Parameters
[in]lonlongitude of the point (degrees).
[out]Bxthe easterly component of the magnetic field (nanotesla).
[out]Bythe northerly component of the magnetic field (nanotesla).
[out]Bzthe vertical (up) component of the magnetic field (nanotesla).
[out]Bxtthe rate of change of Bx (nT/yr).
[out]Bytthe rate of change of By (nT/yr).
[out]Bztthe rate of change of Bz (nT/yr).

Definition at line 133 of file MagneticCircle.hpp.

Math::real GeographicLib::MagneticCircle::Time ( ) const
inline
Returns
the time (fractional years).

Definition at line 172 of file MagneticCircle.hpp.

Friends And Related Function Documentation

friend class MagneticModel
friend

Definition at line 89 of file MagneticCircle.hpp.

Member Data Documentation

real GeographicLib::MagneticCircle::_a
private

Definition at line 41 of file MagneticCircle.hpp.

CircularEngine GeographicLib::MagneticCircle::_circ0
private

Definition at line 43 of file MagneticCircle.hpp.

CircularEngine GeographicLib::MagneticCircle::_circ1
private

Definition at line 43 of file MagneticCircle.hpp.

CircularEngine GeographicLib::MagneticCircle::_circ2
private

Definition at line 43 of file MagneticCircle.hpp.

bool GeographicLib::MagneticCircle::_constterm
private

Definition at line 42 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_cphi
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_dt0
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_f
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_h
private

Definition at line 41 of file MagneticCircle.hpp.

bool GeographicLib::MagneticCircle::_interpolate
private

Definition at line 42 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_lat
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_sphi
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_t
private

Definition at line 41 of file MagneticCircle.hpp.

real GeographicLib::MagneticCircle::_t1
private

Definition at line 41 of file MagneticCircle.hpp.


The documentation for this class was generated from the following files:


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:57:59