NETGeographicLib::NormalGravity Class Reference

.NET wrapper for GeographicLib::NormalGravity. More...

#include <NETGeographicLib/NormalGravity.h>

List of all members.

Public Types

enum  StandardModels { WGS84, GRS80 }
 

The enumerated standard gravity models.

More...

Public Member Functions

 ~NormalGravity ()
Setting up the normal gravity



 NormalGravity (double a, double GM, double omega, double f, double J2)
 NormalGravity (StandardModels model)
 NormalGravity (const GeographicLib::NormalGravity &g)
Compute the gravity



double SurfaceGravity (double lat)
double Gravity (double lat, double h,[System::Runtime::InteropServices::Out] double% gammay,[System::Runtime::InteropServices::Out] double% gammaz)
double U (double X, double Y, double Z,[System::Runtime::InteropServices::Out] double% gammaX,[System::Runtime::InteropServices::Out] double% gammaY,[System::Runtime::InteropServices::Out] double% gammaZ)
double V0 (double X, double Y, double Z,[System::Runtime::InteropServices::Out] double% GammaX,[System::Runtime::InteropServices::Out] double% GammaY,[System::Runtime::InteropServices::Out] double% GammaZ)
double Phi (double X, double Y,[System::Runtime::InteropServices::Out] double% fX,[System::Runtime::InteropServices::Out] double% fY)

Static Public Member Functions

static NormalGravityWGS84 ()
static NormalGravityGRS80 ()
static double J2ToFlattening (double a, double GM, double omega, double J2)
static double FlatteningToJ2 (double a, double GM, double omega, double f)

Inspector functions



double MajorRadius [get]
double MassConstant [get]
double AngularVelocity [get]
double Flattening [get]
double EquatorialGravity [get]
double PolarGravity [get]
double GravityFlattening [get]
double SurfacePotential [get]
double DynamicalFormFactor (int n)
GeocentricEarth ()

Detailed Description

.NET wrapper for GeographicLib::NormalGravity.

This class allows .NET applications to access GeographicLib::NormalGravity.

"Normal" gravity refers to an idealization of the earth which is modeled as an rotating ellipsoid. The eccentricity of the ellipsoid, the rotation speed, and the distribution of mass within the ellipsoid are such that the surface of the ellipsoid is a surface of constant potential (gravitational plus centrifugal). The acceleration due to gravity is therefore perpendicular to the surface of the ellipsoid.

There is a closed solution to this problem which is implemented here. Series "approximations" are only used to evaluate certain combinations of elementary functions where use of the closed expression results in a loss of accuracy for small arguments due to cancellation of the two leading terms. However these series include sufficient terms to give full machine precision.

Definitions:

References:

C# Example:

using System;
using NETGeographicLib;

namespace example_NormalGravity
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                NormalGravity grav = new NormalGravity(NormalGravity.StandardModels.WGS84);
                double lat = 27.99, h = 8820; // Mt Everest
                double gammay, gammaz;
                grav.Gravity(lat, h, out gammay, out gammaz);
                Console.WriteLine(String.Format("{0} {1}", gammay, gammaz));
            }
            catch (GeographicErr e) {
                Console.WriteLine(String.Format("Caught exception: {0}", e.Message));
            }
        }
    }
}

Managed C++ Example:

using namespace System;
using namespace NETGeographicLib;

int main(array<System::String ^> ^/*args*/)
{
    try {
        NormalGravity^ grav = gcnew NormalGravity(NormalGravity::StandardModels::WGS84);
        double lat = 27.99, h = 8820; // Mt Everest
        double gammay, gammaz;
        grav->Gravity(lat, h, gammay, gammaz);
        Console::WriteLine(String::Format("{0} {1}", gammay, gammaz));
    }
    catch (GeographicErr^ e) {
        Console::WriteLine(String::Format("Caught exception: {0}", e->Message));
        return -1;
    }
    return 0;
}

Visual Basic Example:

Imports NETGeographicLib

Module example_NormalGravity
    Sub Main()
        Try
            Dim grav As NormalGravity = New NormalGravity(NormalGravity.StandardModels.WGS84)
            Dim lat As Double = 27.99, h = 8820 ' Mt Everest
            Dim gammay, gammaz As Double
            grav.Gravity(lat, h, gammay, gammaz)
            Console.WriteLine(String.Format("{0} {1}", gammay, gammaz))
        Catch ex As GeographicErr
            Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
        End Try
    End Sub
End Module

INTERFACE DIFFERENCES:
A constructor has been provided for creating standard WGS84 and GRS80 gravity models.

The following functions are implemented as properties: MajorRadius, MassConstant, AngularVelocity, Flattening, EquatorialGravity, PolarGravity, GravityFlattening, SurfacePotential.

Definition at line 71 of file NormalGravity.h.


Member Enumeration Documentation

The enumerated standard gravity models.

Enumerator:
WGS84 

WGS84 gravity model.

GRS80 

GRS80 gravity model.

Definition at line 81 of file NormalGravity.h.


Constructor & Destructor Documentation

NETGeographicLib::NormalGravity::NormalGravity ( double  a,
double  GM,
double  omega,
double  f,
double  J2 
)

Constructor for the normal gravity.

Parameters:
[in] a equatorial radius (meters).
[in] GM mass constant of the ellipsoid (meters3/seconds2); this is the product of G the gravitational constant and M the mass of the earth (usually including the mass of the earth's atmosphere).
[in] omega the angular velocity (rad s1).
[in] f the flattening of the ellipsoid.
[in] J2 dynamical form factor.
Exceptions:
if a is not positive or the other constants are inconsistent (see below).

Exactly one of f and J2 should be positive and this will be used to define the ellipsoid. The shape of the ellipsoid can be given in one of two ways:

  • geometrically, the ellipsoid is defined by the flattening f = (a b) / a, where a and b are the equatorial radius and the polar semi-axis.
  • physically, the ellipsoid is defined by the dynamical form factor J2 = (C A) / Ma2, where A and C are the equatorial and polar moments of inertia and M is the mass of the earth.

Referenced by ~NormalGravity().

NETGeographicLib::NormalGravity::NormalGravity ( StandardModels  model  ) 

A constructor for creating standard gravity models..

Parameters:
[in] model Specifies the desired model.
NETGeographicLib::NormalGravity::NormalGravity ( const GeographicLib::NormalGravity g  ) 

A constructor that accepts a GeographicLib::NormalGravity. For internal use only.

Parameters:
g An existing GeographicLib::NormalGravity.
NETGeographicLib::NormalGravity::~NormalGravity (  )  [inline]

The destructor calls the finalizer.

Definition at line 134 of file NormalGravity.h.

References NormalGravity().


Member Function Documentation

double NETGeographicLib::NormalGravity::SurfaceGravity ( double  lat  ) 

Evaluate the gravity on the surface of the ellipsoid.

Parameters:
[in] lat the geographic latitude (degrees).
Returns:
the acceleration due to gravity, positive downwards (m s2).

Due to the axial symmetry of the ellipsoid, the result is independent of the value of the longitude. This acceleration is perpendicular to the surface of the ellipsoid. It includes the effects of the earth's rotation.

double NETGeographicLib::NormalGravity::Gravity ( double  lat,
double  h,
[System::Runtime::InteropServices::Out] double%   gammay,
[System::Runtime::InteropServices::Out] double%   gammaz 
)

Evaluate the gravity at an arbitrary point above (or below) the ellipsoid.

Parameters:
[in] lat the geographic latitude (degrees).
[in] h the height above the ellipsoid (meters).
[out] gammay the northerly component of the acceleration (m s2).
[out] gammaz the upward component of the acceleration (m s2); this is usually negative.
Returns:
U the corresponding normal potential.

Due to the axial symmetry of the ellipsoid, the result is independent of the value of the longitude and the easterly component of the acceleration vanishes, gammax = 0. The function includes the effects of the earth's rotation. When h = 0, this function gives gammay = 0 and the returned value matches that of NormalGravity::SurfaceGravity.

double NETGeographicLib::NormalGravity::U ( double  X,
double  Y,
double  Z,
[System::Runtime::InteropServices::Out] double%   gammaX,
[System::Runtime::InteropServices::Out] double%   gammaY,
[System::Runtime::InteropServices::Out] double%   gammaZ 
)

Evaluate the components of the acceleration due to gravity and the centrifugal acceleration in geocentric coordinates.

Parameters:
[in] X geocentric coordinate of point (meters).
[in] Y geocentric coordinate of point (meters).
[in] Z geocentric coordinate of point (meters).
[out] gammaX the X component of the acceleration (m s2).
[out] gammaY the Y component of the acceleration (m s2).
[out] gammaZ the Z component of the acceleration (m s2).
Returns:
U = V0 + the sum of the gravitational and centrifugal potentials (m2 s2).

The acceleration given by = U = V0 + = + f.

double NETGeographicLib::NormalGravity::V0 ( double  X,
double  Y,
double  Z,
[System::Runtime::InteropServices::Out] double%   GammaX,
[System::Runtime::InteropServices::Out] double%   GammaY,
[System::Runtime::InteropServices::Out] double%   GammaZ 
)

Evaluate the components of the acceleration due to gravity alone in geocentric coordinates.

Parameters:
[in] X geocentric coordinate of point (meters).
[in] Y geocentric coordinate of point (meters).
[in] Z geocentric coordinate of point (meters).
[out] GammaX the X component of the acceleration due to gravity (m s2).
[out] GammaY the Y component of the acceleration due to gravity (m s2).
[out] GammaZ the Z component of the acceleration due to gravity (m s2).
Returns:
V0 the gravitational potential (m2 s2).

This function excludes the centrifugal acceleration and is appropriate to use for space applications. In terrestrial applications, the function NormalGravity::U (which includes this effect) should usually be used.

double NETGeographicLib::NormalGravity::Phi ( double  X,
double  Y,
[System::Runtime::InteropServices::Out] double%   fX,
[System::Runtime::InteropServices::Out] double%   fY 
)

Evaluate the centrifugal acceleration in geocentric coordinates.

Parameters:
[in] X geocentric coordinate of point (meters).
[in] Y geocentric coordinate of point (meters).
[out] fX the X component of the centrifugal acceleration (m s2).
[out] fY the Y component of the centrifugal acceleration (m s2).
Returns:
the centrifugal potential (m2 s2).

is independent of Z, thus fZ = 0. This function NormalGravity::U sums the results of NormalGravity::V0 and NormalGravity::Phi.

double NETGeographicLib::NormalGravity::DynamicalFormFactor ( int  n  ) 
Returns:
Jn the dynamical form factors of the ellipsoid.

If n = 2 (the default), this is the value of J2 used in the constructor. Otherwise it is the zonal coefficient of the Legendre harmonic sum of the normal gravitational potential. Note that Jn = 0 if n is odd. In most gravity applications, fully normalized Legendre functions are used and the corresponding coefficient is Cn0 = Jn / sqrt(2 n + 1).

Geocentric ^ NETGeographicLib::NormalGravity::Earth (  ) 
Returns:
the Geocentric object used by this instance.
static NormalGravity ^ NETGeographicLib::NormalGravity::WGS84 (  )  [static]

A global instantiation of NormalGravity for the WGS84 ellipsoid.

static NormalGravity ^ NETGeographicLib::NormalGravity::GRS80 (  )  [static]

A global instantiation of NormalGravity for the GRS80 ellipsoid.

static double NETGeographicLib::NormalGravity::J2ToFlattening ( double  a,
double  GM,
double  omega,
double  J2 
) [static]

Compute the flattening from the dynamical form factor.

Parameters:
[in] a equatorial radius (meters).
[in] GM mass constant of the ellipsoid (meters3/seconds2); this is the product of G the gravitational constant and M the mass of the earth (usually including the mass of the earth's atmosphere).
[in] omega the angular velocity (rad s1).
[in] J2 the dynamical form factor.
Returns:
f the flattening of the ellipsoid.
static double NETGeographicLib::NormalGravity::FlatteningToJ2 ( double  a,
double  GM,
double  omega,
double  f 
) [static]

Compute the dynamical form factor from the flattening.

Parameters:
[in] a equatorial radius (meters).
[in] GM mass constant of the ellipsoid (meters3/seconds2); this is the product of G the gravitational constant and M the mass of the earth (usually including the mass of the earth's atmosphere).
[in] omega the angular velocity (rad s1).
[in] f the flattening of the ellipsoid.
Returns:
J2 the dynamical form factor.

Property Documentation

double NETGeographicLib::NormalGravity::MajorRadius [get]
Returns:
a the equatorial radius of the ellipsoid (meters). This is the value used in the constructor.

Definition at line 255 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::MassConstant [get]
Returns:
GM the mass constant of the ellipsoid (m3 s2). This is the value used in the constructor.

Definition at line 262 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::AngularVelocity [get]
Returns:
the angular velocity of the ellipsoid (rad s1). This is the value used in the constructor.

Definition at line 281 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::Flattening [get]
Returns:
f the flattening of the ellipsoid (a b)/a.

Definition at line 287 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::EquatorialGravity [get]
Returns:
e the normal gravity at equator (m s2).

Definition at line 293 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::PolarGravity [get]
Returns:
p the normal gravity at poles (m s2).

Definition at line 299 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::GravityFlattening [get]
Returns:
f* the gravity flattening (p e) / e.

Definition at line 305 of file NormalGravity.h.

double NETGeographicLib::NormalGravity::SurfacePotential [get]
Returns:
U0 the constant normal potential for the surface of the ellipsoid (m2 s2).

Definition at line 311 of file NormalGravity.h.


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

Generated on 6 Oct 2014 for NETGeographicLib by  doxygen 1.6.1