tesseroids/lib/grav_prism_sph.h
2021-05-05 10:58:03 +08:00

101 lines
3.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
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