FACT++
1.0
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
palPlanet.c
Go to the documentation of this file.
1
/*
2
*+
3
* Name:
4
* palPlanet
5
6
* Purpose:
7
* Approximate heliocentric position and velocity of major planet
8
9
* Language:
10
* Starlink ANSI C
11
12
* Type of Module:
13
* Library routine
14
15
* Invocation:
16
* void palPlanet ( double date, int np, double pv[6], int *j );
17
18
* Arguments:
19
* date = double (Given)
20
* TDB Modified Julian Date (JD-2400000.5).
21
* np = int (Given)
22
* planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars,
23
* 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
24
* pv = double [6] (Returned)
25
* heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad
26
* in units AU and AU/s.
27
* j = int * (Returned)
28
* - -2 = solution didn't converge.
29
* - -1 = illegal np (1-8)
30
* - 0 = OK
31
* - +1 = warning: year outside 1000-3000
32
33
* Description:
34
* Calculates the approximate heliocentric position and velocity of
35
* the specified major planet.
36
37
* Authors:
38
* TIMJ: Tim Jenness (JAC, Hawaii)
39
* {enter_new_authors_here}
40
41
* Notes:
42
* - See SOFA/ERFA eraPlan94 for details
43
* - Note that Pluto is supported in SLA/F but not in this routine
44
* - Status -2 is equivalent to eraPlan94 status +2.
45
* - Note that velocity units here match the SLA/F documentation.
46
47
* History:
48
* 2012-03-07 (TIMJ):
49
* Initial version
50
* Adapted with permission from the Fortran SLALIB library.
51
* {enter_further_changes_here}
52
53
* Copyright:
54
* Copyright (C) 2012 Science and Technology Facilities Council.
55
* All Rights Reserved.
56
57
* Licence:
58
* This program is free software; you can redistribute it and/or
59
* modify it under the terms of the GNU General Public License as
60
* published by the Free Software Foundation; either version 3 of
61
* the License, or (at your option) any later version.
62
*
63
* This program is distributed in the hope that it will be
64
* useful, but WITHOUT ANY WARRANTY; without even the implied
65
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
66
* PURPOSE. See the GNU General Public License for more details.
67
*
68
* You should have received a copy of the GNU General Public License
69
* along with this program; if not, write to the Free Software
70
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
71
* MA 02110-1301, USA.
72
73
* Bugs:
74
* {note_any_bugs_here}
75
*-
76
*/
77
78
#include "
pal.h
"
79
#include "
palmac.h
"
80
#include "
pal1sofa.h
"
81
82
void
palPlanet
(
double
date,
int
np,
double
pv[6],
int
*j ) {
83
double
erapv[2][3];
84
85
*j =
eraPlan94
(
PAL__MJD0
, date, np, erapv );
86
87
/* Convert the outputs to the correct form and also correct AU/d
88
to AU/s */
89
pv[0] = erapv[0][0];
90
pv[1] = erapv[0][1];
91
pv[2] = erapv[0][2];
92
pv[3] = erapv[1][0] /
PAL__SPD
;
93
pv[4] = erapv[1][1] /
PAL__SPD
;
94
pv[5] = erapv[1][2] /
PAL__SPD
;
95
96
/* SLA compatibility for status */
97
if
(*j == 2) *j = -2;
98
99
}
pal.h
palPlanet
void palPlanet(double date, int np, double pv[6], int *j)
Definition:
palPlanet.c:82
eraPlan94
int eraPlan94(double date1, double date2, int np, double pv[2][3])
Definition:
plan94.c:3
palmac.h
PAL__MJD0
static const double PAL__MJD0
Definition:
palmac.h:96
pal1sofa.h
PAL__SPD
static const double PAL__SPD
Definition:
palmac.h:102
pal
palPlanet.c
Generated on Sun Sep 18 2016 20:50:24 for FACT++ by
1.8.11