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
|