Sets up a observing frame for a specific observer location, time of observation, and accuracy requirement.
The frame is initialized using the currently configured planet ephemeris provider function (see set_planet_provider() and set_planet_provider_hp()), and in case of reduced accuracy mode, the currently configured IAU nutation model provider (see set_nutation_lp_provider()).
Note, that to construct full accuracy frames, you will need a high-precision ephemeris provider for the major planets (not just the default Earth/Sun), as without it, gravitational bending around massive plannets cannot be accounted for, and therefore μas accuracy cannot be ensured, in general. Attempting to construct a high-accuracy frame without a high-precision ephemeris provider for the major planets will result in an error in the 10–40 range from the required ephemeris() call.
NOTES:
-
This function expects the Earth polar wobble parameters to be defined on a per-frame basis and will not use the legacy global (undated) orientation parameters set via cel_pole().
-
The Earth orientation parameters xp, yp should be provided in the same ITRF realization as the observer location for an Earth-based observer. You can use
novas_itrf_transform_eop()
to convert the EOP values as necessary.
- Parameters
-
| accuracy | Accuracy requirement, NOVAS_FULL_ACCURACY (0) for the utmost precision or NOVAS_REDUCED_ACCURACY (1) if ~1 mas accuracy is sufficient. |
| obs | Observer location |
| time | Time of observation |
| xp | [mas] Earth orientation parameter, polar offset in x, e.g. from the IERS Bulletins, and possibly corrected for diurnal and semi-diurnal variations, e.g. via novas_diurnal_eop() . (The global, undated value set by cel_pole() is not not used here.) You can use 0.0 if sub-arcsecond accuracy is not required. |
| yp | [mas] Earth orientation parameter, polar offset in y, e.g. from the IERS Bulletins, and possibly corrected for diurnal and semi-diurnal variations, e.g. via novas_diurnal_eop() . (The global, undated value set by cel_pole() is not not used here.) You can use 0.0 if sub-arcsecond accuracy is not required. |
[out] | frame | Pointer to the observing frame to configure. |
- Returns
- 0 if successful, 10–40: error is 10 + the error from ephemeris(), 40–50: error is 40 + the error from geo_posvel(), or else -1 if there was an error (errno will indicate the type of error).
- Since
- 1.1
- Author
- Attila Kovacs
- See also
- novas_change_observer(), novas_sky_pos(), novas_geom_posvel(), novas_make_transform()
-
set_planet_provider(), set_planet_provider_hp(), set_nutation_lp_provider(), novas_diurnal_eop(), novas_itrf_transform_eop()
References novas_frame::accuracy, novas_frame::deps0, novas_frame::dpsi0, novas_frame::dx, novas_frame::dy, novas_frame::earth_pos, novas_frame::earth_vel, novas_frame::ee, ephemeris(), era(), novas_frame::era, novas_timespec::fjd_tt, novas_frame::gst, novas_timespec::ijd_tt, mean_obliq(), novas_frame::mobl, NOVAS_BARYCENTER, novas_change_observer(), NOVAS_EARTH_INIT, novas_get_split_time(), NOVAS_JD_J2000, NOVAS_OBSERVER_PLACES, NOVAS_REDUCED_ACCURACY, NOVAS_SUN_INIT, NOVAS_UT1, nutation_angles(), novas_frame::state, novas_frame::sun_pos, novas_frame::sun_vel, novas_frame::time, novas_frame::tobl, tt2tdb(), and observer::where.