64 using ConstantList = std::vector<std::pair<std::string, double>>;
76 errc_t open(
const char* filepath);
101 EDataCode referenceBody,
106 errc_t getPosVelICRF(
109 EDataCode referenceBody,
125 EDataCode referenceBody,
175 const ConstantList& getConstants()
const;
183 errc_t getConstant(
size_t index,
double& value, std::string* name =
nullptr)
const;
191 errc_t getConstant(
const std::string& name,
double& value)
const;
197 double getConstant(
const std::string& name)
const;
201 double getAU()
const{
return au_ * 1000; }
213 double getBodyGM(EDataCode bodyCode)
const;
214 errc_t getBodyGM(EDataCode bodyCode,
double& value)
const;
224 errc_t loadConstants()
const;
226 errc_t readDataBlock(
size_t idx);
227 errc_t getStateTDB(
const JulianDate& jdTDB,
int dataid,
double pos[],
double vel[]);
228 errc_t getStateTDB(
const JulianDate& jdTDB,
int datalist[11],
double statelist[11][6]);
230 errc_t getState(
const TimePoint& time,
int dataid,
double pos[],
double vel[]);
231 errc_t getState(
const TimePoint& time,
int datalist[11],
double statelist[11][6]);
235 uint32_t ephemVersion_{ 0 };
236 uint32_t numConstants_{};
237 uint32_t numDataBlock_{0};
238 uint32_t numCoeff_{};
239 uint32_t ipt_[15][3]{};
240 double ephemStart_{0};
242 double ephemStep_{0};
244 double emMassRatio_{};
245 FILE* deFile_{ NULL };
246 double** dataBlocks_{NULL};
248 mutable std::mutex mutex_{};