101 lines
3.1 KiB
C
101 lines
3.1 KiB
C
/*
|
||
Functions that calculate the gravitational potential and its first and second
|
||
derivatives for the rectangular prism in spherical coordinates.
|
||
Uses the formulas in Nagy et al. (2000).
|
||
|
||
References
|
||
----------
|
||
|
||
* Nagy, D., Papp, G., Benedek, J. (2000): The gravitational potential and its
|
||
derivatives for the prism. Journal of Geodesy, 74, 552–560.
|
||
*/
|
||
|
||
|
||
#ifndef _TESSEROIDS_GRAV_PRISM_SPH_H_
|
||
#define _TESSEROIDS_GRAV_PRISM_SPH_H_
|
||
|
||
|
||
/* Needed for definition of PRISM */
|
||
#include "geometry.h"
|
||
|
||
/* Transform spherical coordinates to local Cartesian coordinates of the prism
|
||
|
||
Parameters:
|
||
|
||
* lon, lat, r: spherical coordinates of the point.
|
||
* prism: a prism whose lon, lat, r values will be used as the origin of the
|
||
local coordinate system.
|
||
* x, y, z: used to return the x, y, z Cartesian coordinates of the point.
|
||
*/
|
||
extern int global2local(double lon, double lat, double r, PRISM prism,
|
||
double *x, double *y, double *z);
|
||
|
||
|
||
/* Rotate the g vector from the prisms coordinate system to the local
|
||
system of the computation point.
|
||
|
||
Parameters:
|
||
|
||
* atprism: the 3 component gravity vector in the coordinates of the prism.
|
||
* prism: the prism used to calculate atprism.
|
||
* lon, lat, r: coordinates of the computation point.
|
||
* atpoint: used to return the 3 component gravity vector in the coordinates of
|
||
the computation point.
|
||
*/
|
||
extern int g_prism2point(double *atprism, PRISM prism, double lon, double lat,
|
||
double r, double *atpoint);
|
||
|
||
|
||
/* Rotate the g vector from the prisms coordinate system to the local
|
||
system of the computation point.
|
||
|
||
Parameters:
|
||
|
||
* atprism: the 9 component gravity tensor in the coordinates of the prism.
|
||
The order is: gxx, gxy, gxz, gyx, gyy, gyz, gzx, gzy, gzz
|
||
* prism: the prism used to calculate atprism.
|
||
* lon, lat, r: coordinates of the computation point.
|
||
* atpoint: used to return the 9 component gravity tensor in the coordinates of
|
||
the computation point.
|
||
*/
|
||
extern int ggt_prism2point(double *atprism, PRISM prism, double lon, double lat,
|
||
double r, double *atpoint);
|
||
|
||
|
||
/* Calculates the gravity gradient tensor caused by a prism.
|
||
|
||
Parameters:
|
||
|
||
* prism: the prism whose effect will be calculated.
|
||
* lonp, latp, rp: coordinates of the computation point.
|
||
* ggt: 6 element array used to return the gradient tensor. The order is:
|
||
gxx, gxy, gxz, gyy, gyz, gzz
|
||
*/
|
||
extern int prism_ggt_sph(PRISM prism, double lonp, double latp, double rp,
|
||
double *ggt);
|
||
|
||
/* Calculates the gravitational attraction caused by a prism.
|
||
|
||
Parameters:
|
||
|
||
* prism: the prism whose effect will be calculated.
|
||
* lonp, latp, rp: coordinates of the computation point.
|
||
* gx, gy, gz: used to return the 3 components of the gravity vector
|
||
*/
|
||
extern int prism_g_sph(PRISM prism, double lonp, double latp, double rp,
|
||
double *gx, double *gy, double *gz);
|
||
|
||
/* Calculates the potential caused by a prism.
|
||
|
||
Parameters:
|
||
|
||
* prism: the prism whose effect will be calculated.
|
||
* lonp, latp, rp: coordinates of the computation point.
|
||
|
||
Returns:
|
||
|
||
* the calculated potential
|
||
*/
|
||
extern double prism_pot_sph(PRISM prism, double lonp, double latp, double rp);
|
||
#endif
|