GeographicLib::MagneticCircle Class Reference

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

#include <GeographicLib/MagneticCircle.hpp>

List of all members.

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

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


Constructor & Destructor Documentation

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.


Member Function Documentation

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] 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.

Parameters:
[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]
Returns:
true if the object has been initialized.

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

References GeographicLib::Math::NaN().

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 133 of file MagneticCircle.hpp.

References GeographicLib::Math::NaN().

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

Definition at line 138 of file MagneticCircle.hpp.

References GeographicLib::Math::NaN().

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

Definition at line 143 of file MagneticCircle.hpp.

References GeographicLib::Math::NaN().

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

Definition at line 148 of file MagneticCircle.hpp.

References GeographicLib::Math::NaN().


Friends And Related Function Documentation

friend class MagneticModel [friend]

Definition at line 67 of file MagneticCircle.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 6 Oct 2014 for GeographicLib by  doxygen 1.6.1