aboutsummaryrefslogtreecommitdiff
path: root/src/slalib/geoc.f
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
commitd54fe7c1f704a63824c5bfa0ece65245572e9b27 (patch)
treeafc52015ffc2c74e0266653eecef1c8ef8ba5d91 /src/slalib/geoc.f
downloadcalfuse-d54fe7c1f704a63824c5bfa0ece65245572e9b27.tar.gz
Initial commit
Diffstat (limited to 'src/slalib/geoc.f')
-rw-r--r--src/slalib/geoc.f57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/slalib/geoc.f b/src/slalib/geoc.f
new file mode 100644
index 0000000..89f51b7
--- /dev/null
+++ b/src/slalib/geoc.f
@@ -0,0 +1,57 @@
+ SUBROUTINE sla_GEOC (P, H, R, Z)
+*+
+* - - - - -
+* G E O C
+* - - - - -
+*
+* Convert geodetic position to geocentric (double precision)
+*
+* Given:
+* P dp latitude (geodetic, radians)
+* H dp height above reference spheroid (geodetic, metres)
+*
+* Returned:
+* R dp distance from Earth axis (AU)
+* Z dp distance from plane of Earth equator (AU)
+*
+* Notes:
+* 1) Geocentric latitude can be obtained by evaluating ATAN2(Z,R).
+* 2) IAU 1976 constants are used.
+*
+* Reference:
+* Green,R.M., Spherical Astronomy, CUP 1985, p98.
+*
+* P.T.Wallace Starlink 4th October 1989
+*
+* Copyright (C) 1995 Rutherford Appleton Laboratory
+*-
+
+ IMPLICIT NONE
+
+ DOUBLE PRECISION P,H,R,Z
+
+* Earth equatorial radius (metres)
+ DOUBLE PRECISION A0
+ PARAMETER (A0=6378140D0)
+
+* Reference spheroid flattening factor and useful function
+ DOUBLE PRECISION F,B
+ PARAMETER (F=1D0/298.257D0,B=(1D0-F)**2)
+
+* Astronomical unit in metres
+ DOUBLE PRECISION AU
+ PARAMETER (AU=1.49597870D11)
+
+ DOUBLE PRECISION SP,CP,C,S
+
+
+
+* Geodetic to geocentric conversion
+ SP=SIN(P)
+ CP=COS(P)
+ C=1D0/SQRT(CP*CP+B*SP*SP)
+ S=B*C
+ R=(A0*C+H)*CP/AU
+ Z=(A0*S+H)*SP/AU
+
+ END