NETGeographicLib::GravityCircle Class Reference

.NET wrapper for GeographicLib::GravityCircle. More...

#include <NETGeographicLib/GravityCircle.h>

List of all members.

Public Member Functions

 GravityCircle (const GeographicLib::GravityCircle &gc)
 ~GravityCircle ()
Compute the gravitational field



double Gravity (double lon,[System::Runtime::InteropServices::Out] double% gx,[System::Runtime::InteropServices::Out] double% gy,[System::Runtime::InteropServices::Out] double% gz)
double Disturbance (double lon,[System::Runtime::InteropServices::Out] double% deltax,[System::Runtime::InteropServices::Out] double% deltay,[System::Runtime::InteropServices::Out] double% deltaz)
double GeoidHeight (double lon)
void SphericalAnomaly (double lon,[System::Runtime::InteropServices::Out] double% Dg01,[System::Runtime::InteropServices::Out] double% xi,[System::Runtime::InteropServices::Out] double% eta)
double W (double lon,[System::Runtime::InteropServices::Out] double% gX,[System::Runtime::InteropServices::Out] double% gY,[System::Runtime::InteropServices::Out] double% gZ)
double V (double lon,[System::Runtime::InteropServices::Out] double% GX,[System::Runtime::InteropServices::Out] double% GY,[System::Runtime::InteropServices::Out] double% GZ)
double T (double lon,[System::Runtime::InteropServices::Out] double% deltaX,[System::Runtime::InteropServices::Out] double% deltaY,[System::Runtime::InteropServices::Out] double% deltaZ)
double T (double lon)

Inspector functions



bool Init [get]
double MajorRadius [get]
double Flattening [get]
double Latitude [get]
double Height [get]
GravityModel::Mask Capabilities ()
bool Capabilities (GravityModel::Mask testcaps)

Detailed Description

.NET wrapper for GeographicLib::GravityCircle.

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

Evaluate the earth's gravity 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 GravityModel::Circle to create a GravityCircle object. (The constructor for this class is for internal use only.)

C# Example:

using System;
using NETGeographicLib;

namespace example_GravityCircle
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                GravityModel grav = new GravityModel("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, out gx, out gy, out gz);
                        Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz));
                    }
                }
                {
                    // Fast method of evaluating the values at several points on a circle of
                    // latitude using GravityCircle.
                    GravityCircle circ = grav.Circle(lat, h, GravityModel.Mask.ALL);
                    for (int i = -5; i <= 5; ++i) {
                        double lon = lon0 + i * 0.2;
                        double gx, gy, gz;
                        circ.Gravity(lon, out gx, out gy, out gz);
                        Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz));
                    }
                }
            }
            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 {
        GravityModel^ grav = gcnew GravityModel("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);
                Console::WriteLine(String::Format("{0} {1} {2} {3}", lon, gx, gy, gz));
            }
        }
        {
            // Fast method of evaluating the values at several points on a circle of
            // latitude using GravityCircle.
            GravityCircle^ circ = grav->Circle(lat, h, GravityModel::Mask::ALL);
            for (int i = -5; i <= 5; ++i) {
                double lon = lon0 + i * 0.2;
                double gx, gy, gz;
                circ->Gravity(lon, gx, gy, gz);
                Console::WriteLine(String::Format("{0} {1} {2} {3}", lon, gx, gy, gz));
            }
        }
    }
    catch (GeographicErr^ e) {
        Console::WriteLine(String::Format("Caught exception: {0}", e->Message));
        return -1;
    }
    return 0;
}

Visual Basic Example:

Imports NETGeographicLib

Module example_GravityCircle
    Sub Main()
        Try
            Dim grav As GravityModel = New GravityModel("egm96", "")
            Dim lat As Double = 27.99, lon0 = 86.93, h = 8820 ' Mt Everest
            ' Slow method of evaluating the values at several points on a circle of
            ' latitude.
            For i As Integer = -5 To 5
                Dim lon As Double = lon0 + i * 0.2
                Dim gx, gy, gz As Double
                grav.Gravity(lat, lon, h, gx, gy, gz)
                Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz))
            Next
            ' Fast method of evaluating the values at several points on a circle of
            ' latitude using GravityCircle.
            Dim circ As GravityCircle = grav.Circle(lat, h, GravityModel.Mask.ALL)
            For i As Integer = -5 To 5
                Dim lon As Double = lon0 + i * 0.2
                Dim gx, gy, gz As Double
                circ.Gravity(lon, gx, gy, gz)
                Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz))
            Next
        Catch ex As GeographicErr
            Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
        End Try
    End Sub
End Module

INTERFACE DIFFERENCES:
The following functions are implemented as properties: Init, MajorRadius, Flattening, Latitude, and Height.

The Capabilities functions accept and return the "capabilities mask" as a NETGeographicLib::GravityModel::Mask rather than an unsigned.

Definition at line 42 of file GravityCircle.h.


Constructor & Destructor Documentation

NETGeographicLib::GravityCircle::GravityCircle ( const GeographicLib::GravityCircle gc  ) 

A constructor that is initialized from an unmanaged GeographicLib::GravityCircle. For internal use only. Developers should use GravityModel::Circle to create a GavityCircle object.

Referenced by ~GravityCircle().

NETGeographicLib::GravityCircle::~GravityCircle (  )  [inline]

The destructor calls the finalizer.

Definition at line 61 of file GravityCircle.h.

References GravityCircle().


Member Function Documentation

double NETGeographicLib::GravityCircle::Gravity ( double  lon,
[System::Runtime::InteropServices::Out] double%   gx,
[System::Runtime::InteropServices::Out] double%   gy,
[System::Runtime::InteropServices::Out] double%   gz 
)

Evaluate the gravity.

Parameters:
[in] lon the geographic longitude (degrees).
[out] gx the easterly component of the acceleration (m s2).
[out] gy the northerly component of the acceleration (m s2).
[out] gz the upward component of the acceleration (m s2); this is usually negative.
Returns:
W the sum of the gravitational and centrifugal potentials.

The function includes the effects of the earth's rotation.

double NETGeographicLib::GravityCircle::Disturbance ( double  lon,
[System::Runtime::InteropServices::Out] double%   deltax,
[System::Runtime::InteropServices::Out] double%   deltay,
[System::Runtime::InteropServices::Out] double%   deltaz 
)

Evaluate the gravity disturbance vector.

Parameters:
[in] lon the geographic longitude (degrees).
[out] deltax the easterly component of the disturbance vector (m s2).
[out] deltay the northerly component of the disturbance vector (m s2).
[out] deltaz the upward component of the disturbance vector (m s2).
Returns:
T the corresponding disturbing potential.
double NETGeographicLib::GravityCircle::GeoidHeight ( double  lon  ) 

Evaluate the geoid height.

Parameters:
[in] lon the geographic longitude (degrees).
Returns:
N the height of the geoid above the reference ellipsoid (meters).

Some approximations are made in computing the geoid height so that the results of the NGA codes are reproduced accurately. Details are given in gravitygeoid.

void NETGeographicLib::GravityCircle::SphericalAnomaly ( double  lon,
[System::Runtime::InteropServices::Out] double%   Dg01,
[System::Runtime::InteropServices::Out] double%   xi,
[System::Runtime::InteropServices::Out] double%   eta 
)

Evaluate the components of the gravity anomaly vector using the spherical approximation.

Parameters:
[in] lon the geographic longitude (degrees).
[out] Dg01 the gravity anomaly (m s2).
[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 gravitygeoid.

double NETGeographicLib::GravityCircle::W ( double  lon,
[System::Runtime::InteropServices::Out] double%   gX,
[System::Runtime::InteropServices::Out] double%   gY,
[System::Runtime::InteropServices::Out] double%   gZ 
)

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

Parameters:
[in] lon the geographic longitude (degrees).
[out] gX the X component of the acceleration (m s2).
[out] gY the Y component of the acceleration (m s2).
[out] gZ the Z component of the acceleration (m s2).
Returns:
W = V + the sum of the gravitational and centrifugal potentials (m2 s2).
double NETGeographicLib::GravityCircle::V ( double  lon,
[System::Runtime::InteropServices::Out] double%   GX,
[System::Runtime::InteropServices::Out] double%   GY,
[System::Runtime::InteropServices::Out] double%   GZ 
)

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

Parameters:
[in] lon the geographic longitude (degrees).
[out] GX the X component of the acceleration (m s2).
[out] GY the Y component of the acceleration (m s2).
[out] GZ the Z component of the acceleration (m s2).
Returns:
V = W - the gravitational potential (m2 s2).
double NETGeographicLib::GravityCircle::T ( double  lon,
[System::Runtime::InteropServices::Out] double%   deltaX,
[System::Runtime::InteropServices::Out] double%   deltaY,
[System::Runtime::InteropServices::Out] double%   deltaZ 
)

Evaluate the components of the gravity disturbance in geocentric coordinates.

Parameters:
[in] lon the geographic longitude (degrees).
[out] deltaX the X component of the gravity disturbance (m s2).
[out] deltaY the Y component of the gravity disturbance (m s2).
[out] deltaZ the Z component of the gravity disturbance (m s2).
Returns:
T = W - U the disturbing potential (also called the anomalous potential) (m2 s2).
double NETGeographicLib::GravityCircle::T ( double  lon  ) 

Evaluate disturbing potential in geocentric coordinates.

Parameters:
[in] lon the geographic longitude (degrees).
Returns:
T = W - U the disturbing potential (also called the anomalous potential) (m2 s2).
GravityModel::Mask NETGeographicLib::GravityCircle::Capabilities (  ) 
Returns:
caps the computational capabilities that this object was constructed with.
bool NETGeographicLib::GravityCircle::Capabilities ( GravityModel::Mask  testcaps  ) 
Parameters:
[in] testcaps a set of bitor'ed GeodesicLine::mask values.
Returns:
true if the GeodesicLine object has all these capabilities.

Property Documentation

bool NETGeographicLib::GravityCircle::Init [get]
Returns:
true if the object has been initialized.

Definition at line 210 of file GravityCircle.h.

double NETGeographicLib::GravityCircle::MajorRadius [get]
Returns:
a the equatorial radius of the ellipsoid (meters). This is the value inherited from the GravityModel object used in the constructor. This property throws an exception if the GravityCircles has not been initialized.

Definition at line 219 of file GravityCircle.h.

double NETGeographicLib::GravityCircle::Flattening [get]
Returns:
f the flattening of the ellipsoid. This is the value inherited from the GravityModel object used in the constructor. This property throws an exception if the GravityCircles has not been initialized.

Definition at line 227 of file GravityCircle.h.

double NETGeographicLib::GravityCircle::Latitude [get]
Returns:
the latitude of the circle (degrees). This property throws an exception if the GravityCircles has not been initialized.

Definition at line 234 of file GravityCircle.h.

double NETGeographicLib::GravityCircle::Height [get]
Returns:
the height of the circle (meters). This property throws an exception if the GravityCircles has not been initialized.

Definition at line 241 of file GravityCircle.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