tesseroids/lib/grav_prism_sph.h

101 lines
3.1 KiB
C
Raw Normal View History

2021-05-05 10:58:03 +08:00
/*
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, 552560.
*/
#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