Class inertialsim::geodesy::EllipsoidalGravity¶
ClassList > inertialsim > geodesy > EllipsoidalGravity
Ellipsoidal gravity model. More...
#include <gravity.h>
Inherits the following classes: inertialsim::geodesy::Gravity
Public Static Attributes inherited from inertialsim::geodesy::Gravity¶
See inertialsim::geodesy::Gravity
| Type | Name |
|---|---|
| constexpr double | standard_magnitude = STANDARD\_GRAVITYStandard gravity magnitude. |
Public Functions¶
| Type | Name |
|---|---|
| virtual Scalar1D | Magnitude (const Coordinates & coordinates) override const Return the magnitude of gravity at the given coordinates. |
| virtual Scalar1D | Magnitude (const Coordinates & coordinates) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Vector3D | Vector (const Coordinates & coordinates, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
Public Functions inherited from inertialsim::geodesy::Gravity¶
See inertialsim::geodesy::Gravity
| Type | Name |
|---|---|
| virtual Scalar1D | Magnitude (const Coordinates & coordinates) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Vector3D | Vector (const Coordinates & coordinates, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
Public Functions inherited from inertialsim::geodesy::Field¶
See inertialsim::geodesy::Field
| Type | Name |
|---|---|
| virtual Scalar1D | Magnitude (const Coordinates & coordinates) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Scalar1D | Magnitude (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL) const Return magnitude at the given coordinates. |
| Vector3D | Vector (const Coordinates & coordinates, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Array3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::GEODETIC, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const geometry::Vector & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| Vector3D | Vector (const Vector3D & coordinates, CoordinateSystem default_frame=CoordinateSystem::LOCAL, const std::optional< CoordinateSystem > & basis=std::nullopt) const Return the vector field at the given coordinates. |
| virtual | ~Field () = default Virtual destructor. |
Public Static Functions inherited from inertialsim::geodesy::Gravity¶
See inertialsim::geodesy::Gravity
| Type | Name |
|---|---|
| Vector3D | StandardVector (TopocentricAxisOrder axis_order=TopocentricAxisOrder::NED) Standard gravity in a topocentric frame. |
Protected Functions¶
| Type | Name |
|---|---|
| virtual Vector3D | VectorImpl (const Coordinates & coordinates, const std::optional< CoordinateSystem > & basis) override const Return the gravity vector at the given coordinates. |
Protected Functions inherited from inertialsim::geodesy::Field¶
See inertialsim::geodesy::Field
| Type | Name |
|---|---|
| virtual Vector3D | VectorImpl (const Coordinates & coordinates, const std::optional< CoordinateSystem > & basis) const = 0 Vector implementation to be overridden by subclasses. |
Detailed Description¶
Analytic model based on an equipotential ellipsoid of revolution, as in the WGS84 model of Earth.
Gravity is the sum of gravitational acceleration from the mass of the ellipsoid plus the effect of centripetal acceleration from the rotation of the ellipsoid. This represents the total acceleration experienced in the Earth-fixed frame.
The implementation uses different approximations depending on the location: * For small positive altitudes: Normal gravity at the ellipsoid surface with altitude correction (see Standard [07]) * For points inside the ellipsoid: Exact ellipsoidal harmonic coordinate model (see Standard [07] Section 4.3) * For negative altitudes: Approximate extension of the ellipsoidal model
Note:
This model includes both gravitational and centripetal effects, representing the total acceleration experienced in the Earth-fixed frame.
Note:
The default gravity model uses parameters from the associated GeodeticDatum (typically WGS84).
See also: Coordinates for supported coordinate systems
See also: GeodeticDatum for Earth ellipsoid parameters
Public Functions Documentation¶
function Magnitude [⅕]¶
Return the magnitude of gravity at the given coordinates.
virtual Scalar1D inertialsim::geodesy::EllipsoidalGravity::Magnitude (
const Coordinates & coordinates
) override const
Parameters:
coordinatesArray of coordinates.
Returns:
Array of gravity magnitudes (N x 1).
Implements inertialsim::geodesy::Field::Magnitude
function Magnitude [⅖]¶
Return magnitude at the given coordinates.
virtual Scalar1D inertialsim::geodesy::EllipsoidalGravity::Magnitude (
const Coordinates & coordinates
) const
Parameters:
coordinatesArray of coordinates.
Returns:
Array of magnitudes.
Implements inertialsim::geodesy::Field::Magnitude
function Magnitude [⅗]¶
Return magnitude at the given coordinates.
Scalar1D inertialsim::geodesy::EllipsoidalGravity::Magnitude (
const Array3D & coordinates,
CoordinateSystem default_frame=CoordinateSystem::GEODETIC
) const
Parameters:
coordinatesArray of raw coordinates (e.g. geodetic).default_frameCoordinate system corresponding to the coordinate input.
Returns:
Array of magnitudes.
function Magnitude [⅘]¶
Return magnitude at the given coordinates.
Scalar1D inertialsim::geodesy::EllipsoidalGravity::Magnitude (
const geometry::Vector & coordinates,
CoordinateSystem default_frame=CoordinateSystem::LOCAL
) const
Parameters:
coordinatesArray of coordinates as geometry::Vector.default_frameCoordinate system corresponding to the coordinate input.
Returns:
Array of magnitudes.
function Magnitude [5/5]¶
Return magnitude at the given coordinates.
Scalar1D inertialsim::geodesy::EllipsoidalGravity::Magnitude (
const Vector3D & coordinates,
CoordinateSystem default_frame=CoordinateSystem::LOCAL
) const
Parameters:
coordinatesArray of raw coordinates (e.g. local xyz).default_frameCoordinate system corresponding to the coordinate input.
Returns:
Array of magnitudes.
function Vector [¼]¶
Return the vector field at the given coordinates.
inline Vector3D inertialsim::geodesy::EllipsoidalGravity::Vector (
const Coordinates & coordinates,
const std::optional< CoordinateSystem > & basis=std::nullopt
) const
By default, the vector components will be expressed in the basis associated with the coordinates. For curvilinear systems (e.g. geodetic), the basis is the local basis at the given coordinates. If basis is supplied, it will be used instead.
Note:
For curvilinear coordinate systems like geodetic coordinates, the default basis is the local tangent plane basis at each coordinate location. For Cartesian systems like ECEF, the basis is constant.
Parameters:
coordinatesArray of coordinates.basisOptional basis in which to return the vector. If not specified, uses the basis associated with the coordinates.
Returns:
Array of vectors (3xN).
function Vector [2/4]¶
Return the vector field at the given coordinates.
Vector3D inertialsim::geodesy::EllipsoidalGravity::Vector (
const Array3D & coordinates,
CoordinateSystem default_frame=CoordinateSystem::GEODETIC,
const std::optional< CoordinateSystem > & basis=std::nullopt
) const
Parameters:
coordinatesArray of raw coordinates (e.g. geodetic).default_frameCoordinate system corresponding to the coordinate input.basisOptional basis in which to return the vector.
Returns:
Array of vectors.
function Vector [¾]¶
Return the vector field at the given coordinates.
Vector3D inertialsim::geodesy::EllipsoidalGravity::Vector (
const geometry::Vector & coordinates,
CoordinateSystem default_frame=CoordinateSystem::LOCAL,
const std::optional< CoordinateSystem > & basis=std::nullopt
) const
Parameters:
coordinatesArray of coordinates as geometry::Vector.default_frameCoordinate system corresponding to the coordinate input.basisOptional basis in which to return the vector.
Returns:
Array of vectors.
function Vector [4/4]¶
Return the vector field at the given coordinates.
Vector3D inertialsim::geodesy::EllipsoidalGravity::Vector (
const Vector3D & coordinates,
CoordinateSystem default_frame=CoordinateSystem::LOCAL,
const std::optional< CoordinateSystem > & basis=std::nullopt
) const
Parameters:
coordinatesVector of raw coordinates (e.g. local xyz)default_frameCoordinate system corresponding to the coordinate input.basisOptional basis in which to return the vector.
Returns:
Array of vectors.
Protected Functions Documentation¶
function VectorImpl¶
Return the gravity vector at the given coordinates.
virtual Vector3D inertialsim::geodesy::EllipsoidalGravity::VectorImpl (
const Coordinates & coordinates,
const std::optional< CoordinateSystem > & basis
) override const
By default, the gravity vector components will be expressed in the basis of the input coordinates. For curvilinear systems (e.g. geodetic), the basis is the local basis at the given coordinates. If basis is supplied, it will be used instead.
Parameters:
coordinatesArray of coordinates.basisOptional basis in which to return the gravity vector.
Returns:
Array of gravity vectors (3xN).
Exception:
std::invalid_argumentif basis is not a global coordinate system.
Implements inertialsim::geodesy::Field::VectorImpl
The documentation for this class was generated from the following file cpp/include/inertialsim/geodesy/gravity.h