CARMA C++
novasWrapper.h
1 #ifndef CARMA_SERVICES_NOVAS_WRAPPER_H
2 #define CARMA_SERVICES_NOVAS_WRAPPER_H
3 
4 // novas-carmaX version notes
5 // CARMA4: support for VECTORS ephem files
6 // CARMA5: fix for dealing with local ephem files and uppercase/lowercase - compatible with CARMA4
7 // CARMA6: twiddling with tracking spots on planets
8 #define CARMA6
9 
10 // pick one of the NOVAS_VERSION's we support
11 #define NOVAS_VERSION2
12 //#define NOVAS_VERSION3
13 
14 namespace carma {
15 namespace services {
16 namespace novas {
17 
18 
19 typedef struct {
20  short int type;
21  short int number;
22  char name[ 100 ];
23 } body;
24 
25 
26 typedef struct {
27  double latitude;
28  double longitude;
29  double height;
30  double temperature;
31  double pressure;
32 } site_info;
33 
34 
35 typedef struct {
36  char catalog[ 4 ];
37  char starname[ 51 ];
38  long int starnumber;
39  double ra;
40  double dec;
41  double promora;
42  double promodec;
43  double parallax;
44  double radialvelocity;
45 } cat_entry;
46 
47 
48 void sidereal_time( double julianhi,
49  double julianlo,
50  double ee,
51  double * gst );
52 
53 
54 void earthtilt( double tjd,
55  double * mobl,
56  double * tobl,
57  double * eqeq,
58  double * psi,
59  double * eps );
60 
61 
62 short int set_body( short int type,
63  short int number,
64  char * name,
65  body * cel_obj );
66 
67 
68 void make_cat_entry( char catalog[ 4 ],
69  char star_name[ 51 ],
70  long int star_num,
71  double ra,
72  double dec,
73  double pm_ra,
74  double pm_dec,
75  double parallax,
76  double rad_vel,
77  cat_entry * star);
78 
79 
80 short int astro_planet( double tjd,
81  body * ss_object,
82  body * earth,
83  double * ra,
84  double * dec,
85  double * dis );
86 
87 
88 void equ2hor( double tjd,
89  double deltat,
90  double x,
91  double y,
92  site_info * location,
93  double ra,
94  double dec,
95  short int ref_option,
96  double * zd,
97  double * az,
98  double * rar,
99  double * decr );
100 
101 
102 short int app_star( double tjd,
103  body * earth,
104  cat_entry * star,
105  double * ra,
106  double * dec);
107 
108 short int app_star_doppler( double tjd,
109  body * earth,
110  cat_entry * star,
111  double * ra,
112  double * dec,
113  double * vearth,
114  double * vrest);
115 
116 short int virtual_star( double tjd,
117  body * earth,
118  cat_entry * star,
119  double * ra,
120  double * dec );
121 
122 short int astro_star( double tjd,
123  body * earth,
124  cat_entry * star,
125  double * ra,
126  double * dec );
127 
128 
129 short int app_planet( double tjd,
130  body * ss_object,
131  body * earth,
132  double * ra,
133  double * dec,
134  double * dis);
135 
136 short int app_planet_doppler( double tjd,
137  body * ss_object,
138  body * earth,
139  double * ra,
140  double * dec,
141  double * dis,
142  double * vearth,
143  double * vrest);
144 
145 short int topo_star( double tjd,
146  body * earth,
147  double deltat,
148  cat_entry * star,
149  site_info * location,
150  double * ra,
151  double * dec);
152 
153 short int topo_star_doppler( double tjd,
154  body * earth,
155  double deltat,
156  cat_entry * star,
157  site_info * location,
158  double * ra,
159  double * dec,
160  double * vearth,
161  double * vrest);
162 
163 short int topo_planet( double tjd,
164  body * ss_object,
165  body * earth,
166  double deltat,
167  site_info * location,
168  double * ra,
169  double * dec,
170  double * dis );
171 
172 short int topo_planet_doppler( double tjd,
173  body * ss_object,
174  body * earth,
175  double deltat,
176  site_info * location,
177  double * ra,
178  double * dec,
179  double * dis,
180  double * vearth,
181  double * vrest);
182 
183 
184 void set_jpleph( char * x );
185 
186 void transform_cat (short int option, double date_incat,
187  cat_entry *incat, double date_newcat,
188  char newcat_id[4],
189 
190  cat_entry *newcat);
191 
192 short int ephemeris (double tjd, body *cel_obj,
193  short int origin,
194  double *pos, double *vel);
195 
196 #ifdef CARMA6
197 short int ephemeris_spot (double tjd, body *cel_obj,
198  short int origin,
199  double *pos, double *vel);
200 
201 short int set_body_spot (double majorAxis, double minorAxis, double axisAngle, double tiltAngle,
202  double mjd, double Longitude, double Latitude, double SpinRate);
203 
204 
205 #endif
206 
207 } // namespace carma::services::novas
208 } // namespace carma::services
209 } // namespace carma
210 
211 
212 #endif