GeographicLib
1.21
|
Gravity on a circle of latitude. More...
#include <GeographicLib/GravityCircle.hpp>
Public Member Functions | |
GravityCircle () | |
Compute the gravitational field | |
Math::real | Gravity (real lon, real &gx, real &gy, real &gz) const throw () |
Math::real | Disturbance (real lon, real &deltax, real &deltay, real &deltaz) const throw () |
Math::real | GeoidHeight (real lon) const throw () |
void | SphericalAnomaly (real lon, real &Dg01, real &xi, real &eta) const throw () |
Math::real | W (real lon, real &gX, real &gY, real &gZ) const throw () |
Math::real | V (real lon, real &GX, real &GY, real &GZ) const throw () |
Math::real | T (real lon, real &deltaX, real &deltaY, real &deltaZ) const throw () |
Math::real | T (real lon) const throw () |
Inspector functions | |
bool | Init () const throw () |
Math::real | MajorRadius () const throw () |
Math::real | Flattening () const throw () |
Math::real | Latitude () const throw () |
Math::real | Height () const throw () |
unsigned | Capabilities () const throw () |
bool | Capabilities (unsigned testcaps) const throw () |
Friends | |
class | GravityModel |
Gravity on a circle of latitude.
Evaluate the earth's gravity field on a circle of constant height and latitude. This uses a CircleEngine 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 GravityModel::Circle to create a GravityCircle object. (The constructor for this class is private.)
See Geoid heights on a multi-processor system for an example of using GravityCircle (together with OpenMP) to speed up the computation of geoid heights.
Example of use:
// Example of using the GeographicLib::GravityCircle class // $Id: dc7c895cc248cee01a434ea3df1b31771ffb6ad2 $ #include <iostream> #include <exception> #include <GeographicLib/GravityModel.hpp> #include <GeographicLib/GravityCircle.hpp> using namespace std; using namespace GeographicLib; int main() { try { GravityModel grav("egm96"); double lat = 27.99, lon0 = 86.93, h = 8820; // 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 gx, gy, gz; grav.Gravity(lat, lon, h, gx, gy, gz); cout << lon << " " << gx << " " << gy << " " << gz << "\n"; } } { // Fast method of evaluating the values at several points on a circle of // latitude using GravityCircle. GravityCircle circ = grav.Circle(lat, h); for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double gx, gy, gz; circ.Gravity(lon, gx, gy, gz); cout << lon << " " << gx << " " << gy << " " << gz << "\n"; } } } catch (const exception& e) { cerr << "Caught exception: " << e.what() << "\n"; return 1; } return 0; }
Gravity is a command-line utility providing access to the functionality of GravityModel and GravityCircle.
GeographicLib::GravityCircle::GravityCircle | ( | ) | [inline] |
A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the GravityModel::Circle.
Definition at line 107 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::Gravity | ( | real | lon, |
real & | gx, | ||
real & | gy, | ||
real & | gz | ||
) | const throw () |
Evaluate the gravity.
[in] | lon | the geographic longitude (degrees). |
[out] | gx | the easterly component of the acceleration (m s-2). |
[out] | gy | the northerly component of the acceleration (m s-2). |
[out] | gz | the upward component of the acceleration (m s-2); this is usually negative. |
The function includes the effects of the earth's rotation.
Definition at line 27 of file GravityCircle.cpp.
Math::real GeographicLib::GravityCircle::Disturbance | ( | real | lon, |
real & | deltax, | ||
real & | deltay, | ||
real & | deltaz | ||
) | const throw () |
Evaluate the gravity disturbance vector.
[in] | lon | the geographic longitude (degrees). |
[out] | deltax | the easterly component of the disturbance vector (m s-2). |
[out] | deltay | the northerly component of the disturbance vector (m s-2). |
[out] | deltaz | the upward component of the disturbance vector (m s-2). |
Definition at line 37 of file GravityCircle.cpp.
Math::real GeographicLib::GravityCircle::GeoidHeight | ( | real | lon | ) | const throw () |
Evaluate the geoid height.
[in] | lon | the geographic longitude (degrees). |
Some approximations are made in computing the geoid height so that the results of the NGA codes are reproduced accurately. Details are given in Details of the geoid height and anomaly calculations.
Definition at line 47 of file GravityCircle.cpp.
void GeographicLib::GravityCircle::SphericalAnomaly | ( | real | lon, |
real & | Dg01, | ||
real & | xi, | ||
real & | eta | ||
) | const throw () |
Evaluate the components of the gravity anomaly vector using the spherical approximation.
[in] | lon | the geographic longitude (degrees). |
[out] | Dg01 | the gravity anomaly (m s-2). |
[out] | xi | the northerly component of the deflection of the vertical (degrees). |
[out] | eta | the easterly component of the deflection of the vertical (degrees). |
The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used so that the results of the NGA codes are reproduced accurately. approximations used here. Details are given in Details of the geoid height and anomaly calculations.
Definition at line 57 of file GravityCircle.cpp.
Math::real GeographicLib::GravityCircle::W | ( | real | lon, |
real & | gX, | ||
real & | gY, | ||
real & | gZ | ||
) | const throw () [inline] |
Evaluate the components of the acceleration due to gravity and the centrifugal acceleration in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | gX | the X component of the acceleration (m s-2). |
[out] | gY | the Y component of the acceleration (m s-2). |
[out] | gZ | the Z component of the acceleration (m s-2). |
Definition at line 188 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::V | ( | real | lon, |
real & | GX, | ||
real & | GY, | ||
real & | GZ | ||
) | const throw () [inline] |
Evaluate the components of the acceleration due to gravity in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | GX | the X component of the acceleration (m s-2). |
[out] | GY | the Y component of the acceleration (m s-2). |
[out] | GZ | the Z component of the acceleration (m s-2). |
Definition at line 208 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::T | ( | real | lon, |
real & | deltaX, | ||
real & | deltaY, | ||
real & | deltaZ | ||
) | const throw () [inline] |
Evaluate the components of the gravity disturbance in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | deltaX | the X component of the gravity disturbance (m s-2). |
[out] | deltaY | the Y component of the gravity disturbance (m s-2). |
[out] | deltaZ | the Z component of the gravity disturbance (m s-2). |
Definition at line 229 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::T | ( | real | lon | ) | const throw () [inline] |
Evaluate disturbing potential in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
Definition at line 243 of file GravityCircle.hpp.
bool GeographicLib::GravityCircle::Init | ( | ) | const throw () [inline] |
Definition at line 257 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::MajorRadius | ( | ) | const throw () [inline] |
Definition at line 264 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::Flattening | ( | ) | const throw () [inline] |
Definition at line 271 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::Latitude | ( | ) | const throw () [inline] |
Definition at line 277 of file GravityCircle.hpp.
Math::real GeographicLib::GravityCircle::Height | ( | ) | const throw () [inline] |
Definition at line 283 of file GravityCircle.hpp.
unsigned GeographicLib::GravityCircle::Capabilities | ( | ) | const throw () [inline] |
Definition at line 290 of file GravityCircle.hpp.
bool GeographicLib::GravityCircle::Capabilities | ( | unsigned | testcaps | ) | const throw () [inline] |
[in] | testcaps | a set of bitor'ed GeodesicLine::mask values. |
Definition at line 296 of file GravityCircle.hpp.
friend class GravityModel [friend] |
Definition at line 93 of file GravityCircle.hpp.