Program Listing for File time_conversions.h¶
↰ Return to documentation for file (conversions/time_conversions.h)
#pragma once
#include <string>
#include <tuple>
#include "lupnt/core/constants.h"
#include "lupnt/numerics/graphs.h"
#include "lupnt/numerics/vector_macros.h"
namespace lupnt {
extern const std::map<Time, std::string> time_to_string;
extern const std::map<std::string, Time> string_to_time;
Real ConvertTime(Real t, Time from, Time to);
VecX ConvertTime(const VecX& t, Time from, Time to);
bool IsCoordinateTimeScale(Time time);
Real ConvertCoordinateTime(Real t, Time from, Time to);
Real ConvertCoordinateTime(Real t, Time from, Time to, const Vec3& x_bcrs);
VecX ConvertCoordinateTime(const VecX& t, Time from, Time to);
VecX ConvertCoordinateTime(const VecX& t, Time from, Time to, const MatX3& x_bcrs);
Real UtcToUt1(Real t_utc);
Real Ut1ToUtc(Real t_ut1);
Real TaiToUtc(Real t_tai);
Real UtcToTai(Real t_utc);
Real TaiToTt(Real t_tai);
Real TtToTai(Real t_tt);
Real TcgToTt(Real t_tcg);
Real TtToTcg(Real t_tt);
Real TtToTdb(Real t_tt);
Real TtToTdb(Real t_tt, const Vec3& x_bcrs);
Real TDBToTt(Real t_tdb);
Real TDBToTt(Real t_tdb, const Vec3& x_bcrs);
Real TaiToGps(Real t_tai);
Real GpsToTai(Real t_gps);
Real TcbToTdb(Real t_tcb);
Real TtToTcb(Real t_tt);
Real TtToTcb(Real t_tt, const Vec3& x_bcrs);
Real TcbToTt(Real t_tcb, const Vec3& x_bcrs);
Real MjdToTime(Real mjd);
Real TimeToMjd(Real t);
Real JdToTime(Real jd);
Real TimeToJd(Real t);
Real EarthRotationAngle(Real t_ut1);
Real GregorianToMjd(int year, int month, int day, int hour = 0, int min = 0, Real sec = 0);
Real GregorianToTime(int year, int month, int day, int hour = 0, int min = 0, Real sec = 0);
Real GregorianToTime(const std::string& date);
Real GreenwichMeanSiderealTime(Real mjd_ut1);
Real GreenwichApparentSiderealTime(Real mjd_ut1);
std::tuple<int, int, int, int, int, Real> MjdToGregorian(Real mjd);
std::string MjdToGregorianString(Real mjd, int precision = 3);
std::string TimeToGregorianString(Real t, int precision = 3);
Real TcbToTcl(Real t_tcb);
Real TcbToTcl(Real t_tcb, const Vec3& x_bcrs);
VecX TcbToTcl(const VecX& t_tcb);
VecX TcbToTcl(const VecX& t_tcb, const MatX3& x_bcrs);
Real TclToTcb(Real t_tcl);
Real TclToTcb(Real t_tcl, const Vec3& x_bcrs);
VecX TclToTcb(const VecX& t_tcl);
VecX TclToTcb(const VecX& t_tcl, const MatX3& x_bcrs);
Real TclToLt(Real t_tcl);
Real LtToTcl(Real t_lt);
Real GetProperTimeCorrectionTcl(Real t_tcg, const Vec3& x_mci);
VecX GetProperTimeCorrectionTcl(const VecX& t_tcg, const MatX& x_mci);
// -----------------------------------------------------------------------
// TL − TT conversions (Turyshev 2026, ApJ 997:97)
// -----------------------------------------------------------------------
Real TdbToLtMinusTt(Real t_tdb);
Real TdbToLt(Real t_tdb);
Real LtToTdb(Real t_lt);
Real TtToLt(Real t_tt);
Real LtToTt(Real t_lt);
void InitLtMinusTtFit(Real t_start_tdb, Real t_end_tdb,
double segment_length = 86400.0, // 1 day [s]
int num_coeffs = 13);
void ClearLtMinusTtFit();
bool HasFittedLtMinusTt(Real t_tdb);
VEC_DEF_REAL(UtcToUt1)
VEC_DEF_REAL(Ut1ToUtc)
VEC_DEF_REAL(TaiToUtc)
VEC_DEF_REAL(UtcToTai)
VEC_DEF_REAL(TaiToTt)
VEC_DEF_REAL(TtToTai)
VEC_DEF_REAL(TcgToTt)
VEC_DEF_REAL(TtToTcg)
VEC_DEF_REAL(TtToTdb)
VEC_DEF_REAL(TDBToTt)
VEC_DEF_REAL(TaiToGps)
VEC_DEF_REAL(GpsToTai)
VEC_DEF_REAL(TcbToTdb)
VEC_DEF_REAL(TtToTcb)
VEC_DEF_REAL(MjdToTime)
VEC_DEF_REAL(TimeToMjd)
VEC_DEF_REAL(JdToTime)
VEC_DEF_REAL(TimeToJd)
VEC_DEF_REAL(TcbToTcl)
VEC_DEF_REAL(TclToTcb)
VEC_DEF_REAL(TclToLt)
VEC_DEF_REAL(LtToTcl)
VEC_DEF_REAL(TdbToLtMinusTt)
VEC_DEF_REAL(TdbToLt)
VEC_DEF_REAL(LtToTdb)
VEC_DEF_REAL(TtToLt)
VEC_DEF_REAL(LtToTt)
VEC_DEF_REAL(EarthRotationAngle)
VEC_DEF_REAL(GreenwichMeanSiderealTime)
VEC_DEF_REAL(GreenwichApparentSiderealTime)
} // namespace lupnt