 ASPECT
aspect::Utilities::Coordinates Namespace Reference

## Enumerations

enum  CoordinateSystem {
depth, cartesian, spherical, ellipsoidal,
invalid
}

## Functions

template<int dim>
std::array< double, dim > WGS84_coordinates (const Point< dim > &position)

template<int dim>
std::array< double, dim > cartesian_to_spherical_coordinates (const Point< dim > &position)

template<int dim>
Point< dim > spherical_to_cartesian_coordinates (const std::array< double, dim > &scoord)

template<int dim>
Tensor< 1, dim > spherical_to_cartesian_vector (const Tensor< 1, dim > &spherical_vector, const Point< dim > &position)

template<int dim>
std::array< double, 3 > cartesian_to_ellipsoidal_coordinates (const Point< 3 > &position, const double semi_major_axis_a, const double eccentricity)

template<int dim>
Point< 3 > ellipsoidal_to_cartesian_coordinates (const std::array< double, 3 > &phi_theta_d, const double semi_major_axis_a, const double eccentricity)

CoordinateSystem string_to_coordinate_system (const std::string &)

## § CoordinateSystem

This enum lists available coordinate systems that can be used for the function variables. Allowed values are 'cartesian', 'spherical', and 'depth'. 'spherical' coordinates follow: r, phi (2D) or r, phi, theta (3D); where r is radius, phi is longitude, and theta is the polar angle (colatitude). The 'depth' is a one-dimensional coordinate system in which only the distance below the 'top' surface (depth) as defined by each geometry model, is used.

Enumerator
depth
cartesian
spherical
ellipsoidal
invalid

Definition at line 40 of file coordinate_systems.h.

## § WGS84_coordinates()

template<int dim>
 std::array aspect::Utilities::Coordinates::WGS84_coordinates ( const Point< dim > & position )

Returns distance from the Earth's center, latitude and longitude from a given ECEF Cartesian coordinates that account for ellipsoidal shape of the Earth with WGS84 parameters.

## § cartesian_to_spherical_coordinates()

template<int dim>
 std::array aspect::Utilities::Coordinates::cartesian_to_spherical_coordinates ( const Point< dim > & position )

Returns spherical coordinates of a Cartesian point. The returned array is filled with radius, phi and theta (polar angle). If the dimension is set to 2 theta is omitted. Phi is always normalized to [0,2*pi].

## § spherical_to_cartesian_coordinates()

template<int dim>
 Point aspect::Utilities::Coordinates::spherical_to_cartesian_coordinates ( const std::array< double, dim > & scoord )

Return the Cartesian point of a spherical position defined by radius, phi and theta (polar angle). If the dimension is set to 2 theta is omitted.

## § spherical_to_cartesian_vector()

template<int dim>
 Tensor<1,dim> aspect::Utilities::Coordinates::spherical_to_cartesian_vector ( const Tensor< 1, dim > & spherical_vector, const Point< dim > & position )

Given a vector defined in the radius, phi and theta directions, return a vector defined in Cartesian coordinates. If the dimension is set to 2 theta is omitted. Position is given as a Point in Cartesian coordinates.

## § cartesian_to_ellipsoidal_coordinates()

template<int dim>
 std::array aspect::Utilities::Coordinates::cartesian_to_ellipsoidal_coordinates ( const Point< 3 > & position, const double semi_major_axis_a, const double eccentricity )

Returns ellipsoidal coordinates of a Cartesian point. The returned array is filled with phi, theta and radius.

## § ellipsoidal_to_cartesian_coordinates()

template<int dim>
 Point<3> aspect::Utilities::Coordinates::ellipsoidal_to_cartesian_coordinates ( const std::array< double, 3 > & phi_theta_d, const double semi_major_axis_a, const double eccentricity )

Return the Cartesian point of a ellipsoidal position defined by phi, theta and radius.

## § string_to_coordinate_system()

 CoordinateSystem aspect::Utilities::Coordinates::string_to_coordinate_system ( const std::string & )

A function that takes a string representation of the name of a coordinate system (as represented by the CoordinateSystem enum) and returns the corresponding value.